WIZnet RP2040-HAT을 통한 MQTT - Publish & Subscribe [CircuitPython]
WIZnet RP2040-HAT github - https://github.com/Wiznet/RP2040-HAT-CircuitPython
MQTT?
- M2M과 사물인터넷에서 사용하기 위해 만들어진 경량의 메시지 프로토콜
- TCP에서 동작하는 형태
- <서버>와 <클라이언트> 구조가 아닌 <Broker><Publisher><Subscriber> 구조로 이루어져있다.
- <Publisher>는 Topic을 발행한다
- <Subscriber>는 Topic을 구독한다
- <Broker>는 중계 역할을 하며 1:N 통신에 적합하다
Environment
1. Mosquitto? + 설치하기
- 모스키토는 MQ Telemetry Trasport 프로토콜 (MQTT) 3.1과 3.1.1을 구현한 오픈소스 메세지 브로커이다.
- 저전력 파워센서, 모바일디바이스, 임베디컴퓨터, 아두이노, 마이크로 컨트롤러같은 "디바이스 To 디바이스"의 메세징 처리에 적합하다.
https://mosquitto.org/download/
Download
Mosquitto Enhancements These projects can be used to add extra features to Mosquitto. Management Center: A web UI for managing Mosquitto instances. In particular, this offers a convenient UI for managing clients, groups and roles as in the new Dynamic Secu
mosquitto.org
2. Raspberry Pico와 WIZnet RP2040 HAT 결합하기.
Ethernet 모듈에는 W5100S가 내장되었고 SPI 인터페이스를통해 라즈베리파이 피코와 연결된다. 주의할 점은 방향을 잘 보고 꽂아야 한다. 이더넷 쉴드를 보면 USB 모양을 표시가 있는데 이 방향과 라즈베리파이 피코의 USB 방향이 같아야 한다.
Upload and Run [Publish & Subscribe]
1. WIZnet github에서 라이브러리 내부에 있는 파일을 가져와 피코내부에 있는 lib폴더에 그대로 복사한다.
2. examples/MQTT/PubSub/W5x00_MQTT_pubsub.py 파일을 피코에 있는 code.py에 가져온다.
3. Command Prompt를 열어 [Mosquitto Broker]를 실행하고 [Teraterm Terminal]을 열어 피코를 실행한다.
C:\Program File\Mosquitto> mosquitto -c mosquitto.conf -p 1883 -v
4. Prompt 창을 3개 열어 다음과 같은 명령어로 클라이언트 3개를 브로커에 접속하여 준다.
-h : Host PC의 IP address를 의미함.
-t : Topic명으로 Broker로부터 구독.
mosquitto_sub -h 192.168.1.11 -t BREAKFAST
mosquitto_sub -h 192.168.1.11 -t LUNCH
mosquitto_sub -h 192.168.1.11 -t DINNER
5. 새로운 프롬프트를 열고 브로커를 통해 해당 토픽에 Publish 메세지를 넣어주면 각 [Topic]에 맞는 Text가 응답하여 출력된다.
C:\Program Files\Mosquitto>mosquitto_pub -h 192.168.1.11 -t breakfast -m "B"
C:\Program Files\Mosquitto>mosquitto_pub -h 192.168.1.11 -t lunch -m "L"
C:\Program Files\Mosquitto>mosquitto_pub -h 192.168.1.11 -t dinner -m "D"
MQTT_pubsub video - https://youtu.be/9PR27j9qlEc