Wi-Fi programmable room thermostat with air quality monitor - Hackster.io

2022-10-09 04:20:15 By : Ms. Wiley Tsai

Add the following snippet to your HTML:

Wireless programmable via Wi-Fi room thermostat with air quality monitor and other useful features.

Read up about this project on

Wireless programmable via Wi-Fi room thermostat with air quality monitor and other useful features.

A commercially available wireless room thermostat works in the autonomous heating system of my apartment. Of course, the thermostat was purchased to save gas and make things more comfortable.

The thing is very useful, but, in my opinion, somewhat outdated. It was decided to assemble something similar to the purchased thermostat, after adding more convenient settings and an Internet connection to the thermostat circuit.

The thermostat consists of two devices. The first device generates and transmits to the second device a control signal for a heating device or heating system, let's call this device an analyzer. The second device receives the signal, decodes it and controls the heat source - let it be a contactor. The connection between the analyzer and the contactor is wireless, at radio frequency.

To assemble the device, you will need the components listed below. The estimated cost of components at the prices of the AliExpress is $50.

Both devices are assembled on fiberglass breadboards. Installation - hinged (volumetric). This approach has a number of advantages: the components are easily dismantled, the installation is easily changed to a new version of the sketch, and, finally, in a home-made case, it is not visible how it was made.

The antennas at the transmitter and receiver are a 17.3 cm long wire. The increased transmitter power and the simplest antennas provide reliable communication within the apartment.

The brain of the analyzer is the ESP8266 controller on the NodeMCU CP2102 module board. It receives signals from sensors and generates control signals for the transmitter and screen.

When installing the DHT22 sensor on the board, the measured temperature is 1.5…2°C higher than the real one (even without a case!). Therefore, you should place the temperature sensor away from the high heat dissipating elements LM7805 and NodeMCU CP2102. In addition, it would be nice to install the LM7805 voltage regulator on a heatsink, and it is definitely necessary to ensure good air convection in the case to lower the temperature and reduce temperature measurement errors. Another option to get rid of the error is to move the DHT22 sensor outside the case volume - this option is simpler and I chose it.

There are a lot of complaints on the Internet about the low accuracy of measuring the humidity of the DHT22 sensor. Today there is an alternative: more modern temperature and humidity sensors HTU21D, Si7021, SHT21.

The analyzer is supplied with a constant voltage of 12V from the AC/DC adapter. Next, the LM7805 DC voltage regulator generates a voltage of 5V. The transmitter supply voltage is 12V. When testing the device, when the analyzer and the contactor are located side by side on the desktop, the analyzer can be powered from the USB port of the computer by applying voltage to the NodeMCU CP2102 module using a standard USB-microUSB cable. The supply voltage of NodeMCU CP2102 and MH Z-19 is 5V, the power supply of the remaining nodes of the circuit (3.3V) forms the stabilizer of the NodeMCU CP2102 module.

The temperature and humidity sensor DHT22 is connected to the D6 pin of the NodeMCU CP2102 module. DC3231 clock and 0.96" display are connected to ESP8266 (on NodeMCU CP2102 module) via two-wire I2C interface, and Tx, Rx pins of CO2 content sensor MH Z-19 are connected to Rx, Tx pins of ESP8266 respectively. The transmitter signal comes from NodeMCU CP2102 through converter logic levels, which converts the signal from the NodeMCU CP2102 with an amplitude of about 3.3V into a signal whose amplitude is close to the transmitter supply voltage of 12V.

If you use a battery instead of a rechargeable battery in the clock module, be sure to break the battery charging circuit, otherwise the battery will swell after a few weeks of operation under voltage. With self-powered watch, the accuracy of 2 seconds / year is guaranteed to you.

If at least one of the air parameters goes beyond the programmed thresholds, then every half hour the device sends an e-mail with the following content:

This message was generated automatically by air quality monitor 7687859. One or more room air parameters (temperature, humidity or carbon dioxide content) are outside the specified limit values. === Temperature: 20.40°C === Humidity: 49% === Carbon dioxide content: 617 ppm === Analyze the information! === Date: 11:35 09/01/***

The contactor is controlled by the Arduino Pro Mini module. It receives a signal from the RF receiver and generates signals for exceeding the threshold values of air parameters.

The supply voltage of all 5V contactor units comes from the AC/DC adapter HLK-PM01.

Connect the open relay contacts (red and yellow wires in the diagram) to open the heater power circuit.

The signals from the controller outputs 6 (h > Hmin), 5 (co2 > CO2max), 3 (t > Tmax) can be used to organize automatic humidification, forced ventilation or air conditioning. The advantage is that there is no need to lay a cable to transmit the control signal from the sensor to a specific system - it is enough to place a contactor near one end of the power or system control wire.

It's time to turn on the thermostat.

Let's turn on the analyzer first.

First you need to be patient and, without doing anything, wait 3 minutes. The thermostat will automatically switch to offline mode - without a Wi-Fi connection to your home network and the Internet. After 3 minutes, the measured air parameters will be displayed on the analyzer screen in three lines.

The first two lines on the screen do not require comments. The third line contains the thermostat operation mode ( Offline, Online or OffBlynk) and information about going beyond the set threshold values ​​of air parameters. For example, Offline CO2>1000 - the thermostat is offline and the measured CO2 content is above the set threshold of 1000 ppm.

The clock in offline mode will show the wrong time. They have not yet been synchronized with the exact time server, and the time zone has not been entered - this is in the next step.

In offline mode, the thermostat temperature is set to 21°C during the day. It can be changed.

Having mastered the standalone mode, turn off and then turn on the analyzer's AC/DC adapter. A familiar message will appear on the screen, which you have gotten used to in three minutes of waiting for offline mode.

The am-5108 access point is raised in the device. Let's find this point in the list of available networks and connect to it, the password is on the screen. Then open http://192.168.4.1 in your browser.

Click the Configure WiFi (No Scan) button. The page with the thermostat settings form will open:

The same form with empty fields and comments:

We will indicate in the form the name and password of our home network, the BLynk identification key, and email. Let's change the default time zone, time (hours) and temperature for time points, as well as threshold values ​​for temperature, humidity and CO2 content.

The day is divided by two time points into three time ranges - the first: from 00:00 to point 1 (Hour 1, Minute 1), the second: from point 1 (Hour 1, Minute 1) to point 2 (Hour 2, Minute 2) and third: from point 2 (Hour 2, Minute 2) to 00 hour 00 min. There are no fields for entering minutes on the form, minutes for points 1,2 can be changed in the sketch (variables MinPoint1, MinPoint2). In each of the three time ranges, you can set your temperature control temperature - Temperature 0, Temperature 1 and Temperature 2. If you plan to keep the same temperature constant throughout the day, then it is enough to set the Temperature 0 value, and leave the fields for points 1.2 empty.

When choosing threshold values ​​for air parameters, be guided by the indicators that I found on the Internet:

1. Comfortable temperature at night during sleep 19 ... 21 ° C, during the day 22 ... 23 ° C.

2. The optimal relative humidity in the cold season is considered to be 30 ... 45% humidity, and in the warm season 30 ... 60%. Limit maximum humidity: in winter it should not exceed 60%, and in summer - 65%.

3. The maximum level of carbon dioxide content in the premises should not exceed 1000 ppm. The recommended level for bedrooms, children's rooms is no more than 600 ppm. The mark of 1400 ppm is the limit of the permissible content of CO2 in the room. If it is higher, then the air quality is considered low.

By default, the daily temperature control program (during the day - high temperature, at night - low) is set on the assumption that during the day one of the residents is in the room, for example, working at home. The program is easy to change to fit your needs.

The e-mail field can be left blank. Then the provided opportunity to receive e-mails about the exit of air parameters beyond the threshold values ​​will be lost. Without the Blynk key entered, it is impossible to control the thermostat and receive information about the air parameters at a distance. However, the thermostat will not “get lost” if the fields with the limit values ​​​​of the air parameters remain blank, then only one function will remain behind it: temperature control.

And further. Please enter all numbers in the format of floating-point variables, then the conversion to the desired format is performed in the sketch. Exception: time points 1,2 (hour) - integer format.

After saving the settings in the ESP8266 memory (Save button), the analyzer will connect to the network and start working.

If you made a mistake or decided to change the settings, you will have to upload the sketch twice again to the ESP8266. The first time - with the factoryReset (); line uncommented in Setup and the second one with the commented one and then repeat step #2.

Now you can turn on the contactor.

With a stable radio connection between the analyzer and the contactor, the D13 LED on the Arduino board blinks at a frequency of about 1 Hz.

If the contactor has received a command from the analyzer to turn on the heater or heating system, the normally open relay contacts will close and the corresponding LED on the relay module will light up.

If there are no problems with the "idling" of the contactor, then we connect the heating device or the electronics of the heating system. The heating device should be connected with a wire of a certain section. The specific indicator for calculating the cross section of a copper wire is 5 A / mm2.

It's time to launch the Blynk app on your smartphone. There is a lot of information about the Blynk app on the Internet - there is no point in repeating it.

Variables for Blynk (so as not to look for them in the analyzer sketch): temperature - V1, humidity - V2, CO2 content - V3, control temperature - V4, virtual button - V10.

On my smartphone, Blynk’s interface (it can be changed) looks like this:

On the graph - the measured temperature (white), thermostating temperature (yellow), time interval - day. Variables for humidity and CO2 content are not displayed on the graph, since two additional scales severely limit the field of the graph, where the curves themselves can be considered.

The signal from the virtual THERMOSTAT button is generated only at the moment the button is pressed. When the button is pressed, the message Thermo OFF! flickers on the analyzer screen. or ThermoON! – depending on the previous state of the button. This message is relevant when testing the thermostat.

The screenshot below illustrates the process of heating a room with an area of ​​about 5 square meters with an initial temperature of 16°C with a 2 kW/h fan heater. Here - temperature (yellow), humidity (blue) and CO2 content (red).

The jagged humidity curve synchronous with the temperature saw on the graph is another confirmation of the well-known fact that an open heating element dries the air, and the peaks on the CO2 content curve are evidence of my short-term visits to the room.

In the future I plan to work on improving the thermostat. Lots of tasks:

Hackster.io, an Avnet Community © 2022