At first, I wanted to make a doorbell that notifies you by text instead of a bell. However, we expanded on this because in intercoms, its hard to see people at your door, and you have to get up to see them. This way, it'll just text you, telling you who's at your door!

What it does

When the bell is "rung" it analyzes the face in front of it and either texts the user that they are at the door or if they are unrecognized, records them in a website where the user can later train the doorbell to recognize more friends.

How we built it

We used OpenCV to capture pictures, and fed this data to the Kairos facial recognition API, which then matches it with a database of friends. After finding the match, it uses the nexmo API to send text messages to the user. To make the website, we used HTML, CSS, PHP, and SQL. This took up the bulk of the time, although our website was shut down right before so we couldn't present it.

Challenges we ran into

Oh man. First, my Raspberry Pi's GPIO broke, and then the makey makey i brought as backup wouldn't work with it. This meant that we couldn't use the button. Instead, we used an ssh command as proof of concept. Then, the service I hosted the website on was put down for maintenance on that day, so we can't present it, except for the local version. Also, a lot of the APIs we used didnt actually work on the Pi, so we had to keep looking for new ones. We started off with twilio, but then had to use nexmo, for example. It was also very difficult to connect the Pi to the school's wifi.

Accomplishments that we're proud of

We managed to overcome all this, and make the world's first facial recognition door bell!

What we learned

I learned a lot about the linux terminal, python requests, PHP, and SQL.

What's next for SmartDoor

After the hackathon is finished, we could get a working raspberry pi and then use it to actually implement the button. I would also have time to get a working website service, so that huge component that is part of the project which allows you to add new people to the API would work.

Built With

Share this project: