[자동화] 스마트폰 + 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)

  • 고급 제어 로직 수행 (예: 일출/일몰 기반 급수)


통신 흐름 예시

  1. ESP32 → MQTT: farm/sensor/moisture에 토양 습도 27% 전송

  2. PC → MQTT: 습도가 낮으니 farm/command/pump1on 발행

  3. ESP32 → 릴레이 작동: MQTT 메시지 수신 후 펌프 작동

  4. ESP32 → MQTT: farm/status/pump1에 상태 전송 (ex: on/off)

  5. 스마트폰 → MQTT: 사용자가 수동으로 급수 버튼 누를 수도 있음


장점 정리

항목장점
확장성ESP32 추가만으로 센서/제어 확장 가능
실시간 제어스마트폰으로 즉시 확인 및 제어 가능
인터넷 불필요로컬망으로만 운영 가능 (브로커가 내부망에 있으면)
안정성로직 분리로 장애 격리 가능

ESP32 샘플 코드 (간단 자동화 포함)

if (soilMoisture < 30 && millis() - lastPumpTime > 600000) {
  pumpOn();
  lastPumpTime = millis();
}

ESP32는 습도가 일정 기준 이하일 때 펌프를 자동으로 작동합니다. 수동 제어는 MQTT로 "farm/command/pump1" 토픽을 구독하여 처리할 수 있습니다.


마무리

이러한 구조는 소규모 자가 스마트팜, DIY 자동화, 교육용 IoT 프로젝트에 매우 적합합니다. 특히 스마트폰을 로컬 대시보드로 활용하면 별도 디스플레이나 패널 없이도 직관적인 HMI 시스템을 만들 수 있습니다.

앞으로 센서 데이터를 시각화하거나, AI 예측 급수 로직을 추가하거나, Telegram 알림 기능을 붙이는 것도 좋은 확장 방향입니다.

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[PLC] PLC 아날로그 입출력 기본

NPN, PNP 트랜지스터 차이점

[PLC] 래더 다이어그램과 PLC

[PLC] 접지(지락) 사고와 단락의 차이점 (The Difference Between a Ground Fault and Short Circuit)

Industrial Control with Relay: 파워릴레이와 범용릴레이

제너 다이오드에 저항을 연결하는 이유

[PLC] SSR 선정시 고려사항 - 돌입전류

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)