2025년 3월 30일 부터 시작했던 자작 자동차 데이터 로거 만들기가 드디어 거의 마무리 되었다.
프로젝트 개요
2025년 3월 30일
차량을 테스트 할 때 드라이버가 일일이 대시보드(ADU)의 TPS, 냉각수 온도 RPM등을 전화로 소통하며 차량의 상태를 파악하는 것을 보았다. 마침 CAN통신에 관심을 갖고 있던 나는 CAN통신을 이용하면 좀더 쉽게 차량의 상태를 실시간으로 모니터링 할 수 있을 것 같다는 생각이 들어 프로젝트를 시작하게 되었고, 약 5개월이 지난 지금 첫 번째 버전의 데이터 로거가 완성되었다.
시스템 구조
현재 시스템 구조는 아래와 같다.
- 데이터 수집 (차량): 차량의 ECU 마스터 EMU BLACK이 CAN 통신으로 보내주는 데이터와 GPS, 가속도 센서의 값을 라즈베리파이가 수집.
- 데이터 전송 (MQTT): 라즈베리파이는 수집한 모든 데이터를 하나의 JSON 패키지로 만들어, 인터넷을 통해 MQTT 브로커로 전송.
- 데이터 시각화 (웹): 외부 컴퓨터(노트북 등)에서 실행되는 Flask 웹 서버가 MQTT 브로커로부터 데이터를 구독(수신)한 뒤, 접속해 있는 모든 웹 브라우저에 실시간으로 데이터를 뿌림.
하드웨어
- 메인 컨트롤러: Raspberry Pi Zero 2 W
- 인터넷 연결: 드라이버 스마트폰 핫스팟
- CAN 통신: MCP2515 모듈
- IMU 센서: MPU-6050 (가속도 + 자이로)
- GPS 센서: NEO-7M
- PCB: EasyEDA를 이용하여 직접 설계 및 제작
PCB
PCB는 EasyEDA를 이용하여 직접 만들었다.
아직 부족한것도 많고, 개선해야 할 점도 보이지만 어쨌든 본래의 목적인 데이터 로깅은 잘 되는 듯해서 이번년도는 이대로 사용할 듯 하다.
소프트웨어 및 참고 자료
#main.py
센서들로 부터 수집한 데이터를 취합하고 EMU로 부터 받은 CAN 메시지를 해석하여 MQTT 서버로 보내는 main.py 이다.
main.py는 라즈베리파이가 부팅되면 자동으로 시작될 수 있도록 systemctl에 서비스 등록을 해두었다.
전체 코드는 아래의 깃헙에 업로드 해두었다.
https://github.com/hackisha/EMU-LOGGER
GitHub - hackisha/EMU-LOGGER: Data logger ECU Master's EMU BLACK.
Data logger ECU Master's EMU BLACK. Contribute to hackisha/EMU-LOGGER development by creating an account on GitHub.
github.com
CAN 메시지는 아래의 깃헙을 참고하여 해석했다.
https://github.com/designer2k2/EMUcan/blob/main/src/EMUcan.h
EMUcan/src/EMUcan.h at main · designer2k2/EMUcan
ECUMaster EMU CAN Stream Reader Arduino Library. Contribute to designer2k2/EMUcan development by creating an account on GitHub.
github.com
WEB UI 대시보드
수집된 데이터는 Flask와 Socket.IO 기반의 웹 대시보드를 통해 실시간으로 시각화된다. 대시보드는 역할에 따라 네 가지 주요 페이지로 구성했다.
- dashboard.html (메인 대시보드) ECU Master사의 ADU(Advanced Display Unit) 디자인을 기반으로, RPM, 속도, 주요 온도 등 핵심 정보를 한눈에 파악할 수 있도록 구성했다. 부드러운 UI 애니메이션을 적용하여 실제 차량의 계기판과 같은 시각적 경험을 제공하는 데 중점을 두었다.
- sensor.html (센서 그래프) 주요 센서 값들의 변화 추이를 시간 흐름에 따라 자세히 볼 수 있도록 실시간 그래프로 시각화한 페이지다. 이를 통해 특정 상황에서 센서 값이 어떻게 변화하는지 상세하게 분석할 수 있다.
- gps.html (GPS 및 랩타이머) NEO-7M GPS 모듈의 데이터를 받아와 Leaflet.js 기반의 지도 위에 차량의 현재 위치와 주행 궤적을 표시한다. 또한, 사용자가 지도 위에 직접 가상의 결승선을 설정하고, 차량이 이 선을 통과할 때마다 자동으로 랩타임을 측정하는 기능을 구현했다.
- accel.html (가속도계 뷰어) ADXL345 가속도 센서가 측정한 값을 Three.js를 이용해 3D로 시각화하는 페이지다. 차량이 받는 G-Force에 따라 3D 자동차 모델이 실시간으로 기울어지도록 하여, 차량의 물리적인 움직임을 직관적으로 보여준다. 아직은 구현하지 못했지만, 최종적으로는 영상과 IMU(자이로스코프 포함) 데이터를 기반으로 차량의 슬립 직전 최대 횡-G를 분석하는 것이 목표이다.
마무리하며
아직 부족한 점도 많고, GPS 기반 랩타임의 정밀도를 높이는 등 개선해야 할 점도 눈에 보인다. 하지만 어쨌든 프로젝트의 본래 목적인 안정적인 실시간 데이터 로깅 및 원격 모니터링은 성공적으로 구현된 것 같아, 이번 시즌은 이 시스템을 활용하여 데이터를 꾸준히 쌓아나갈 계획이다.
다음 글부터는 프로젝트를 진행하면서 겪었던 시행착오들에 대해 좀더 자세히 풀어보겠다.
'.study > .FSK_25' 카테고리의 다른 글
마지막 변속 테스트(LED) (0) | 2025.06.26 |
---|---|
[작업일지] 공압식 변속 제어 아두이노 제작 - 2 (0) | 2025.05.31 |
[작업일지] ESP32-EMU BLACK CAN Logger (진행 중) (0) | 2025.05.23 |
[작업일지] 변속배선 만들기 (진행 중) (0) | 2025.03.08 |
[작업일지] 전체 배선도 그리기 (완료) (0) | 2025.03.08 |