With the growth around IoT, cars are increasingly becoming more connected. This project is part of an effort to help makers build DIY connected cars.
What it does
This keyless entry system has two main features:
1) BLE Proximity Locks: Your vehicle automatically locks and unlocks based on your proximity to your vehicle. Just download a simple BLE app and place the Arduino 101 with custom shield in your car. This eliminates the need to pull out your keys every time you get to your car. The app can work in the background with virtually no effect on battery. Very convenient.
2) BLE Virtual Key Fob App: This feature is still under development. It eliminates the pocket bulk of a key fob, and moves the same functionality within an iPhone app.
How I built it
Hardware: Arduino 101, 2004 Ford Focus Key Fob ($6), Solid State Relays (4 for $10) link, Wires, USB cord, 12 V USB power adapter
The Arduino 101 controls 4 relays which in turn simulate button presses of the key fob for locking, unlocking, panic, and trunk. This required disassembling the key fob and soldering wires to the button pads of the PCB. I then soldered this modified PCB to a proto board to use as a custom shield that would connect to the Arduino.
Because of how cheap the replacement key fob was, I opted to use the car's existing wireless entry system as opposed to modifying the car wiring. Nonetheless, this system could also be done by using the relays in parallel with the car's lock switches.
Software & BLE: The Arduino 101 has convenient libraries and examples as part of CurieBLE that made the coding easy. The application simply scans for certain BLE UUIDs and sends signals to the relays appropriately for lock, unlocking, etc.
The iPhone app was a little trickier and is still in development. Currently it is fully functional for proximity locking. When opened, the app advertises BLE services that the Arduino can detect. The app also continues to advertise in the background through Apple's Core Bluetooth framework.
Challenges I ran into
I originally planned to use a Tile device tracker in my wallet as opposed to an iPhone app. Unfortunately, the radios of the Tile do not wake up frequently enough for reliable detection by the Arduino. Soldering wires to the PCB pads and removing the buttons switches was a little tricky. Calibrating the RSSI for proximity took a while as well.
What's next for Curie Car Keyless Entry
Finish up the BLE Key Fob app so the virtual key fob is functional. This also involves modifying the Arduino app to search for and subscribe to certain UUIDs. Once complete the app could also use a UI overhaul.