Those of us who live in places that get very cold or hot appreciate remote car start systems. My 2012 Ford Focus came with remote-start, but the button wasn’t on the main key fob. It came on a separate fob instead — who wants that? I decided to make a phone interface, to simplify my keychain and add nearly unlimited range.

The basic idea is to install the fob in the car with an Arduino that’s equipped with a cellular shield. When you call the cell shield from an approved number, the Arduino triggers the fob to start the car. Depending on your fob (and whether you want to break it open), you can physically press its button with a servomotor, or use a relay to make the connection electrically.

The Arduino draws power from your car’s battery while the car is off. To get its 12V down to the 5V that the Arduino needs, I used the guts from a cheap 5V auto charger, which is more efficient than a linear voltage regulator like a 7805. To prevent the system from draining the car battery completely, the Arduino monitors its voltage and shuts off power to the whole box when the battery voltage falls below a threshold set in software. The shut-off circuit uses a bistable relay, which stays in its current state until a coil is activated to change it. This prevents power from being consumed by the relay while it stays open or closed.


Project Steps

Prepare the power boards.

Build the power control circuit on a small piece of perf board, following the schematic diagram. For offboard connections, I used straight pin headers to take femaleto- female jumper wires.

When the Arduino software detects that voltage to its Analog 2 (Vsense) pin has dropped below a set threshold for a period of time, it sets its Digital 4 (Power Off) pin high. This triggers the relay to cut the power to the entire box. To restore power, press the pushbutton, which activates the other relay coil.

For the power supply board, which converts 12V from the power control to 5V for the Arduino, pop open the 5V car charger and remove its circuit board. It should have a 34063 series chip.

Save the board along with the 2 power plugs and cable.

Prepare the box and base plate.

Cut ¼” plywood to create the base plate, which will hold the Arduino and trigger system.

Drill holes to mount the plate to the box’s screw points (if present).

If you know where you’ll be mounting the Arduino and other components, you can drill those holes as well. Or for all cutting and drilling, you can download laser cutter templates for my base plate and other plywood pieces here.

Decide how you will trigger the remote.

My remote fob has one button, but with others you hit “lock” before holding down “start.” You can keep a one-button remote intact by using a servomotor to push its button. Or with either type of remote, you can use relays to make button connections electrically.

Make the remote trigger (Servo version).

Use more ¼” plywood to create 2 small stack plates that sandwich each servo and remote together on top of the base plate, such that the rotating servo arm can push the remote’s button.

Position the stack on one side of the base, to leave enough room for the Arduino.

I drilled two 2½”×¾” plates and joined them to the base plate using four 3″-long #6-32 screws. To tighten the plates down for holding the servo and remote, I used multiple washers and nuts on each screw.

Make the remote trigger (Relay version)

Open your remote and examine the PCB inside for the button contacts you want to tap into. There are normally 2 types: intertwined traces that connect electrically when a conductive pad is pressed against them, and mini pushbuttons soldered onto the board.

For each button, cut and strip 2 wire leads and solder them to the button’s on-board contacts.

For trace contacts, you may need to gently clean or polish them to get a good solder connection.

Build the relay circuit.

Follow the schematic to build the relay circuit on a piece of perf board. The Arduino’s digital outputs don’t deliver enough power to energize the relay coils directly, so they drive them via transistor.

Mount the electronics on the base plate.

Mark 2 mounting holes for the Arduino on the base plate, drill with a 1/8″ drill bit, and mount the Arduino to the plate over short standoffs using #4-40 screws, washers, and nuts.

Fit the cell shield over the Arduino and plug the SIM card into the shield.

Mount the electronics in the box.

Drill or laser-cut holes in the project box for mounting the power jack, pushbutton, and antenna jack dangling off the cell shield.

Locate these components so they won’t get in the way of the parts inside the box, and make sure the antenna jack can reach its mounting hole.

I also cut a rectangular access hole in front of the Arduino’s USB port, for plugging in the programming cable.

Mount the base plate in the box, and velcro the 2 power boards from Step 1 against the inside back of the box.

Solder wires to the power jack and pushbutton, and install them in the panel along with the antenna jack.

Complete the wiring (relay version).

Follow the figure to complete the wiring.

For a shared ground, connect one side of the pushbutton to grounds from the power jack, Arduino, and power boards.

Continue wiring with jumpers to connect the Arduino, relay board and remote.

Complete the wiring (servo version).

Follow the figure to complete the wiring.

For a shared ground, connect one side of the pushbutton to grounds from the power jack, Arduino, and power boards.

Continue wiring with jumpers to connect the Arduino and the servo.

Upload the software.

Download code for this project and upload it to the Arduino.

Comments in the code describe configuration changes you may need to make, for example, where you specify the list of approved phone numbers that you want to start the car from.

The cell shield comes preconfigured to communicate on pins 2 and 3 at 9600 baud, to avoid conflicting with the USB host.

The AT command set used with the shield is described at http://sparkfun.com/products/9607.

By monitoring the shield’s output, the Arduino can see when any call comes in and what number is calling.

To prevent any minutes from being used, the software never picks up a call; it just checks the originating number against the hard-coded approved list.


Installation will depend greatly on your particular vehicle. You need to connect the power plug (from the 5V adapter) to constant 12V power that’s always on.

In some cars, the regular 12V power port (cigarette lighter) is on all the time. In this case you can simply make a 12V power cable using the 2 plugs left over from the 5V adapter (lighter tip to barrel plug middle, and lighter sides to barrel outside), and connect at the cigarette lighter.

But if your car, like mine, turns the power ports off after you turn off your car, you need to refer to your car model’s documentation to identify 12V (+) and (–) wires in the cable harness.

Install the box where it can reach both continuous 12V power and your cell antenna mounted outside.

Start your engine

Using your newly hacked remote start is simple — just call the car.