ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LTE CATM1 모뎀에서 AWS IoT 모든 기능을 사용할 수 있습니다.
    AWS IoT 2024. 3. 31. 02:56

    대부분 AWS IoT 기능을 설명할 때, 

    TLS통신과 MQTT를 활용해서 AWS IoT Core에 접속해서 MQTT로 데이터를 송수신하는 기능을 지원한다고 이야기합니다.  LTE CATM1 내장형 모뎀의 경우도 AT커맨드로 AWS IoT 접속 및 MQTT통신을 지원하고 있습니다.

     

    하지만 AWS IoT는 MQTT통신 기능만 제공하지 않습니다. 다음은 AWS IoT Device SDK를 통해 제공하는 기능 입니다.

    출처 : https://blog.espressif.com/announcing-aws-iot-reference-example-for-esp32-c3-6587daf735d0

    MQTT통신뿐 아니라 HTTP통신, OTA, Device Shadow, Jobs, Fleet provisioning과 같은 펌웨어 업데이트, 디바이스 추상화, 대규모 인증서 관리 기능과 같은 다양한 기능들을 제공하고 있습니다. 이러한 기능들은 물론 AWS IoT 상용 서비스에서 중요한 역할을 하는 기능들입니다. 

     

    ESP32 시리즈 칩셋을 판매하고 있는 Espressif는 오픈소스 정책으로 AWS와 이전부터 AWS IoT SDK를 지원하는 레퍼런스 칩셋 제조사의 역할을 맡고 있었습니다. 

    AWS IoT Kit으로 판매되었던 M5Stack Core2 ESP32 IoT Kit

     

    ESP32시리즈는 AWS의 적극적인 지원으로 AWS IoT SDK를 포함한 esp-aws-iot 오픈소스 프로젝트 (https://github.com/espressif/esp-aws-iot)를 서비스하고 있습니다. 해당 프로젝트에서 기본으로 지원하는

    connectivity는 와이파이와 이더넷입니다. 

     

    ESP32는 오픈소스 TCP/IP 스택인 lwip를 사용해서 등록된 connectivity를 네트워크에 접속 및 통신할 수 있도록 지원하고 있습니다. connectivity는 ESP NETIF를 통해 등록합니다. 

    ESP-NETIF 구조 (출처 : https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/network/esp_netif.html)

     

    그렇다면 esp-aws-iot에서 정식으로 지원하는 와이파이, 이더넷이 아니라도 NETIF로 등록할 수 있다면 esp-aws-iot 프로젝트를 이용해서 AWS IoT의 모든 기능을 이용할 수 있을 거라는 확신을 가지고 작업을 진행하게 되었습니다. 

     

    첫 번째 단계는 LTE CATM1 모뎀을 Espressif에서 공식지원하는 프로토콜인 esp_modem으로 등록시켜서 동작시키는 작업입니다. 이 작업은 저번에 포스팅한 블로그(https://codezoo.tistory.com/79)에서 이미 완료했습니다. 

     

    두 번째 단계는 작업을 완료한 esp_modem 프로토콜을 esp-aws-iot 프로젝트로 가져와서 함께 빌드하고 코드에서 NETIF를 통해 LTECATM1 내장형 모뎀을 connectivity로 등록해서 esp-aws-iot 프로젝트가 등록된 장치를 통해 통신할 수 있으면 작업이 완료되었다고 할 수 있을 것입니다.

     

    세 번째 단계는 온습도센서와 RGB LED를 ESP32 IoT 보드에 연결 후 AWS IoT Core에 주기적으로 온도, 습도 데이터를 보고하고 AWS IoT Core에서 디바이스로 제어 명령을 보내서 보드에 설치된 REG LED가 정상동작 되는지 확인해 보겠습니다. 

     

    세번째 단계까지 완료 후 동작되는 데모영상입니다.

     

    약 12초 주기로 AM2302 센서에서 측정한 온도, 습도 데이터를 AWS IoT Core에 보고하고 AWS IoT Core에서는 "color:x"형식으로 제어 명령을 보내서 ESP32 IoT 보드에 연결된 RGB LED를 상태를 변화시키는 것을 확인할 수 있습니다. 

     

    이제 작업한 내역에 대해 소개하겠습니다. 

     

    먼저, 해당 소프트웨어를 구동하기 위해서는 아두이노 환경이 아닌 ESP-IDF 개발환경을 구축해야 합니다. 

    개발환경 구축방법은 이전 포스팅 블로그 (https://codezoo.tistory.com/79)에서 자세하게 설명했습니다.

    위 내용을 참고하셔서 vscode에 esp-idf 개발환경을 설정하시기 바랍니다. 

     

    두 번째 단계부터 진행하겠습니다.

    https://github.com/codezoo-ltd/esp-aws-iot 프로젝트의 코드를 clone 합니다.

    이때 아래와 같이 서브모듈 코드까지 모두 내려받습니다. 

    git clone --recursive https://github.com/codezoo-ltd/esp-aws-iot.git

     

    codezoo-ltd에 있는 esp-aws-iot 프로젝트는 esp_modem 프로토콜이 포함된 esp-protocols가 아래와 같이 이미 서브모듈로 등록해 놓아서 한 번에 코드를 다운로드할 수 있습니다. 

     

    다른 라이브러리들과 함께 빌드하기 위해 example에 포함된 CMakeLists.txt에 esp_modem의 경로를 추가했습니다.

     

    ppp기능이 ESP-IDF SDK구성할 때 필요하므로 example의 sdkconfig.defaults에 ppp 구성요소를 추가했습니다.

     

    AWS IoT Core에 접속하기 위해서는 디바이스 인증서와 개인키가 필요합니다. 그리고 AWS IoT Core와 통신을 하기 위한 엔드포인트 주소가 필요 합니다. 처음 AWS IoT를 사용하시는 분들에게는 복잡할 수 있으므로 아래 매뉴얼을 참고하시기 바랍니다. https://github.com/codezoo-ltd/TYPE1SC/blob/main/manual/LTE-CATM1_ESP32_IoT%EB%B3%B4%EB%93%9C_%ED%95%B8%EC%A6%88%EC%98%A8.pdf

    매뉴얼 7) AWS-IoT설정에 관련 내용들이 자세하게 정리되어 있습니다. 참고하시기 바랍니다. 

     

    AWS IoT Core에서 생성한 사물의 디바이스 인증서, 디바이스 개인키 그리고 엔드포인트 주소는 esp-aws-iot 프로젝트 빌드에서 사용할 예정이니 미리 저장해 두시기 바랍니다. 

     

    이제 ESP-IDF빌드환경이 설정된 vscode를 이용해서 개발환경 설정 및 빌드 실행 합니다.

    File -- Open Folder를 실행하고,

     

    tls_mutual_auth를 선택 후 Open을 클릭합니다. 

     

    먼저 사물생성 후 저장해 둔 디바이스 인증서와 디바이스 개인키 내용을 각각 client.crt와 client.key에 각각 입력합니다.

     

    내용 복사 후 각각 붙여 넣기 하면 됩니다.

     

    ESP32 IoT 보드를 연결하고 vscode 아래 ESP-IDF 빌드 환경을 설정합니다.

     

    이제 SDK Configuration Editor를 불러옵니다. 아래 톱니바퀴 아이콘을 클릭합니다.

     

    여기서 엔드포인트 주소, connectivity 설정합니다. 왼쪽 메뉴 중 Example Configuration을 선택합니다.

    Endpoint 주소는 사용하시는 AWS 계정에서 제공하는 엔드포인트 주소를 넣으시면 됩니다.

    connect using WiFi interface가 체크되어 있는데 LTE CATM1 모뎀을 connectivity로 사용하기 위해 체크해제 합니다.

    작업이 마무리되면 오른쪽 상단 Save 버튼을 누릅니다.

     

    별모양 아이콘을 눌러서 UART를 선택합니다. 

     

    마지막으로 불꽃모양 아이콘을 눌러서 빌드-업로드-시리얼모니터 보기를 실행합니다.

     

    AWS IoT Core 서비스에 들어가서 MQTT 테스트 클라이언트에 다음과 같이 입력 후 구독합니다.

     

    이제 아래 영상과 같이 AWS IoT 서비스가 동작되는 것을 확인할 수 있습니다.

    영상은 MCU_AI_things/example/topic으로 표시되는데 SDK 설정 시 MQTT client 이름을 기본값인 testClient로 설정할 경우 testClient/example/topic을 통해 메시지를 확인할 수 있습니다.

     

    마지막으로 세 번째 단계를 진행하겠습니다.

    먼저 DHT22(AM2302) 센서와 RGB LED를 ESP32 IoT 보드에 설치합니다.  

    - 온습도 센서의 +는 3V3, -는 GND, DATA는 25번에 각각 연결합니다.

    - RGB LED의 R은 12, G는 14, B는 15, GND는 GND핀에 각각 연결합니다. 

    ESP32 IoT 보드와 연결한 센서들

     코드를 빌드하기 위해서는 vscode에서 Open Foler를 선택 후 tls_report_control을 선택합니다. 

     

    빌드를 위한 설정은 tls_mutual_auth 예제와 모두 동일합니다.

     

    AWS IoT Core에서 디바이스에 연결된 RGB LED 컬러를 변경하거나 끄기 위해서는 아래와 같은 

    문자열을 전송하면 됩니다.

    RED         "color:4"

    GREEN    "color:2"

    Blue          "color:1"

    OFF          "color:0"

     

    app_main.c에 있는 설정코드와 mqtt_demo_mutual_auth.c에 있는 호출코드를 살펴보시면 어떤 식으로 필요한 디바이스 코드를 추가하고 서비스에서 호출하는지 확인할 수 있습니다. 

     

    Murata Type1SC 모듈 구매, 자료 관련 문의
    (주)아성코리아
    전지만 이사 010-5418-8812 mlcc@asung.com
    박상인 수석 010-6556-5405 sipark@asung.com

    LTE-CATM1 내장형 모뎀 구매 상담, 외주 개발, 협업 문의
    (주)코드주
    장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr
     
    https://www.devicemart.co.kr/goods/view?no=14077527

     

    LTE-CatM1 내장형 모뎀 / 사물인터넷 통신모듈

    사물인터넷 개발을 위한 LTE 모듈입니다. / CodeZoo / 사물인터넷 통신모듈 / 유심은 상품상세의 링크에서 별도 구매가 필요합니다.

    www.devicemart.co.kr

    https://smartstore.naver.com/codezoo/products/8514695472

     

    LTE CATM1 ESP32 IoT 보드 : codezoo

    [codezoo] IoT Global SIM, IoT Connectivity, IoT Device

    smartstore.naver.com

    https://smartstore.naver.com/codezoo/products/7153689192

     

    Vodafone Global IoT SIM Card : codezoo

    [codezoo] IoT Global SIM, IoT Connectivity, IoT Device

    smartstore.naver.com

     

Designed by Tistory.