Inspiration

Voting machines have always been a subject of great controversy, so we decided to build one which can ensure a voter does not feel like they may have made a mistake.

What it does

How we built it

Software

The backend software uses Postgresql and Python to store and load information about votes being made as well as previous polls that have been completed. Using modular python scripts we are able to make changes and add to this database in a number of flexible ways. This backend is implemented with a python webserver and the a RaspberryPi's hardware to make the voting experience more engaging and tactile. The webserver is used to create new polls and view the results of any that are running.

A setup script was also created that when run on a debian based machine will setup, install and run all the needed dependancies. It also creates the correct database architecture and starts up the postgresql server so that it is ready to go.

Hardware

The hardware components of this project are entirely dependent on a Raspberry Pi's GPIO pins in order to interact with the software. The actual mechanism to vote is carried out by using two simple push buttons as well as one ultrasonic range sensing module. The ultrasonic range sensing module determines what type of card is inserted into the enclosure

Challenges we ran into

Hardware

Getting every module to work in conjunction was quite difficult. The ultrasonic range sensor module is quite tedious to calibrate and made the entire system malfunction in most of our initial tests. Additionally, the display we chose did not have readily available drivers, so we unfortunately had to look through the datasheet of the specific part and write our own display driver.

Database

We ran into significant issues trying to create the setup script in such a way that the Postgresql database was correctly created with as little user input necessary as possible. The permission system of the database was sometimes difficult to work around and/or not very transparent in what was necessary.

Webserver

We are not web developers so we were forced to learn how to create the webserver from scratch. Being able to collect and display elements using html was something we struggled with for a little while. The design of the website is not very aesthetically pleasing either because of our lack of skill.

Accomplishments that we're proud of

We are proud that all of the different systems connected and interacted with each other correctly.

Built With

Share this project:

Updates

Submission history