ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • stm32duino + LTE CATM1 내장형 모뎀
    STM32 2023. 7. 4. 02:51

    https://github.com/stm32duino

     

    STM32duino

    Arduino core for STM32 MCUs. STM32duino has 117 repositories available. Follow their code on GitHub.

    github.com

    STM32duino Project는 STM32 MCU에 Arduino core를 올려서 Arduino API로 STM32 MCU를 손쉽게 접근할 수 있도록 오픈소스로 제공되고 있는 프로젝트입니다. 

     

    현재 117개의 레포지트리가 등록되어 있습니다. STM32의 다양한 제품군에서 사용할 수 있고,

    해당 레포지트리에서는 ST에서 제공하는 센서, Conectivity의 Arduino Library로 제공되고 있어서 다양하게 활용할 수 있습니다. 

     

    해당 프로젝트를 사용해서 LTE CATM1 내장형 모뎀을 동작시켜 보았습니다. 

    사용한 보드는 아래와 같습니다. 

     

    STM32duino로 사용한 3가지 보드

    STM32C031을 사용한 NUCLEO-C031C6보드, STM32H723ZG를 사용한 NUCLEO-H723ZG보드, STM32G071을 사용한 NUCLEO-G071RB 보드입니다. 간단하게 소개하자면 STM32에서 최근 출시한 제품 중 가장 저렴한 MCU 제품군인 C0와 고성능의 H7, 실무에서 많이 사용되는 G0시리즈에 각각 STM32duino를 올려서 LTE CATM1 Arduino 라이브러리가 잘 동작하는지 확인해 보았습니다. 

     

    결과부터 말씀 드리면 세 보드 모두 잘 동작 했습니다. 

    STM32duino의 약간의 특성(?)만 파악하시면 사용하는데 전혀 문제 될 것이 없을 것 같습니다. 

    LTE CATM1 Arduino 라이브러리 외 다른 Arduino 센서와 Graphic Library로 함께 사용해 봤는데, 문제없이 동작되었습니다. 

     

    사용하시기 위해서는 먼저 STM32duino를 보드매니저에 추가하기 위해 아래와 같은 설정이 필요합니다. 

    File --> Preferences --> Additional Boards Manager URLs

    https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

    추가 보드 설정에 위 경로를 입력하고 OK를 누릅니다.

     

    Tools --> Board --> Board Manager를 눌러서 stm32를 검색 후 STM32 MCU based boards... 설치합니다. 

    이제 보드를 설정 합니다. Nucleo인 경우 144핀, 64핀, 32 핀인지를 먼저 결정합니다.

    위 사용한 보드 중 H7의 경우 144핀이고 나머지 2개 보드는 64핀입니다. 64핀을 골라 보겠습니다. 

    STM32 boards groups --> Nucleo-64 선택

    선택이 되었으면 이후 보드 파트 넘버(Board part number) 목록에서 보드이름을 검색합니다. Nucleo G071RB를 선택했습니다.

    Board Part Number --> Nucleo G071RB

    이제 설정이 마무리되었습니다. 

    한 가지만 더 확인하면 됩니다. 펌웨어를 업로드하는 방법인데, Mass Storage를 선택하면 됩니다.

    이유는 Nucleo Board는 디버거가 포함되어 있습니다. 보드의 USB를 PC에 연결하면 PC에 USB 저장장치로 잡힙니다.

    여기에 펌웨어를 복사 -> 붙여 넣기 하시면 디버거를 통해 자동으로 MCU에 펌웨어가 업로드됩니다.

    이 과정을 자동 진행하기 위해 Mass Storage를 선택했습니다.  

    업로드 방법은 Mass Storage를 설정하시면 편합니다. ^^

    자~ 이제 Type1SC 예제를 불러와서 빌드해 봅니다. 

    분명히(!) 에러가 발생합니다. 

     

    이유는 STM32duino는 Serial이 한 개만 사전 설정되어 있습니다. 

    LTE CATM1에서 사용하는 Arduino Pin header 0과 1이 Serial로 지정되어 있지 않습니다. 

    그래서 회로도를 찾아서 Pin0, Pin1이 어떻게 설정되어 있는지 찾아보고 코드에 추가해 줘야 합니다. 

    Nucleo G071RB의 경우 회로도( https://www.st.com/resource/en/schematic_pack/mb1360-g071rb-c02_schematic.pdf )

    를 보면, 아래와 같이 D0에 PC5, D1에 PC4가 연결된 것을 확인할 수 있습니다. 

    해당 내용을 코드에 반영해 주면 됩니다.

    아래 HardwareSerial Serial1(PC5, PC4) 선언한 내용을 참고하시면 됩니다. 

    혼동될 수 있어서 다시 한번 설명하자면 HardwareSerial 선언 시, MCU 기준에서 (RX, TX) 순서로 핀이름을 지정해야 합니다. 

     
    #include "TYPE1SC.h"

    HardwareSerial Serial1(PC5, PC4);

    #define DebugSerial Serial
    #define M1Serial Serial1

    자,, 나머지 코드들은 그대로 사용했습니다. 

    아래와 같이 Thingspeak.com, TCP/UDP Socket, OLED 출력과 같은 여러 가지 테스트를 진행했는데,

    문제없이 잘 동작했습니다. 

    Thingspeak.com 테스트
    Arduino 그래픽 라이브러리로 OLED  출력하기
    TCP소켓 테스트

    마지막으로 이렇게 개발 완료된 펌웨어를 실제 생산에 사용하는 방법입니다. 

    Sketch --> Export Compiled Binary를 선택합니다. 

    빌드 완료 후 해당 프로젝트 아래 build 디렉터리를 보시면 아래의 파일들을 확인하실 수 있습니다.

    다양한 포맷의 바이너리를 준비해 줍니다.

    이제 STM32CubeProgrammer를 포함한 다양한 Writting 프로그램으로 해당 바이너리를 MCU에 올려 주시면 됩니다.

     

    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/7153689192

     

    Vodafone Global IoT SIM Card : codezoo

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

    smartstore.naver.com

Designed by Tistory.