A Tidy Little OBD Display For Your Car

It’s likely that many readers will have an OBD dongle through which they can peer into the inner workings of their car, but the chances are that most of us will have restricted our curiosity to the Bluetooth or USB interface it was supplied with. Not [Frederico Souza Sant’ana] though, because he’s modified his OBD dongle to expose the serial lines between its ELM327 OBD chip and its Bluetooth chip. These go to an Arduino, which powers a small information display to supplement the car’s dashboard. This can display a range of readings as can be seen in the video below the break, he has it monitoring the battery, the various temperatures in the engine bay, and the ignition parameters.

All the software and hardware details can be found in a GitHub repository. In hardware terms it’s a surprisingly simple unit, but it serves to remind us that OBD sniffer dongles are more versatile than we might at first imagine, and good for a bit more than hooking up our smartphones via Bluetooth. If OBD is something you’d like to visit in more depth, in the past we’ve featured an open-source OBD interface, and a retrospective look at the protocol.

Continue reading “A Tidy Little OBD Display For Your Car”

Solar Panel Keeps Car Battery Topped Off Through OBD-II Port

Up until the 1980s or so, a mechanic could check for shorts in a car’s electrical system by looking for sparks while removing the battery terminal with everything turned off in the car. That stopped being possible when cars started getting always-on devices, and as [Kerry Wong] learned, these phantom loads can leave one stranded with a dead battery at the airport after returning from a long trip.

[Kerry]’s solution is simple: a solar trickle charger. Such devices are readily available commercially, of course, and generally consist of a small photovoltaic array that sits on the dashboard and a plug for the lighter socket. But as [Kerry] points out in the video below, most newer model cars no longer have lighter sockets that are wired to work without the ignition being on. So he chose to connect his solar panel directly to the OBD-II port, the spec for which calls for an always-on, fused circuit connected directly to the positive terminal of the vehicle battery. He had to hack together an adapter for the panel’s lighter plug, the insides of which are more than a little scary, and for good measure, he added a Schottky diode to prevent battery discharge through the panel. Even the weak winter sun provides 150 mA or so of trickle charge, and [Kerry] can rest assured his ride will be ready at the end of his trip.

We used to seeing [Kerry] tear down test gear and analyze unusual devices, along with the odd post mortem on nearly catastrophic failures. We’re glad nothing burst into flames with this one.

Continue reading “Solar Panel Keeps Car Battery Topped Off Through OBD-II Port”

Emulating OBD-II On The ESP32

It used to be that you could pop the hood and with nothing more than flat head screwdriver, some baling wire, and tongue held at the optimal angle, you could fix anything that ailed your car. But today, for better or for worse, the average automobile is a rolling computer that runs on gasoline and hope (if it even still has a gasoline engine, that is). DIY repairs and maintenance on a modern car is still possible of course, but the home mechanic’s toolbox has needed to evolve with the times. If you want to do anything more advanced than changing a tire, you’ll really want to have the gear to interface with the vehicle’s computer via the OBD-II port.

But for some, even that isn’t enough. [limiter121] recently wrote in to tell us of an interesting project which doesn’t read the OBD-II port in a vehicle, but actually emulates one. Like so many others this hack was born out of necessity, as a way to test an OBD-II project without having to sit out in the driveway all day. It allows you to create fictitious speed and engine RPM values for the OBD-II device or software under test to read, complete with a slick web interface to control the “car”.

So what makes it tick? Surprisingly little, actually. At the most basic level, an ESP32-WROOM-32 is connected up to a SN65HVD230 CAN transceiver chip. You’ll also need a 3.3V power supply, as well as a USB to serial adapter to do the initial programming on the ESP32. From there it’s just a matter of compiling and flashing the code [limiter121] has made available in the GitHub repo.

If you’re wondering if such products don’t already exist on the commercial market, they do. But like so many other niche projects, the price is a bit hard to swallow for the home hacker. Compared to the nearly $300 USD list price of commercial offerings such as the Freematics OBD-II Emulator, building one of these ESP32 based emulators should only cost you around $20.

Unless you’re developing an OBD-II reader, you probably don’t have much use for an OBD-II emulator. But this project could still be useful for anyone who wants to learn more about OBD from the comfort of their couch.

OBD-Sniffing A Caddy PHEV

The Cadillac ELR is a plug-in hybrid car with a bit of class, it has the beating heart of a Chevy Volt in a nice coupé body with some up-market styling and a nice interior. Since it wasn’t on the market for long and some consumers are still wary of cars with electric motors, it also represents something of a sweet spot: according to [Andrew Rossignol] you can pick them up for less outlay than you might imagine. He bought one, and being an inquisitive soul decided to probe its secrets through its OBD-II ports.

OBD-II sniffing is nothing especially new, but his write-up provides an interesting run-down of the methodology used to identify the different proprietary pieces of data that it makes available. His Python script attempted to parse the stream as though it were multi-byte words of different lengths, plotting its results as graphs, It was then a straightforward process of identifying the graphs by eye that contained useful data and rejecting those that were obviously garbage. He was able to pick out the figures in which he was interested, and write an interface for his little Sony VAIO UX to display them on the move.

We’ve covered OBD hacks too numerous to mention over the years, but perhaps you’d like to read our history of the standard.

PobDuino Makes The Most Of Grove

The chassis of a toy robot serves as the base of a robot built by [Jean Noel]. Called #PobDuino, the robot features two Arduino-compatible boards under the hood.

First, a Seeeduino Lotus, a Arduino board peppered with a dozen Grove-compatible sockets. The board, which is the size of an UNO, is mounted so that the plugs project out of the front of the robot, allowing ad-hoc experimentation with the various Grove System modules. Meanwhile, a custom ATmega328 board (the PobDuino) interprets Flowcode instructions and sends commands to the various parts of the robot: servos are controlled by an Adafruit servo driver board and the DC motors are driven by a Grove I2C motor driver.

We love how easy it is to customize the robot, with both the Lotus and the Adafruit 16-channel servo driver on the exterior of the robot. Just plug and play!

Learn more about Grove-compatible plugs and a lot more in [Elliot]’s My Life in the Connector Zoo.

A Live ECU Simulator For OBD2 Projects

If you are working with OBD2 hardware or software, it’s easy enough to access test data, simply plug into a motor vehicle with an OBD2 socket. If, however, you wish to test OBD2 software under all possible fault conditions likely to be experienced by an engine, you are faced with a problem in that it becomes difficult to simulate all faults on a running engine without breaking it. This led [Fixkick] to create an OBD2 simulator using a secondhand Ford ECU supplied with fake sensor data from an Arduino to persuade it that a real engine was connected.

The write-up is quite a dense block of text to wade through, but if you are new to the world of ECU hacking it offers up some interesting nuggets of information. In it there is described how the crankshaft and camshaft sensors were simulated, as well as the mass airflow sensor, throttle position, and speedometer sensors. Some ECU inputs require a zero-crossing signal, something achieved with the use of small isolating transformers. The result is a boxed up unit containing ECU and Arduino, with potentiometers on its front panel to vary the respective sensor inputs.

We’ve brought you quite a few OBD2 projects over the years, for example, there was this LED tachometer, and a way into GM’s OnStar.

Thanks [darkspr1te] for the tip.

OBDII to Speed Pulse: Atmel ICE

Building An OBD Speed Pulse: Behold The ICE

I am a crappy software coder when it comes down to it. I didn’t pay attention when everything went object oriented and my roots were always assembly language and Real Time Operating Systems (RTOS) anyways.

So it only natural that I would reach for a true In-Circuit-Emulator (ICE) to finish of my little OBDII bus to speed pulse generator widget. ICE is a hardware device used to debug embedded systems. It communicates with the microcontroller on your board, allowing you to view what is going on by pausing execution and inspecting or changing values in the hardware registers. If you want to be great at embedded development you need to be great at using in-circuit emulation.

Not only do I get to watch my mistakes in near real time, I get to make a video about it.

Getting Data Out of a Vehicle

I’ve been working on a small board which will plug into my car and give direct access to speed reported on the Controller Area Network (CAN bus).

To back up a bit, my last video post was about my inane desire to make a small assembly that could plug into the OBDII port on my truck and create a series of pulses representing the speed of the vehicle for my GPS to function much more accurately. While there was a wire buried deep in the multiple bundles of wires connected to the vehicle’s Engine Control Module, I have decided for numerous reasons to create my own signal source.

At the heart of my project is the need to convert the OBDII port and the underlying CAN protocol to a simple variable representing the speed, and to then covert that value to a pulse stream where the frequency varied based on speed. The OBDII/CAN Protocol is handled by the STN1110 chip and converted to ASCII, and I am using an ATmega328 like found on a multitude of Arduino’ish boards for the ASCII to pulse conversion. I’m using hardware interrupts to control the signal output for rock-solid, jitter-free timing.

Walk through the process of using an In-Circuit Emulator in the video below, and join me after the break for a few more details on the process.

Continue reading “Building An OBD Speed Pulse: Behold The ICE”