My 1995 Toyota Corolla was anything but smart. One day, while helping a friend install a car stereo, I realized how simple car wiring really was. That led me to an idea—what if I could make my old Corolla smarter using wireless controls? Instead of modifying the entire car, I decided to focus on making the door control panel fully app-controlled. This allowed me to manage windows, locks, and other functions from a single entry point without having to tear apart the entire vehicle.
The final system allowed me to control all four windows and unlock the doors using a custom app. Since it had a dedicated backup battery, the system could still unlock the car even if the engine was off. The app also featured built-in voice commands, meaning I could simply say "lock the car" or "roll up all windows" to control the vehicle without pressing a button. With these features combined, my old Corolla had a level of convenience typically only found in modern cars.
The final system used an Arduino Nano, a Bluetooth module, and a 16-relay board. To move windows both up and down, I had to use normally open and normally closed relays wired in reverse. By controlling which relay was active at any time, I could ensure that the correct side of the motor received power, making it possible to raise or lower the windows remotely.
When I started mapping the wiring of the door control panel, I expected the system to work like a standard switch—where power is only sent to the windows or locks when activated. However, I quickly discovered that the control panel was always live, sending 12V to both sides of the motor at all times. Instead of activating a motor by sending power, the switches worked by cutting off power to one side, forcing the motor to spin in the correct direction. This meant that if I tried to simply bypass the panel, I would short-circuit the entire system.
The solution was to first cut power to the entire door panel before sending commands. Every time a command was sent, an extra set of relays would disconnect the control panel, then immediately execute the command, and restore power once complete. This happened so quickly that the user wouldn’t notice, but it prevented any electrical conflicts and allowed the system to function without damaging the car’s wiring.
The app needed to be easy to use and visually intuitive. I designed it to include a graphic of the car, where each window button was placed exactly where you’d expect it to be. The lock button updated in real time, visually indicating whether the doors were locked or unlocked. Additionally, the Bluetooth connection was monitored constantly, showing a red icon when disconnected and a green icon when paired with the car. To ensure the app stayed connected to the car, I programmed it to continuously search for the vehicle’s Bluetooth signal. If disconnected, it would automatically attempt to reconnect, but users could also manually trigger a connection by tapping the Bluetooth icon.
Since Android has built-in voice recognition, I integrated a voice command function into the app. This allowed me to say things like ‘Open all windows’ or ‘Unlock the doors’, and the system would execute the command instantly. My goal was to eventually make the system always listening, so I wouldn’t even need to tap the microphone button, but this feature was still in development when I wrapped up the project. Since I had full control over the windows, I decided to have a little fun with it. I programmed different window movement patterns, including a ‘Window Dance’ that made all four windows roll up and down in a wave pattern. The ability to customize these movements made the system not just functional, but also entertaining.
To create the app, I used MIT App Inventor, a visual programming tool that made it easy to design and implement Bluetooth-controlled commands. While it provided an intuitive drag-and-drop interface, it also had some limitations in functionality, requiring creative workarounds to achieve a smooth user experience. Despite this, I was able to develop an app that could reliably connect to the car and send commands to the Arduino. The app also included voice control integration, allowing for hands-free operation using Android’s built-in voice recognition system.
The final version of the system worked surprisingly well. I could lock and unlock the doors, control the windows, and monitor my connection status all through my phone. The backup battery also ensured I could unlock the doors remotely, even if the car was off. It was a fun and unique way to modernize an old vehicle.
While the system performed well, there were additional features I wanted to explore. Expanding the system to start the car remotely and control other electronics like the A/C was a logical next step, but it required additional safety precautions to prevent accidental shutdowns while driving. Ultimately, while I moved on from the project, it was an exciting way to see how much I could modify a completely analog car and turn it into something far more advanced.