Inspiration

We had an issue that we encountered daily, and took this opportunity to make our lives easier. One of our team members drives an old and somewhat suspect car. The only way to unlock the car is using the passenger-side keyhole. This requires the driver to walk around the car, unlock the passenger-side door, reach over the seats to manually unlock the driver-side door and walk around to the seat. In addition to being super annoying, this process poses a safety concern in the event that one has to enter the car quickly. So, we decided to combine our knowledge of CS and Engineering to design a cool solution to this problem that is open source and easy to adapt for other retro ride owners in a similar situation.

What it does

We tech-ified a 2003 Honda Civic with a web app that remote controls the car’s locks.

How we built it

We used a Raspberry Pi Zero W to serve our web app and interact with a custom circuit board that controls the car’s locking mechanism. The web app is accessed by joining a WiFi network hosted on the Pi.

Hardware

  • The goal for the hardware portion of this project was to interface a Raspberry Pi Zero W with a 2003 Honda Civic door lock system. We read through the vehicle’s service manual and discovered that by emulating the signal sent from the manual door-unlock switch inside the vehicle, we would be able to achieve our goal.
  • To match the signal of the door-lock switch, we needed to create a 12V signal. This was initially a challenge since the Raspberry Pi’s logic outputs operate at 3.3V. We decided to implement 2 NPN BJT transistors to solve this problem. By wiring the transistors to the Raspberry Pi, the car’s 12V battery, a handful of diodes, and a breadboard we successfully were able to lock and unlock the car. Our hardware development did not stop with this functional prototype.
  • We took our proof of concept and upgraded it to a fully functional model that is robustly installed in our teammates' car. We condensed our circuit schematic and soldered components directly to a perf-board, the Raspberry Pi, and the car. We decided to use a circuit board rather than a breadboard because of our concerns over the reliability of a breadboard in real world conditions. By eliminating our use of unreliable low-quality undependable untrustworthy unpredictable breadboard jumper wires, we ensured our device would survive on the road for years to come. In order to connect our project to the car, we build a custom wiring harness with a 3-pin molex connector. In order to minimize the number of wires, we wired all three lines through a cable sleeve. The connector represents the high quality and standards of our craftsmanship.
  • The last hardware challenge our team solved was packaging the device elegantly inside the vehicle. We took apart the vehicle’s driver door panel and installed our wiring harness inside. We then modified one of the interior trim panels to store our Raspberry Pi and circuit board. The only visible component is a single USB cable that is exposed to the user to charge the device.
  • Our resulting hardware is elegant, robust, and refined.

Software

We knew that our interface would have to implement some form of access control mechanism to ensure that only authorized users can manipulate the car. It was very important that this access control use state-of-the-art security since it protects a valuable physical asset. Therefore, we decided to use FIDO instead of a username and password scheme. FIDO is a passwordless authentication protocol for the web that leverages public key cryptography and trusted devices to avoid shared secrets on servers. Instead of registering a password to a given username, FIDO associates a public key to a user account that corresponds to a private key controlled by an authentication device. This authentication device can be any trusted device such as a fingerprint sensor or hardware token. Popular implementations of FIDO include Windows Hello and the Android FIDO2 API. We adapted our FIDO web app from the app designed by Team PASS which is an authentication research team at UMD (Github link). The app was designed for a human subject experiment that was submitted for IRB approval. Therefore, it adheres to a suitable standard of security and confidentiality. The tech stack of the app consists of…

  • Backend
    • Flask
    • Python WebAuthn library
    • MariaDB credential database
  • Frontend
    • Bootstrap
    • An adorable logo
  • RPi.GPIO library to output to the electronics Our modification to the app consists of the removal of all of the experiment oriented aspects of the site such as interaction logging and the inclusion of an interface to interact with the car locks. This interface consists of two buttons to lock and unlock the car. We also implemented a modified user registration system. In the original app, any user could register an account with the web app which would defeat the purpose of the app in our project. Therefore, we designed a system where a registered user can generate a one-time-use registration PIN that is used to register another user. We then disabled this system to register one initial user and used that account to register the rest of our devices. ## Challenges we ran into
  • Due to our limited hardware, we could only interact with the Pi Zero headlessly. This lead to many networking headaches
  • The WiFi in the hacking room was iffy at times, which made setting up the Pi tedious ## Accomplishments that we're proud of
  • We have the best logo out of any team in Bitcamp no question
  • We had sufficient time to attain a high degree of fault tolerance and finish in our final product
  • We incorporated interesting new technologies into our web application

What we learned

  • The inner-workings of 2003 Honda Accord car doors
  • A little bit of SQL Alchemy ## What's next for Remote Controls for Retro Rides We would like to expand the capabilities of our embedded Pi to control more of the car’s functionality. Some ideas we had were remote starting, window control and media player control. We would like to implement a media streaming that allows a device connected to the Pi’s WiFi to play music over the car’s radio.

Built With

Share this project:

Updates