반응형
🔁 아두이노와 앱의 양방향 통신 — 설정값을 앱에서 전송하고, 센서로 조건 판단하기
이번 실습에서는 스마트폰 앱에서 사용자가 입력한 **임계 온도값**을 아두이노로 전송DHT11 센서로 측정된 온도와 비교하여 자동 제어하는 구조를 구성합니다.
이것이 바로 **IoT의 핵심 구조** 중 하나인 양방향 통신입니다. 센서 데이터를 보는 것뿐만 아니라, 사용자 입력을 받아 **제어 기준을 실시간으로 반영**하는 것이죠.
🧰 준비물
- 아두이노 UNO 또는 Nano
- DHT11 온습도 센서
- HC-06 블루투스 모듈
- 앱 인벤터로 제작한 앱
- LED (또는 부저)
🔌 연결 구성
- DHT11 DATA → D2
- HC-06 TX → RX, RX → TX
- LED → D8 (경고 출력용)
💻 아두이노 코드: 앱에서 기준 온도 입력 → 자동 판단
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LEDPIN 8
DHT dht(DHTPIN, DHTTYPE);
String input = "";
float threshold = 30.0;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LEDPIN, OUTPUT);
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c == '\n') {
threshold = input.toFloat();
Serial.print("기준 온도 변경: ");
Serial.println(threshold);
input = "";
} else {
input += c;
}
}
float temp = dht.readTemperature();
if (!isnan(temp)) {
Serial.print("현재온도: ");
Serial.println(temp);
if (temp >= threshold) {
digitalWrite(LEDPIN, HIGH);
} else {
digitalWrite(LEDPIN, LOW);
}
}
delay(2000);
}
📱 앱 구성: 사용자 입력값 전송
- TextBox + Button: 숫자 입력 후 "\n" 붙여 전송
- 예: “31\n” → 아두이노가 기준 온도 31도로 변경
- BluetoothClient.SendText 사용
💡 구조 흐름
- 앱에서 임계값(예: 30.5)을 입력하고 전송
- 아두이노가 문자열을 받아
float으로 파싱 - DHT11 센서값과 비교 → 조건 만족 시 LED ON
✅ 실습 확인 포인트
- 앱에서 "28" 입력 → 기준온도 28도 설정
- DHT11 값이 28도 이상 → LED 켜짐
- 기준값 바꾸면 바로 반영됨 → 실시간 반응 확인!
📚 마무리
이번 편에서는 아두이노와 스마트폰이 단방향이 아닌 양방향 통신 구조를 갖춘 IoT 시스템을 구현해봤습니다.
이 구조를 활용하면 사용자가 앱에서 직접 제어값을 입력하고, 센서 데이터를 실시간으로 판단해 제어하는 똑똑한 환경 시스템을 만들 수 있습니다.
다음 편에서는 이 데이터를 ESP8266이나 SD 카드에 저장웹서버 연동
반응형
'아두이노' 카테고리의 다른 글
| 아두이노 서보모터 제어 완벽 가이드 – SG90으로 각도 제어부터 응용까지 (2) | 2025.04.19 |
|---|---|
| 아두이노 초음파 센서 거리 측정 완벽 가이드 – HC-SR04 연결부터 코드까지 (2) | 2025.04.19 |
| 아두이노로 온습도 측정 시스템 만들기 – DHT11 센서 완전 정복 (0) | 2025.04.18 |
| 앱에서 설정값 전송 → 아두이노가 센서값과 비교해 제어하기— 사용자 정의 임계값 + 자동 LED/팬 제어 시스템 (0) | 2025.04.18 |
| 조건에 따라 스마트폰에서 경고 알림 받기 (0) | 2025.04.18 |