Plant Bot Taking Care of Plant
This report describes the realisation of a robot that takes care of a plant in an autonomous way. Firstly, a detailed explanation of the different subsystems composing the robot has been made as well as the links between these different systems, namely mechanical subsystem, circuitry/sensors and the software. Then, an analysis of the production cost, what can be improved and the presentation of the team members are discussed. Finally, there will be a short video showing the robot in action.
Keywords: houseplants, autonomous robot, watering.
Table of contents
- Project motivation
- Design of sub-systems
- Mechanical Systems
- Circuitry & Sensors
- Software
- Integration guide
- Demo project show and quick start guide
- Review of the project
- Bill of materials and cost analysis
- Presentation of team
- Project repo
Project Motivation
Numerous studies have shown that houseplants have many positive effects on the morale and health of people who own them. Indeed, it adds life to sterile spaces, improves air quality, has a de-stressing effect,... Unfortunately, not everyone can handle it properly. The plant robot therefore came from the idea that for example for plant owners who travel for a while and have nobody to take care of their plant in terms of water and sunlight needs usually leads to the death of the plants. Moreover elderly who are unable to carry heavy load such as water or carrying their plants to expose to sunlight or even forget to expose their plants regularly to sunlight or watering it.
Another problem faced by everyone is not being able to determine the right amount of water or light needed for the plant, excess or insufficient exposure can lead to its death. Taking into account the importance of plants in our environment, our project serves the need for sustainability.
High-level Design
Design of Sub-systems (1)
Mechanical Systems
Requirements
In general the mechanical design has to guarantee, that the plant and the tank as well as all sensors, actuators and electronics are safely stored and are able to operate correctly. At the same time the cost and the size of the design has to stay as low as possible, to ensure a certain commercial value. That means the housing has to be rigid, such that the torque can be transmitted on the rotational parts. But as the robot will be operating indoors and is not exposed to external forces and influences, the requirements for the material are low.
Conceptual design: preliminary concepts and selection
Four variants were designed as shown at the beginning of the step:
- Upper lamp is directly attached on the pot of the plant; only the pot is rotating with the turning plate, the cables are going through the plate designed with circle-shape circuits in it. Thus the major electronics are in the base and are not rotating.
- Upper lamp is directly attached on the pot of the plant; all the electronics components are rotating.
- The upper Lamp is connected to the base; only the pot is rotating with the turning plate, the cables are going through the plate designed with circle-shape circuits in it. Thus the major electronics are in the base and are not rotating.
- The upper Lamp is connected to the base; all the electronics components are rotating except the lamp so
A selection process between the variants took place. The chosen variant is the base for building the prototype. The concept where everything is rotated together (cf. first figure of the four shown above) as shown with the above comparative table at the beginning of the step, with criterias of different importance coefficients (from 1 to 3) that multiply the score of the row (which can be 1 to 4 as described in the right table).
Here is a complete description of all the parts of the concept:
Rotation mechanism
For the rotation a turning plate with built-in ball-bearings is used. Due to the low friction of the part, there’s no need for a gearing system, as the torque of the stepper motor is high enough and the small step size of the used model is also sufficient.
Sunshielding
After several changes and considerations, the sunshield is attached to the top of one side of the robot and is realized as a stiff rectangle, which is able to rotate up and down. Due to a lack of space at the top of the robot and the issue of weight distribution, the stepper motor to rotate the shield is stored at the bottom of the robot. The shaft of the sunshield is reached via a belt. With the separate construction to fix and tension the belt with an additional, movable screw, the torque is transmitted from the motor to the sunshield.
Watering
The watering of the plant is realized with a refillable tank and a pump. With this solution, the tank and the pump can be stored at the bottom of the robot, where there’s enough space and the weight is nicely distributed. Concretely, the tank is small plastic bottle with a hole in the cap, which can be unscrewed to refill the tank.
Artificial light
The additional light source is a LED, which sits on top of the plant. It’s fixed to a support structure in the shape of a flipped U.
Housing
The housing is divided into an upper and a lower part. The upper part all the electronic parts and ressources for the plant, the lower part is connected to the environment of the robot to enable the application of the torque for the rotation. The two parts are connected via the turning plate and the shaft of the stepper motor that rotates the robot.
A big plastic plant pot serves as the upper part. It is horizontally divided into three sections. The bottom section contains the two stepper motors, the tank and the pump. The sunshield installation with the belt is also fixed to bottom part, but goes throw all three sections. The second section delivers storage for the Arduino, the battery and the two stepper drivers of the motors. The plant itself is located in the top section as well as all the sensors. Wooden plates serve as deviders and bottom plates for the corresponding section. The bottom plate is screwed to the big housing plant pot and has some holes to fix the motors. The middle places is cut out in the shape of the tank, to stabilize it. It also contains cut-outs for the cables and the water pipe. The same goes for the top plate. The two upper plates are fixed to housing pot at four positions with 3d printed connectors.
The bottom part of the housing is a 3d printed circular plate. It contains a connecter-hole for the shaft of the stepper motor and 4 holes at the bottom, to screw it on any desired ground plate.
Embodiment Design: Manufacturing and Assembly
To transform the concept into practice, the materials and assembly strategy has to be chosen from a functional as well as economic point of view. This chapter leads through the decision processes.
Housing pot
As stated earlier, a plant pot from the hardware store is used. The plastic is rigid enough, to transmit the torque through the structure and store all the pieces. It’s also easy to modify with e.g. a drilling machine, to fix several parts to it. Furthermore it serves as the base for the assembly process.
Turning and bottom plate
The turning plate is made of stainless steal, which makes it robust and guards itself from rust in case of a water leakage. It has four holes on each of the two rings which are used to drill it to the upper and resp. to the lower housing part. In the first step, it’s only fixed to the upper part via the bottom plate, which is inserted into the housing pot. The bottom plate is made of MDF, which allows precise and flexible cut-outs, rigid structure and a cheap price.
Next to connecting the turning plate and the housing pot, the bottom plate is also used to fix the two stepper motors and the sunshield-module with corresponding holes. In the next step, the first stepper motor that rotates the robot is fixed to the bottom plate.
Lower housing part
The lower part of the housing is a 3d printed piece, which is connected to the turning plate with four screws and fixes the shaft of the stepper motor to enable the top part to turn. The flexible design of the PLA is important to match the size of the shaft precisely and have different heights on the part for connection the turning plate without touching the upper part and resulting in friction.
Sunshield-module
The sunshield-module consists of one large plate and two connectors to the bottom plate. All parts are made of MDF, because the holes have to be precisely positioned to enable a smooth behavior of the belt mechanism. All the parts for the mechanism (stated parts as well as the screw to tension the belt and the stepper motor) can be assembled in prior before attaching them to the housing pot.
Tank, pump, middle and top plate
The tank and the pump are placed on the bottom plate and connected to each other. Next, the mounts for the plate are screwed in the housing pot from the outside. The mounts are 3d printed, so they are designed that they perfectly fit to the desired position in the pot. Next, the middle plate is set into the pot. It has cutouts for the mounts, as well as for the tank and the sunshield module. The cutout for the tank has to be very precise, to keep it in place and disallow its displacement, so laser cut-able MDF was chosen again.
Now all the missing electronic parts can be stored on the plate and be connected to each other. The top plate is the same as the middle plate and assembled in the same way.
Lamp
Two LED strips with a length of approx. 15 cm serve as light source for the plant. They are glued on a lasercut support made of MDF. The support consists of 3 narrow plates, which are connected via two 3d printed adapters. Two more adapters serve as connection between the housing pot and the support on two positions.
Plant
Finally, the plant can be placed on the top plate and be connected to the sensors and the water pipe. As a last step a cover ring is put between the plant and the housing pot to hide all the cables. The plate is made of MDF, because of the flexible dimensions and the low price, as the part doenst have functional requirements. It is fixed to the housing pot in the same way as the middle and top plate.
Circuitry & Sensors
Requirements
The purpose of the robot is to be able to take care of a plant. It must be able to water it, turn the plant so that it receives its daily amount of light for each side and if it has reached its daily amount, it must be able to protect it from the light but if it has not received its daily amount, it must turn on a light. Moreover, the robot must be able to handle at least 20 types of plants.
To achieve this, the robot will need a motor to turn the robot, another to deploy the shield, a soil moisture sensor and a pump to water the plant, light sensors to know the amount of light received, buttons to choose the plant, a LCD display to show the chosen plant and a microcontroller to manage all these components.
Design process and considerations of components
Different models were to be considered when choosing the components.
Concerning the choice of the light sensor, the photodiode was chosen because of its relatively low price, its large range and its linear characteristic allowing to more easily convert the measured voltage into light intensity. It is to be noted that photoresistors were used despite its small range because the required light intensity for the plants was not yet known during the first tests.
Minimum torque needed for rotation :
If a assumed maximum mass of the upper part of our robot is 5 kg and by using the friction force in the turning plate, we can try to find a first approximation of the torque. It is assumed that a spindle ball bearing has a friction coefficient of 0.050. It has to be assumed at least the double of the value for statics (when the movement is starting), so 0.1. The obtained formula is Fr = Cf (where Fr is the friction force, Cf is the friction coefficient and N is the weight of the upper part of the robot). Thus, this gives Fr = 0,1.5.10 = 5 N
The torque is computed as : T=(Fr.Dm)/2 (where Dm is the mean diameter the turning plate with respect to the balls. The turning plate has approximately 9.75cm diameter, thus T = 5.0,0975/2 = 0,24375 N.m = 2,48471 kg.cm. So, a NEMA 17 stepper motor was chosen because it has a torque of 3.2 kg.cm
Minimum torque for shield :
step = 1,8°, I = 0.0031875 kg.m², Angular\acceleration = 1,4.10^6.1/16 steps/s² = 2,75.10^3, C = I.Angular\acceleration = 2,58 N.m = 26,30868 kg.cm
The motor drivers used with the stepper motors are the TB6600 Stepper Motor Driver. The reason for this choice compared to the a4988 is that during tests, the latter, even with changing the microstep resolution, did not deliver enough current to the motor and therefore the motor had too little torque. By choosing the TB6600, the current delivered was higher and the torque better.
Design of Sub-Systems (2)
The pump :
The chosen pump is the Small Self Priming Pump (cf. Figure 1). Indeed, this one is compatible with the tubes that will be used, has a correct flow rate. In addition, it is the cheapest. However, the dimensions of the latter are slightly larger, but its other advantages led us to choose it. For the debit a calculation was done for this pump at 5V. The time taken by the pump to fill a 50ml container with water has been placed in Figure 2. To calculate the debit, the quantity of water (50ml) was divided by the time taken. The average debit is obtained by summing all the debits and by dividing it by the total number of tests. The value obtained is 6.727 ml/s. The flow rate is sufficient because a higher flow rate could cause splashing which could eventually damage the electronics below.
LCD :
An LCD Display 1602A with I2C module were used to show the selected plant. The LCD Display can show 16x2 characters which was enough to show the name of the plants. The choice to use an I2C module was due to the fact that it allowed to simplify the connections of the LCD Display by reducing the number of necessary cables (cf. Figure 3).
Arduino :
An Arduino UNO was chosen instead of a Raspberry Pi for several reasons. First, the Arduino's hardware and software are open-source: a lot of codes are already available and easy to adapt to a specific task. Then, it's easy to program through Arduino IDE and finally, it has a huge community which is very helpful for a beginner if he has questions (cf. Figure 5).
A DC to DC Buck Converter LM2596 was used for this project because the 12V battery was used. The buck converter converted the tension from 12 to 5V for the Arduino to work (cf. Figure 6).
The soil moisture :
The last picture shows the different criteria used when choosing the soil moisture sensor. A capacitve soil moisture sensor was chosen due to its simplicity and its price (cf. Figure 7).
Final Circuit Diagram
List of Components
The components used for the project are:
- 1x Arduino Uno
- 3x GL55 LDR sensor
- 1x Moisture Sensor COM44, R17
- 2x Encoder TCST2103
- 5x Resistor of 3 kOhm
- 2x Resistor of 330 Ohm
- 2x Button
- 2x Stepper Motor Driver TB6600
- 2x NEMA 17 Stepper Motor
- 1x LCD Display 1602A1 + I2C Module
- 1x Micro water pump 370 (LSIM)
- 1x breadboard
- 1x DC to DC Buck Converter LM2596
- 1x LED strip
Software
Requirements and Design process
The microcontroller used for this project is an Arduino Uno and therefore Arduino IDE was used to program it. The method used to work on this project was to work in parallel on different components to make sure that each subsystem worked and then, little by little, to combine several subsystems together.
Code flow diagram
As shown in the figure below, the variables and pins are first defined. Then, the LCD Display is turned on and the user has to select a plant. After selecting a plant, the robot resets the position of the shield and the pot using encoders to ensure that they start from their initial position. Once the reset is done, the timer starts and there are several conditions in parallel. First, there is a condition to reset the light values received on each side at the end of the day. Then there is the condition on the soil moisture: if the soil is too dry, the pump is activated and it waters the soil. Finally, there are the conditions to check if each side of the plant has received the right amount of light and if so, the pot rotates 120° by actuating the motor. However, if the amount of light received is more than its daily dose before the end of the day, it deploys the shield by actuating the motor but if the amount of light received is less than its daily dose before the end of the day, the robot turns on a lamp until the end of the day. This process will be repeated until the battery is disconnected.
C+ code
See the link: https://pastebin.com/kePpErxx
Demo Project Show
Testing
light sensors: https://youtu.be/aVPPEOoYhwE
shield test: https://youtube.com/shorts/vFmB_GA62mc
LCD test: https://youtu.be/4rV8xMVxwJs
encoder test: https://youtu.be/mg20X7-x7bw
test turning pot + shield: https://youtu.be/OKlluRlVT4Q
Review of the Project
The robot pot perform several functions some has been made as simple as possible and some optimisation has not been done due to the deadline some of which is discuss below:
- For the shield mechanism, instead of a pulley and chain system a gearing system could be used to transmit the movement.
- We could installed an on board WIFI chip so as to enable the plant robot owner to monitor the plant from its smart phone or computer.
- RGB led module could be incorporated in the system so as to display different colours when a sensor is triggered for example it could display blue when the reservoir is empty or red when the plant is not recieving enough light.
Sustainability
One idea to make the bot plant more eco friendly, in addition to the choice of materials and its place of production, would be to add solar panels. This would also allow it to be more autonomous because it would not be necessary to recharge the battery (or very little).
Bill of Material and Cost Analysis
As you can see on the first picture, it contains the price of all the components of the robot. The prices shown below are only valid for one or two components, but in case of larger quantities purchased, the price will be lower.This can be seen for example with the arduinos on the second picture. Also it is important to consider the cost of labour, the cost of production (laser cutter, 3D printing,...).
Presentation of the Team
Philipp
I'm an exchange student from Munich, Germany. I study Mechanical Engineering and gained some experience in CAD and the design of several components during my studies and internships. For this reason I focused on the mechanical design and manufacturing of the components. I really liked the prototyping process, because it's nice to slowly witness how single components are designed and put together in a way that they provide the intended functionality.
Dylan
I'm a student from the ULB, Belgium. I study Electromechanical Engineering and already had some experience in Arduino and CAD from previous projects. One of the projects was to build an autonomous mapping robot. I mainly focused on the electronical part and how to implement it on the prototype. I really liked working with different people with different backgrounds because it allowed me to have several points of view in the design of the prototype.
Nassim
I'm a student from the ULB where I study Electromechanical Engineering. I have already done a project in BA2 on building a mapping environment robot, so I have some experience with Arduinos and 3D printing. My favourite part of this project was designing the 3D pieces on solidworks for the different sensors but also the construction/assembly of the robot. I also enjoyed learning how to use the laser cutter.
Colbish
As a graduate student in mechanical engineering who choose Electromechanical engineering course as master; This project was an opportunity for me to share my knowledge in Computer aided design(CAD) and experience in terms of mechanical systems during internships. Of course, I learned a lot about electronics, Arduino, and project management. Regarding our project, It gave me another perspectives of design, conception and production of a product before being on the market. and sharing this moment with my classmates is very delightful as a future engineer who will be working with a team.
Geoffrey
I'm a student from the ULB, Belgium. I study Electromechanical Engineering and already has experiences with robotics in bachelor we could say because I build in my first year of bachelor an autonomous robot car (in team) that follows path and recognize traffic signs. And in my second year of bachelor, I build a robotic hand (in team) that could hold items. Thus, I have experiences with arduinos, with mechanical systems and with CAD.
Regarding this project, we could say that I was more a supervisor in respect to the reports and presentations. Moreover some of my teammates called me the 'Design methodology guy' because I did a lot for the design methodolody part of the project. This project gave me good experiences in management of projects as I was not used at all to give directives, fortunately with the help Dylan and Nassim who gave directives too. I also learned on how a real robot should be build from A to Z. Otherwise, I'm glad to have the chance to learn how to use laser cutting, 3D printing.
Hilary
I'm an international student with a bachelor in physical sciences in Cameroon.This project was my first experience in mechatronics, it was quite very intersting as I gained some skill in laser printing, 3D printing ,arduino and the basic criteria to take into account in order to get a functional Robot.
Downloads
Project Repo
References
Comparison motors:
Comparison Arduino vs Raspberry Pi:
Photoresistor, photodiode and phototransistor: Mechatronic course MECA-Y403 2022-2023
Friction coefficient and torque calculations:
- https://avsld.com.sg/coefficient-of-friction/
- https://www.smbbearings.com/technical/bearing-frictional-torque.html
- https://roymech.org/Useful_Tables/Tribology/Bearing-Friction.html7
Pump reference:
Database references:
- https://hgic.clemson.edu/
- https://extension.uga.edu/publications/detail.html?number=B1318
- https://garden.org/plants/
- https://www.google.com/url?client=internal-element-cse&cx=000948643183358341856:dvbfm8u6jpg&q=https://extension.umn.edu/planting-and-growing-guides/lighting-indoor-plants&sa=U&ved=2ahUKEwji6ZGThZ37AhWmMewKHRPPDGEQFnoECAgQAQ&usg=AOvVaw2z9Gjps56vPS21e1a837uH