RS-485 가스 센서 연동 LED 모니터링 시스템

ESP32C/C++ArduinoModbus RTURS-485MQTTLED 매트릭스FreeRTOS

가연성 가스, 산소, 황화수소, 일산화탄소 센서의 측정값을 수집해 LED 화면에 표시하고 MQTT로 전송하는 모니터링 시스템을 개발했습니다. ESP32에서 RS-485 센서 통신, 화면 출력, 네트워크 연결 상태를 처리하는 구조를 구성했습니다.

KakaoTalk_20260123_160806794.jpg

5fc492cf-a48d-424f-80bb-7c3910e92c91.png

개발 범위

  • ESP32 기반 센서 수집·표시 펌웨어 개발
  • Modbus RTU 데이터 파싱, CRC 검사, 타임아웃과 재시도 처리
  • 가스명·측정값·단위를 구분하는 4분할 화면 구성
  • Wi-Fi·MQTT 연동과 JSON 데이터 전송
  • 설정한 임계값에 따른 색상 변경·깜빡임 표시

주요 구현 내용

센서 수집과 화면 표시

4종 가스 센서를 Modbus RTU로 순차 조회하고, 각 센서의 이름·값·단위를 LED 화면에 표시했습니다. 센서 폴링은 500ms, 화면 값 갱신은 1초 주기로 설정했습니다.

센서 표시 정보
COMB 가연성 가스 농도, %LEL
O2 산소 농도, %Vol
H2S 황화수소 농도, ppm
CO 일산화탄소 농도, ppm

CRC-16 검증, 최대 3회 재시도, 타임아웃 처리를 구성했습니다. 센서 수집과 화면 렌더링을 RTOS 태스크로 분리하고, 오프스크린 버퍼에서 프레임을 준비해 갱신하도록 했습니다.

네트워크 연동과 상태 표시

수집한 데이터를 JSON으로 구성해 MQTT 브로커로 전송합니다. Wi-Fi·MQTT 연결이 끊어지면 재연결하도록 했으며, 데이터 버퍼링과 연결 복구 후 전송, Watchdog 처리를 적용했습니다. 설정한 임계값 조건에 따라 표시 색상과 깜빡임을 바꾸고, 부저 연동을 확장할 수 있는 구조를 구성했습니다.

시스템 구성

[4종 가스 센서]
     ↓ RS-485 통신
[ESP32 제어 보드]
     ├→ LED 드라이버 → [128×64 LED Matrix]
     └→ WiFi → MQTT Broker → [IoT 플랫폼]

구분 사용 기술·구성
MCU ESP32
표시 장치 RGB LED 매트릭스, 4분할 표시
센서 연결 RS-485 출력 가스 센서 4종, RS-485–TTL 변환기
펌웨어 C/C++, Arduino Framework, Arduino IDE
센서 통신 ModbusMaster, Modbus RTU
화면 처리 Adafruit GFX Library, 프레임버퍼
네트워크 Wi-Fi Library, PubSubClient, MQTT
멀티태스킹 FreeRTOS
전원 구성 ESP32 5V, 센서용 별도 전원

구현 화면

image.png

4종 가스의 측정값을 구분해 표시하는 LED 화면입니다.

image.png

가스 센서와 RS-485 통신 인터페이스 구성입니다. 센서 데이터 수집, 현장 표시, 서버 전송을 연결하는 펌웨어 구현에 초점을 맞췄습니다.

RS-485 가스 센서 연동 LED 모니터링 시스템 | POLSTARIN