Open-source ELM327 OBD adapter
The adapter allows you to interface with your car's OBD-II bus. It provides you a serial interface using the ELM327 command set and supports all OBD-II standards:
- SAE J1850 PWM
- SAE J1850 VPW
- ISO 9141-2
- ISO 14230-4
- ISO 15765-4 CAN
The adapter kit schematic is shown here. It is built around NXP LPC1517 Cortex-M3 microprocessor with 64 kB program memory, but can accommodate another chip from same family like LPC1549 with 256 kB if required.
The NXP chips has a ROM-based bootloader that supports loading a binary image into its flash memory using USART or CAN.
All the software is written in C++ for NXP LPCXpresso IDE which is essentially using GNU toolchain for ARM Cortex-M processors. However, it can be compiled with other pre-built GNU toolchain, like GCC ARM Embedded or even with Keil uVision IDE.
- NXP LPC1517JDB48 ARM Cortex M3 72Mhz processor
- 64kB Flash, 12kB RAM
- Using NXP sophisticated State Configurable Timers to do the precise signal handling for J1850 PWM and VPW protocols
- CAN FIFO buffers for handling some not-strict ISO-compliant ECUs
- Botloader for initial firmware programming
- Low power consumption
See building the adapter firmware from the source code. Or, if you just want to program the firmware check the programming the Adapter with Flash Magic.
A release is available:
The software and other materials in allpro-src.zip is released under GPLv3. If you want to reuse the source code in your commercial products, contact me for a commercial license.
The printed circuit board data are available separately:
This version of AllPro adapter is ready-to-use fitted to "de-facto" standard OBD connector case and paired FT230XS USB to UART chip. Here is the schematic. The FTDI chip is crystal-less with the synchronization for this oscillator can be taken from the USB data stream itself and clocking Cortex processor as well. It also providing 3.3V from internal VREG.