|Software apps and online services:|
|Hand tools and fabrication machines:|
I created Sentinel because I wanted to know how my dog Duke was doing while being away from home, I used to have a couple of cameras but they were static and Duke wasn't always where they used to point at.
When finalized, Sentinel will be able to patrol around in a semi-autonomous way, find and follow Duke, recognize familiar faces and with its companion Android app, I will be able to remote control it and keep an eye on what is happening at home with live video and two-way audio!
I'm an Android Developer, so it was just logical to use Android Things (TM) and other Google APIs and technologies such as Vision API and Tensorflow to create it.
Sentinel in Action
I'm using the latest release of Android Things (TM), the developer preview version 0.4.1.
Adafruit Motor Hat
When you stack raspberry pi hats, controlled via I2C like I did, you need to be able to address them, for that, I made a slight change to Antonio's PWM and Motor Hat classes, that way I can address the motor hat dynamically.
Adafruit Servo Hat
To control the servos that turn the pan/tilt bracket where the camera module is mounted, I'm using Adafruit's Servo Hat. I've written a tiny Gradle library in Java that is available on Github so you can use it as well.
I found the 3D printed parts online and picked Shapeways to get them printed. Their website is super easy to use, basically you just have to create an account, upload your model(s), pick a material and order. Order processing, printing and delivery was fast.
To control Sentinel wirelessly, I'm using the 8Bitdo NES 30 Pro controller connected via bluetooth. Again, I got inspiration and borrowed from Antonio's Robocar project, he is using a controller from 8Bitdo as well, but I've taken it to the next level adding support for ALL the buttons and joysticks on the NES 30 Pro!. More detail on the setup and customization of the controller will follow and of course, I will put the code on Github so you can use the NES 30 Pro controller on your projects as well. ;)
On 8Bitdo's support page, you will find the latest controller firmware updates and an Android APK you'll need to map your controller buttons.
Look who's talking now! Yes, Sentinel can speak! It can tell you if it is "up and alert", its IP address and the volume level among other things.
Since the Raspberry Pi 3 with Android things supports Android's TTS Engine out of the box, it was super easy to integrate this technology and let Sentinel be heard trough some cheap USB stereo speaker. And let me tell you... when you don't have a display... having your IoT project telling you what is happening when debugging really helps!
I'm using Firebase real time database to send commands to the RPi3 from a companion Android app.
Google Cloud Vision
Also, the real time database stores an Image History, a history of pictures taken via the companion app with their Google Cloud Vision annotations.
Firebase storage is used to save still camera captures, like the one that shows what Sentinel has on sight at a determined moment, this particular one is updated every 1 second, but it will be replaced by live video via Web-RTC soon.
Did you replicate this project? Share it!I made one
Love this project? Think it could be improved? Tell us what you think!