A lot of newer cars have a really nifty feature called “proximity unlock,” which automatically unlocks the doors when the driver approaches while carrying their key fob. When paired with a push-to-start ignition switch, the driver never has to take their keys out of their pocket. But Nick’s 2004 Subaru STI is too old to have come with that feature from the factory, so he used a couple of Arduino boards to create a DIY proximity unlock system.
Car manufacturers need to pay serious attention to security when designing their access and ignition systems, but Nick had a bit more freedom. It is unlikely that any thieves would suspect his car of possessing a feature like this and so they wouldn’t even bother trying to hack it.
Nick’s proximity unlock works by evaluating the received signal strength indicator (RSSI) of Bluetooth® Low Energy connection. If all else is equal, RSSI is inversely proportional to distance and that makes it useful for rough proximity detection. An Arduino Nano 33 BLE inside the car unlocks the doors when it has an active BLE connection with an RSSI over a set threshold. It unlocks the doors by shorting the switch with a 12V relay and it receives power from the car’s 12V system through a buck converter.
The driver-carried device (equivalent to a key fob) can be either another Arduino or Nick’s smartphone. In fact, it can be any device with a BLE adapter, so long as it can connect to the in-car Arduino with the proper device name.
Now, Nick can enjoy his classic car and the convenience of proximity unlock.