We’ve gone over the basics of CAN and looked into how CAN databases work. Now we will look at a few protocols that are commonly used over CAN.
In the last article we looked at CAN databases, where each bit of a message is mapped to a specific meaning. For example, bit 1 of a CAN message with ID 0x400 might represent whether the engine is currently running or not.
However, for more complex communications we need to use protocols. These can map many meanings to a single CAN ID by agreeing on a structure for sending and receiving data.
Continue reading “CAN Hacking: Protocols”
At a recent hack-a-thon event, [Al Linke] tapped into a vehicle’s OBD port with an OpenXC vehicle interface and hacked an LED screen in the rear window to display data based on events. If you haven’t heard of OpenXC, you can expect to read more about it here at Hackaday in the near future. For now, all you need to know is that OpenXC is Ford’s open source API for real-time data from your vehicle: specifically 2010 and newer model Ford vehicles (for now).
[Al] connected the OpenXC interface to his Android phone over Bluetooth, transmitting data from the OBD port to the phone in real time. From here, the Android can do some really cool stuff. It can use text to speech to announce how much your lead foot cost you, add sound effects for different car events, and even interact with additional devices. Although he managed all of those features, [Al’s] primary goal was to add an LED screen that displayed messages on the vehicle’s back window.
When the phone detected a braking event from the car, it directed the LEDs to light up with a “braking” image, adding some flavor to the process of stopping. He could also change the image to a “Thank You” sign with a waving hand, or—for less courteous drivers—an “F U” image with a slightly different hand gesture. You’ll want to check your local and/or national laws before attempting to strap any additional lighting to your vehicle, but you can watch [Al’s] car light up in the video below. For a more detailed look under the hood, he’s also provided an Instructables page. If OpenXC catches on, the number of vehicle hacks such as the Remote Controlled Car may skyrocket.
Continue reading “Smart Brake lights and more with OpenXC”
[Martin] has a Lotus Elise and access to a track. Sounds like fun, huh? The only problem is that the dashcam videos he makes are a little bit boring. Sure, they show him flying around the track, but without some sort of data it’s really hard to improve his driving skills. After thinking about it for a while, [Martin] decided he could use his Raspberry Pi and camera module to record videos from the dashboard of his car, and overlay engine data such as RPM, throttle, and speed right on top of the video.
Capturing video is the easy part of this build – [Martin] just connected his Raspi camera module and used the standard raspivid capture utility. Overlaying data on this captured video was a bit harder, though.
[Martin] had previously written about using the Raspi to read OBD-II data into his Raspi. Combine this with a Python script to write subtitles for his movies, and he’s off to the races, with a video and data replay of every move on the track.
The resulting movie and subtitle files can be reencoded to an HD movie. Reencoding a 13 minute HD video took 9 hours on the Raspi. We’d suggest doing this with a more powerful compy, but at least [Martin] has a great solution to fix his slightly uninformative track videos.
[Reinis] has a Volvo S80. One of the dashboard features it includes is a 6.5″ LCD screen which periscopes up to use as a navigation system. The problem is that Volvo stopped making maps for it around five years ago and there are no maps at all for Latvia where he lives. So it’s worthless… to you’re average driver. But [Reinis] is fixing it on his own by replacing the system with a Raspberry Pi.
That link leads to his project overview page. But he’s already posted follow-ups on hardware design and initial testing. He’s basing the design around a Raspberry Pi board, but that doesn’t have all the hardware it needs to communicate with the car’s systems. For this he designed his own shield that uses an ATmega328 along with a CAN controller and CAN transceiver. The latter two chips patch into the CAN bus on the car’s On Board Diagnostic system. We didn’t see much about the wiring, but the overview post mentions that the screen takes RGB or Composite inputs so he must be running a composite video cable from the trunk to the dashboard.
[Bruce Land] sent in this cool final project for ECE 4760 at Cornell University. Dubbed TrckrX, it is an OBD-II tracking and data logging system built into a BMW E36 M3. The car in question is being used in some auotocross competitions. The driver wanted instant access to some data as well as a log of everything for later analysis. The unit gives a real time display of vehicle speed, coolant temp, and RPM. G-force and timestamps are stored on the SD card.
We think this is a very cool idea, and could be quite useful in some instances. The real time display of speed and RPM seem a bit peculiar as the car’s speedometer and tachometer are more appropriately placed for real time information. However, we completely understand that this was a class project and this person may not have wanted to replace their dash cluster with a new readout.
Reader [regulatre] has provided us with his furthering of hacking the OnStar system in GM cars. Previously, we wrote about some initial attempts to gain access to the system that OnStar uses to monitor and control cars called GMLAN. [regulatre] has managed to create an adapter between the GMLAN connector and a standard OBD2 plug, which should allow a number of standard readers to be able to retrieve data.
This method details using a bluetooth OBD2 reader, and passing the data onto a linux machine. It looks as though the writer of this method is looking to integrate OnStar reading and writing into an Android App which currently is an OBD monitor.
We love seeing follow-ups like this, because it puts everyone one step closer to full control of closed devices. As always, let us know if you take any of this in a new direction.
[Steve] let us know about his MultiDisplay car monitoring system. Unlike traditional systems that rely on interfacing with the OBD-II protocol and existing car computer, the MultiDisplay uses an Arduino and custom shield with a combination of sensors; including temperatures, pressures, throttle, Boost, and etc. The data collected can then be displayed on a 20×4 LCD or streamed to a PC with visualization and event recording.
It’s nice to see half a years worth of work finally be complete and presented in such a clean and professional manner, keep up the good work [Steve]