System Flow Chart Diagram
(From Up to Down): Temperature Sensor, UV sensor, Humidity Sensor
Finished Prototype Model of the System Hardware
Exemplary output and part of the code of driving the hardware
The server interface when transferring data
The AWS interface that takes in data
The Slack Front-end user interface
The C++ Program Interface
The irrigation system at school does irrigation of the lawn at a fixed time interval, which is wasteful and bad for the plant as it may even irrigate the lawn when it is rainy or when there is already enough humidity. Based on this, we first determined to use a moisture sensor to control the sprinklers. After further discussion, we decided that it would be a better idea if we can do a customized system that can take various other factors, such as temperature, into consideration, and integrates the internet so that it can be manipulated more easily. Thus we have the Smart Plant Care Taker system now.
What it does
This Smart Plant Care Taker System takes the moisture level in the soil, light level, UV (sunshine) condition as well as temperature condition of the environment, and considers all these data, combined with the plant type input by the user to find out when and how to water this plant appropriately. Using this system can give the plant the best kind of care in terms of watering it and can also economize on the cost as well as protect the environment and save water. Amazon Web Service is incorporated to allow the user to input data and C++ programming allows a user to exercise control over the system. The structure of the system is illustrated by the structure flow chart diagram.
How we built it
We chose to use Arduino to control the sensors (UV sensor, humidity sensor, temperature sensor, and light sensor). These sensors take data and pass them to the Arduino. The Sprinkler will be activated by motor, and the motor will be controlled by commands passed by Arduino. Since there is no adequate hardware for the sprinkler, we used an LED to symbolize the sprinkler.
Data from Arduino will first be passed to the server, and then passed over to Amazon Web Service. We then use Amazon Web Service to take the data from the user to determine the plant type. Then the type is passed back through the server back to the C++ program. A database constructed on the C++ program will have the ideal data of various plants so that when the user inputs the plant type it will find the optimum data for the plant and then use them for the decision process to determine if the plant should be watered. There will also be a manual override mode where the data will still display but the user can determine by his/her own input if to activate the sprinkler without comparison process.
Challenges we ran into
1.Amazon Web Service to collect information
We have never used Amazon Web Service beforehand, so when utilizing the AWS, such as Amazon Lex we ran into a lot of troubles that we could not figure out how to construct a User Interface where we can obtain the information we want. For this issue, we looked and uses multiple examples, then researched tutorials of how to use AWS to fulfill various functions, finally completing a practical model of a bot that can conduct a limited but useful conversation with the user to obtain information.
2.Arduino Serial Monitor print to a text file
At first, we decided that we can pass the data by creating a text file and sending it through the system directly from the Arduino Serial Monitor. However, we discovered that to be difficult since Arduino IDE on its own cannot achieve this and software that does this charges money. So we decided to switch to a C++ program instead
3.Amazon Web Service data transfer to Server We were intending to use IoT in place of the Server. However, the application of IoT is too complex and not suitable and practical for our system. So we switched to a server solution, which is more efficient and straight forward. In the server solution, however, we encountered the issue that the data transfer needs to be completed by a paid application, thus we were not able to fulfill this function completely.
Accomplishments that we're proud of
C++ to drive Arduino IDE and the Arduino hardware Amazon Lex user interface desgin
What we learned
From this project, we learned how to use various hardware components (such as Moisture Sensor) and program them to function correctly using C++.
Also, the part where we learned most was the Amazon Web Service. We did not have any experience with creating web-based functions by the AWS, so we really benefited from the experience.
What's next for Smart Plant Care Taker
Since we are not able to construct services such as a sprinkler, we cannot fully demonstrate the final functions of the Smart Plant Carer. However, once we have possession of such hardware, we can fully construct and add on more functions to our Plant Carer.
Another thing is that currently we only have a small database of a limited number of plants. In the future, we can expand the database and make sure that the carer can fit the situation of various plants.
The last issue is that the connection between AWS and server needs to be achieved by a paid application, so we cannot incorporate the feature into our system.