[자동화] 스마트폰 + ESP32 + MQTT 스마트팜 구축 아이디어
이 글에서는 집에 굴러다니는 스마트폰을 **로컬 HMI(휴먼-머신 인터페이스)**로 사용하고, ESP32는 I/O 제어, 중앙 PC는 자동화 제어 및 데이터 기록을 담당하는 구조에 대해 정리합니다.
전체 아키텍처
📅 중앙 PC (MQTT 브로커 + 자동화 로직 + DB)
|
┃ MQTT
━━━━━━━━━━━━━━━━━
| |
🛋 ESP32-1 ESP32-2
| |
📊 센서/릴레이 센서/릴레이
📱 스마트폰 (로컬 MQTT 대시보드 - HMI 역할)
이 구조는 산업 자동화 시스템에서 흔히 사용하는 SCADA 구조와 유사하며, 소규모 프로젝트에 매우 적합합니다.
각 요소의 역할
🛋 ESP32: I/O 제어기
센서 데이터 읽기 (토양 습도, 조도, 온도 등)
릴레이/펌프/팬 작동
MQTT Subscriber/Publisher 역할 수행
간단한 자동화 로직 포함 가능
📱 스마트폰: 로컬 HMI (대시보드)
MQTT 대시보드 앱(MQTT Dash, IoT MQTT Panel 등) 사용
센서 데이터 실시간 표시
펌프/팬 ON/OFF 버튼 UI
상태 알림 수신
📅 중앙 PC: 자동화 및 데이터 서버
Mosquitto 브로커 설치
자동화 로직 (예: Python, Node-RED)
센서 로그 기록 (CSV/DB)
고급 제어 로직 수행 (예: 일출/일몰 기반 급수)
통신 흐름 예시
ESP32 → MQTT:
farm/sensor/moisture
에 토양 습도 27% 전송PC → MQTT: 습도가 낮으니
farm/command/pump1
에on
발행ESP32 → 릴레이 작동: MQTT 메시지 수신 후 펌프 작동
ESP32 → MQTT:
farm/status/pump1
에 상태 전송 (ex: on/off)스마트폰 → MQTT: 사용자가 수동으로 급수 버튼 누를 수도 있음
장점 정리
항목 | 장점 |
---|---|
확장성 | ESP32 추가만으로 센서/제어 확장 가능 |
실시간 제어 | 스마트폰으로 즉시 확인 및 제어 가능 |
인터넷 불필요 | 로컬망으로만 운영 가능 (브로커가 내부망에 있으면) |
안정성 | 로직 분리로 장애 격리 가능 |
ESP32 샘플 코드 (간단 자동화 포함)
if (soilMoisture < 30 && millis() - lastPumpTime > 600000) {
pumpOn();
lastPumpTime = millis();
}
ESP32는 습도가 일정 기준 이하일 때 펌프를 자동으로 작동합니다. 수동 제어는 MQTT로 "farm/command/pump1" 토픽을 구독하여 처리할 수 있습니다.
마무리
이러한 구조는 소규모 자가 스마트팜, DIY 자동화, 교육용 IoT 프로젝트에 매우 적합합니다. 특히 스마트폰을 로컬 대시보드로 활용하면 별도 디스플레이나 패널 없이도 직관적인 HMI 시스템을 만들 수 있습니다.
앞으로 센서 데이터를 시각화하거나, AI 예측 급수 로직을 추가하거나, Telegram 알림 기능을 붙이는 것도 좋은 확장 방향입니다.
댓글
댓글 쓰기