Files
JC3636W518EN/11-BLE-Scanner/README.md
T
patriandClaude Opus 5.5 8a84b42a3b Add 11-BLE-Scanner: on-screen BLE scanner, inspector and ELM327 test
- NimBLE-Arduino 2.5.1, BLE work in a background task on core 0
- LVGL 9 UI for the round screen: device list (OBD-like devices in green),
  tap to list services/characteristics, ELM test (ATZ/ATE0/ATI/ATRV/0100)
- results saved to LittleFS /ble_log.txt; serial d/c/s commands
- shared lv_conf: Montserrat 16 and 20 enabled

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 01:54:36 +02:00

1.5 KiB

BLE Scanner (JC3636W518)

Stand-alone BLE scanner with on-screen UI, made to find out how the user's ELM327 ("ELM327 Mini V2.1 Dual Mode 5.1") talks over BLE. Uses the shared board library and LVGL 9.6 (../shared), NimBLE-Arduino 2.5.1.

On the device

  1. Scan screen — live list of BLE devices: name, MAC, signal (dBm). Devices that look like an OBD adapter (name contains OBD/ELM/VLINK/…, or advertises service FFF0/FFE0/18F0) are shown in green with OBD?. (nc) = not connectable.
    • Pause / Scan — stop/resume scanning. Save — write the current list to flash.
  2. Tap a device — connects and lists all services and characteristics with their properties (R read, W write, WnR write without response, N notify, I indicate). If a service has a notify + write pair (ELM-style UART), it is shown as ELM candidate and ELM test becomes active.
  3. ELM test — sends ATZ, ATE0, ATI, ATRV (battery voltage) and 0100 (supported PIDs, needs ignition on) and shows the replies.
  4. Back — disconnect and return to scanning.

Every inspect and ELM test is saved automatically (together with the scan list) to /ble_log.txt in internal flash (LittleFS, ~900 KB).

Reading the results later (USB, serial 115200)

Send a single character:

  • d — dump /ble_log.txt
  • c — clear the log
  • s — print the current device list

e.g. pio device monitor in this folder, then type d.

Build / flash

pio run -t upload

Note: the ELM327 is only powered when plugged into the car's OBD port.