User avatar
By RichardS
#43131 User
War_Z

Description
In my house I have an attic ventilation fan and a cellar dehumidifier. Both of these have a simple on-board control with no display, and I wanted to be able to calibrate each "ON" control. This means I need a temperature sensor for one application and a humidity sensor for the other.

I started with two (Arduino UNO + DHT11 + SDcard) set-ups, one on each floor. I found that the DHT11 is pretty crude, so I progressed to the DHT21. Then I added wired ethernet to each "node", and added a wired "master" UNO with the SDcard as a local data repository. Occasionally I would load the data into EXCEL to graph the temperature/humidity data.

So now I'm getting useable data, but I know the humidity sensor could be better, I have a lot of ethernet wires running around the house, and plotting the data is a pain. The ESP8266-01 just hit the market at $5, so I bought one and added it to the master. I was controlling the ESP with AT commands. I upgraded my master to a MEGA 2560 so I could have one hardware serial port for the ESP and another for debugging, and added a third temp/hum sensor to the Mega so I now have "room ambient" as well. I also found out about Thingspeak, the perfect solution to my data graphing needs.

I ran this setup for a year and got some great data. The plot of the attic temperature told me when the fan turned on, and the plot of the cellar humidity told me the range the dehumidifier held and when it was low enough down there to turn the dehumidifier off. In addition, the curves gave some interesting added information. In the winter I can see the furnace cycling via cellar temperature, which also tells me when the last person went to bed and turned down the thermostat, as well as when the first person got up in the morning.

Back to the ESP8266. By now this device had been added to the boards library of the Arduino IDE, so I decided to go wireless throughout. Building on some great posts from others, I came up with a plan to make the remote units ESP8266-01 with I2C sensors, and the master with a NodeMCU, I2C sensor, and I2C OLED. Once this was up and running I replaced the NodeMCU with a -01.

The final step was to upgrade my humidity sensors. I found the Silicon Labs Si7021, good to 3% humidity and available from AliExpress on an I2C board for a few dollars. I bought and installed some of these, but the humidity numbers I was getting looked out of spec. Silicon Labs is a good company, but I suspect that China is not a good source. I ended up obtaining some Texas Instruments HDC1080 chips directly from their online store, so I know I have good parts and the humidity spec is now 2%. It turns out Sparkfun has a nifty little HTU21D Breakout board, and the IC pinout matches the HDC1080, so I had a few boards done up by OSH Park and populated them using my little heat gun. So now the sensors are up to snuff.

The Thingspeak data is available for public viewing at: https://thingspeak.com/channels/97536. It shows a couple of days worth of data, and I usually check it on my smartphone. I use the private channel to store data since time zero, and display a week worth of data on the private screen. That works fine when accessing from a PC, but it would be too much data to load onto a smartphone screen.

Future improvements include tweaking the code on the remotes, since they sometimes do not connect with the master, and adding limit checks in the master so I can get email notifications through my Pushingbox account if any of the data reaches a value of concern (like the attic fan not cooling sufficiently).

Note:
I program the ESP8266-01 with a separate board connecting TX and RX to USB. I modified an FTDI module by lifting the 3.3v output pin of the FTDI chip, then routing 5v through an AMS1117 board to the 3.3v output of the module. This is an FTDI board that I happened to buy from China before the counterfeit FTDI chips came out. A Foca Pro module or similar would be a better option today.

Parts
OLED - Grove 0.96" 96x96 [SEEED]
OLED library with reference to PROGMEM removed [LCD_Display9696_Library_no_PROGMEM.zip]
Sensor - Texas Instruments HDC1080 mounted on SparkFun HTU21D Breakout [TI, OSH Park]
5v to 3.3V converter board AMS1117 800mA [AliExpress]
momentary button switch N.O. for RESET [AliExpress]
USB connector - Female Micro to DIP 5-pin board [AliExpress]
0.1" header pins [AliExpress]
0.1" header socket 2-row 4-pin (8 pin total) for ESP8266-01 [AliExpress]
0.1" header socket 1-row 6-pin for USB-to-TTL module on programmer board [AliExpress]
perfboard [AliExpress]
hook-up wire [AliExpress]
USB wall supply with Micro connector, 500mA more or less [AliExpress]
USB-to-TTL board with high-current 3.3v output to power ESP8266-01 for programming [See Note in Description]
(2) each ESP8266-01 + (1) NodeMCU [Espressif]
OR (3) each ESP8266-01 [Espressif]

Links
Thingspeak

Video

Images
Attachments
(10.83 KiB) Downloaded 728 times
(17.05 KiB) Downloaded 692 times
(1.2 MiB) Downloaded 438 times
(1.27 MiB) Downloaded 438 times
Thingspeak_Graphs.jpg
Full System 2.JPG
OLED display.JPG
Full System 1.JPG
ESP Programmer.JPG
ESP8266_board_pinout.png
ESP8266_board_pinout.png (9.67 KiB) Viewed 7240 times
User avatar
By War_Z
#43360 My wifi router is in the cellar, and my attic ESP8266-01 sometimes loses connection. Unfortunately, that causes the master to stop updating Thingspeak. I have re-positioned the attic unit so the on-board antenna has better signal, but I may eventually change it to a -07 with separate antenna. I still have to figure out why the master fails to update Thingspeak when one remote is not connected.