1인창조기업

예비창업자의 창업일지_006탄

3hongstore 2025. 1. 18. 20:00

 

ESP32에 연결된 dht22의 온습도 센싱 정보들을 mqtt를 이용하여 확인 및 조정하는 작업을 해봤습니다.

아두이노 시리얼 모니터에 dht22에 측정된 현재 온습도와 설정 온습도를 출력. 설정 온습도를 메시지 창에서 수정 가능하도록 했습니다.

//시리얼모니터로 온습도 설정
  if (Serial.available()) {
    String input = Serial.readStringUntil('\n');
    input.trim();

    if (input.startsWith("T:")) {
      temperatureThreshold = input.substring(2).toFloat();
      Serial.print("Updated temperature threshold via Serial: ");
      Serial.println(temperatureThreshold);
    } else if (input.startsWith("H:")) {
      humidityThreshold = input.substring(2).toFloat();
      Serial.print("Updated humidity threshold via Serial: ");
      Serial.println(humidityThreshold);
    } else {
      Serial.println("Invalid input. Use 'T:<value>' or 'H:<value>'");
    }
  }

 

아두이노 시리얼 모니터 메시지 창에 [T: 온도값 / H: 습도값]을 입력하여 온습도 설정값 적용.

 

hivemqtt에서 주고 받는 메시지 모니터링

// MQTT로 현재 설정 및 측정 값 전송
    snprintf(msg, MSG_BUFFER_SIZE, "{\"tempThr\": %.2f, \"humidThr\": %.2f, \"cTemp\": %.2f, \"cHumid\": %.2f}", 
            temperatureThreshold, humidityThreshold, temperature, humidity);
    client.publish("sensor/data", msg);
 

온습도 설정값 변경을 위한 토픽 설정

해당 토픽에 원하는 설정값을 입력하여 원격으로 온습도 조절가능하게끔.

    if (String(topic) == "temperature/threshold") {
      temperatureThreshold = message.toFloat();
      Serial.print("Updated temperature threshold: ");
      Serial.println(temperatureThreshold);
    } else if (String(topic) == "humidity/threshold") {
      humidityThreshold = message.toFloat();
      Serial.print("Updated humidity threshold: ");
      Serial.println(humidityThreshold);
    }
 

이후 설정 온습도 값에 따라 릴레이를 이용 5v 팬을 제어하는 작업까지 마무리 했습니다.

습도 조절은 미니 초음파 가습기로 진행할 예정입니다.

릴레이를 이용한 팬 작동
dht22 센서 온습도 측정.
최적의 성능을 낼 수 있는 팬의 위치와 사양 연구 필요

작은 컵 사이즈 내부의 온도를 떨어뜨리려 했으나 팬의 성능이 생각보다 잘 나오지 않아 온도 조절에는 실패.

온습도 조절 및 유지에 필요한 방법(적절한 제품, 제품의 위치 등등) 찾기에 한동안 시간을 할애해야할 것 같습니다.

냉각패드 등의 사용도 고려중입니다만...

설정한 온습도를 유지시키는 좋은 방법 있으신분의 소중한 조언을 기다립니다.

갈길이 멉니다 ㅎㅎ

아자아자 화이팅!!

천천히꾸준히 아자!!