As high schoolers ourselves, we are going through the process of learning to drive and getting our drivers licenses. Before we can take the behind the wheel test, we are required to practice 50 hours with a parent and even after the test, we have to practice even more to be ready for any obstacle out on the open road. That is why we decided to create CamWheel, a web application that is connected to hardware that tracks your driving performance and gives you a report on your driving skills. This applications give student drivers, or any new drivers for that matter, a convenient way to learn to drive and improve their driving skills.
What it does
Our hardware takes note of all of the aspects of driving that are tested during the behind the wheel driving test. We have sensors that detect the speed of the car relative to cars around it, how dark it is outside, how often the indicator is used, and if the driver is consistently checking the blindspot. This allows us to check how fast the driver is going, if they are using their headlights, and if they are checking their mirrors and blindspots. With this combination of sensors, we can collect data about the user's driving style. The data is then analyzed in order to create a report consisting of the driver's performance in various categories. On the software side, we use facial recognition in order to check when the user checks the blind spot, and we can compare that to when they turn the indicator to see if they are checking their blindspots on time, which also factors into the final report.
How we built it
We had two main aspects to the build: the hardware and software side. For the hardware, we used a joystick, a lcd display, an ultrasonic sensor, a photoresistor, and a motor driver to run a dc motor. We used an arduino microcontroller called a mkr1000 in order to interface all of these parts together. We had to use the motor driver because the arduino board itself could not supply enough power to run the motor. For the software, we used pico.js for our facial recognition api and html and css to create the UI of our web application. The UI consists of an option to start recording for the drive and then gives you a report based on your results afterwards.
Challenges we ran into
We ran into numerous challenges on both sides of our project. One challenge on the hardware side was managing the voltage so that there was enough to power all of our components. After some experimentation, we discovered that the mkr1000 does not supply enough current or voltage to power all of our components together, so we elected to add a 5 volt battery and motor driver to run the motor. Another challenge we had was interfacing the data from the arduino to the js script we had on the website. It was very hard to find a way to send the data, and after ample research and iterations, we discovered that sending a text file would be the most efficient way to transfer the data.
Accomplishments that we're proud of
The accomplishments that we are proud of are the hardware aspect of this project. This was the first time we had added a hardware aspect to one of our projects, and it was a great experience. This allowed us to add a physical aspect to our project, which we found to be new and interesting.
What we learned
We learned a lot about using APIs and sending data through databases because we spent an extremely long time connecting the various parts of our project together. We spent time learning to connect the pico.js API to the rest of our code and then we learned to use firebase in order to send data from our arduino to the frontend of the website. In the end, we opted to use a text file instead.
What's next for CamWheel
Next for CamWheel we want add more aspects to the report, because we did not get to send that much data due to the limitations of the text file communication. We hope to fix this by using bluetooth communication between the arduino and the device we wish to use. Another improvement we want to make is an improvement to the UI. We did not have too much time to do that this time because we spent a lot of time on the other aspects of the build. With these improvements, we hope to create a finished product that we can use to improve our own driving skills and then eventually open up to the business world.