IOT Based Water Level Controller Using NodeMCU ESP8266
Intro: IOT Based Water Level Controller Using NodeMCU ESP8266
This is Instructable on how to create an IOT based water level controller.
Features of this project are:-
- Real-time water level updates on the Android app.
- Automatically turn ON the water pump when water reaches below a minimum level.
- Automatically turn OFF water pump when water reaches above a maximum level.
- Manual option to control the water pump at any water level.
Requirements:-
- NodeMCU ESP8266 development board
- HCSR04 ultrasonic sensor
- Breadboard
- Single channel relay board (to control water pump)
- LM7805 +5V voltage regulator IC.
- Battery (9V-12V).
- WiFi Router (to connect NodeMCU to internet)
- Firebase (to create a database)
- MIT app inventor 2 (to create Android application)
So let's get started.
STEP 1: Setup Firebase and Get Secret Key
We are going to use a real-time database by Google firebase. This real-time database will act as a midway broker between Nodemcu and Android device.
- First of all, navigate to firebase site and log in using your google account.
- Create a new real-time database.
- Get real-database URL and secret key to access the database from the app. For a detailed tutorial, you can check out how to integrate firebase with MIT app inventor.
STEP 2: Create App Using MIT App Inventor 2
We are going to use MIT app inventor 2 to create our Android app. Its very simple to use and easy to integrate win Google firebase.
Just follow these steps:-
- Download MIT app inventor project file (.aia file) attached below.
- Then go to MIT app inventor >> projects >> import project (as shown in screenshot 1). Select the file from your computer and upload it.
- Open project and navigate to Screen3 (as shown in screenshot 2).
- After that, go to layout window, click on firebaseDB1 (located at bottom of the workspace), enter database URL and key. Also set ProjectBucket to S_HO_C_K (as shown in screenshot 3).
- At last, click on the "build" button and save app file (.apk file) to your computer. Later transfer that file to your Android device.
STEP 3: Configure Arduino IDE for Nodemcu Esp8266
- First of all, configure Arduino IDE for Nodemcu esp8266. I would recommend this step by step tutorial on NodeMCU basics by Armtronix. Thanks Armtronix for this helpful tutorial.
- After that, add these two libraries (as shown in screenshot) :-
1. Arduino Json
STEP 4: Upload Code With Some Necessary Changes
You must do some necessary changes in code before uploading to Nodemcu.
- Download attached file (.ino file) and open it with Arduino IDE.
- At line 3, enter database URL without 'https://'.
- At line 4, enter database secret key.
- At line 5 and 6, don't forget to update WiFi SSID and Wifi password (to which you want to connect NodeMCU ESP8266).
- Scroll down a little bit and update minimum water level, maximum water level, and margins according to the depth of your own water tank.
After that, upload program to NodeMCU ESP8266.
STEP 5: Configure Hardware
- Create a circuit as shown in the above figure. You can use either a 9V or 12V battery.
- Put ultrasonic sensor at the top of the water tank.
- Connect water pump using a relay board (optional during testing).
STEP 6: Magic Time!
- Install the app (created in step 2) on your Android device.
- Supply power to the setup.
- Wait for NodeMCU to connect to the hotspot (you can use either router or portable hotspot).
- All Done! Now you can control/monitor water level from anywhere in the world.
32 Comments
citymobilex 2 years ago
flowta 2 years ago
citimobile 2 years ago
Rishi Rishi 2 years ago
Check out updated video and code: https://m.youtube.com/watch?v=NjUuioiC99M
https://github.com/TrickSumo/water-level-indicator-controller
roockstardeva 3 years ago
muhammadamin831996 3 years ago
Rishi Rishi 3 years ago
There are different levels defined like min, max and mid. Then actions are triggered automatically as per water level.
Further manual mode is there to override automatic mode.
Hope this make sense now.
sandek80 3 years ago
muhammadamin831996 3 years ago
Rishi Rishi 3 years ago
I guess we can't see history of data in firebase real time database.
muhammadamin831996 3 years ago
Rishi Rishi 3 years ago
muhammadamin831996 3 years ago
Rishi Rishi 3 years ago
Probably this may help: https://m.youtube.com/watch?v=NjUuioiC99M
muhammadamin831996 3 years ago
muhammadamin831996 3 years ago
orange wire at 60 line 3 was for trig on hc-sr04
red wire at 60 line 4 was vcc from relay
the green wire at 61 line 2 was for GND from nodemcu 8266 amica
green wire at 61 line 3 was for GND from hc-sr04
the brown wire at 61 line 5 was for GND from relay
the coding i did not make any changes
Rishi Rishi 3 years ago
Make sure connection is as shown in this image:- https://github.com/TrickSumo/water-level-indicator-controller/raw/master/Circuit%20Diagram%20For%20NodeMCU%20ESP8266%20Amica%20Model.JPG
If pump not working, try with bulb or LED.
muhammadamin831996 3 years ago
hoornhecht 3 years ago
i love this project and i will aply it to my house.
just jesterday i put all the compnets togeher and follow your guideline.
but there is a chaange in the real time database conection.
please can you help me?
the esp can not log in the google fire base.
for faster contact we can comunicate as well via watzapp +5219841642155
sorry i'm totally new with aduino and maybe i need a bit special help :-)
Rishi Rishi 3 years ago
Glad you liked my project :)
I'm not sure why esp not logging data to firebase. Are you getting firebase connection failed error in serial monitor?
If yes, try this : https://m.youtube.com/watch?v=ZZ5JvSA-Ed8
For more help, please send me personal message here on instructables. I would be happy to help you.
Thanks