There are a lot of ways of approaching a solution to this problem. I could have her get out first and then air down, of course. But, if it’s raining, she gets wet, and that’s not very cool. Worse, when getting back into the car, she’s got to wait for me to get in, start the car (which is a longer operation on a diesel than a gas-powered car), and air the car up before she can get in. That’s not very cool either. Plus, it kind of ruins the magic of air ride if it’s going to have to be a production every time I want to set the car on the ground.
I decided that the solution was going to be some sort of remote control for the air ride system, to allow me to air the car out as I’m walking away or air it back up to ride height before opening the door for my girl. Now, there are a couple of great off-the-shelf solutions for this that AccuAir themselves offer. The most obvious choice is e-Level Wireless which is a keychain remote that allows you to select any of your three presets from up to 200 feet away. Sounds great! But, I ultimately didn’t choose to go this direction. The reason is that, for what should be obvious reasons, the e-Level Wireless system has its own separate remote for air ride control. Now, since I’ve been wanting to add keyless to this car anyway (can you believe in 1995 a Mercedes didn’t come with keyless!? It wasn’t even an option in the US!), wouldn’t it be nice if I could avoid having to add a fourth remote to my already bulky keychain (yeah, that’s one for my house alarm, one for my Mitsubishi, one for the Mercedes’s keyless, and one MORE for air ride. Blech.)?
The other option is i-Level, which sets up a Wi-Fi network that allows control from a linked iPhone, presenting an interface that is pretty much identical to the e-Level touchpad controller. Since it is an app on my iPhone and apps don’t take up any additional physical space, this avoids the additional keychain remote issue completely. I may yet purchase this system, but it’s not the right solution here either. Aside from the hassle of digging out my phone, unlocking it, and loading up an app every time I want to adjust the suspension, I worry that the WiFi network it broadcasts will compete with my home WiFi when the car is parked, which might lead to flakiness with my phone syncing to my home server and so forth.
What I wanted was a single, simple RF remote that controls both my door locks and my air ride. Is that too much to ask? I don’t think so. But it’s going to require some creativity to get there.
You’d think with only four channels to control (lock, unlock, air down, air up) that we could find some universal keyless entry or remote relay control system on eBay that would work and simply hack it to work, but there are problems with this approach. You see, aside from the fact that the vast majority of cheap 4-channel keyless systems have simply hideous remotes, the air ride control actually requires a bit of logic to make sure that the AccuAir control unit is powered on for a couple of seconds before sending a control signal, then left on for a few seconds while the suspension adjusts. For any off-the-shelf keyless system, that was going to require some logic with timers and such, which was going to be complicated, inflexible, and fiddly.
This is a task that’s actually much easier to do with a small inexpensive microprocessor to handle the tasks of making sure the right signals are sent at the right times, since instead of adjusting timers with capacitors or timer relays, I can just change a couple variables in my code. If this smells like it’s going to start getting more complicated than it ought to be, then you’re absolutely right

Enter the Arduino Uno R3 microcontroller:

(all photos shamelessly stolen from their vendors' websites and/or Amazon)
For those unfamiliar, this is an Italian-made microcontroller with a 16 MHz processor, 32 KB of flash storage, 2 KB of RAM, and a variety of both digital and analog inputs that allow it to interact with its environment and a large number of expansion boards. To give you an idea of this thing’s processing power, it’s basically 10x as fast as the processor in an original Nintendo, with about half the storage capacity. It’s WAY more power than we need. Arduinos are programmed in C++ with the addition of a library called Wiring which makes interfacing with the board’s inputs and outputs basically painless. The code is very straightforward and easy to learn, even if your a putz like me whose last programming experience was writing a Pong clone in Pascal back in 1999. No joke, I called it “PONG 2000” (yep, I was pretty fuckin’ creative) and it crashed every time either player won the game.
Microcontroller in hand, I still needed a remote of some description and an expansion board to allow the Arduino to see the remote’s inputs. Luckily, I found a simple and inexpensive 315 MHz RF receiver:

… and its associated remote. And it’s not completely hideous! Boring maybe, but certainly not as atrocious as some of the stuff on eBay:

I immediately divorced the remote from that stupid little clippy thing. The remote receiver is extremely simple in operation: four pins (D0 through D3) are individually associated with a single button on the remote, and output a 5V signal the Arduino can read when its associated button is depressed. Really simple, really straightforward.
Arduinos run ideally on between 7V and 12V, and beyond 12V, their voltage regulators become unstable. We need the onboard voltage regulator to supply a clean 5V to the remote receiver. Since the car’s alternator supplies 13.6V when running, we need to step the voltage down. To do so, I snagged a simple voltage transformer that will step the 13.6V the car puts out when running down to a healthy 9V:

Incidentally, the one I received says SMAKN on it, which is kind of hilarious.
To do all the electrical switching we’re going to need to do, we need to control a bank of relays. But, Arduinos are limited in the amount of power they can output. Each output can theoretically output 40mA at 5V, but it’s best to keep them around 20mA. Unfortunately, a standard 40A relay requires more like 100–300mA to switch, which will burn out the microcontroller. Since we’re switching a DC load, the relay also has to be electrically isolated from the controller, otherwise an induced load on the relay coil could burn up the Arduino. To solve this problem, I acquired an 8-channel relay board, which uses transformers to augment the Arduino’s limited power output, and has a bank of optoisolators to decouple the relays’ coils from the Arduino:

I also acquired a bunch of other little accessories, like some jumper wires to connect everybody together, a 40A relay, and an ABS plastic box to house everything, all of which you’ll see soon.
Does this seem unnecessarily complicated and fussy? Good. Because it is. But it’s playing with electronics and programming, and that is by definition fun. Plus, how many people can say they built their own keyless entry system out of chips and relays and shit?
Stay tuned for part 2: programming!
Leave a comment: