In the beginning you can see at the bottom of the frame there is a DragonBoard 410c hooked up to the display and the web camera. The DragonBoard is programmed to take a picture every few seconds and compare it to a database of "intruders" vs. " residents" on an AWS S3 server using AWS rekognition. The person in the video is listed in the intruder database, causing the alarm to be set up on an arduino board (seen on the left of the frame) that is connected to the DragonBoard via bluetooth.
Imagine coming home after a nice weekend at Electric City Hacks, only to find your house in ruins and your belongings stolen. Every 15 seconds, a burglary is committed in the United States. Losses due to house invasion total over four billion dollars every single year. And, unfortunately, only 15% of these burglaries result in arrest. Notably, over 87% of home invasions are easily preventable.
What it does
EasyDoor is a facial recognition home security system that automatically unlocks doors for known residents of a home. If a non-resident is detected, their facial recognition data will be run through an online database containing photos of known criminals from a local police database, setting off an alarm if a match is found. Finally, EasyDoor does a threat analysis of the environment, detecting any potential weapons the person is carrying, then notifying you via e-mail of the perceived threat level of the individual outside your home.
How we built it
We utilized a DragonBoard 410c running Android and connected to a sensor mezzanine. Arduino Genuino Board with Grove Base Shield V1.3 connected to a grove buzzer, servo motor and LED. Uploaded code using Arduino’s BLE library, allowing the circuit to advertise itself to nearby bluetooth devices to be controlled remotely. Utilized an external libraries OpenCV and UVC Camera in order to connect the usb camera to the Android app base. Utilized the AWS Android SDK along with AWS S3 for data storage of photos, AWS rekognition for facial recognition and comparison and AWS SNS for sending email notifications to users.
Challenges we ran into
Initially we were unable to get AWS authentication on the Android app, we realized after that we had to use AWS Cognito over the usual Java credentials in the Java SDK. We couldn’t access an external USB web camera using the built in linux console on the DragonBoard, so we had to flash Android and utilize an external library to access the camera, then we turned the live camera feed into a Bitmap in order to store the photo for comparison. We didn’t bring our own hardware, leading us to lack a lot of the parts we needed to run I/O on the DragonBoard. In order to troubleshoot, we decided to use the bluetooth in the DragonBoard to connect to an external Arduino board that would control the alarm and motor.
Accomplishments that we're proud of
Utilizing AWS rekognition correctly, controlling an alarm on an Arduino board via bluetooth, getting a usb web camera to be connected to the DragonBoard and being able to save the image to a local director and being able to create a functional IoT project that consists of connecting an Android app to a DragonBoard that is connected to an Arduino, that is all connected to AWS.
What we learned
We learned to connect a usb web camera to an Android device via an external library, how to use bluetooth on an Android application to control GPIO pins on the Arduino, how to use AWS rekognition for facial recognition, AWS SNS for sending email notifications and AWS S3 for online storage.
What's next for EasyDoor
Cleaning up the GUI for the mobile app used to upload your photo, creating the physical mechanism to automatically open a door lock and updating the quality of the camera in order to improve facial recognition confidence levels.