A smart plant caring and irrigation device with a web infrastructure to monitor and control plants environment and explain their living state in emojis. Basically, your plant will have AI and will be able to talk with you using emojis!
Plant container | Water bucket |
---|---|
![]() |
![]() |
-
3D Enclosures
This section includes the 3D printed parts, namely Fusion360 project files and STLs.
-
Code
Includes micro-controllers' code, Artificial Intelligence code and various assets used during development.
-
LSTM.py is the main Python script where the LSTM neural network is developed and trained. This folder also contains the old [Colab experiments](/Code/AI/Colab expirements/), which are obsolete and currently kept for archiving purposes. Finally, the Results folder, which contains experiments' charts for both the LSTM.py and the obsolete Colab experiments.
-
Contains
.bmp
files to be visualised on the screen, in addition to their original Photoshop files.psd
-
C program for the AVR micro-controller.
-
C++ code for the main micro-controller, which will replace Huzzah.
-
C++ code for the old micro-controller. It will replaced by ESP32.
-
-
Datasets
Includes 1 month dataset (the full dataset) and other partial datasets used to train the AI model.
This section also contains some data analysis.
-
Docs
This folder holds different kinds of documentation and images produced during project life time.
-
PCB
The electronic side of the project. This section contains Eagle files and CAM outputs sent to PCB manufacturers.
-
Server
Docker Composer file for InfluxDB and Grafana. Basically, all data acquisition is being managed by this Docker image.
This conceptual diagram explains how the system is composed, down from reading sensors and understanding their values, and later sending them up to the cloud for further analysis and visualisation.
The objectives of this plant monitor are:
- Interpret sensor data for the end user in a human-friendly way.
- Take into consideration plant living requirements during the monitoring process.
- Make comparisons between different soil moisture sensors and the same sensor in different conditions.
Hardware:
- Arduino UNO
- Adafruit Feather HUZZAH ESP8266
- Huzzah-DHT22 CASA shield (From here)
- DH22: Humidity and temperature sensor
- HW-390: Capacitive Soil Moisture Sensor
- Waveshare 1.47" LCD Dislay
Software:
All the software applications are packed into one Docker image that you can use easily.
Tools:
- Image2Lcd: converts BMP images to byte arrays stored in MCUs to be displayed on the LCD screen (please follow these settings).
- Sensors are connected to Arduino now due to the availability of many ADC ports compared to HUZZAH.
- The LCD screen driver was ported from Arduino to work on HUZZAH, the latter has more memory and capability to drive screens compared to Arduino.
- New MQTT topics added:
moistureCapacitive
for the capacitive sensor andmood
which is derived from sensor data according to plant profile. - Plant profile: a file containing the suitable living environment parameters for the desired plant. The mood of the plant (happy - sad) is determined based on this profile.
Grafana dashboard | InfluxDB dashboard | MQTT feed |
---|---|---|
![]() |
![]() |
![]() |
See here for more detailed comparisons between sensor types.
- Add more plants profiles.
- Let plant profile can be controlled using HTTP.
- Add mobile notifications.
- Do more comparisons with other sensor conditions.
- Add more emojis to express plant mood further.
- Understanding the data from a simple sensor in the real world is not easy due to the effect of environment parameters and setup conditions.
- Remember: Always print a 3D case and try to be gentle with screens!
- Visualising the data can make us understand the surrounding environment in a better way.
- If a serial connection is needed between two devices with different power sources, their GND should be connected together. And of course, they also must have the same baud rate.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This documentation describes Open Hardware and is licensed under the CERN OHL v. 1.2.
You may redistribute and modify this documentation under the terms of the CERN OHL v.1.2. (http://ohwr.org/cernohl). This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN OHL v.1.2 for applicable conditions