This project is an extension of my existing Smart Terrarium. Please check it out for all the awesome features of the system, but this write-up will focus mainly on voice control.
I used the MATRIX Voice to add voice capabilities to the Smart Terrarium. This allows the user to easily toggle the lighting and misting systems along with checking any of the available sensors.
The Smart Terrarium is built using a Raspberry Pi, an Arduino Uno, and an Arduino MKR1000. This means the only change I needed was to slap the MATRIX Voice hat on top of the Pi and program a few intents using Snips.ai.
Below is an image from the Snips.ai platform where you program your intents. As you can see, I have three intents. Two of the intents set relays according to their previous value. While the intent GetMeasurementByType, allows the user to provide a sensor type.
The user would say:
Hey Snips, toggle mister.
Hey Snips, toggle lights.
Hey Snips, what's the U.V. index?
Hey Snips, what is the temperature?
Hey Snips, what is the mister water level?
Hey Snips, what is the humidity?
Hey Snips, what's the drain water level?
Hey Snips, what's the soil moisture level?How Does It Work?
I am using JavaScript to interface with the MATRIX Voice hat and Snips via the MQTT server. This allows me to listen for key events and take actions based on those events. Below is a screen shot of the message event and some of the key topics.
When the wake word (in my case, "Hey Snips") is detected, I call the start function which then lights up a ticking LED around the ring of the MATRIX Voice hat. This notifies the user that it is awaiting a command. If the user triggers the Toggle Lights intent, I make the LED ring yellow and send a request to my Smart Terrarium App that toggles the value for the relay connected to the lights. The same goes for the Toggle Misting intent, but I light the ring blue to follow the same colors I used in the events page for the app.
The user can also request the latest reading from any of the sensors throughout the terrarium. Below are some of the training examples for the intent GetMeasurementByType from Snips.ai.
The full code is available in the linked repositories in the code section.
Video DemoThanks for checking out my project. Happy making!
Comments