# OBD Display (2024 experiments) Earlier attempt to show car speed from an ELM327 OBD-II adapter on the JC3636W518. Because the ESP32-S3 has no Bluetooth Classic, the design used a second (classic) ESP32 as a bridge: ``` ELM327 --(BT Classic SPP)--> classic ESP32 (elm327_wifi_bridge) --(WiFi AP, HTTP /speed)--> JC3636W518 (display_speed_wifi) ``` Split out of `2-Program Example/Demo_Arduino/ST77916_LVGL_DEMO/` on 2026-10-22. History is in git. ## Sketches | Folder | Runs on | What it does | Was | |---|---|---|---| | `display_speed_wifi/` | JC3636W518 | GIF background from SD (`A:wallpaper.gif`) + joins AP `ESP32-Access-Point`, polls `http://192.168.4.1/speed`, shows it in a label | `ST77916_LVGL_DEMO/8.4/` | | `display_gif_sd/` | JC3636W518 | GIF from SD (`A:wallpaper.gif`) + static text label | `ST77916_LVGL_DEMO/working version/` | | `display_gif_embedded/` | JC3636W518 | GIF compiled into firmware (`loligod.c`, 13.9 MB source). WiFi code commented out. Stops in `setup()` if no SD card | `ST77916_LVGL_DEMO/` (top level) | | `elm327_wifi_bridge/` | **classic ESP32** (not S3) | BT Classic → ELM327 named `OBDII` (PIN 1234), WiFi AP `ESP32-Access-Point` / `123456789`, serves `/speed` (kph). Needs esp32 core 2.0.x, ESPAsyncWebServer, ELMduino | `ST77916_LVGL_DEMO/esp23_elm327_to_wifi/` | | `elmulator/` | classic ESP32 | ELMulator library + examples: fake ELM327 over BT/WiFi for testing without a car | `ST77916_LVGL_DEMO/ELMulator-master/` | | `assets/gifs/` | — | GIF files (`dump/` = unused collection) | `ST77916_LVGL_DEMO/gifs/` | | `_archive/lvgl9_broken/` | — | Unfinished LVGL 9 port, does not compile | `ST77916_LVGL_DEMO/9.1/` | ## Notes - Each display sketch carries its own `pincfg.h`, `scr_st77916.h` and `lv_conf.h`. The Arduino LVGL library does **not** read the sketch's `lv_conf.h` — the one used is `Documents\Arduino\libraries\lv_conf.h`. Copy the sketch's version there before building: - `display_speed_wifi`: LVGL heap 4 MB in PSRAM (`ps_malloc`) - `display_gif_sd`: LVGL heap 7 MB in PSRAM - `montserrat_100.c` (100 px digits font) is present but not referenced by any sketch yet. - `display_gif_embedded` will not fit the 3 MB "Huge APP" partition with `loligod.c`; needs a custom partition table or the GIF on SD. - SD-based GIFs use LVGL drive letter `A:`, which needs an LVGL filesystem driver configured in `lv_conf.h`.