Open-source ELM329 OBD Bluetooth adapter
In the most cases when you have to use an On-Board Diagnostics the communication protocol is limited to the ISO 15765-4 CAN standard since the year 2008 all the other protocols being phased out. Basically, Elm Electronics ELM329 is CAN-only version of ELM327. Here is my version of ELM329-compatible adapter.
The schematic is shown here.
It's based on Cortex-M0 STM32F042 chip in TSSOP-20 package. The Bluetooth module could be either Classic Bluetooth module Bluetooth BLE.
- ST STM32F042K6T6 ARM Cortex M0 48Mhz processor
- 32kB Flash, 6kB RAM
- Low power consumption
The adapter layout in Eagle format is here, so that all fits in the de-facto standard enclose for OBD Connector available on AliExpress from many vendors.
There are two Bluetooth module tested with the hardware, SPP-CA Bluetooth v3.0 module based on Beken BK3231 chip and Huamao Bluetooth BLE HM-10/HM16. Both modules are the same size and mechanically identical, but HM-10/HM-16 devices use Bluetooth BLE when SPP-CA is the Classic one.
Here is the Car Scanner iPhone application output connecting to adapter with HM-10 BLE Module.
The Source Code
The project is written in C++ with MDK-ARM uVision IDE. The free product activation key for STM32F0 processor is available on ST site.
A release is available:
The printed circuit board data are available separately:
Programming the Adapter with ST Visual Programmer
Download and install ST Visual Programmer. There adapter programming is performed with ST-LINK/V2 debugging interface connected to ICSP port.
SAE J2411 Single-Wire CAN Adapter
The specification is for CAN network applications with low requirements regarding bit rate and bus length. The communication takes place via just one bus line with a nominal data rate of 33,3 kbit/s (83,3 kbit/s in high-speed mode for diagnostics). Currently it is implemented in GM vehicles. The schematic is slightly changed with the deployment of SW-CAN transceiver IC NCV7356.