250x250
반응형
관리 메뉴

Allen's 데이터 맛집

[0] 온습도 측정 프로젝트: IoT 기술로 환경 모니터링 구현하기 본문

Mini Project/온습도 측정 프로젝트

[0] 온습도 측정 프로젝트: IoT 기술로 환경 모니터링 구현하기

Allen93 2025. 2. 15. 16:14
"Temperature-Humidity Measurement" 프로젝트는 IoT 기반의 온습도 측정 시스템을 설계하고, 데이터를 실시간으로 수집, 전송, 시각화하는 솔루션을 구현했습니다.

온습도

 

 

1. 프로젝트 목적과 필요성

1.1 프로젝트 목표

  1. 실시간 환경 데이터 측정:
    • 온도와 습도를 센서를 통해 주기적으로 측정.
  2. 효율적인 데이터 전송:
    • MQTT를 활용하여 데이터를 서버로 전송.
  3. 사용자 친화적 시각화:
    • 수집된 데이터를 웹 대시보드로 제공하여 누구나 쉽게 모니터링 가능.

1.2 왜 IoT 기반 환경 모니터링인가?

  • 정확한 실시간 데이터:
    • 온습도 변화에 즉각 반응하여 환경을 효율적으로 관리.
  • 확장 가능성:
    • 추가 센서(CO2, 미세먼지 등)와 통합하여 다양한 데이터를 수집 가능.
  • 비용 효율성:
    • 소형 센서와 오픈 소스 소프트웨어를 사용해 저비용으로 구축 가능.

2. 프로젝트 구성 요소

2.1 하드웨어

  • DHT22 센서:
    • 온도와 습도를 동시에 측정할 수 있는 디지털 센서.
    • ±0.5°C 정확도와 ±2% 습도 정확도를 제공.
  • 마이크로컨트롤러:
    • ESP8266 또는 Raspberry Pi를 사용해 데이터를 센서에서 읽고 처리.

2.2 소프트웨어

  • Python:
    • 센서 데이터 처리 및 MQTT 전송.
  • Flask:
    • 웹 대시보드 구현.
  • MQTT:
    • 경량 메시지 프로토콜로 데이터를 서버와 클라이언트 간 전송.

 

3. 데이터 수집 및 전송

3.1 센서 데이터 수집

DHT22 센서를 사용해 주기적으로 온도와 습도를 측정하고, 읽은 값을 마이크로컨트롤러로 전달합니다.

Python 코드 예제: 데이터 읽기

import Adafruit_DHT

sensor = Adafruit_DHT.DHT22
pin = 4  # GPIO 핀 번호

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
    print(f"Temp: {temperature:.1f}°C, Humidity: {humidity:.1f}%")
else:
    print("Failed to retrieve data from sensor")

3.2 MQTT를 사용한 데이터 전송

센서에서 수집한 데이터를 MQTT를 통해 중앙 서버로 전송합니다. MQTT는 경량 메시지 프로토콜로, IoT 환경에서 데이터 전송에 최적화되어 있습니다.

Python 코드 예제: MQTT 전송

import paho.mqtt.client as mqtt

broker = "broker.hivemq.com"
port = 1883
topic = "home/temperature"

client = mqtt.Client()
client.connect(broker, port)

client.publish(topic, f"Temperature: {temperature:.1f}, Humidity: {humidity:.1f}")
client.disconnect()
  • 브로커 선택:
    • 프로젝트에서는 공개 브로커(broker.hivemq.com)를 사용했지만, 실무에서는 보안을 위해 사설 MQTT 브로커를 구축하는 것이 좋습니다.

https://github.com/siilver94/Temperature-Humidity-Measurement

 

GitHub - siilver94/Temperature-Humidity-Measurement

Contribute to siilver94/Temperature-Humidity-Measurement development by creating an account on GitHub.

github.com

 

728x90