Introduction: Arduino Self-Watering Plant Pot

In today’s fast-paced era, everyone’s to-do lists are getting more and more daunting. Through this maze of assignments and appointments, many seemingly insignificant tasks can be forgotten and remain unchecked. For instance, watering your potted plants may seem unimportant when you have three papers to finish, four assignments to complete, two midterm exams to study for, a budget to handle and two upcoming birthday celebrations to prepare for. Unfortunately, your plants do need constant care, and, one morning, you’ll wake up to see them fragile and brittle, their leaves all dried out and their petals a much paler hue than you remembered. However, there is a way to avoid this upsetting situation without ruining your schedule and gnawing away at your precious time!

We have devised a special pot that will measure the soil moisture of your potted plant and water it when said moisture becomes to low. This way, all you have to worry about is filling the water reservoir every now and then. Our object consist of a base, which is the water reservoir, in which we have inserted a submersible water pump. A tube is connected this pump and travels through a hole at the bottom of the first pot and comes out at the top to bend over the soil in the second pot. Indeed, there are two pots inserted one in another. The first one is the bigger one, and it contains the arduino and the battery. The arduino is linked to the pump and to a soil moisture sensor, which must be inserted in the soil in the second pot above. Whenever your soil becomes too dry, the motor of the pump is set into motion and water flows up the tube and into the second pot.

To use this object, simply plant your flower or your herbs in the top pot and insert the soli moisture sensor in the soil. Make sure the tube is well-positionned over your soil, and make sure to check the base's water content every now and then.

Step 1: Tools, Materials and Files

For this project, you will need:

-Two plant pots, one small enough to be inserted into the other

-Arduino (can be purchased from

-Soil moisture sensor (can be purchased from

-Submersible water pump and tube (can be purchased from -Drill

-Arduino software (can be downloaded from

-Onshape (

-3D printer

-Programming with soil moisture sensor and pump was taken from this video:

Step 2: 3D Modeling of the Base on Onshape

Create a 3D model of the base using Onshape. The base we designed is circular. Make sure you take into account the size of the pump to make sure it will fit inside the base. You must also create an opening to allow the user to refill the base with water.

Step 3: 3D Printing of the Base

You must take the 3D model of the step before and adjust it to be able to print it. Be sure that your model is saved in .stl format, or else you won't be able to print it.

(This step has not been accomplished in our project because of issues with the 3D printer.)

Step 4: Drilling Holse at the Bottom of the First, Bigger Pot and on the Top of the Base

You must now drill a hole at the bottom of the pot and on the top of the base to allow the tube and the pump cord to go through both surfaces.

Step 5: Programming

We refered to the provided video for the Arduino sketch and code.

*Line 5 in the arduino sketch can be use to control the moisture sensor. A number between 1 and 1500 can be selected to detect at what moisture of the land. The higher the number, at a more dry land the motor will start to pump water.

*Line 7 is used to control the motor. Insert the time, in millisecond, that you want the pump to be turned on when the moisture sensor is dry.

*Line 8 is used to control the delay after the pump is turned on. Insert a time, in millisecond, that you want to wait before the cycle can start again.

Step 6: Assemble

After inserting the pump inside the base and placing the top over it, make the tube and the cord go through the two holes and place the arduino and the battery at the bottom of the first pot, on top of the base. Insert the second pot inside the first one. This is the pot that will contain the soil and the plant. From the bottom of the first pot, bring the moisture sensor (connected to the arduino) and the tube (from the pump) to the top, between the rims of the pots. The tube will hang loosely over the soil, but the sensor must be inserted in the soil.

Step 7: Conclusion

At first, we wanted to build the pots with the 3D printer as well for a more uniform appearance and more precise, custom dimensions. However, this was not possible due to the limitations of the size of the models the 3D printer can create. Therefore, we only created the base in 3D modeling, and we used pots we already had.

We also had some trouble with the pump when we first received it. Indeed, we could not make it work and thought it was somehow damaged, but switching to a more powerful battery solved the problem.

We had to do a lot of research to program the moisture sensor and the motor of the pump, and we tried a lot of different configurations and codes. In the end, we found the video mentioned in the Tools, Materials and Files section, and we were able to use the programming demonstrated in it to make our system function. In the end, we had some issues with the 3D printer, and, consequently, we weren’t able to print the base as planned. Had we been allowed more time for this project, we would have had to fix (or have someone else fix) the printer in order to create our base.

If we had had more time for this project, we definitely would have focused more on the appearance of the final project, because potted plants are usually meant as a decorative touch. Furthermore, an improved version of this project would definitely feature a larger base, which could contain a greater water volume. This way, it would not have to be refilled as often. Considering the 3D printer we had available, we built the biggest base we could, but an even larger one would have been optimal.