스마트 실내 공기질 및 폐기물 모니터링 시스템: IOTA 탱글 연동
필요한 부품 및 소모품
| 라즈베리 파이 3 모델 B |
1개 |
| 아두이노 우노 (Arduino UNO) |
1개 |
| NodeMCU ESP8266 브레이크아웃 보드 |
1개 |
| DHT11 온습도 센서 (4핀) |
1개 |
| Seeed Grove 가스 센서 (MQ2 - LPG) |
1개 |
| MQ-7 일산화탄소 가스 센서 |
1개 |
| 초음파 센서 HC-SR04 |
1개 |
| 라즈베리 파이 전원 공급장치, HDMI 케이블, USB 케이블 |
각 1개 |
| 점퍼 와이어, 5V 배터리 |
각 1개 |
앱 및 온라인 서비스
- IOTA 탱글 (분산 원장 기술)
- Node.js
- 라즈베리 파이 라즈비안 OS
- 아두이노 IDE
- MQTT 프로토콜
프로젝트 개요
1. 소개
빌딩 자동화는 난방, 환기, 공조, 조명 등을 중앙에서 제어하는 시스템으로, 거주자 편의 증진, 에너지 절감, 운영 비용 절감, 설비 수명 연장이 목적입니다.
IOTA는 사물인터넷을 위한 오픈소스 분산 회계 기술로, 블록체인 대신 DAG(방향성 비순환 그래프) 기반의 탱글(Tangle) 아키텍처를 사용합니다. 수수료 없음, 낮은 지연시간, 뛰어난 확장성이 특징입니다.
2. 소프트웨어 설치
- 라즈베리 파이에 NOOBS로 라즈비안 설치
- Node.js 8.x 설치
- BCM2835 라이브러리 빌드 설치 (DHT11용)
- indoor-air-quality-iota 프로젝트 클론 및 npm install
- serialport 패키지 설치
- 아두이노 IDE 설치
3. 실내 공기질 모니터링 시스템 v1
DHT11 센서 데이터를 읽어 MAM(Masked Authenticated Messaging)을 통해 IOTA 탱글에 게시합니다.
- sensor.js: DHT11 데이터 읽기 및 표시 (온도, 습도)
- mam_sensor.js: 데이터를 탱글에 게시
- mam_receive.js: 탱글에서 데이터 추출 및 표시
전송 데이터: 도시(멕시코), 건물(65), UTC 시간, 온도(°C/°F), 습도(%)
테스트 노드: https://potato.iotasalad.org:14265
4. 실내 공기질 모니터링 시스템 v2
DHT11, MQ-2(LPG), MQ-7(CO) 센서 데이터를 아두이노 우노로 읽어 라즈베리 파이를 통해 탱글에 전송합니다.
- sensorArduino.ino: 3개 센서 데이터 수집
- mam_sensorArduino.js: 시리얼 포트로 데이터 읽어 탱글 게시
- mam_receiveArduino.js: 데이터 수신 표시
전송 데이터: 도시(NY), 건물(13), UTC 시간, LPG(ppm), CO(ppm), 온도, 습도
5. 폐기물 모니터링 시스템
NodeMCU와 SRF05 초음파 센서로 쓰레기통 채움률(%)을 측정하여 MQTT로 라즈베리 파이에 전송, 다시 IOTA 탱글에 저장합니다.
- trashcan.ino: 채움률 계산 및 MQTT 전송
- nodemcu_mqtt_mam.js: MQTT 수신 후 탱글 게시
- nodemcu_mam_receive.js: 데이터 수신 표시
모스키토(Mosquitto) MQTT 브로커를 라즈베리 파이에 설치하여 사용합니다. 전송 데이터: 도시(베를린), 건물(7), UTC 시간, 쓰레기통 채움률(%)
6. 결론
- v1: DHT11 + 라즈베리 파이로 기본 공기질 모니터링 검증 (멕시코 시티 시뮬레이션)
- v2: 다중 가스 센서 추가로 스마트 빌딩/산업 현장 적용 가능 (뉴욕 시뮬레이션)
- 폐기물 시스템: 쓰레기 적재량 실시간 모니터링으로 위생 관리 효율화 (베를린 시뮬레이션)
코드
자바스크립트 파일 5개 제공: sensor.js, mam_sensor.js, mam_receive.js, mam_sensorArduino.js, mam_receiveArduino.js
전체 코드는 원문의 code 섹션에서 확인 가능합니다.
회로도
3가지 버전별 회로도 이미지 제공