Introduction: IOT Based Water Level Controller Using NodeMCU ESP8266

About: I am a professional blogger from India.

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:-

    1. NodeMCU ESP8266 development board
    2. HCSR04 ultrasonic sensor
    3. Breadboard
    4. Single channel relay board (to control water pump)
    5. LM7805 +5V voltage regulator IC.
    6. Battery (9V-12V).
    7. WiFi Router (to connect NodeMCU to internet)
    8. Firebase (to create a database)
    9. 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

      2. Firebase Arduino

      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.

      IoT Challenge

      Participated in the
      IoT Challenge