A multi-purpose device that provides the user with updates on home temperature, humidity, air pressure, and altitude.
Table of Contents
EcoNode is an indoor or outdoor air monitoring system, and displays temperature, humidity, air pressure, and altitude values on a easy-to-access dashboard. EcoNode also graphs these values and alerts the user when they are out of their reccomended range.
For example: If the user is out and left their dog at home, but the temperature rises to 80*F, this could cause their pet to suffocate or become dehydrated! However, EcoNode would have already notified them both physically and verbally, and told them to turn on an air conditioner. The user would recieve the notification, check precise values on their dashboard, and save their pet!
Here's a short walkthrough on how to activate EcoNode.
-
Run the I2C code in Arduino.
-
Import the json file into Node Red.
-
Go to command prompt and activate Node Red.
node-red
-
Click on the link given in your command prompt
http://localhost:1880/
-
Click "Deploy" and visit the dashboard at http://localhost:1880/ui/
-
Sensing these values in our offices and homes is important, as humidity and temperature may cause health and structural problems. For example, an indoor temperature less than 55ºF may freeze pipes, and one above 80º can severely damage drywall longterm.
-
EcoNode can be used in industries like paper, textile, food processing, and more, since they need to regulate specific humidities and temperatures
-
Some irrigation techniques needs precise humidity for plants. The moisture present in the soil also plays an important role. Moreover, indoor vegetation also requires humidity sensors.
-
Many electronic devices are graded with a range of humidity values. Generally, this value is between 10 to 50% humidity. Semiconductor fabrication plants need to maintain very accurate humidity and temperature values, as even a difference of a minute can hugely impact the production.
-
Medical equipment like sterilizers and incubators also need temp and humidity control. Exact values are used in biological processes and pharmaceutical plants as well.
-
Last summer, I had the oppurtunity to participate in this program, and use the DHT22 sensor and a light sensor resistor to build a very cool device. This year, though creativity was limited, I was very excited to test out the BME688's gas sensing capabilities.
-
However, I faced many difficulties, the first being that my BME688's gas resistance didn't change at all.
-
After many failed attempts to change the gas resistance, including coffee, shampoo, hydrogen peroxide, and paint out-gassing, I decided to use what I had and base my project on the values that worked: Temperature, Humidity, Air Pressure, and ALtitude.
-
Not too long after that, my ESP32 Thing Plus board stopped working, and I ended up using the RedBoard instead, despite the fact that it couldn't connect wirelessly.
-
I struggled a lot with getting the plotting code in Python to work as well, but with a few days of online forums and youtube, I finally solved the issue.
-
I learned a lot more about syntax in Python, C++, and Javascipt, since they were all used in my project. I used to be sightly afraid of programming, since it appeared very complicated. After having to debug so much code myself this summer, I am much more confident in my abilities.
-
Lastly, since I couldn't put my data on a webpage easily without an ESP32 board, I searched for a local option. After trying various other dashboards, Node Red finally worked for me.
-
Node Red was probably the part of my project that took the most debugging, but I learned the most from it. And now I have a working dashboard that displays my data and keeps values in check!
When the temperature goes above 82º F, Node Red will send you a notification and verbally state that the temperature is too high.
The same thing applies for low temperature (x < 60º), high humidity (x > 50%), low humidity (x < 30%), and low/high air pressure (x < 970 hPa or x > 1030 hPa)
Node Red handles all sensor data, and outputs it onto a dashboard.
The code for my flow can be found in the repository. To try it out, simply download Node Red on your command prompt, and go to the link it gives you. Then go to:
Menu -> Import -> Paste the json file there
You should see something like this:
As you can see, my setup first seperates serial data values, converts temperature to Fahrenheit, then puts all these values on the dashboard. It also graphs these values, and reguarly checks if they are in the reccomended range. If they are not, it will notify the user physically and verbally with the Text to Speech nodes.
Below you can see how simple it is to activate the node red local connection. Just a simple line in your command prompt and you can view the dashboard.
Here's a view of what the dashboard looks like:
Data is stored for an hour, then is replaced by new incoming data. All lines from the serial monitor are also saved in a file on the local Desktop with a timestamp.
Here is the second page of the dashboard:
This gif shows the values' reading changing when I exposed it to humid and hot air. This triggered the notification and Text-to-Speech node as well, shown in the following video.
Screen.Recording.2022-08-05.at.9.52.20.PM.mov
In summary, the user will be notified if temperature, humidity, or air pressure values go out of its reccomended range.
Lastly, if plotter.py is run while serial data is incoming, MatPlotLib will plot these values and label them. Although, Node Red is reccomended for this system.
Ria Saheta: riasaheta@gmail.com
Project Link: https://github.com/peanutz28/tla-iot-project
Here's a picture of my set up:
Below is a video of one of my failed gas resistance tests, using the out-gassing from paint.