Thursday, January 10, 2013

Finally Assembled

After almost two years of keeping the dashboard around, I've finally taken the time to assemble it:

Monday, April 12, 2010

Joystick Cruelty

It all began with a brand new, unsuspecting force feedback joystick, completely unaware of what was going to happen to it. Little did it know, it was going to meet its destiny.

So, the torture began...

... and it carried on for about 10 whole minutes. You can see the tormenting tool at the bottom of the picture below.

However, it was all for a good cause. After some cutting and drilling, the old joystick became an H-Shifter, mounted right in the place of the actual gear shifter in the BMW E36 center console.

In case you're wondering how the joystick is going to act as a H-shifter, it's all thanks to a great and simple software called FFShifter.

Note. No hardware was harmed while making this blog post. Except for a Logitech 3D Pro joystick.

Thursday, April 8, 2010

Getting Real

I've just made one more step towards building my simulator, by getting a complete BMW E36 dashboard from the scrapyard.

I will probably cut off the passenger side, and keep only the driver side and the center console, where I'm planning to accommodate a H-shifter, which I'm going to build off a force feedback joystick. I have already bought a Logitech 3D Pro which I'm planning to take apart... but more about that in a future post, so stay tuned.

Here's how the dash looks like.

Tuesday, April 6, 2010

Going Live

Both the Arduino and the PC side software are now updated to process the speed and RPM signals coming from Live For Speed.

What's interesting, is that the Arduino (ATMega1280) being single-theaded, I had to write all the code in one function. So, there is only one thread which reads data from the serial port, and as soon as a complete package is received, it updates the control lights and speed / RPM signals.
The speedometer and rev counter are fed with clock signals, whose frequencies vary according to the speed / RPM to be displayed on the dial (the actual speed and RPM sensors on the real car read their values from the rotating wheels/engine crankshaft, thus sending clock-like signals to the instrument cluster). These signals are generated by means of two dedicated timers, also implemented in the same single thread.

Here's a video of the real thing working in LFS.

Moving the Needles

I've finally succeeded in moving the RPM and Speed dials! It took some months, some burned integrated circuits, a useless H-Bridge and two 2N2222 transistors to get them working.

Here's a video showing a test program.

Saturday, March 20, 2010

Connected and Alive

This is probably one of the most important moments in my project's life so far.

In a few words, the dashboard now reflects the exact state of the simulation in Live For Speed, covering for the moment only the control lights.

So, this is what I've done recently.
First, I've ported the original software to the Arduino language and flashed it to the new board. Hooked it up to the dash interface, and voila! The lights were flashing in sequence just as before.
This encouraged me to go to the next step, so I modified a C# code that I had previously found on the web, which connects to LFS using OutGauge, to acquire live data on a UDP connection. I modified this program to send all the data through a serial port to the Arduino board.
The updated Arduino software continously reads data from the serial port (simulated over USB), interprets it, and sends the corresponding signals to the dash interface in order to light up whichever control lights are on in the game.
All of the lights are working, such as turn signals, hazard lights, full beam, traction control, parking brake, shift light, and red line.

Here's the thing in action.

New Grounds

Browsing around the www, I came across this simple, easy to use development board, which seemed just right for my project. As I've said in an earlier post, I want to reduce my efforts as much as possible, so this Arduino MEGA board was just what I was looking for, as it is built around a powerful enough microcontroller, the ATMega1280, it exposes all I/O pins (analog, digital, PWM etc), and has a simple, open-source programming language, as well as a pretty bare IDE which also allows you to upload the software via USB.

Could I ask for more?
Yes. I could wish for ready-made libraries for working with the serial port, PWM and such, but they are already there. And, as an open-source project, it benefits from continuous improvement from all over the world.

I forgot to mention that it's pretty cheap, too.