DPF 모니터링을 위한 대시보드 제작기-2
어느 정도 콘셉트를 잡은 것은 1편에서 밝혔다. 알리에서 주문한 Wifi ELM327이 도착해 실제로 코드를 만들어보는 과정이 2편이다.
인터넷을 보다가 찾은 정보들은 다 옛날 정보였다. 그 사이 Elmduino 라이브러리가 업데이트를 거듭해 예전 코드는 컴파일 에러를 뱉어냈다. 여기서 얻은 PID 정도만 바꾸면 금방 코딩을 끝낼 수 있을거란 생각은 착각이었다.
위는 수많은 시행착오의 흔적들이다. 코딩 -> 컴파일 -> 업로드한 녀석을 테스트하려면 차로 가야해서 아주 귀찮았다. 수십번은 이 과정을 반복했던 것 같다. 물론 코딩은 옛날만큼 노가다(?)는 아니었다. Chat GPT와 Perplexity에게 부탁해서 뼈대를 만들고, 일부만 수정해주면 됐다. 특히 아두이노 IDE처럼 익숙지 않은 툴로 코딩을 할 때 일일이 다 공부할 필요없이 대충만 훑어봐도 될 정도였다.
처음엔 여러가지 수치를 표시하려고 하다가 화면이 작아(1.28인치) 많은걸 넣긴 무리라고 판단했다. 결국 평상시엔 DPF와 직접적으로 관련된 정보 2개(DPF 포집량, DPF 온도)만 표시하도록 했다. 비상시(DPF가 터졌을 때)엔 재생 완료율을 보여주도록 했다.
따라할 사람이 있을진 모르겠지만, 관련 정보를 남겨둔다.
준비물
*소프트웨어
- 아두이노 IDE 버전 2.3.4
- Elmduino by PowerBroker2 버전 3.3.0
- TFT_eSPI by Bodmer 2.5.43
*사용한 자재
- ESP32
- GC9A01
- WiFi OBD2
GC9A01과 ESP32는 다음과 같이 연결한다.
SDA == D13
SCL == D14
CS === D15
DC === D2
RST == D4
VCC == VCC
GND == GND
이러면 하드웨어는 준비 완료. 이제 소프트웨어 차례다. 아두이노 IDE에 관련 위에서 말한 Elmduino와 TFT_eSPI 두 라이브러리를 깔아준다. ESP32 보드매니저를 깔고, 업로드를 위해서 포트 설정같은 것도 해줘야하는데, 이건 검색하면 나오니까 패스.
[문서/Arduino/libraries/TFT_eSPI/]로 찾아가 User_Setup.h, User_Setup_Select.h 파일 2개를 덮어 써준다. ESP32와 GC9A01 간의 결선도를 바꿨다면, User_Setup.h 파일을 결선도에 맞게 수정해주면 된다. 그리고 Malibu_Diesel_DPF_Mon 파일을 메모장으로 열어서 복사한 다음 ssid를 자신의 Wifi OBD2 이름에 맞게 수정한 뒤 아두이노IDE에 붙여 넣고 컴파일 & 업로드하면 끝.
평시에 DPF 포집량과 DPF 온도 나오는 건 테스트했는데, DPF 재생 때는 잘되는지 테스트 못했다. 아직 DPF 재생 시점을 겪지 못했기 때문이다.
참고로 GC9A01, ESP32, 듀폰케이블까지 준비하기 귀찮아하는 사람들을 위해 Lilygo T-Display에도 올려도 봤다. Lilygo T-Display는 ESP32에 1.14인치 LCD가 붙어있는 모델이다. 이 모델을 이용하면 Wifi OBD와 Lilygo T-display 단 2개만 준비하면 DPF 상황을 모니터할 수 있다.
위의 파일 3개는 Lilygo T-display용으로 수정한 버전. 역시 User_Setup.h와 User_Setup_Select.h를 문서-Arduino-libraries-TFT_eSPI에 덮어써주고, Malibu_Diesel_DPF_Mon_lilygo_t_display.txt 내용을 아두이노 IDE에 붙여넣고 컴파일 해주면 된다. (물론 Wifi SSID는 자신의 기기에 맞게 변경해줘야 한다.)
3편은 실제로 차에 어떻게 장착했는지를 보여줄 예정이다. 왜 큰 디스플레이가 아니라 작은, 그것도 둥근 디스플레이를 선택했는지 등도 3편을 보면 알 수 있다.