5. Home Environment Monitoring

In this chapter, we will use Blynk to create a home environment monitor. You can measure the temperature, humidity, and light intensity of a room using the DHT11 and photoresistor. By sending these values to Blynk, you will be able to know the environment of your home via the internet.

Required Components

In this project, we need the following components.

It’s definitely convenient to buy a whole kit, here’s the link:

Name

ITEMS IN THIS KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

You can also buy them separately from the links below.

COMPONENT INTRODUCTION

PURCHASE LINK

SunFounder R3 Board

BUY

Breadboard

BUY

ESP8266 Module

BUY

Jumper Wires

BUY

Resistor

BUY

Photoresistor

BUY

DHT11 Humiture Sensor

-

1. Build the Cirduit

Note

The ESP8266 module requires a high current to provide a stable operating environment, so make sure the 9V battery is plugged in.

../_images/wiring_dht11.jpg

2. Edit Dashboard

  1. For recording humidity values, create a Datastream of type Virtual Pin on the Datastream page. Set the DATA TYPE to Double and MIN and MAX to 0 and 100. Also set the units to Percentage, %.

    ../_images/sp220610_145748.png
  2. Then create a Datastream of type Virtual Pin for recording the temperature. Set DATA TYPE to Double, MIN and MAX to -30 and 50, and units to Celsius, °C.

    ../_images/sp220610_145811.png
  3. Also create a Datastream of type Virtual Pin to record the light intensity. Use the default data type - Integer, with MIN and MAX set to 0 and 1024.

    ../_images/sp220610_145834.png
  4. Go to the Wed Dashboard page, drag two Label widgets and set their data streams to V4 and V5 respectively, and drag a Gauge widget and set the data stream to V6. Also in the widget setting, you can enable Change color based on value and select the appropriate color to make the widget look better and more intuitive.

../_images/sp220610_150400.png

3. Run the Code

  1. Open the 5.home_environment_monitoring.ino file under the path of 3in1-kit\iot_project\5.home_environment_monitoring, or copy this code into Arduino IDE.

    Note

    • The DHT sensor library is used here, you can install it from the Library Manager.

      ../_images/lib_dht11.png
  2. Replace the Template ID, Device Name, and Auth Token with your own. You also need to enter the ssid and password of the WiFi you are using. For detailed tutorials, please refer to 1.4 Connecting the R3 board to Blynk.

  3. After selecting the correct board and port, click the Upoad button.

  4. Open the Serial monitor(set baudrate to 115200) and wait for a prompt such as a successful connection to appear.

    ../_images/2_ready.png

    Note

    If the message ESP is not responding appears when you connect, please follow these steps.

    • Make sure the 9V battery is plugged in.

    • Reset the ESP8266 module by connecting the pin RST to GND for 1 second, then unplug it.

    • Press the reset button on the R3 board.

    Sometimes, you may need to repeat the above operation 3-5 times, please be patient.

  5. Now, you will see the current ambient temperature, humidity and light intensity on Blynk.

    ../_images/sp220610_150400.png
  6. If you want to use Blynk on mobile devices, please refer to How to use Blynk on mobile device?.

    ../_images/mobile_home.jpg

How it works?

These two functions are used to get the temperature, humidity and light intensity of the room.

int readLight(){
    return analogRead(lightPin);
}

bool readDHT() {

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
    humidity = dht.readHumidity();
    // Read temperature as Celsius (the default)
    temperature = dht.readTemperature();

    // Check if any reads failed and exit early (to try again).
    if (isnan(humidity) || isnan(temperature)) {
        Serial.println("Failed to read from DHT sensor!");
        return false;
    }
    return true;
}

With the Blynk Timer, the ambient temperature, humidity, and light intensity are obtained every second and sent to the data stream on the Blynk Cloud, from which the widgets display the data.

void myTimerEvent()
{
    bool chk = readDHT();
    int light = readLight();
    if(chk){
        Blynk.virtualWrite(V4,humidity);
        Blynk.virtualWrite(V5,temperature);
    }
    Blynk.virtualWrite(V6,light);
}