We were inspired by the theme of DerbyHacks: "Make Your City." We decided to create smart technology that could be installed in cities and improve their residents' quality of life in some way.
What it does
The camera unit is mounted high above a parking lot and takes images of it at regular intervals. These images are processed to determine the current number of empty parking spaces. A companion smartphone app allows the user to "reserve" a space ahead of time, making sure no one else can enter the lot and take their space before they arrive. Another app is connected to the parking lot gate, allowing users with reserved spaces to scan a QR code to enter the lot. The gate would also allow people to pay to enter the lot as usual, provided that unreserved spaces are still available.
How we built it
The sample camera unit was built with a Qualcomm DragonBoard 410c and a Logitech webcam. A simple script takes the pictures and uploads them to a Linode VPS, where they are processed by OpenCV in a Python script. The script updates the current number of spaces in a MySQL database, and then draws them into the image before uploading the image to Amazon S3.
The client is an Android app that connects to the MySQL database via several PHP resources on the VPS, as well as connecting directly to S3 to access the current image of the parking lot. Options are provided in the app to refresh the data and to reserve a parking space. Reserving a space generates a QR code that can be scanned by a different app, which clears the reservation from the system.
Challenges we ran into
The biggest challenge we encountered was getting all of the different systems we used to work together smoothly. We encountered several difficult issues throughout the development process that were related to interoperability.
Accomplishments that we're proud of
We are proud of the demo version we assembled to present at DerbyHacks. We consider the demo a proof of concept that shows most of what the completed parking system would seek to accomplish.
What we learned
We learned that sometimes the most difficult bugs to fix result from overthinking. When programming, it is easy to seek out a complex solution in favor of a simple error that might have been overlooked. This is especially true when the project involves many different systems working together, and the best solution is to have multiple people look at the code and make sure every line is logical.
What's next for Derby City Parking
If our system were implemented on a citywide scale, the app would expand to feature multiple lots and the ability to locate the closest available space. The app would also use an external API to accept payments for space reservations, and users would be able to log in and save the QR codes they need to enter the parking lot without taking a screenshot or keeping the app open. Another possible feature would be to reserve a specific space in the parking lot and show the user how to get to it.