SIM7080G에서 GNSS를 켤 경우 다른 통신이 불가한 문제
얼마전부터 SIM7080G LTE 모듈을 이용하고 있습니다.
여러 가지 이유로 상당한 삽질을 했었는데 그 삽질 수기는 나중에 따로 적도록 하고, 지금은 GNSS 문제에 대해 언급하고자 합니다.
아직 한국엔 LTE 모듈을 사용하는 분들이 거의 없기 때문에 제가 먼저 이 문제를 겪지 않았나 싶습니다. 그래서 상세하게 기록을 남깁니다.
SIM7080G은 다른 모델에 비해 비교적 저가에 형성되어 있습니다. 저는 AND Global의 breakout board를 이용하고 있는데, 이를 기준으로 약 $18 가량 됩니다. NB-IoT, Cat-M1을 지원하며, GNSS 또한 이용 가능합니다.
물론 SIM7020G은 $13.58 로 더 저렴합니다만 CAT-M을 지원하지 않고 NB-IoT만을 지원합니다. 물론 국내에서도 NB-IoT를 서비스 하고 있습니다만, 제가 사용하는 글로벌유심(http://www.thingsmobile.com)이나 선불 유심(SK세븐모바일)으로는 접속이 불가능했습니다. (또한 GNSS를 지원하지 않습니다)
일반적으로는 SIM7600-H Series(Cat.4)가 자주 쓰이는데, 가격은 $29.5 (SIM7600E-H1C 기준), $36.57(SIM7600G-H)로 SIM7020G, 7080G에 비해 다소 비싼 편입니다. SIM7080G는 애초 SIM7600-H과는 다른 용도로 사용됩니다. SIM7600G는 LPWA(Low Power Wide Area, 저전력 광역통신)에 특화된 모듈로 NB-IoT, Cat-M 기술을 이용합니다. 전력 소모가 작고 모듈의 가격이 저렴한 대신에 속도가 느린 단점이 있습니다 (Cat-M: ↑1119Kbps ↓589Kbps, NB-IoT: ↑150Kbps ↓136Kbps). 반면 SIM7600-H는 Cat.4 기술을 이용하여 속도가 비교적 빠릅니다 (Cat.4: ↑50Mbps ↓150Mbps).
저는 이 LTE모듈을 학교 과학 실험실 환경에서 이용을 하는 것을 목적으로 하였으므로 최대한 저렴한 것을 고르려고 했고, 그래서 SIM7080G를 선택하였습니다. 과학 실험에서 만들어진 데이터들의 양은 매우 작기 때문에 전송 속도는 큰 문제가 되지 않습니다. 그리고 이동하면서 이용 할 경우 배터리를 사용하게 되므로, 전력 소모가 적을 수록 좋습니다. 따라서 저에겐 SIM7080G는 SIM7600-H보다 압도적인 우위에 있었기 때문에 SIM7080G를 주력 모델로 구입하여 테스트 중에 있었습니다.
SIM7080G에 최적화된 Arduino Library가 없었기 때문에 직접 AT Command Manual을 읽어가며 library를 개발하였고, LTE를 통해 Thingsboard IoT Platform에 MQTT로 데이터를 전송하는 기능을 구현했습니다. (라이브러리의 초기 버전은 사소한 문제로 안정성이 떨어졌는데, 지속적인 테스트와 개선을 거쳐서 현재는 매우 안정화 된 상태입니다.)
그리고 최근엔 GNSS를 구현하고자 관련 매뉴얼을 보며 새로운 함수들을 추가하였습니다. 그런데 문제는, GNSS를 사용하지 않을 때 잘 작동하던 모듈이, GNSS를 켠 상태에서는 계속 데이터 전송이 실패하는 문제가 발생했습니다.
구체적인 로그 기록은 다음과 같습니다.
01:44:51.868 -> RDY
01:44:52.147 ->
01:44:52.147 -> +CFUN: 1
01:44:52.241 ->
01:44:52.241 -> +CPIN: READY
01:44:52.472 ->
01:44:52.472 -> SMS Ready
01:45:01.199 -> AT+CNACT=0,1
01:45:01.199 -> OK
01:45:01.199 ->
01:45:01.199 -> +APP PDP: 0,ACTIVE
01:45:09.220 -> AT+SMCONF="URL","thingsboard.******.kr","1883"
01:45:09.220 -> OK
01:45:12.705 -> AT+SMCONF="USERNAME","****************"
01:45:12.752 -> OK
01:45:20.173 -> AT+SMCONF="KEEPTIME",60
01:45:20.173 -> OK
01:45:38.090 -> AT+SMCONN
01:45:40.930 -> OK
# GPS가 꺼진 상태에서는 잘 작동합니다.
01:45:43.242 -> AT+SMPUB="v1/devices/me/telemetry",21,1,1
01:45:43.242 -> > {"MH-Z19B_CO2":"400"}
01:45:46.443 ->
01:45:46.443 -> OK
01:45:49.971 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:45:49.971 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:45:55.948 ->
01:45:55.948 -> OK
01:45:58.731 -> AT+SMPUB="v1/devices/me/telemetry",21,1,1
01:45:58.731 -> > {"MH-Z19B_CO2":"400"}
01:46:01.970 ->
01:46:01.970 -> OK
01:46:02.343 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:46:02.343 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:46:04.989 ->
01:46:04.989 -> OK
01:46:06.385 -> AT+SMPUB="v1/devices/me/telemetry",21,1,1
01:46:06.385 -> > {"MH-Z19B_CO2":"400"}
01:46:08.978 ->
01:46:08.978 -> OK
01:46:10.149 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:46:10.196 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:46:12.465 ->
01:46:12.465 -> OK
01:46:16.129 -> AT+SMPUB="v1/devices/me/telemetry",21,1,1
01:46:16.129 -> > {"MH-Z19B_CO2":"400"}
01:46:18.494 ->
01:46:18.494 -> OK
01:46:20.673 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:46:20.673 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:46:22.995 ->
01:46:22.995 -> OK
01:44:51.868 -> RDY
01:46:25.365 -> AT+CGNSPWR=1 # GPS ON
01:46:25.365 -> OK
01:46:30.897 -> AT+CGNSINF
01:46:30.897 -> +CGNSINF: 0,,,,,,,,,,,,,,,,,
01:46:30.948 ->
01:46:30.948 -> OK
01:46:33.130 -> AT+CGNSINF
01:46:33.130 -> +CGNSINF: 0,,,,,,,,,,,,,,,,,
01:46:33.177 ->
01:46:33.177 -> OK
01:46:36.508 -> AT+SMPUB="v1/devices/me/telemetry",21,1,1
01:46:36.508 -> > {"MH-Z19B_CO2":"400"}
01:46:42.537 ->
01:46:42.537 -> OK
01:46:43.697 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:46:43.743 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:48:46.745 ->
01:48:46.745 -> ERROR # 무려 183초 후에 에러를 뱉어냅니다.
01:50:02.369 ->
01:50:02.369 -> +SMSTATE: 0
01:50:25.582 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
01:50:25.582 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
01:50:27.580 ->
01:50:27.580 -> ERROR
01:50:47.525 -> AT+SMCONN # MQTT에 다시 접속하려 해도
01:53:19.948 -> ERROR # 에러를 뱉어냅니다.
01:54:17.066 -> AT+CREG?
01:54:17.066 -> +CREG: 0,5
01:54:17.066 ->
01:54:17.066 -> OK
01:54:22.905 -> AT+CNACT?
01:54:22.905 -> +CNACT: 0,1,"10.193.23.96"
01:54:22.953 -> +CNACT: 1,0,"0.0.0.0"
01:54:22.953 -> +CNACT: 2,0,"0.0.0.0"
01:54:22.953 -> +CNACT: 3,0,"0.0.0.0"
01:54:22.997 ->
01:54:22.997 -> OK
01:54:35.049 -> AT+SMCONF="URL","thingsboard.aphese.kr","1883"
01:54:35.049 -> OK
01:54:36.395 -> AT+SMCONF="USERNAME","5Lk9ras2PyHLjaC4iS62"
01:54:36.441 -> OK
01:54:42.896 -> AT+SMCONF="KEEPTIME",60
01:54:42.896 -> OK
01:54:47.443 -> AT+SMCONN
01:57:20.880 -> ERROR # 다시 SMCONF로 설정값을 지정해도 에러.
02:01:05.447 -> AT+CNACT=0,1
02:01:05.447 -> ERROR
02:01:07.984 -> AT+CNACT?
02:01:07.984 -> +CNACT: 0,1,"10.193.23.96"
02:01:08.030 -> +CNACT: 1,0,"0.0.0.0"
02:01:08.030 -> +CNACT: 2,0,"0.0.0.0"
02:01:08.030 -> +CNACT: 3,0,"0.0.0.0"
02:01:08.077 ->
02:01:08.077 -> OK
02:01:29.246 -> AT+CGNSPWR=0
02:01:29.246 -> OK
02:01:33.701 -> AT+SMCONN
02:02:51.839 -> OK # GPS를 끄고 시도하니 다시 잘 됩니다.
(하지만 78초가 소요됐군요)
02:04:07.436 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
02:04:07.436 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
02:04:11.972 ->
02:04:11.972 -> OK
02:04:17.940 -> AT+CGNSPWR=1 # GPS를 다시 켜봅니다.
02:04:17.940 -> OK
02:04:39.678 -> AT+SMPUB="v1/devices/me/telemetry",38,1,1
02:04:39.678 -> > {"DHT11_T":"32.00", "DHT11_H":"85.00"}
02:06:41.273 ->
02:06:41.273 -> ERROR # 또 에러를 토하네요.
02:07:56.823 ->
02:07:56.823 -> +SMSTATE: 0
02:11:03.258 -> AT+SMCONN?
02:11:03.258 -> ERROR
02:11:13.082 -> AT+SMCONN
02:13:45.677 -> ERROR
인터넷을 들쑤신 끝에 Stackoverflow.com에서 이 글을 발견합니다.
아… SIM7080G 모듈은 GNSS가 켜진 상태에서는 다른 통신이 안 되는 거랍니다.
이는 SIMCOM의 여러 매뉴얼에도 전혀 언급되지 않았던 내용입니다. Aliexpress의 사용자 설명에도 전혀 없었고요.
일단 이 부분에 대해 SIMCOM의 고객지원 담당자(support@simcom.com)에게 기술지원을 요구했고, Aliexpress seller에게는 항의를 했습니다.
hi,
Aliexpress Seller의 답변
thanks for your feedback
can i know your e-m-a-i-l address, i can build the connection with you and engineer
we will let our engineer to help you to solve problems.
Thanks a lot
일단 엔지니어가 연락을 준다고 하니 기다려보겠습니다. 만약 해결이 안 된다면 강력히 항의를 해서 SIM7600-H 모듈로 교환을 받기라도 해야 겠습니다.
추후 변동 사항이 있으면 다시 포스팅 하겠습니다.