A few weeks ago, [sentdex] described how Python has changed his life. In particular, it has allowed him to mine Bitcoin automatically, teach other people programming, and realize a full in-car computer for less than $100 using a Raspberry Pi.
It’s based on a model B, which he’s enclosed in a beefy Pi camera case that sits on the dash of his Honda S2000. The screen is a $17 internet special with composite in, which keeps the BOM way down. A 3A switch wired into the ignition ensures that power to the Pi is not rudely interrupted.
A script takes the Pi directly into desktop mode when [sentdex] starts the car. His main goals for the project were setting up a dash cam and communicating with the OBD computer. The Pi pulls various data points including the throttle position, and the user moves through the list with the arrow keys of one of those roll-up keyboards.
In the future, he’d like to upgrade it to live graph the throttle position and add a sensor to show the brake position. Be sure to check out the walk-through/demonstration video after the break.
Continue reading “Delicious Dash Pi Driving Data”
[Justin] tipped us about his slick custom OBD-II gauge that could easily pass for an OEM module. He was able to use the clock area of his Subaru BRZ to display a bunch of information including the oil and coolant temperatures and the battery voltage.
The forum post linked above has a good FAQ-based explanation of what he did, but so many people have told him to shut up and take their money that he created an Instructable for it. Basically, he’s got a Sparkfun OBD-II UART board communicating with a pro Trinket. The display is an Adafruit OLED, which he found to be an ideal choice for all the various and sundry light conditions inside the average car.
[Justin] was able to reuse the (H)our and (M)inute buttons and reassigned them to (H)igh to show the peak reading and (M)ode to, well, switch between modes. The (:00) now resets the peak readings. He offers suggestions for acquiring the specific CAN codes for your car to make the data more meaningful. [Justin]’s code is safe in the many tentacles of Octocat, and you can check out his demo video below.
Continue reading “Ceci N’est Pas Une Clock”
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.