The CAN bus has become a staple of automotive engineering since it was introduced in the late ’80s, but in parallel with the spread of electronic devices almost every single piece of equipment inside a car has been put on the CAN bus. While there are opinions on whether or not this is a good thing, the reality is that enough data is gathered on this bus to turn an unmodified modern car into a video game controller with just a little bit of code.
The core of [Scott]’s project is a laptop and a Python program that scrapes information about the car from the car’s CAN bus, including positions of the pedals and the steering wheel. This information can be accessed by plugging an adapter into the OBD-II port (a standard for all cars made after 1995). From there, the laptop parses the CAN data into keyboard and mouse commands for your video game of choice.
This is an interesting investigation into the nitty-gritty of the CAN bus, but also a less dangerous demonstration of all of the data available from the car than some other cases we’ve seen. At least [Scott]’s Mazda (presumably) lacks any wireless attack vectors!
As ever, I am fighting a marginally winning battle against my 1991 Mazda MX-5, and this is the story of how I came to install a wideband oxygen sensor in my Japanese thoroughbred. It came about as part of my ongoing project to build myself a viable racecar, and to figure out why my 1990s Japanese economy car engine runs more like a late 1970s Malaise-era boat anchor.
I’ve always considered myself unlucky. My taste for early 90s metal has meant I’ve never known the loving embrace of OBD-2 diagnostics, and I’ve had to make to do with whatever hokey system was implemented by manufacturers who were just starting to produce reliable fuel injection systems.
This generally involves putting in a wire jumper somewhere, attaching an LED, and watching it flash out the trouble codes. My Mazda was no exception, and after putting up with a car that was running rich enough to leave soot all over the rear bumper, I had to run the diagnostic.
It turned up three codes – one for the cam angle sensor, and two for the oxygen sensor. Now, a cam angle sensor (CAS) fault will normally prevent the car running at all, so it’s safe to assume that was an intermittent fault to keep an eye on.
The oxygen sensor, however, was clearly in need of attention. Its job is to allow the engine control unit (ECU) to monitor the fuel mixture in the exhaust, and make sure it’s not too rich or too lean. As my car was very obviously running too rich, and the diagnostic codes indicated an oxygen sensor failure, a repair was in order.
I priced up replacement sensors, and a new oxygen sensor could be had for under $100. However, it wasn’t exactly what I wanted, as not all oxygen sensors are created equal. Cars in the 80s and 90s typically shipped from the OEM fitted with what’s called a narrowband oxygen sensor. These almost always consist of a zirconia dioxide cell that outputs a voltage depending on the difference in oxygen concentration between the exhaust gas and the free air. These sensors generally sit at 0.45 V when the fuel mixture is stoichiometric, but rapidly change to 0.1 V in a lean condition and 0.9 V in a rich condition. The response is highly non-linear, and changes greatly with respect to temperature, and thus is only good for telling the ECU if it’s rich or lean, but not by how much. ECUs with narrowband sensors tend to hunt a lot when running in closed loop O2 control – you’ll see an engine at idle hunt either side of the magical 14.7 stoichiometric air fuel ratio, never able to quite dial in on the correct number.
As I intend to switch to an aftermarket ECU in the future, I’ll need to tune the car. This involves making sure the air/fuel ratios (AFRs) are correct, and for that I need to be able to properly measure them. Just knowing whether you’re rich or lean isn’t enough, as often it’s desirable to run the engine intentionally rich or lean at certain engine loads. To get a true AFR reading requires fitting a wideband oxygen sensor. These are a little more complicated.
Through the history of internal combustion engines, there has been plenty of evolution, but few revolutions. Talk of radically different designs always leads to a single name – Wankel. The Wankel rotary engine, most notably used in automobiles by Mazda, has been around since the late 1950’s. The Wankel rotary is an example of a design which makes sense on paper. However, practical problems cause it to underperform in the real world.
Invention and History
Felix Wankel’s engine was conceived during a dream. In it, 17-year-old Felix was driving his car to a concert. When he arrived, he bragged to his friends that his car used a new type of engine – half turbine, half reciprocating. “It is my invention!” he told his friends. Upon waking up, Wankel became dedicated to building his engine. Though he never received a formal degree (or a driver’s license), Wankel was a gifted engineer.
Young Wankel’s checkered history includes membership in several anti-semitic groups in the 1920’s. He was also involved with the founding of the Nazi party. His conflicting views on the direction of the party lead to his arrest in 1933. Eventually released through action of Hitler himself, Wankel joined the SS in 1940. The end of the war saw Wankel spending several months in a French prison for his wartime involvement.
A big problem with most modern cars is the sheer number of parts and systems that are not user serviceable. This is a big departure from cars of just decades ago that were designed to be easily worked on by the owner. To that end, [Anthony] aka [fuzzymonkey] has tackled what is normally the hardest thing to work on in modern cars: the Engine Control Unit. (Older posts on this project can be found at [Anthony]’s old project log.)
Every sensor in any modern car is monitored by a computer called the Engine Control Unit (ECU), and the computer is responsible for taking this data and making decisions on how the car should be running. In theory a custom ECU would be able to change any behavior of the car, but in practice this is extremely difficult due to the sheer number of operations required by the computer and the very specific tolerances of a modern engine.
The custom ECU that Anthony has created for his Mazda MX-5 (a Miata for those in North America) is based on the PIC18F46K80 microcontroller, and there are actually two units involved. The first handles time-sensitive operations like monitoring the engine cam position and engine timing, and the other generates a clock signal for the main unit and also monitors things like cooling temperature and controlling idle speed. The two units communicate over SPI.
[Anthony]’s custom ECU is exceptional in that he’s gotten his car running pretty well. There are some kinks, but hopefully he’ll have a product that’s better than the factory ECU by allowing him to change anything from throttle response and engine timing to the air-fuel ratio. There have been a few other attempts to tame the ECU beast in the past, but so far there isn’t much out there.
CAN Bus hacking is all the rage right now. This particular project uses an early development version of an Arduino compatible CAN bus tool to integrate radar detector control into a Mazda dashboard. This image shows the output as the Whistler Pro-3600 radar detector boots up. The self test demonstrates what you would see on the dashboard display if your speed is checked using any of a handful of technologies. But it’s not just the dash display that’s working. The steering wheel controls are also capable of affecting the radar detector so that it can always be hidden from sight.
With auto manufacturers adding more numerous and larger displays to our vehicles it’s refreshing to see someone come up with a hack that makes pushing our own info to those screens possible. The CANBus Triple is an Arduino compatible board which patches into the data bus found in all modern vehicles. To integrate the Whistler for this hack [TheDukeZip] prototyped the interface on a regular Arduino board, then moved it over to the CANBus Triple once he had it working. Check out the video after the break to see the setup in action.
[Fred Keller] and [Judy Foster], both retired, are proving that age is just a number. What you see above is a nostalgia inducing full size driveable Radio Flyer red wagon. The base of which is a 1976 Mazda pickup truck, while the wagon portion is a mishmash of wood, fiberglass and bondo, detergent bottles, and more. Even the steering wheel has been retrofitted from an actual wheel from a wagon. We were surprised to find out the entire conversion only took the two 11 months to complete (finishing this past august), and even more confounded to learn the vehicle is completely street legal.
[Pieter] is in the process of adding a turbo package to his ride. He needed a status display for the boost but didn’t have a good way to mount an additional display. He came up with the idea of using the LCD screen that’s already in the dashboard, but the specs for it were not available. Wielding his hard-earned hacking skills [Pieter] used a logic analyzer to sniff out the communications to the screen. He built a controller board that overrides the data coming in from the head unit. The board is also able to query the car’s computer for data and display it in any format you want. What he ends up with is a stock look that he can customize for his needs. Nice!