As someone who has turned a car into a video game controller before, I feel that I’m completely qualified to say that this is way better than the crude, 8-bit era hack I cobbled together to play Pole Position with a Lancia and an Atari. What Adam Ringwood and his friends did with a Chevrolet Volt and a tiny, cheap-ass computer is really quite amazing, and, even better, should be easier for people to duplicate on their own cars.
Where I just wired motion switches to the steering wheel and simple switches to the shifter and pedals, what this team did was to use the car’s internal CAN bus to get access to the various dashboard controls. And they did all this at the HackIllinois event this past year.
The game itself is played on a Raspberry Pi little single-board computer, which is running a Nintendo 64 emulator. The emulator normally looks for controller inputs, so the goal was to connect the computer to the car via the car’s OBDII port. An add-on board provided the interface between the Raspberry Pi and the car’s OBDII port and CAN bus.
Once connected, the team was able to ‘sniff’ the data and signals provided by the car when various controls were used, and from there they were able to see what they could use to control the game.
They were able to use the brake pedal and the car’s light switches for some of the controls, but the most important control, the steering wheel, was trickier. Where my crude system worked fine with just an on/off signal for left and right, the Nintendo 64 emulator was a bit trickier:
The hardest control to change from the phyiscal car to the emulator was the steering wheel. The emulator only supported two button presses, one to go right and the other to go left. When the steering wheel however reported how far way from center it was. The first attempt was say if the wheel was left, the button for left would be held down and the same for the right side. This caused significant problems for the person driving because they would turn the wheel further but the character wouldn’t turn any faster.
We ended up solving the problem by not continously pushing the button down when turning. The further the wheel is turned to the left or right, the greater amount of time the button stays down and the further the car turns. This results in a very intuitive experience for the driver that results in control similar to driving an actual car.
The team tested their setup on a Honda CR-V first, and later on the Chevy Volt seen in the first video. Because their system works via the OBDII port and the CAN bus, it should be possible for anyone with similar hardware to plug into their own car and give it a try, with the right software.
Luckily, they made that right software available here, so why not download it and give it a go?
Just, you know, make sure you’re parked before you start playing.