Among us on planet Earth live some very important organisms, these are plants. Plants help clean our air, as well as produce clean oxygen for other living creatures that need it; They also protect us from many natural disasters. For that and many other reasons, a lot of people like to take care of plants of their own. Some people have a lot of time to take care of them, but a particular group of people, might not have a lot of time; These group of people are students and even very hard workers. Sometimes these people have so much on their minds, that they forget to feed their plant/s, water their plants or move them to a spot with more light. With the purpose of helping this group of people remember to take care of their plants, this prototype was developed; the “Plant Health Monitor”. The “Plant Health Monitor”, is a small device that has two main sensors: a water level sensor, and a light sensor (photoresistor). By utilizing these sensors, the device will be able to alert the plants’ owner about the plant’s health status. This prototype was made with four key requirements in mind: 1. It had to let its user know the level of water that the plants’ soil had (too much water, too dry or perfect), in an alarm like way. 2. It had to let its user know if the plant was receiving enough light exposure (and how much), in an alarm like way. 3. It should be less expensive than the products similar to this prototype, currently out in the market. 4. Finally, it had to be able to notify in an easy to understand way, to anyone (even if you were deaf or blind). By meeting all of these goals, the “Plant Health Monitor” will be able to help students/workers to take care of their plants.
This project started due to a prototype project that is part of one of my mechanical courses, ME 2900. Therefore at the beginning, I wasn’t sure what I wanted to invent, all I knew was that I wanted to build something that would be useful to the community. Therefore I started the project by brainstorming, as all ideas start. I decided to go and talk with some of my classmates at OSU and showed them some of the ideas/community problems I had come up with, and to my surprise, a lot of them agreed that it would be good to have a monitor for plants. Since they have wanted to have plants, however when they did, due to how busy they were, they sometimes forgot to take care of the plants and the plants ended up dying. Besides talking with students, I also started to plan out some of the ideas I had come up with, to see how viable they were for me to make, with what I had available. In order to do this, I looked at the list of materials provided to us from the ME 2900 course. I also researched about current “Plant Health Monitors” in the market, and although the great majority are very advanced, they are also very expensive for a great part of the population that would like to use them. After analyzing many factors, I decided to pursue making a prototype of a “Plant Health Monitor”. The following, were the main components to be used to develop the “Plant Health Monitor”: a water level sensor, photoresistor (light sensor), RGB LED (red, green, and blue LED), Piezo buzzer (will play a sound that is desired), buttons, and an LCD display (small screen to display text). Some additional components that were considered were a temperature and humidity sensor, as well as a servo motor. In addition, to make all of these components work, the program called Arduino, was used to communicate with the Arduino board (which is similar to a small computer). These components were going to be used no matter what, however, I initially did not completely understand how to use all of them. Therefore, I would have to ask and speak with my ME 2900 professor, GTAs for ME 2900 and also do research and testing of my own to better understand the components I was going to be using. Some problems that could arise along the development of the prototype were possible inefficiency of a component that was going to be used, or that maybe one of the components that I had no previous experience with did not work in the way that I needed it too. Due to these possible problems arising, the following plan was developed to approach the development of the “Plant Health Monitor” prototype: First, assuming that all of the components worked as desired, sketches would be made, both for coding them in Arduino and its physical design, to organize how the device would be organized both physically and electronically. Second, the functions wanted for each component to be used would be clearly written out, in order to organize how the device would exactly work. Third, I would talk with my ME 2900 professor, GTAs and do my own research/testing to see how each component worked in comparison to what I needed them to do for the device. Lastly, I would write the Arduino code, in separated part per component, and depending on how each component worked individually, the complete code would be put together while assembling the components on the Arduino board.
In this way, I started to think of the different ways I could put the chosen components together to achieve the goals I had set for the prototype, as well as some restrictions in terms of communication that I wanted to pay attention to. As part of this process, I drew a sketch of how what I thought would be a good design for the plant monitor. While sketching ideas for the design of the plat health monitor, I thought of creating a mechanism that would allow the plant health monitor to pour water on the plant, if it found that the plant needed it. However, the idea was scrapped, after finding it to not be as efficient as it sounded. Alongside eliminating this idea, the servo motors were discarded (would have been used to help pour the water). In addition to this problem, I ran into trouble while trying to figure out how to use the LCD display, and how to get it to work. Therefore, I decided to tackle this problem by continuing to the second step of the plan, to write down specifically what I wanted each component to do as part of the prototype. This helped make clearer what I would need to understand and what I needed to accomplish with each component. By writing things out, I was then able to go and speak with my ME 2900 professor as to how the water level sensor worked. To my surprise, my professor hadn’t had the chance to use it before, and so we both searched on how exactly the sensor measured water; My GTA for the class also helped in this. After searching for some information, we came to a hypothesis as to how the water sensor measured the levels of water. We had the hypothesis that it measured the water levels by either if the sensor was placed vertically into the water (like dipping a stick into a glass of water), it would measure the waters level in terms of the height it reached. The second hypothesis was that it measured the water level, by analyzing how much of its surface the water covered. In order to prove either of these hypotheses, I bought a small plant and began the testing face of my prototype. I tested the water level sensor, as well as the other components, to see how each of them actually worked for simple tasks. To test the hypothesis we had come up with for the water sensor, I saw if when the water sensor was placed in a water glass it would measure a large number, and that number was due to the height of the water or the amount of water that was on the sensor’s surface. In order to better test the theory, I started placing droplets of water on the sensor, and analyzed the values it read, from the serial monitor. This led to testing the sensor in the plants’ soil (at the right moisture), after seeing that it measured how much water was in contact with it, instead of the water’s height. Like this, I was able to understand how the water level sensor worked. In just the same way, I started searching examples of how to make the LCD display work and display simple text. I then started trying different things with the LCD display, and even learned how to make text scroll on the display. The scrolling effect was however not used in the end, because it was not efficient for the purpose that the display was needed for. By using the scrolling effect on the text, the code for it had to be included in the “void loop()” (this is a function in the Arduino code that allows an action that is wanted to be repeated until it is canceled), and that affected the while or for loops (while and for loops do the same as the “void loop()”, however they do the same until a specific condition has been met) that were to be created in the Arduino code. Initially, four pushbuttons were meant to be used in order to control the power of the prototype (ON/OFF), or which information would be displayed in the LCD Display. However, they were not used due to the lack of space to connect them in the Arduino board, and it was also found that what the prototype needed to do didn’t really have a need for more than one button. Finally, the method to develop the code, was done by individually coding each component with what they were meant to do and integrating them together one by one. I started by integrating the LCD display with the welcome message, then the water sensor was integrated, then the RGB LED, and finally the photoresistor. While coding, I learned that it is best to try and organize the code that I have a harder time working with, and in that way, it is easier to find where I made mistakes. The code was, therefore, divided into three sections that were based on the notices of sound, light and text that would be sent to the user of the device. It was arranged in the following way: 1. “Healthy Plant”, 2. “Water Level Low”, 3. “Water Level High”. The sections were divided and controlled testing their outputted functionality depending on if while loops or for loops were used. A function was also to be used in order to make easier the repeated use of melodies that were to be outputted from the piezo buzzer throughout different parts of the code. In this way, the development of the prototype was tackled, through testing, evaluating, and improving.
As a result, the “Plant Health Monitor” was obtained. The monitor works with the environment readings of two main sensors: the water level sensor and the photoresistor (light sensor). The water sensor is placed into the soil of the plant that is to be monitored, while the photoresistor is on the breadboard that contains the LCD display, the piezo buzzer, the RGB LED, and the two potentiometers (they control the LCD’s brightness and the piezo buzzers’ volume). The bread board is then all wired to an Arduino board, and when the Arduino board is connected to a power source (ex. Laptop), the monitor turns on. Once it turns on, the LCD display will show I welcome message, and once done will continuously display a message that reads, “Monitoring…”. This continues message will continue as long as both sensors read that the plant is “healthy”. Meaning that they sense the right range of water (set in the code), and the right amount of light (also set in the code). If while in this state, the user wants to see the water level, and light level of the plant, they just have to press the pushbutton on the breadboard. The LCD will then display a message for the state of the plant, the water level, and the light level. The RGB LED will also turn on the appropriate color for each information of the sensor that is displayed, and the piezo buzzer will play the appropriate melody. Then it will return to the continues message state. If however, the sensors detect that the water level is within a certain range (very small numbers OR very big numbers), the continues message loop will stop, and notify the user with the appropriate message, light color, and melody. The message will depend on whether the sensor read a high-water value or a very low one. The push button does not need to be pressed for this, since these last two states are considered “emergencies” for the plant.
The way the LED color works, is that when the monitor will display a “warning” message, the LED will light RED. However, if it is a “healthy” message, the LED will light GREEN. The melody that is played by the piezo buzzer works in the same way. If the message is a “warning”, the “warning” melody will play. If the “healthy message will be displayed, a “happy” melody will play.
This was all done in the code by dividing the function of the code into the following sections: 1. “Healthy Plant”, which would notify the user with the 1st melody, text, and green color light. This section was designed to not be outputted unless the user pressed the button since there was no real need to be notifying the user all of the time that the plant was healthy. 2. “Water Level Low”, which consisted of the plant monitor being in a constant state of “monitoring”. This would only be outputted if certain
number ranges were read by the sensors (very low numbers). If outputted a 2nd melody would be played, as well as text and red light. 3. “Water Level High”, which consisted of the same method as “2.”, but the number range for this one to be triggered was much higher (large numbers range). The number ranges for the sensors were determined in the following matter. The water level ranges and the light reading ranges were all decided by basic soil analysis, and basic light exposure analysis. I tested with my finger, the soil of the plant which I have when it was at an average water state that seemed to be just right for the plant (wasn’t to dry or to wet). The light was checked by observation and determining what was seen as too much light for the plant, and what was too little light. The ranges were changed with a map () function to values within the range 0-255, in order to display to the user a more understandable number. This is how the ranges work for the water level sensor: between 32 – 290 (read from the sensor) is healthy. For the light sensor, the healthy range is if the value is greater than 750 (the plant has enough and could have more light).
After everything was finished for the “Plant Health Monitor”, I realized that I had learned so much. In the beginning, accomplishing this seemed very hard. I wasn’t sure of how I would be able to build or code some of the things I wanted the monitor to do. But this project demonstrated and let me learn something very important that I will never forget, that is: “Even though I didn’t know a lot of things about how to build my prototype, through research, asking for help from people that have more experience than me and testing the factors I didn’t know about, I gained so much knowledge that it made the whole experience amazing and inspiring”. I am also glad that I got to share some knowledge with me professor from ME 2900, since both of us were unaware of how the water sensor level worked. At the end of my prototype, I got back to him and explained to him what I discovered about how the water sensor worked.
I also found some very interesting things while developing the “Plant Health Monitor”, one thing I found very interesting is, that the notification mechanism I was making, turned out to be more effective than I thought it would be. The warning noise causes the user to want to walk to the monitor to see what’s wrong. The water sensor also works in the way that it should, alongside the photoresistor, the notification mechanisms. Just at the right times, the monitor notifies when there is a problem with the information that is being read. Meaning that the delay time for the mechanism is very effective. This mechanism is the aspect of the prototype that I’m most proud of, which in a way involves the code used to create it. It has just the right timing of outputting the sound, text and LED color, in order to notify the user. The code was the biggest difficulty that I had during the prototype. It was the main difficulty, because I wasn’t sure of how to control certain components with the code, or how to get certain components to do a specific action at a certain time or when a certain condition was met. It was also difficult because I don’t have very much experience with coding languages. However, I resolved this problem by researching about the components, and finding basic examples in which the components were used, in order to begin to work with them. I also got tips and advice from the professor and our TA’s from the lab. With both factors, the last thing that helped resolve this problem was experimenting with the components and tackling them one by one. Because of this, I gained a lot of coding experience and how to better approach the same.
Even though I am very happy with how the prototype turned out, there are some things that I would have changed, or would like to improve on. One of these factors is, that the light sensor warning doesn’t work independently from the water sensor warning. What I mean by this is, that the light sensor check is triggered when either the pushbutton is pressed, or the water level is detected to be low or high. If neither one of these happens, the user will not be notified of whether the plant has light or not. A second thing that I would have liked to work on, was implementing a temperature sensor, which would be very useful if the plant could only be in certain temperatures. Another aspect that I would have liked to add to the prototype, was a small watering system, that would be activated if a long time passed after the water level warning was played, and the water levels hadn’t changed (the user hadn’t come to check). Lastly, a good addition to the plant monitor, would have been to create a waterproof case, that could neatly organize all of the components and make the prototype easier to carry. This would also allow the possible addition of a portable battery, allowing the plant monitor to separate from an external power source. Even though there are many things that could be improved and added, the “Plant Health Monitor” prototype is a very good place to start.
All of this project confirmed one very important thing to me professionally, and that is that I extremely enjoy the major I am in, Mechanical Engineering. This project made me even more inspired to follow my dreams of working with space and even being an inventor alongside. It also let me know that even though things I want to accomplish might be very hard or I might not know how to them, through hard work, research, brainstorming and even asking for help, can help me learn what I need to accomplish anything.