MQTT는 Broker를 통해 여러 클라이언트와 연결하여 데이터 구독하거나 발행할 수 있는 장점이 있습니다.
하지만 경량화된 프로토콜이기 때문에 Broker는 데이터 저장하거나 관리를 할 수 없습니다.
이러한 한계를 보완하기 위해 LabVIEW와 연동하면 별도로 데이터를 저장하고 분석할 수 있습니다.
또한, LabVIEW는 MQTT로 주고받기 힘든 고속 데이터를 수집할 수 있으므로 IoT 및 DAQ 시스템에서
다양한 데이터를 저장하고 분석하는데 유용합니다.
이번에는 RabbitMQ를 설치하고, Broker를 통해 Arduino R4 Wi-Fi와 LabVIEW가 통신하는 과정을 소개해 드리겠습니다.
NI사에서 MQTT 라이브러리를 공식적으로 제공하지는 않지만, VIPM과 GitHub을 통해 무료 오픈소스를 활용할 수 있습니다.
Hcube에서는 RabbitMQ Broker와 Arduino를 이용하여 MQTT 실습을 하였습니다.
RabbitMQ 설치
Broker를 먼저 구성합니다. RabbitMQ는 Erlang 프로그래밍 언어로 개발되어 있기 때문에 Erlang 런타임 시스템이 필요합니다.
아래 링크에서 설치 파일을 다운로드할 수 있습니다.
⚫ Erlang : https://www.erlang.org/
RabbitMQ를 서버와 MQTT 플러그인을 실행한 후 웹페이지 주소에 http://localhost:15672/를 입력하여
관리자 페이지로 이동할 수 있습니다. 기본 Username과 Password는 guest로 설정되어 있습니다.
로그인 후 Admin 메뉴에서 ID와 Password를 추가 및 권한을 설정할 수 있습니다.
HW 연결 및 Publish 구성
Publish는 Arduino R4 Wi-Fi와 온습도 센서인 DHT11을 이용해 구성하였습니다.
Arduino R4 Wi-Fi는 ESP32가 내장되어 있어 Wi-Fi를 통해 MQTT 통신이 가능합니다.
다음과 같이 센서를 연결합니다.
⚫ DHT11 VCC = Arduino 5V
⚫ DHT11 GND = Arduino GND
⚫ DHT11 data = Arduino DI 2
Arduino R4 Wi-Fi는 LabVIEW와 직접 호환되지 않으므로 Arduino IDE를 이용하여 프로그래밍합니다.
Admin 페이지에서 설정한 Username과 Password를 입력하여 RabbitMQ Broker로 데이터를 발행할 수 있습니다.
LabVIEW에서 Subscribe
브로커에서 발행된 데이터를 LabVIEW에서 구독하면, 실시간으로 수집된 데이터를 확인할 수 있습니다.
LabVIEW에서 Broker IP, Topic, Username, Password를 설정하면 RabbitMQ Broker에 접속하여 특정 토픽을 받아볼 수 있습니다.
위의 그림과 같이 RabbitMQ Broker로부터 ‘dht11/data’ 토픽을 구독하여, 온도 25.80°C, 습도 24.00% 데이터를
LabVIEW에서 실시간으로 확인할 수 있습니다.