ESP32 마이크로 컨트롤러를 기반으로 하는 모듈식 개발 보드(m5stack.com)인 M5Stack Grey와 GPS 모듈을 사용하여 자동차나 이동수단의 현재 속도와 위치정보를 로깅 할 수 있는 기능을 구현해보았습니다
M5Stack에서 판매하는 GPS모듈은 UBlox사의 neo-m8n 칩을 사용하는데
GPS 설정을 하게되면 GPS와 GLONASS 위성을 사용하여 기본값인 1Hz에서 최대 5Hz (1초에 5번)의 위치 업데이트 주기를 사용 할 수 있어 차량등의 속도를 지연없이 직관적으로 보여 줄 수 있습니다
물론 해당 GPS모듈이 아닌 좀 더 고사양의 U-blox사 NEO-M9N 칩을 사용하면
GPS, GLONASS, Galileo, BeiDou 위성을 사용하여 최대 25Hz의 위치 업데이트 주기를 사용 할 수도 있습니다
이 경우 기성품으로 구할 수 있는 제품으로 SparkFun GPS Breakout - NEO-M9N, U.FL 가 있는데 가격이 M5Stack GPS모듈의 $26.39 달러에 반하여 $64.95 달러이고
케이스를 보기좋게 하려면 M5Stack에서 제공되는 Proto Module을 사용하거나 위 M5Stack의 GPS모듈에서 NEO-M8N 칩을 NEO-M9N 칩으로 교체하는 방법이 있으며 목적에 맞도록 선택하면 될 듯 합니다 (참고로 두칩의 레이아웃은 호환가능)
M5Stack 모듈중에 베터리 모듈도 있으나 개인적으로 용량이 적당한 1500mAh 리튬폴리머 베터리를 따로 구하여 적용하였고 GPS 외장안테나는 거추장 스럽고 M5Stack GPS 내장 안테나는 효율이 낮아 대신 수신율이 좋은 안테나로 변경하여 케이스 안쪽으로 안테나를 위치하였습니다
이 때문에 베터리수납과 GPS안테나 수납을 고려하여 3D프린터로 뒷면 케이스를 제작하였습니다
소프트웨어를 작성하고 GPS를 5Hz로 설정시 0.2초 마다 현재 GPS 위치정보 메시지가 발생되었으며 이를 사용하여 화면에 현재 속도와 시간 날짜를 갱신 표현하였고 추가적으로 베터리 상태와 현재 저장되는 로그파일 이름을 표시하였습니다
해당 보드의 경우 MPU6886 가속도/자이로 센서가 포함되어 이중 가속도 값을 활용하여 현재 횡가속도 G-force값 및 최대 발생값을 표시 할 수 있도록 하였습니다
로그파일의 경우는 M5Stack보드에 기본으로 포함된 TF 카드 슬롯을 활용하여 MicroSD카드에 저장하도록 합니다
또한 ESP32칩셋이 기본적으로 WiFi와 Bluetooth를 지원하기에 WiFi를 활용하여 M5Stack 보드에 스마트폰이나 노트북으로 무선 연결하여 로그파일을 받을 수 있는 기능을 추가하여 보았습니다
로그파일은 GPS 데이터 표준 규격인 GPX포맷으로 저장하도록 하였으며 이 파일을 다양한 GPX 뷰어들을 통해 데이터를 살펴 볼 수 있습니다.
부가적으로 포함 시킨 기능을 살펴보면 아래와 같습니다
- 국내 일광시간에 맞춰 LCD 백라이트 밝기 조절 기능
- 100km 까지 가속시간을 체크하는 제로백 기능
- 로그파일 생성 갯수 및 로그 로테이트 기능
- 물리 버튼 및 비프음 기능 (각 계측값 초기화, GPS 데이터 정보 페이지 전환, LCD밝기 수동 조정)
- 베터리 충전 상태 반영 (충전중, 완충, 베터리 잔량)
- 타임존 및 썸머타임 반영
- 가속도 센서를 활용한 G-Force (횡가속도) 표시 기능
- GPS 검색중 페이지 이미지 반영
M5Stack의 물리 버튼은 다음 기능을 맵핑하였습니다
- A 버튼 (짧게 누르기) : 최대 G-Force 기록값 초기화 & 제로백 기록값 초기화
- A 버튼 (2초 이상 길게 누르기) : 로그데이터 다운로드를 위한 WiFi 기능 켜기
- B 버튼 : 속도 표시와 GPS 정보 표시간 화면 전환
- C 버튼 : LCD 밝기 조절 (누를때마다 단계적으로 밝아지며 최대밝기에서 누르면 다시 최대 어두워짐으로 전환)
보통 GPS Speed Meter 라 불리우는 장비들이 갖는 기능중 일부 기능만을 M5Stack Grey 보드로 구성해보면서 느낀 부분으로는
- 기존의 개발보드 들이 갖지 못한 모듈식 케이스를 포함하여 하나의 제품의 형태로써의 구성이 가능함
- M5Stack 에서 판매하는 모듈 및 센서들의 경우 기능 제어에 대한 Library가 기본 제공됨
- 일반적인 아두이노 개발환경을 지원함
- TF 카드슬롯, 베터리 관리 IC를 통한 파워버튼 및 베터리 연결 커넥터, 스피커, 지자계/가속도/자이로센서가 기본 실장되어 있음
- 자사 제품군으로 연결 가능한 센서 유닛과 모듈들이 다양하게 준비되어 있음
- ESP32가 갖는 WiFi, Bluetooth 를 사용한 무선 연동이 가능함
위와 같은 장점을 들어 볼 수 있겠습니다
결과적으로는
ESP32를 기반으로하는 개발 관심있는 분들께서 프로토타입을 만들거나 가지고 놀기에 좋은 제품이라고 생각이 됩니다