안녕하세요 이번 포스팅은 최근 WIZnet에서 Raspberry Pi Pico와 W5100S를 이용하여 출시한 W5100S-EVB-Pico로 AWS IoT Cloud에 접속하여 데이터를 송수신 하는 것을 소개 해드리겠습니다.

W5100S-EVB-Pico 정보 보기 : https://docs.wiznet.io/Product/iEthernet/W5100S/w5100s-evb-pico

 

W5100S-EVB-Pico | WIZnet Document System

W5100S-EVB-Pico made for prototyping and testing Ethernet capabilities on Pico

docs.wiznet.io

우선 AWS에 접속하여 회원가입을 합니다. AWS Cloud가 유료이긴 하지만 처음 가입시 100$ 가량의 Credit을 제공하니, 테스트 용도로 사용하기에는 부족함 없이 사용 할 수 있습니다.

그리고 로그인을 한뒤 IoT Core로 가서 테스트용도이므로 단일 사물을 등록 합니다.

AWS IoT Core Home
단일 사물 생성
사물 이름을 정하고 섀도우 없음
새 인증서 자동 생성
정책 연결

만약 생성해 둔 정책이 없다면 정책 생성을 하시고 연결하면 됩니다. 저는 Test 용도이기 때문에 모두 Allow를 했지만 용도에 맞게 정책을 만들어보시기 바랍니다. 자세한 정책 관련 정보는 아래 링크를 참고해주세요.

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-policies.html

 

최종적으로 사물생성을 완료하면 이 사물의 보안키들을 다운받을 수 있고 위의 그림에서 표시된 4개의 파일을 다운 받습니다. 참고로 퍼블릭 키는 사용하지 않습니다. 그리고 지금이 아니면 이 키들이 다시 배포되지 않으니 반드시 지워지지 않도록 잘 보관하다가 F/W 안에 넣으면 보안상의 이유로 폐기하시는걸 권고 드립니다.

이제 AWS IoT Core에 사물 생성은 마쳤고, F/W쪽을 보도록 하겠습니다.

F/W는 하기 링크에서 다운로드 및 Clone을 하실 수 있습니다.

https://github.com/Wiznet/RP2040-HAT-AWS-C

 

GitHub - Wiznet/RP2040-HAT-AWS-C

Contribute to Wiznet/RP2040-HAT-AWS-C development by creating an account on GitHub.

github.com

Clone, Submodule Update, Patch를 모두 적용합니다. 그리고 안에 있는 Guide 문서를 읽으면 좀 더 수월하게 진행 할 수 있습니다.

그리고 다운로드 받은 키 파일들을 ...\RP2040-HAT-AWS-C\examples\AWS_IoT_MQTT\mqtt_certificate.h 파일에 문자열로 아래와 같이 넣습니다.

RSA 2048비트 키: Amazone Root CA 1 -> 변수명 mqtt_root_ca

디바이스 인증서 -> 변수명 mqtt_client_cert

프라이빗 키파일 -> 변수명 mqtt_private_key

키 입력 예시

그리고 Domain과 Publish Topic, Subscribe Topic, Client ID를 입력해줘야 합니다. 이 정보들은 코드상에서 ..\RP2040-HAT-AWS-C\examples\AWS_IoT_MQTT\AWS_IoT_MQTT.c 파일의 상단에 Define으로 정의 되어 있습니다.

Client ID는 사물이름으로 하면 되고 저는 테스트를 위해 shadow/update, shadow/update/accepted Topic을 사용하였습니다.

이후 빌드하고 F/W를 Writing 한 후에 Log를 보면 아래와 같습니다

DHCP를 통해 IP를 가져오고, DNS를 통해 domain 의 주소를 가져온 뒤 접속을 하고 publish data를 보냅니다.

보낸 데이터는 MQTT 테스트 클라이언트를 통해 확인 할 수 있습니다.

반대로 MQTT 테스트 클라이언트의 주제 게시 기능을 통해 단말로 메세지를 보낼 수 있습니다.

이상으로 포스팅을 마치겠습니다.

블로그 이미지

공돌이는공돌공돌

,