AT 커맨드

Arduino esp32 최신버전에서 LTE CATM1 모뎀 동작 안되는 현상 -- 해결

장병남 2024. 6. 28. 06:08

어제저녁에 한통의 문자를 받았습니다.

 
최근에 ESP32보드에 Arduino 모뎀 라이브러리를 올렸을 때 보드에서 모뎀 스타트 메시지 이후 동작 안된다는 연락을 몇 분에게 받았던 터라 어떤 문제인지 코드 분석을 시작했습니다.
 
Arduino에서 esp32 패키지를 가져오는 주소는 최신 버전인 아래 주소를 사용했습니다.

https://espressif.github.io/arduino-esp32/package_esp32_index.json

 
File → Preferences...→ Settings에서 입력 후 OK 버튼을 누릅니다.

 
 
아래와 같이 2.0.0 버전에서 3.0.2(최신버전)로 업데이트했습니다.

 
업데이트 이후에 ESP32 IoT example 중 TYPE1SC_Basic_test 불러와서 빌드 후 ESP32 IoT 보드에 업로드했습니다.
동작이 안 되는 것을 확인했습니다(!!!)

 
이제 어떤 현상인지 확인하기 위해 TYPE1SC 라이브러리의 디버그 모드를 활성화하겠습니다.
라이브러리 코드는 Arduino/libraries/TYPE1SC/TYPE1SC.cpp 입니다. 에디터를 이용해서 오픈합니다.
 
아래 표시한 //#define __TYPE_1SC_DEBUG  주석(//)을 제거하고 저장합니다. 

 
아두이노 예제를 다시 빌드해서 보드에 업로드합니다. 이제 AT커맨드로 주고받는 메시지를 확인할 수 있습니다.
메시지를 보면 ESP IoT 보드에서 LTE CATM1 모뎀으로 AT라는 문자를 보냈는데, 3초 타임아웃까지 아무런 메시지를 받지 못해서 계속 반복하고 있는 상황이었습니다. (모뎀과 통신이 되는지 확인하는 과정이라 응답을 받지 못하면 계속 반복하도록 라이브러리에 구현되어 있습니다.)

 
ESP32 IoT 보드와 LTE CATM1 모뎀이 Serial2로 통신하고 있는데, 관련된 구현에 뭔가 바뀐 것이 있을 것 같다는 의심이 들었습니다. 업데이트한 Arduino esp32 패키지를 조사해 보았습니다. 운영체제에 따라 패키지가 설치되는 위치의 차이가 있습니다. 제가 사용하는 우분투 리눅스에서는 아래 경로의 파일입니다. 
.arduino15/packages/esp32/hardware/esp32/3.0.2/cores/esp32/HardwareSerial.h
 
변경사항은 아래와 같습니다. ESP32 RX2가 4, TX2가 25로 변경되었습니다. (!!)
기존에는 RX2는 16, TX2는 17이었습니다. 

 
간단하게 문제를 해결할 수 있는 방법은 아래와 같습니다.
RX2, TX2 정의하는 핀번호를 기존과 동일하게 바꾸는 방법입니다. 

 
변경 후 저장하고 example을 다시 빌드해서 보드에 업로드하면 당연히 잘 동작됩니다.

ESP32 IoT 보드 로그화면 (debug ON상태)

 

모뎀 동작 상태 OLED 표시

 
하지만, 이렇게 문제를 해결하게 되면 Arduino esp32 패키지 업데이트 할 때마다 매번 esp32 core 라이브러리를 수정해야 하는 불편한 상황이 생깁니다. 
 
그래서 TYPE1SC 라이브러리의 example을 수정했습니다.
 
Serial2로 지정하지 않고 HardwareSerial로 직접 지정했습니다. 

 
Setup에서 Serial2를 초기화하는 부분도 아래와 같이 수정했습니다.

 
수정 후 잘 동작되는 것을 확인했습니다.

 
동작 확인 후 esp32, esp32 iot 모든 example에 동일하게 적용 후 github.com에 코드를 업로드했습니다.
자세한 수정내역은 LTE CATM1 모뎀 오픈소스 사이트를 참고하시기 바랍니다.
 
https://github.com/codezoo-ltd/TYPE1SC

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

LTE-CATM1 내장형 모뎀 구매 상담, 외주 개발, 협업 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr
 
 

 

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

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

www.devicemart.co.kr

 

 

LTE CATM1 ESP32 IoT 보드 : codezoo

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

smartstore.naver.com

 

 

Vodafone Global IoT SIM Card : codezoo

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

smartstore.naver.com