Automatic Watering System for My Plants

When the soil is dry, Arduino will command the water pump to run. Our plant is absolutely cheerful anytime!

Nov 11, 2020

59349 views

23 respects

Components and supplies

1

Ultrasonic Sensor - HC-SR04 (Generic)

1

Water pump

1

OLED Character Display Module 16 x 2 Green

1

Solderless Breadboard Full Size

1

piezo speaker

1

Resistor 330 ohm

1

Arduino UNO

1

Relay Module (Generic)

1

BME280/BMP280

1

Gravity: Analog Soil Moisture Sensor For Arduino

1

LED (generic)

1

Dual bidirectional I2C-bus and SMBus voltage-level translator(PCA9306)

Apps and platforms

1

Arduino IDE

Project description

Code

AutoWatering.ino

c_cpp

It says a lot, but I'm just measuring the soil humidity and watering it. It's so easy!

AutoWatering.ino

c_cpp

It says a lot, but I'm just measuring the soil humidity and watering it. It's so easy!

Downloadable files

Step3

Step3. Temperature, humidity and soil moisture are measured and displayed on the OLED.

Step3

Step2

Step2. An LED tells us when the bucket is empty.

Step2

Step2

Step2. An LED tells us when the bucket is empty.

Step2

Step3

Step3. Temperature, humidity and soil moisture are measured and displayed on the OLED.

Step3

Step1

Step1. Measure the soil moisture and water with a pump if the soil is dry.

Step1

Comments

Only logged in users can leave comments

dumpsterbaby123-

13 days ago

hello i am a middle school student and i am wondering where to pickup all these parts?

trady

6 months ago

Hi, ic-lab, I am a high school student wanting to do the same project in Kenya, how much is it going to cost me?

Anonymous user

2 years ago

Hello can i used LCD Display instead of OLED Display? And if i use lcd does the coding need to change as well?

lc_lab

2 years ago

This OLED is for i2c connection, and the "I2CLiquidCrystal" library I am using is also for i2c connection. According to the reference site (https://n.mtng.org/ele/arduino/i2c.html), the author has rewritten the official Arduino "LiquidCrystal" library (https://www.arduino.cc/en/Reference/LiquidCrystalConstructor). So, you may want to code with the "LiquidCrystal" library as a reference. Thank you.

Anonymous user

2 years ago

Hi do you have the zip fle of the 12cliquidcrystal? i went to the page that you give, but i cant download it

Anonymous user

2 years ago

That link isnt working still :/

lc_lab

2 years ago

Thank you for your comment! This is download link of the "I2CLiquidCrystal" library. https://n.mtng.org/cgi-bin/downcon.cgi?down=http://n.mtng.org/ele/arduino/I2CLiquidCrystal-1.5.zip&name=I2CLiquidCrystal-1.5.zip&hp=http://n.mtng.org/ele/arduino/ Could you download it with this?

lc_lab

2 years ago

I'm sorry for the late reply.

Anonymous user

2 years ago

Hey, I really appreciate you showing this project on here. I'm planning on doing it myself. However I'd want mine to be able to be displayed on a web browser through wifi. Any possibility you could show me/make a part 2 through adding wifi and having the data displayed on a browser available to the world? Thanks

lc_lab

2 years ago

Thanks for your comment! I'll do my best to post part two with Wi-Fi system. Thank you very much.

Anonymous user

2 years ago

what if i dont use dual Bidirectional I2C Bus and SMBUS Voltage Level Translator ?

lc_lab

2 years ago

Thank you for your comment! This time, we are using an OLED that runs on 3.3V.The digital output of the Arduino is 5V, so I don't think it's a good idea to connect them directly. I haven't actually tried it, so I don't have all the details.

Anonymous user

2 years ago

Hello! I have an issue with this specific defined library. I can't find it anywhere with this name and I do not know how to change it for this specific project in order to work! I would be glad for a prompt answer from you guys!! Thank you!! #include <I2CLiquidCrystal.h> //OLED #define I2C_ADDR 0x3c #define BRIGHT 127 I2CLiquidCrystal oled(I2C_ADDR, (uint8_t)BRIGHT);

lc_lab

2 years ago

Thank you for your comment! The "<I2CLiquidCrystal.h> library" is based on the following site. →https://n.mtng.org/ele/arduino/i2c.html You can download the file at the bottom of the page. I forgot to put the link, sorry. Thank you very much!!

Anonymous user

2 years ago

what is the purpose of displaying the temperature?

Anonymous user

2 years ago

Hi, what if I don't use the BME280 sensor, can it still run?

lc_lab

2 years ago

Of course! Please remove any unnecessary code related to BME280. Thank you!

Anonymous user

2 years ago

Hello how can i know the circuit connections about how to connect the circuit like that because we are the students need to know about the connections.do ypu have any video to show the connections

lc_lab

2 years ago

The connections (among Arduino and parts) in this projects can be found in the figures. Unfortunately, I don't understand about your question. I would be happy to help you. Please let me know more about the question what you would like to know.

Anonymous user

2 years ago

Can i use other size of OLED? Thank youu

lc_lab

2 years ago

If it is an I2C connected OLED, I think this library can be used.Please check it out. Thank you!

lc_lab

2 years ago

Sorry for the confusion. The OLED I used runs on 3.3V. The Arudino is a 5V output. I used a PCA9306 to convert the voltage. So if your OLED is not 5V, you may need it.

lc_lab

2 years ago

Of course! Use the OLED of your choice. I use PCA9306 because I needed it for the OLED I used. Use the right parts for your display. Thank you!

Anonymous user

2 years ago

wait, let me rephrase my question, what if i used a OLED . 0.91 inch by 1.3 inch , it is the same dual bidirectional that i will use which is PCA9306?

Anonymous user

2 years ago

Now i understand! The library that i will use for my OLED is the same as yours, right? Doesn't matter the size? Thank youuuu! Sorry for being nosy hehe

Anonymous user

2 years ago

Awesome Sir/Madam. But can you help me a little bit. I'm using DHT11 to measure temperature and humidity and 20*4 LCD display to show output. What should I change in the coding section? Thanks in advance.

lc_lab

2 years ago

Thanks for your comment. The paragraph that says "//BME280" is the code for the temperature and humidity using the BME280 sensor. Please replace this with the code for sensor you are using. The part of the code that says "//OLED" or "oled..." is about the display. You will need to rewrite the code to match your LCD display. It is possible that I have missed something, so please try writing and running the code. Thank you.

Anonymous user

2 years ago

Is it possible to make my own code

Anonymous user

2 years ago

what is the purpose of displaying the temperature?

Anonymous user

3 years ago

Hi do you have the zip fle of the 12cliquidcrystal? i went to the page that you give, but i cant download it

lc_lab

2 years ago

I'm sorry for the late reply.

lc_lab

2 years ago

Thank you for your comment! This is download link of the "I2CLiquidCrystal" library. https://n.mtng.org/cgi-bin/downcon.cgi?down=http://n.mtng.org/ele/arduino/I2CLiquidCrystal-1.5.zip&name=I2CLiquidCrystal-1.5.zip&hp=http://n.mtng.org/ele/arduino/ Could you download it with this?

Anonymous user

2 years ago

That link isnt working still :/

Anonymous user

3 years ago

Hey, I really appreciate you showing this project on here. I'm planning on doing it myself. However I'd want mine to be able to be displayed on a web browser through wifi. Any possibility you could show me/make a part 2 through adding wifi and having the data displayed on a browser available to the world? Thanks

lc_lab

2 years ago

Thanks for your comment! I'll do my best to post part two with Wi-Fi system. Thank you very much.

sojib720

3 years ago

Awesome Sir/Madam. But can you help me a little bit. I'm using DHT11 to measure temperature and humidity and 20*4 LCD display to show output. What should I change in the coding section? Thanks in advance.

lc_lab

2 years ago

Thanks for your comment. The paragraph that says "//BME280" is the code for the temperature and humidity using the BME280 sensor. Please replace this with the code for sensor you are using. The part of the code that says "//OLED" or "oled..." is about the display. You will need to rewrite the code to match your LCD display. It is possible that I have missed something, so please try writing and running the code. Thank you.

bobtiger

3 years ago

Hi, what if I don't use the BME280 sensor, can it still run?

lc_lab

2 years ago

Of course! Please remove any unnecessary code related to BME280. Thank you!

Anonymous user

3 years ago

Hello can i used LCD Display instead of OLED Display? And if i use lcd does the coding need to change as well?

lc_lab

2 years ago

This OLED is for i2c connection, and the "I2CLiquidCrystal" library I am using is also for i2c connection. According to the reference site (https://n.mtng.org/ele/arduino/i2c.html), the author has rewritten the official Arduino "LiquidCrystal" library (https://www.arduino.cc/en/Reference/LiquidCrystalConstructor). So, you may want to code with the "LiquidCrystal" library as a reference. Thank you.

Anonymous user

3 years ago

Hello how can i know the circuit connections about how to connect the circuit like that because we are the students need to know about the connections.do ypu have any video to show the connections

lc_lab

2 years ago

The connections (among Arduino and parts) in this projects can be found in the figures. Unfortunately, I don't understand about your question. I would be happy to help you. Please let me know more about the question what you would like to know.

marie_florence

3 years ago

Can i use other size of OLED? Thank youu

marie_florence

2 years ago

wait, let me rephrase my question, what if i used a OLED . 0.91 inch by 1.3 inch , it is the same dual bidirectional that i will use which is PCA9306?

marie_florence

2 years ago

Now i understand! The library that i will use for my OLED is the same as yours, right? Doesn't matter the size? Thank youuuu! Sorry for being nosy hehe

lc_lab

2 years ago

Sorry for the confusion. The OLED I used runs on 3.3V. The Arudino is a 5V output. I used a PCA9306 to convert the voltage. So if your OLED is not 5V, you may need it.

lc_lab

2 years ago

Of course! Use the OLED of your choice. I use PCA9306 because I needed it for the OLED I used. Use the right parts for your display. Thank you!

lc_lab

2 years ago

If it is an I2C connected OLED, I think this library can be used.Please check it out. Thank you!

dandan33

4 years ago

Excuse me sir/ madam, Would you mind tell me more about how to make it. I appreciate you done a great job. However, I still failed by following with the step and Arduino code which you post. Would you like tell me more about how to make it work successfully, especially how to make the message showed on the LCD display. Thank you.

lc_lab

2 years ago

Thank you for your comment! We used the "<I2CLiquidCrystal.h> library" to run the OLED. It is based on the following site. →https://n.mtng.org/ele/arduino/i2c.html You can download the file at the bottom of the page. And I used this OLED. →https://akizukidenshi.com/catalog/g/gP-08276/ (Japanese site, sorry...) The "<I2CLiquidCrystal.h> library" is a library for this OLED, so maybe it won't work with other ones. (I haven't tried it with other OLEDs, so I don't know the details.) We would be happy if you could modify our code to fit the OLED you are using. Thank you.

Anonymous user

4 years ago

what if i dont use dual Bidirectional I2C Bus and SMBUS Voltage Level Translator ?

lc_lab

2 years ago

Thank you for your comment! This time, we are using an OLED that runs on 3.3V.The digital output of the Arduino is 5V, so I don't think it's a good idea to connect them directly. I haven't actually tried it, so I don't have all the details.

Anonymous user

4 years ago

Hello! I have an issue with this specific defined library. I can't find it anywhere with this name and I do not know how to change it for this specific project in order to work! I would be glad for a prompt answer from you guys!! Thank you!! #include <I2CLiquidCrystal.h> //OLED #define I2C_ADDR 0x3c #define BRIGHT 127 I2CLiquidCrystal oled(I2C_ADDR, (uint8_t)BRIGHT);

lc_lab

2 years ago

Thank you for your comment! The "<I2CLiquidCrystal.h> library" is based on the following site. →https://n.mtng.org/ele/arduino/i2c.html You can download the file at the bottom of the page. I forgot to put the link, sorry. Thank you very much!!