자동차 배터리 전압을 텔레그램 메시지로 받기 - 일주일 테스트 결과 및 슬립모드 전원관리
이전 포스팅 ( https://codezoo.tistory.com/74 )에서 설치한 장비를 1월 1일 오후 8시부터 1월 8일 오후 9시까지 약 7일 동안 테스트한 결과와 슬립모드 측정 결과 및 개선사항에 대한 내용을 정리했습니다.
테스트 조건
1. 장비에서 1시간 단위로 차량 배터리를 측정 후 LTE CATM1 모뎀을 이용해서 등록한 사용자의 텔레그램 메신저로 데이터를 전송 했습니다.
2. 장비는 18650 배터리팩으로만 동작시켰습니다. 테스트 도중 재충전 없이 사용했습니다.
3. 차량은 금, 토, 일요일 3회 운행했습니다.
일주일간 테스트한 결과는 아래와 같습니다.
|
|
Q) 텔레그램 Bot 서비스는 데이터 전송 및 수신에 대한 신뢰성 100% 보장하는가?
A) 대부분의 장비에서 보낸 데이터를 텔레그램 메신저에서 확인할 수 있었지만 테스트하는 동안 약 3회의 데이터가 장비에서 발송되었음에도 불구하고 메신저에서 확인할 수 없었습니다. 텔레그램 QoS정책으로 인해 누락이 되는 경우도 있다는 소식을 들었습니다. 높은 신뢰성을 요구하는 작업의 경우 전용서버나 상용 IoT클라우드 서비스를 권장합니다.
이전 포스팅 후 Deep Sleep 상태에서 장비의 전류소모량이 궁금하여 장비를 이용해서 측정했습니다.
테스트 영상입니다. 전원 인가 후 텔레그램으로 메시지를 전송하고 DeepSleep 모드 상태에서 다음 측정시간까지 대기합니다.
약 2.39mA의 대기전류가 측정되었습니다.
내친김에 ESP32의 전원관리 모드 중 가장 전류소모가 적은 Hibernation Mode로 설정 후 전류를 다시 측정했습니다.
약 2.37mA로 거의 차이가 없었습니다.
ESP32 SLEEP MODES에 대한 내용은 아래 글을 참고했습니다.
https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/
Deep Sleep 모드를 이용할 경우 아래 그림과 같이 ESP32의 코어블록에서 ULP Coprocessor와 RTC 장치를 제외한 다른 블록들의 전원을 차단합니다. 10uA의 전류를 소모한다고 합니다.
Hibernation 모드를 이용할 경우 RTC장치를 제외한 모든 코어블록의 전원을 차단합니다. 2.5uA의 전류를 소모한다고 합니다.
여기에서 Deep Sleep모드와 Hibernation모드의 큰 차이점이 있습니다. Deep Sleep 모드에서는 메모리에 데이터를 저장할 수 있지만 Hibernation모드에서는 메모리블록의 전원도 차단하므로 메모리의 내용이 사라져 버립니다.
DeepSleep Mode에서 메모리를 사용하는 코드입니다.
아래와 같이 메모리를 선언합니다.
setup에서 bootCount를 하나 증가 시킵니다.
배터리값을 텔레그램으로 전송할 때 bootCount를 넣어서 부팅 후 몇 번째 메시지인지 확인할 수 있습니다.
텔레그램 메신저에 출력된 결과화면입니다.
이번에는 Hibernation Mode를 사용하는 코드입니다. 소스코드를 작업하면서 위와 같은 넘버링을 메모리 없이 다른 방법으로 구현했습니다.메모리는 사용할 수 없지만 ESP32에 내장되어 있는 플래시메모리를 자체지원하는 SPIFFS 파일시스템을 사용했습니다.
아래와 같이 헤더파일과 변수를 선언합니다.
setup() 함수에서 SPIFFS 파일시스템 마운트하고 로그파일을 open 합니다. 로그파일이 있으면 파일에서 저장된 bootCount값을 가져와서 카운트를 하나 증가시키고 로그파일이 없으면 초기값 0에서 카운트를 하나 증가시킵니다.
sleep모드에 들어가기 전 로그파일에 현재 카운트를 저장합니다.
hibernation 모드의 경우 ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_DOMAIN_XTAL까지 파워 도메인을 끄고 슬립모드에 들어갑니다.
이제 메모리를 사용하는 DeepSleep 모드와 동일하게 카운트를 할 수 있습니다. 물론 다음번 테스트를 처음 시작할 때는 로그파일을 삭제하거나 로그파일명을 변경해서 새로운 로그파일에 카운트를 기록할 수 있도록 수정해야 합니다.
마지막으로 2.4mA Current를 더 줄이는 방법입니다.
전원관리는 소프트웨어 코드뿐 아니라 전체 시스템 디자인을 어떻게 하는가에 따라 큰 차이가 있습니다. 하드웨어 회로를 구성할 때도 신경 써야 할 것이 적지 않은데 기억해 두어야 할 한 가지는 전원이 해당 부품에 직접 연결되는 것을 최대한 배제해야 합니다. 아래 회로의 경우 VCC_3V3이 LCD에 직접 연결되어 있지 않고 MCU에서 LCD_EN신호를 인가해야만 LCD에 전원이 공급되도록 설계되어 있습니다.
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
https://smartstore.naver.com/codezoo/products/8514695472
https://smartstore.naver.com/codezoo/products/7153689192