Scanner log saved in 11-BLE-Scanner/results; CLAUDE.md updated with the adapter's GATT layout, replies and supported PIDs 01-20. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
- 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.
- Tap a device — connects and lists all services and characteristics with their properties
(
Rread,Wwrite,WnRwrite without response,Nnotify,Iindicate). If a service has a notify + write pair (ELM-style UART), it is shown as ELM candidate and ELM test becomes active. - ELM test — sends
ATZ,ATE0,ATI,ATRV(battery voltage) and0100(supported PIDs, needs ignition on) and shows the replies. - 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.txtc— clear the logs— 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.