Embedded/RaspberryPI

W5100S-EVB-Pico를 이용해서 MQTT 발행(Publish) 해보기

변화의 물결1 2024. 2. 2. 00:03

 

 

안녕하세요.

  

 IoT 관련해서 Raspberry Pi의 유선기반 보드를 찾다가 W5100S를 가지고 테스트해 보기로 하였습니다. 예전에 MicroPython 컴파일해서 올리는 작업은 했지만, MQTT 샘플소스로 테스트해보지 않아서 확인 겸 작업해 보았습니다.

 


 

 

1. W5100S-EVB-Pico 스펙

 

 - 간단하게 홈페이지에 나와 있는 정보를 가져왔습니다.

 

 

 

 

2. MQTT 동작을 위한 초기 설정 및 패키지 설치

 

 - 간단한 설치 등은 할 수 있다고 생각하고 적어보겠습니다.

 

1) W5100S에 MicroPython 설치

 

 - MicroPython으로 코드 작업을 하기 위해서 github에서 release의 최신 rp2_w5100s_20221111_v2.0.0.uf2 파일을 다운로드한 후 EVB 보드의 BOOT_SEL 버튼을 누르면서 USB에 연결하여 다운로드한 파일을 복사해서 붙여 넣기 합니다.

 

https://github.com/Wiznet/RP2040-HAT-MicroPython/releases

 

2) Thonny 설치

 

 - 기본 MicroPython 프로그램과 다운로드를 하기 위해서 다운로드해서 설치합니다.

https://thonny.org/

 - 정상적으로 설치가 되고 W5100S-EVB-Pico가 연결되면 오른쪽 하단에 MicroPython(Rasberry Pi Pico)라고 나타납니다.

 

 

3) MQTT를 위한 패키지 설치

 

 Thonny 프로그램 상단 메뉴의 Tools - Manage packages 선택 후, umqtt를 입력한 다음 검색하면 몇 가지가 패키지가 나타납니다. 그중에 micropython-umqtt.simple를 선택해서 설치하면 됩니다. 그런데 simple, simple2 버전이 나오는데 기존의 경량화(Lightweight) mqtt 패키지를 설치해서 테스트합니다. 그리고 mqtt 재접속을 위한 패키지로 robust 버전도 추가로 설치합니다. 이것 또한 Lightweight 동일한 버전으로 설치하면 됩니다.

 

 

 - 설치가 완료되면 왼쪽 하단에 Raspberry Pi Pico 부분에 lib라는 폴더가 생성되고 umqtt안에 파일이 있는 것을 확인할 수 있습니다.

 

  

4) example 소스 다운로드

 

 - W5100S-evb 보드를 테스트하기 위해서 샘플소스를 github에 제공해주고 있습니다. micropython 전용 Source Code를 가지고 테스트 진행합니다. git프로그램을 통해서 혹은 압축된 소스를 링크를 통해서 다운로드합니다.

 - 다음 경로에 있는 RP2040-HAT-MicroPython\examples\MQTT 파일을 확인합니다.

 

git clone https://github.com/Wiznet/RP2040-HAT-MicroPython.git

 

 

3. 테스트를 위한 소스 수정

 

 - MQTT_pub.py을 열어 수정을 조금 합니다. 기존의 코드로 동작했겠지만, 현재 import 부분에 조금 수정이 필요했습니다. 위에서 다운로드한 패키지를 사용하려면 아래와 같이 바꿔 줍니다.

 from umqtt.simple import MQTTClient

 

- 보통 MQTT 서버를 가지고 있지 않기 때문에 무료로 MQTT를 테스트할 수 있는 서버를 찾아야 합니다. 그래서 mosquitto.org에서 제공해 주는 서버를 사용해 봅니다. 이 서버를 하기 위해서 서버주소를 입력합니다.

 그리고 topic과 데이터는 임의로 변경해 주면 됩니다.

 

#mqtt config
mqtt_server = 'test.mosquitto.org'
client_id = 'wiz'
topic_pub = b'W5100S/MQTT/DATA'
topic_msg = b'100

  

 - DHCP(자동으로 아이피를 할당)로 IP 받아도 되지만, 여기서는 내부망에 맞게 IP 대역을 192.168.0.x  설정해서 고정해 주었습니다.

 

#None DHCP
    nic.ifconfig(('192.168.0.230','255.255.255.0','192.168.0.1','8.8.8.8'))

 

 

4. MQTT 데이터 확인

 

 - Run 스크립트를 실행합니다. 특별한 오류가 없다면 설정된 IP 주소와 레지스터 정보가 나오고 Broker와 접속되었다고 메시지가 나오면서 데이터가 발행(Publish)됩니다.

 

  

- 데이터 발행된 것을 확인하기 위해서 MQTT Explorer 프로그램을 사용했습니다. 아래와 같이 접속을 합니다.

 

 

- Topic을 필터링을 하지 않으면 엄청난 데이터가 들어오기 때문에 상단 검색창에 Source에 넣었던 Topic을 입력합니다. 그러면 원하는 Topic 데이터만 확인할 수 있습니다.

 

 

 

 - 이로서 W5100S-EVB-Pico를 이용해서 MQTT 통신이 가능한 것을 확인하였습니다.

 

 

참고 1) 질문 포럼

  W5100S 보드 및 소프트웨어 관련 질문할 수 있는 링크

https://forum.wiznet.io/c/korean-forum/12

 

참고 2) 최신 펌웨어(latest firmware)

  참고로 현재 github에 MicroPython이 최신버전이 아니라는 점에 문의가 있었는데 별도로 작업하고 있다는 글이 있어 공유드립니다.

  공식 Release 버전은 아닌 듯하나 참고용으로 다운로드할 수 있게  알려주고 있었습니다. 문의 내용 확인하시고 사용하시면 도움 되지 않을까 합니다.

https://forum.wiznet.io/t/topic/11759

 

 

감사합니다.

 

 

<참고사이트>

1. W5100S-EVB-Pico

https://docs.wiznet.io/Product/iEthernet/W5100S/w5100s-evb-pico

 

 

반응형