“We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology.”
— Carl Sagan
How does monitoring Temperature, Humidity, Pressure, Illuminance, and Air quality sounds like? Well, it sounds great especially if we can do it in under 50 US $ budget, and it even has some basic weather prediction functions, when combined with Tasmota and Domoticz.
We had a situation in the city where people started to get sick with respiratory problems at the mass level and it was obvious that a major problem is the quality of the air. I mean it was noticeable with the bare eyes and nouse but authorities kept saying that air is ok, and they were publishing fake results. Moreover, results were in the form of a statement like “Air quality is at a satisfactory level”. Yes, it is ok if you ar an internal combustion engine with a great air intake filter!
How could air become so bad in a city without industry?
This started happening with the beginning of a heating season, and it was just a coincidence that the city got a brand new heating plant. Well, later we find out that it was not exactly in city ownership. Moreover it is a privately owned and operated, with a nice and lucrative contract. In fact, the new plant is so nice that they shut down former plant (with chimneys like two times higher than those at the new plant) that was owned by the city and the only heating option left is this new monster that uses wood as a fuel. I could write a completely new story on this subject, but I will stop here.
I came to learn about it from the necessity. I wanted to see what is going on with the air pollution and I found a bunch of sensors there on the market but did not know where to start. In fact, one independent journalist brought few “Purple Air” sensors and installed them around the city, and the results were catastrophic. For example, they measured 300 – 500 (US EPA PM2.5 AQI ) almost all the time for 2 months. On the other hand, 0 – 50 is ok on their scale and that scale ends with 500.
These purple air sensors cost around 250 US $ so they are not so cheap. On the other hand, you just have to put it on a good spot, connect it to Wi-Fi and power. But it is very enjoyable to build something yourself so, DIY again 🙂 . Just one more comment, authorities said that these “so-called” measuring devices like “Purple Air” sensors are not calibrated, and not attested by their accredited agency so the results were wrong. As soon as they started talking things like that, the air became so pure and enjoyable to breathe that everyone was so shocked and happy to have the opportunity to live under so wise rule.
What convinced me even more that I`m on the right track was Mr. Joost Wesseling from The Netherlands National Institute for Public Health and the Environment, keynote at the Things conference in Amsterdam. If you read this article until now, it means you are interested and I warmly suggest you watch this 25-minute video https://www.youtube.com/watch?v=FgvghFFSQ6c .
First, we will make a little bom (bill of materials) containing major parts. After all, we are building a quite complex device. Therefore we must know what parts do we need.
|Part||Price US $|
|1. ESP8266 development board||2.8|
|2. Nova PM sensor SDS011 High precision laser pm2.5 air quality detection sensor module||18|
|3. BME280 temp hum baro sensor 3V||3|
|4. BH1750 light intensity illumination module 3V||2.5|
|5. 5V 2A power supply||3|
|6. Some wires, cables, connectors, screws, cable ties and a box…||10|
Regarding tools needed for the job, I used: soldering iron, hot glue gun, small drill, angle grinder, few screwdrivers, cutting pliers, multimeter, smartphone and a computer.
Since I had to order some parts from China, there was not much to do until they came. I was killing some time wondering how to assemble everything together. What will I use as housing? I went through some stuff I had and noticed the old HP Inkjet printer power supply. I opened it and after measuring the size, it looked like everything could fit in nicely. And it did, so this power supply casing was a box for my sensors device.
First I put everything together to see how it works. I had a doubt regarding connecting two i2c sensors in parallel (doubt was about addressing not about can it work or not). BME280 and BH1750 are both connected to scl and sda pins of ESP, and I did not now will Tasmota firmware be able to discover them both without fine tuning. But it worked like the charm from the start.
Regarding wiring, SDS011 talks on serial, so RX goes to ESP TX and TX goes to ESP RX. +5 Volt from SDS goes to Vin on ESP with the assumption that you will connect that pin later to the power supply of 5V DC. This sensor working voltage is 4.7 – 5.3 V, so do not connect it to 3 V pin, it is to low and it may affect readings. As always ground goes to ground. BME280 and BH1750 use the I2C bus, so their SCL (Serial Clock) together goes to ESP SCL which is on pin D1, and SDA of both sensors goes to D2 on ESP since it is Serial Data pin. Sensors VCC connects to a 3V pin on ESP. We already know about ground :).
Just to mention that it is not a bad idea to cover air inlet and outlet of a sensor while you work around it, especially drilling or grinding, to prevent dirt to pollute sensor. When all rough work is done, remove the covers. Better safe than sorry.
Since the goal was to make it nonexpensive, and yet durable and to finish it fast, this is what I did regarding assembly. I positioned the Nova SDS011 sensor on one side of the box, put a microcontroller next to it and then made some physical barrier to create a compartment for BME280. The reason I wanted it separated was the intention to remove it from any heat dissipation that the ESP8266 board produces no matter how small it is. That way alteration of the temperature reading would be minimized.
I made a socket for the ESP development board on the prototype PCB, so it can be removed, or replaced easily without any soldering. After all this sensors unit is a prototype. The micro USB connector on the board is accessible when the box is open in case it is needed. There are markings on board so there will not be the accidental wrong insertion of ESP board.
Well, I had the opportunity to dig in some cables since there is still no facade on the house, and I put a few UTP cables in. I used one for PoE camera, other for sensors device power supply, and since this is the IoT time, I left two more cables to wait for it 🙂 . First, I chose this location thinking, that it is high enough from the ground to prevent dust and some other near ground particles to contaminate sensor readings. Second, it is far enough from the roof to have its heat dissipation mess with the temperature readings. Third, it is enough protected from the rain and both air openings are from the bottom so it should be impossible for rain to get into the device or sensors.
Everything built here is a piece of junk without the software.
Tasmota had been flashed on to the ESP. Tasmota will be sending data from sensors to Domoticz. I will not enter into many explanations here, you can find needed information at those two links. I also uploaded flasher and two needed .bin`s here. Firmware is 7.2.0, and it will be obsolete very soon. I put it for those of you that like shortcuts 🙂 . It will do the job, and later you can upgrade.
There are literally tons of information regarding the process out there, but I will put it in very short terms again here. 1. Connect ESP to your computer, figure out what com port is it using and configure Tasmota flasher accordingly. 2. Press taster for entering flashing mode and then press the reset taster on the ESP dev. board. 3. Release the reset taster, and then release the first taster on ESP. 4. Select the tasmota-sensors.bin in flasher and then send it to the device. (tasmota-minimal.bin is needed only if you are doing OTA (over the air) upgrade).
We now need to tell Tasmota, what sensor is connected to which pin on the ESP board. I attached the screenshot of the config and when compared with Wiring diagram it is self-explanatory.
When flashed and configured, here is how Tasmota web interface looks like. You just find its IP address on your dhcp server (it will be showed as sonoff-acb or tasmota-xyz or something like that) and enter that IP address in your browser. It is nice to make a reservation (or static assignment) on dhcp so address stays the same. On that interface you can basically read values from the sensors and configure, backup or upgrade Tasmota.
This is how the results from Domoticz look like.
But it is not just about reading values that came just now, logging gives the real power…
So, from the PM 2.5 monthly shows some real air quality statistics although my sensors unit is still not operational for a full month. One more thing to remember, this shows pollution in PM2.5 μg/m3 (raw) and the usual standard is US EPA PM2.5 AQI. That means if you are going to compare it to “Purple Air” you need to convert, or at change units displayed on Purple air (it is on the map). Anyway these raw readings converted to AQI are much higher, so you know what to expect.
I wrote this with a simple intention. That is to show how easy to build and inexpensive this kind of sensors unit can be. I hope it serves as a warning and a manual.
If you find this article interesting maybe you should check on this one regarding fixing a “weather unknown” message. Once again, thank you for reading, and if you have any questions or need help, just post a comment. I’ll get in touch with you asap.
Here is a little update on Jully 2020. , a friend send me a few pics of his “do it fast” sensors station. He even added external Wi-Fi antenna for a better connection range.
Wondering how to add an SDS011 air quality sensor with Tasmota to Domoticz? Here is a step by step guide how to do it.
First, we need to start with the Tasmota configuration. In addition, let`s just assume that we have a hardware sensor like this built. Above all, now we need to configure it.
It is easy so I`l make it as short as possible…
Here are a flasher and 7.2 version bin if you want to start right now. 1. Connect ESP to your computer, figure out what com port is it using and configure Tasmota flasher accordingly. 2. Press taster for entering flashing mode and then press the reset taster on the ESP dev. board. 3. Release the reset taster, and then release the first taster on ESP. 4. Select the tasmota-sensors.bin in flasher and then send it to the device.
Further, after flashing just do a regular reset and you are ready for initial configuration. Therefore you need to connect to Tasmota via WiFi as it now acts as a hotspot. For instance, you could use your smartphone to scan for available WiFi networks and you should see one with “tasmota” in a name. Connect to it and it will show you “sign in” message. Click on sign in and it will open Tasmota configuration site. Here are screenshots in a gallery.
When flashed and configured, here is how Tasmota web interface looks like. Just find its IP address on your DHCP server (it will be shown as tasmota-ACB or something like that) and enter that IP address in your browser. It is nice to make a reservation (or static assignment) on DHCP so the address stays the same. On that interface, you can basically read values from the sensors and configure, backup or upgrade Tasmota.
This should be easy. SDS011 is connected to the Rx and Tx ports of the ESP board. Above all, remember that Rx and Tx need to be crossed (Rx goes to Tx, and Tx goes to Rx). Imagine it like talking. When You talk (Tx)then I Listen (Rx), and vice versa. We are talking about wire connections right now. Now we move to a logical connection. For TX (GPIO1 serial Out) chose from the drop-down menu SDSx1 Tx(101), for the (RX GPIO3 Serial In) chose SDS0x1 Rx (70). In this example, I connected more sensors. It means more pins need configuration. For more info about wiring go to this article.
First of all, Tasmota is not gonna talk directly to Domotics. Therefore you need to have an MQTT broker up and running. Moreover, in most cases, it is a Mosquito and it is installed on the same machine as Domoticz. Under this assumption, we will continue configuring Tasmota. On the MQTT menu, you only need to edit the first field named Host(). There you enter the IP address of your MQTT broker. If it is installed on the same machine as Domoticz than IP address is the same. If you left everything on default values during Mosquito and Domoticz setup, no need to do anything else here.
This part can be a little tricky if you do not know how MQTT, and Domoticz work, but I will try to make it clear and in pairs, so it is easier to understand it. First, we will deal with SDS011. Since it has readings of PM 2.5 and PM 10 we will need to create two virtual sensors. Moreover, since the process is the same only one will be shown here. You go to Domoticz website- Setup menu in the top right corner then hardware, and after that chose “Create virtual sensor”.
Then you name it PM 2.5 since it will be for that sensor data, chose “Custom sensor” from the drop-down menu, and add “μg/m3” as axis label as these are the units that sensor actually measures.
This virtual sensor is gonna display data from the SDS011 physical sensor. Meanwhile, next thing to do in Domoticz is to go to Setup/Devices and check the “idx” of the newly created sensor. You can find it at the end of the list or by searching for its name.
It`s time to follow this setting in the Tasmota Domoticz menu. Idea is to configure tasmota`s predefined value (in this case Sensor idx 7 Voltage/PM2.5 with idx of the newly created virtual sensor named “PM 2.5” in Domoticz. So we enter the value of 192 to that place.
Further, I will explain the creating and mapping of a Temp+Hum+Baro virtual switch. Proces is the same, create virtual switch but this time chose like this:
Again check the idx of the virtual sensor on Setup/Devices menu
After that, we go back to the Tasmota page and into Domoticz menu and this time set the value of the ” Sensor idx 3 Temp,Hum,Baro” to 148. This has to be repeated for every sensor added, on both sides!
If you find this article interesting maybe you should check on this one also. Once more, thank you for reading, and if you have any questions or need help, just post a comment. I’ll get in touch with you asap.