SmartPlantPi now works with Alexa Voice Units!
This is a perfect project kit for kids with some help from the adults and for adults trying to learn some new things. We have done this before with our successful OurWeather kickstarter so we know what we are talking about. People all over the world have built the OurWeather weather station with great success. SmartPlantPi (or Smart Plant for short) is an introductory, easy to build Raspberry Pi based environmental monitoring and plant watering system using advanced sensors to monitor the soil moisture, monitor the sunlight, watch the air quality and monitor temperature and humidity. It is designed to be easily and simply put together and tested with No Soldering Required Please go to the Product Support Forum for SmartPlantPi at the top of the page for comments and questions.
Please go to the Product Support Forum for SmartPlantPi on www.switchdoc.com for comments and questions.
– (March 20, 2018:) Release Version 021. Minor update for "No Handlers could be found...." error. Modified listen.py to use config.py
– (January 7. 2018) Version 020 of Smart Plant Pi. Alexa Support and reduction of data rates to PubNub
– (January 6. 2018) Version 018 of Smart Plant Pi. Fixed the Stretch OS RPi problems
- (December 5, 2017) Release Version 017 -
Fixed directory names in testAll.py - thanks Faltek!
Read README.md for version class reinstall of Adafruit_Python_GPIO
Fixed input name clash from OS Update
- (July 24, 2017) Release Version 016 - Fixed DEBUG related issues in interpretRotary and interpretButton
– (July 20, 2017) Version 015 of Smart Plant Pi. UV always reporting zero (Sunlight Sensor), SmartPlantPi Moisture Detection and Water/OLED Locking, Add updated JSON to SmartPlantPi
- (June 26, 2017) Released Version 013 of SmartPlantPi - Temperature/Humidity Accuracy Fixed
- (May 18, 2017) Released SmartPlantPi Advanced Features Manual
- (May 15, 2017) Released Assembly Addendum for the new High Reliability Grove Moisture Sensor (now included in all new SmartPlantPi kits)
- (March 13, 2017) Updated Assembly Manual to Version 1.1 - Fixed Install problem
SmartPlantPi (or Smart Plant for short) is an introductory, easy to build Raspberry Pi based environmental monitoring and plant watering system using advanced sensors to monitor the soil moisture, monitor the sunlight, watch the air quality and monitor temperature and humidity. It is designed to be easily and simply put together and tested with No Soldering Required!
The SmartPlant software comes preconfigured to display your Plant on the Internet (for all to see it in it's glory!) using an IOT dashboard. This is done by using Pubhub and Freeboard (both in Free mode!) to display all the information. We are publishing a very straight forward tutorial to make this work with your Smart Plant. Want to see the Live Link to our Smart Plant? Click here. It will take about 15 seconds to refresh.
|Plastic Pipe Stakes||0228-SPPPIST-DSBT|
|USB PowerControl EN||0043-USBPCEN-DSBT|
|Push Button Switch (P)||0221-GBUTTONP-DSBT|
|4 Channel ADC||0058-GRV4CADC-DSBT|
|Air Quality Sensor||0090-GRVAQS-DSBT|
|HDC1000 Temp/Humidity sensor||0024-GHDC1000-DSBT|
|Flow Sensor and Cable||0024-GFLOWS-DSBT|
|6 20cm Grove Cables||0075-GRV20C-DSBT|
|1 50cm Grove Cable||0079-GRV50C-DSBT|
There are hundreds of Grove Devices from multiple manufacturers around the world. Over 100 boards and sensors available. You can't plug it in backwards. If you put the connector in the wrong plug it just doesn't work. No smoke. No fire. This makes us happy as we look over into our Box Of Death, filled with boards we have ruined. No more additions to the BOD! Well, hopefully. Have faith. We quickly found the connectors and their respective cables very useful. With the large selection of Grove I2C devices available, we decided to include a Grove connector on all our future boards and products. Grove Connectors are a standard way of connecting a variety of devices quickly and safely. See our full tutorial here.
Here are the sensors that come with SmartPlant.
Smart Plant also comes with a USB controlled Pump, water flow sensor, plastic tubing for the water and buttons for control.
Smart Plant comes will all the source code and instructions for installing it on your Raspberry Pi. You can learn from the Pure Python code, customize it, add more plants and sensors. It's a major part of the learning process for the Raspberry Pi and Smart Plant. Not to mention having your own IOT device!
We provide the 3D Print openSCAD and STL files. For those that have access to a 3D Printer, you can print your own and modify them! They are also available in our store here.
This was a great project to design and build. It was really an interesting process learning about the sensors, how to interconnect them and then learning about flow meters, USB Pumps and especially the software bringing them all together. Where is the science and engineering in this project? All through it from the bottom to the top. We could go through the entire system, but that will have to wait. The most interesting points? One, we are using feedback in the system. Negative feedback to be exact. We aren't just watering on a timer, we are looking at the soil moisture and if it is high enough, we don't water. We don't water unless we need to. Very cool. Secondly, the sensors we have in this project are amazing. For example, the Air Quality sensor is very, very sensitive. We can detect hairspray from 50 feet away (more on that in an update). Thirdly, we got a lot out of learning how to display the data from Smart Plant on the Freeboard IOT Dashboard and I had a lot of fun designing the Alexa app
The big choice we made in the hardware design was the decision to go with the Grove connector system. The Grove system is a standard plug used to connect a variety of small computer devices together. All told, there are about 200 different Grove sensors out there from a number of different manufacturers. . All of the Grove connectors are the same size and have four wires but come in four flavors: I2C, Digital, Analog and Serial. The magical part of these devices is since the plugs are keyed, you cannot plug them in backwards. This means that you can’t destroy the boards.
Moving to this connector system for all of our products means that far less parts get blown up and put in the SwitchDoc Labs “Box of Death” of destroyed parts. If you plug them in the wrong slot (Like an digital board into an I2C slot), it doesn’t destroy the part, it just doesn’t work. Going with an all Grove design means there is absolutely no soldering required for SmartPlantPi which makes the project much more accessible for all levels of makers. We had most of the sensors and boards already built or sourced for this design but we had to build two additional boards. We built an inexpensive Grove Humidity/Temperature sensor because the ones on the market were just too expensive and Texas Instruments had just come out with the HDC1080 at a much lower price with an amazing set of specifications. So we built a special board for SmartPlantPi.
The second device we had to build was an USB plug power controller. Most of the small pumps available on the market used 12 volts and required wring to connect it and then used a relay to control it. We really wanted to avoid that (to stay more Maker friendly) extra set of steps and wiring and then we spotted a 5V USB powered submersible pump for aquariums and the like. We bought a few, found out their power requirements were low (about 1 W) and that they would work just fine being powered by the Raspberry Pi USB ports. So then we took our current USB PowerControl solid state relay and we could control the pump via the GPIOs of the Raspberry Pi. Perfect. Well, almost. Because of the way Pi2Grover (the hat which converts the Raspberry Pi over to Grove connectors) works, when the Raspberry Pi started up, the USB PowerControl would turn on and run the pump until the SmartPlantPi program was run, turning it off. This was not a good situation. So, we redesigned the USB PowerControl to use Grove connectors (the previous version required a single jumper wire. No soldering, but not very friendly) and build the device so it always powered up in an OFF state when connected to the Raspberry Pi through the Pi2Grover board. Now everything worked.
The last piece of the hardware puzzle was building a rotary dial for input. While there were some Grove rotary dials out on the market, none of them supported the push button function that was part of the rotary dial. So we designed and built a rotary dial that had two Grove connectors on the device, one for the rotary turning dial and one for the button (you push the shaft in to activate the button).
The key piece of the hardware was the 4 channel 16 bit Analog to Digital Converter (ADC). In our opinion, this is the missing piece of hardware on the Raspberry Pi. Arduinos have this built in, but there isn’t one on the Raspberry Pi. Luckily, we had successfully funded a Kickstarter about a year ago to build one that was easily connected to the Raspberry Pi via a Grove connector, so we had it already done. We connect the moisture sensor and the air quality sensor to the Raspberry Pi though this I2C device. With all these pieces in place, we could design the software.
We first built a test program that actuated all of the hardware devices (including the pump) one by one and reported to the screen. This allowed us to get all of the pieces working with the Raspberry Pi before we started the SmartPlantPi system. The software for SmartPlantPi is written in Python. We chose Python because it comes pre-installed on the Raspberry Pi and it is a good accessible language for beginners to modify. While the SmartPlantPi system is pretty simple, the architecture of the software is pretty sophisiticated. SmartPlantPi is a real time system. What we mean by “real time” is that the program has to monitor environmental variables and then do certain actions at certain times. In a nutshell, we used a scheduler to build and run a set of tasks to check the moisture content of the plant and then turn the pump on if applicable. We detect that we are out of water by monitoring the flow of water from the glass to the plant. No water pumped? We are out of water. Note we have no way built in to tell the water level, although if you fill the water reservoir the next time SmartPlantPi tries to water your plant, it will notice that you have filled it. You can also tell SmartPlantPi you have filled the water by pushing the button once. So, we have a task to check the water, update all the environmental sensors and a variety of other tasks. All source included, all open source. Here is just a little snipped of the code. This is where we put all the tasks into the scheduler for periodic execution:
# prints out the date and time to console scheduler.add_job(tick, 'interval', seconds=60 # blink optional life light scheduler.add_job(blinkLED, 'interval', seconds=5, args=[1,0.250]) # update device state scheduler.add_job(updateState, 'interval', seconds=10) # check for alarms scheduler.add_job(checkForAlarms, 'interval', seconds=15) # send State to PubNub scheduler.add_job(publishStateToPubNub, 'interval', seconds=10) # check and water scheduler.add_job(checkAndWater, 'interval', minutes=15) # save state to pickle file scheduler.add_job(saveState, 'interval', minutes=30)
We also have software for sending information up to PubNub and Freeboard.io so every SmartPlantPi maker gets their own IOT Dashboard. We also have developed an interface to the Amazon Alexa and Echo, so we can ask SmartPlant questions and SmartPlant will answer them through Alexa. Unfortunately, it is very complex to set up so we didn’t include that in the SmartPlantPi project and won’t until we develop a much simpler way of allowing makers to hook up to Alexa with SmartPlantPi.
We have this working right now in the laboratory. It's pretty cool to be able to ask your SmartPlant how it is doing! While we will be publishing a tutorial on how to connect your SmartPlant Pi up to your own Alexa skill, it is a pretty complicated process for a beginner. That will be the real magic!