ELM327-based OBD-II Bluetooth interface
Switch branches/tags
Nothing to show
Clone or download
Spartelfant Update README.md
Added some details regarding the interfacing of a 3V3 BT module with the 5V ELM327
Latest commit 481e57d Jan 3, 2018
Permalink
Failed to load latest commit information.
datasheets Relevant datasheets Jan 18, 2017
parts Custom libraries for Eagle Jan 18, 2017
pcb Bill of Materials Jan 18, 2017
.gitignore Added .gitignore Apr 26, 2017
LICENSE.md Added LICENSE.md Oct 14, 2016
README.md Update README.md Jan 3, 2018

README.md

There's not much here yet unfortunately :( I do hope to get around to adding some proper documentation at some point. Until that time, I have listed some important bits of information down below.

  • This board is designed around the ELM327 v2.1 and also compatible with v2.2. If you're going to use a newer firmware version, please check the changelog and / or compare its documentation to the v2.1 datasheet to check for compatibility.
  • The ELM327L is not pin-compatible with the ELM327, even though it has the same features in the same package. On the ELM327 (what this board is designed for) pin 6 can be pulled high or low to set the RS232 baud rate on powerup / reset. On the ELM327L there should be a capacitor (10uF tantalum or ceramic with low ESR, less than 5 Ohms) between pin 6 and GND. If you do pick the ELM327L I recommend you either replace the header with a capacitor footprint in the schematic and pcb layout or simply stick a capacitor in the header footprint during production.
  • I have built this design myself and it works properly, although so far I have only been able to test it with the ISO14230 protocol which uses the K-line and optionally the L-line for communication with the car.
  • The LP2951 (less current and shutdown capability) is a replacement for the 317L (as suggested in the ELM327 datasheet), but its logic is inverted. So after building the project you must send the following configuration commands to the ELM327 (this is a one-time thing): "AT PP 12 SV 00" and "AT PP 12 ON". Failure to do so will not do any damage, however SAE J1850 PWM (Ford) and SAE J1850 VPW (GM) communication will not work and may interfere with the car's communication bus.
  • When selecting a Bluetooth module, pay attention to its voltage levels. This pcb is designed to supply 5V to the module and has a voltage divider in the ELM327's TX line to communicate at 3V3. The reason for this seemingly odd design is that 5V power & data BT modules are few and far between, yet I wanted to avoid squeezing a 3V3 supply on the board just for the module. While a voltage divider in the ELM327's TX line is not as elegant as a proper level converter, it has worked well for me at a 38k8 baud rate (higher rates not yet tested).
  • On the same note, the BT module communicating at 3V3 to the ELM327's RX line is out-of-spec for the ELM327. Its RX input pin is configured to use Schmitt trigger waveshaping and therefore requires an input voltage between 2V9 (typical) and 4V (maximum) to register a HIGH input. So it can work and in my experience often does, but it's not exactly the most robust design choice. That would be to use a level converter circuit.
  • While on the subject of Bluetooth modules, I opted for Bluetooth version 2.0+EDR. Another widely available option is Bluetooth version 4.0BLE, but the BLE (Bluetooth Low Energy) part makes it less suited for this project. It's a protocol intended for short communications (like reading a temperature sensor once a minute), it's not designed with a continuous connection in mind. It's also not always supported by older devices. Consequently, you may have trouble connecting to a BLE module for this project, even when using a device with support for it.

If you have any questions or feedback, feel free to send me an email at [my Github username]@gmail.com.