아두이노

앱에서 설정값 전송 → 아두이노가 센서값과 비교해 제어하기— 사용자 정의 임계값 + 자동 LED/팬 제어 시스템

게임교수 2025. 4. 18. 07:44
반응형

🧮 앱에서 설정값 전송 → 아두이노가 센서와 비교해 자동 제어

이번 실습에서는 스마트폰 앱에서 원하는 임계값(예: 30℃)을 입력하고,
아두이노가 해당 값을 기준으로 센서 데이터를 비교하여 자동으로 LED/팬 등을 제어하는 구조를 구현합니다.

드디어 아두이노와 앱이 서로 주고받는 진짜 양방향 시스템 완성입니다 😎

🧰 준비물

  • 아두이노 UNO
  • DHT11 온습도 센서
  • HC-06 블루투스 모듈
  • LED (또는 미니팬)
  • MIT App Inventor

🔌 회로 구성

  • DHT11 → D2, HC-06 → D0/D1
  • LED → D8 + 저항

💻 아두이노 코드

#include 
#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
String inputString = "";
float threshold = 30.0; // 기본 온도 기준
int ledPin = 8;

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(ledPin, OUTPUT);
}

void loop() {
  while (Serial.available()) {
    char c = (char)Serial.read();
    if (c == '\n') {
      threshold = inputString.toFloat();
      Serial.print("기준값 변경: ");
      Serial.println(threshold);
      inputString = "";
    } else {
      inputString += c;
    }
  }

  float temp = dht.readTemperature();
  Serial.print("현재온도: ");
  Serial.println(temp);

  if (temp > threshold) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }

  delay(2000);
}

📱 앱 구성 (App Inventor)

  • TextBox + Button → 기준값 입력 후 전송
  • BluetoothClient.SendText로 "30\n" 형식 전송
  • Label → 온도 출력

앱에서 입력한 숫자가 아두이노로 전송되고, 기준 온도 이상일 경우 자동으로 LED가 켜지는 구조입니다.

✅ 결과 확인

  • 앱에서 기준값 입력 → "32" 전송
  • 온도가 32℃ 넘으면 LED 켜짐
  • 30으로 낮추면 다시 꺼짐 → 완벽한 조건 제어

📚 마무리

이제 앱에서 설정한 값을 기준으로 실시간 자동 제어까지 가능한 IoT 시스템이 완성됐어요!
다음은 이 데이터를 WiFi로 웹서버에 전송하거나 클라우드 저장하는 단계로도 나아갈 수 있습니다 ☁️🌐

반응형