@TijnOnlijn My problem is that I want to monitor pollution in a garden located ~500m away from the nearest power outlet (that isn’t mine, mine is 2.5km away!), that’s why energy has to be optimised
I have a 3,7V 2000mAh battery linked to a TTGO V2 ESP32 board (that is really better than Heltec ones @Phil_Wilko) that is pretty power savvy using deepsleep mode, and a solar power board that charges the battery, coupled to a 3W solar panel.
If i’m considering buying PMS7003 (which is nearly the same as your PMS5003 @Phil_Wilko), you advise me to power it for one minute before reading the value, to have a correct one?
Hi Kalon, slightly offtopic, but I guess relevant for any pollution (power hungry?) node.
How are you controlling the charge to your battery - do you just use a solar panel to power a USB power board like this
to power the TTGO (which has a lipo battery?)
Just wondering about the performance of a 3W solar panel
On the tutorial I posted; Dominik managed 80 hours on a 700mAh battery. That included a significant amount of power drain removal work and use of deep sleep modes on the ESP32. That seems realistic, so you may want to look for a large battery and solar panel to support your node. For many potential use cases the power requirements of the sensor now far exceed the microcontoller.
One obvious option may be to run the sensor much less often; say once a day; dropping into deepsleep
Another option is to build up a bytearray of very limited data from the sensor (say PM2.5 reading only) and send the readings via LoraWAN only infrequently (weekly?)
Sorry, I am really bad at reading (and answering) questions…
The PM5003 datasheet indicates 30 seconds of fan running should allow a correct reading.
My experience is that it takes 30+ seconds to get a decent reading. Also, the first reading from the PM5003 is usually poor for some reason. This observation has been made by others too.
Sorry, @kalon33 I have no experience of the PMS7003.
@CurlyWurly not that offtopic, because power is key for such nodes.
I will use Solar charger shield from Seeedstudio to deal with the solar panel and recharge the battery that is connected on the TTGO board battery connector (that has a LiPo charger module). I don’t have tested that yet, and hopefully I will receive the board in the next few days. But indeed, there are cheaper board that could do the job. Here I was looking on a easy to use solution, being able to produce both 3V3 and 5V, deal with LiPo charging and Solar panel variable power input.
I don’t know yet how to deal with the fact that the PM sensor requires 5V and I only have 3.3V. The solar charger board is switchable from 3.3 to 5V, and if I looked at it correctly, can produce both. So that could be a solution, moving the battery from TTGO to the solar board. But I exclude the fact that the PM sensor would then be constantly powered on…
Ideally, it would be great to find a switchable step up power regulator PCB, that would convert 3V to 5V, and that I could switch on and off using the TTGO in order to save battery between measurements.
Any idea? Maybe @BoRRoZ who has seen lots of hardwares has the solution?
@Phil_Wilko on the tutorial you posted, it seems that he waits only 7 seconds before measurement, discarding the first one, you confirm that you need not less than 30s? That might be because he averages ~10 measures, so finally, more time is spend.
I have been testing a few solar panels recently.
Today, It is cloudy (no sun) and my cheap 10w solar panel shows an open circuit voltage of about 11V.
This morning, I connected it (via diode) to a fully charged 6V wet battery (7ah) which has no load.
With this setup, I see a charging current of 17 mA and the battery voltage has floated to 7.2V.
(I’ve disconnected the battery now)
However, it was very sunny a few days ago and a similar test showed a current considerably more. So much so, that the non-loaded battery voltage went too high and I could hear the battery outgassing (!)
I’ll be interested in the performance of the shield. From what I am seeing, the problem with seasonal solar power is that it has to be wildly overspec’d to cater for Winter.
i.e. even a 10w solar panel only gives 17ma for a few hours during Winter to a 6v battery.
Thats not 10W, more like 0.1W going into the battery
(N.B. On a Sunny day, this setup gives about 40ma)
I have tried to use buck/boost convertors, but they take too much power to operate and during the cold darkish days of winter, I found it better to just put the solar panel straight to the battery.
I’m thinking of adding Zener diodes / LEDs to shunt the charge on sunny days when the battery is fully charged. I can then start the measuring of how much power can be sustainably drained.
Total cost of this is under £40 (£18 for panel, £16 for Battery, £4 for other stuff), its way too high for LoRawan, but I need the power capability for other reasons, and high drain is expected at night as and when
Hopefully, others can chime on on their experiences for solar stuff for more “in between” power such as your case?
Please can you post back on the performance of the shield ?
Maybe you need to alter the measuring frequency depending on battery condition?
So @kalon33 the problem with deviating from the manufacturer’s datasheet is that, although you may get at reading in less than 30 seconds, you cannot really trust the result. A temp sensor reading is relatively easy to verify but an air pollution particle sensor is another thing altogether.
How important is the measurement accuracy?
Isn’t it better to get an accurate measurement, less often?
Also, don’t forget to take the humidity reading first, if its too high, don’t start the PMS5003 at all as the reading will be incorrect.
Hi guys, I authored the tutorial that @Phil_Wilko mentioned. I’m so glad that you found it useful! Allow me to chip in with a bit of further explanation:
On 30s offset requirement
I didn’t find the 30-seconds requirement in my 5003 datasheet, and I suppose it might have been coined by the users finding out that the initial measurements are skewed. The only thing mentioned there is “the response time less than 10s”, and indeed around 5-7 seconds is needed from booting up the sensor until it starts transmitting data.
I have seen a 30s requirement mentioned in PMS7003 datasheet though. I actually just searched the Chinese datasheets for PMS5003 and PMS7003 for “30” and found it only in the second one, in context of a response time.
My point is, I couldn’t verify the 30s measurement delay with my testing. After booting up the sensor and reading frame by frame, the first one was off by some margin, but then already the second measurement was pretty close to the rest of them, with no significant difference after 10, 30 or 60 seconds. Maybe I was lucky enough to get an exceptionally good sensor but that’s what my numbers say.
Also, I’m getting pretty stable results with every measurement - I’m reading the sensor data every 10 minutes and don’t see a huge variation in readouts, but rather they follow a trend line, especially if you draw a 1-hour mean. I mean, I wouldn’t expect a laser precision anyway from a 20$ sensor.
For a “production” version of the sensor I’d probably go with measuring every 30 minutes and then I could afford a 30s wait time, considering power consumption…
While it makes sense that high humidity (>70-80% RH) would affect the measurement, I can’t confirm it either. It manifests itself e.g. when I take the sensor back home from the outside on a cold day, and the droplets gather on the surface of the sensor. Also, a friend of mine noticed that the sensor goes nuts when placed close to the humidifier, most probably by recognizing water particles as dust. In normal measurement conditions, however, I can’t see that the readout is skewed.
There might be some systematic error added to my measurements, especially that now in winter I rarely observe humidity lower than 70%, but I would need some more testing to confirm that. It would make sense to put the sensor next to the official air quality monitoring station (the nearest one is downtown around 5km from my place), but anytime I compare my results with official info or data from other public sensors, it’s very similar, I’d say within 5-10%. And most importantly, I don’t see my results being significantly higher than those of other sensors around me.
Perhaps the placement of the sensor makes a difference. In my case, it’s on the wall outside, but still under the roof, so it’s not affected directly by rain or snow.
When I read similar discussions on PMS5003 and humidity on Polish forums, the consensus was that companies that sell PMS5003-based sensors don’t adjust the readout for humidity
If possible, go with LoRa. I’m now evaluating LoRaWAN with my sensor and even though the PMS5003 accounts for most of the battery drain, I’m getting close to 20 days on a single battery charge (sending packets one by one), while with Wi-Fi my battery died (permanently) after 16 days (sending batched data for 6 measurements every hour). Read more here:
That’s how it works for me, but apparently, your mileage may vary. I hope it helps though and let me know if anything is unclear
@kap great to see you are on the forum, I could not recognise your name!
The English Product Data Manual “Circuit Attentions” section states
"4. Stable data should be got at least 30 seconds after the sensor wakeup from the sleep mode because of the fan’s performance."
Accounting for the Chinese English, I take this 30 s as a requirement.
Having re-read the manual I agree with @kap and cannot see a humidity constraint. However I have definitely read this somewhere, I have 80% in my code which is pretty low (but not for Australia where my sensor is located). Perhaps it is on the Citizen Science website somewhere. I will keep looking.
That was my first post on the forum, as I noticed traffic coming to my website from here so I went to check what was going on
I’ll be getting 10 PMS5003 units soon (waiting for shipment) so I’ll definitely do some more testing with various devices. I believe that waiting for 30s and measuring AQ every 30 minutes would drain even less battery than what I have currently, and having a readout twice an hour is still an acceptable granularity. Thanks for bringing this up Phil!
MySense is an Open Source Python framework for air quality measurements (sensor kits) and data proxy server. The framework supports all types of PM sensors (Dylos, Nova SDS011, Plantower PMS7003, Shiney PPD42NS, GPS, gasses (NOx, SO2, O3, NH3) sensors from Spect, meteo (DHT22, BME280/680). Comminucation: LAN, Wifi and LoRa.
Together with national health institute we had quite some (more as a dozen…) sensorkits equipt with SSD011/DHT22/Marvin LoRa for two month now running in several locations in Holland.
Experiences: SSD011 differ amongs each other, operable life time is limited for fan and laser, DHT22 differ too much (BME280 too) to be reliable for calibration of measurements, Marvin signal strength is limit is 1 km. The good story is: probably with more tests some type of calibration can be done. Personally a favor BME280 or BME680 (more reliable), and PMS7003 (more PM sizes, less energy, but no tube air inlet) and probably the PyCom LoRa controller (Python, antenna).
PM sensors have a fan: need more energy. I have my doubts on using (small) batteries in sensing air quality. E.g. a small TTN temp/light/motion/ESP LoRa sensor empties the battery in 3 weeks time.
See the github for the map “statistics” for the calibration reports.
@kap@teus How do you deal with PM sensor and BME280 module waterproofing? I have a waterproof box to put the “main circuit” (an ESP32 LoRa based board, TTGO V2), a battery and the UV sensor in (under a transparent plastic sheet “window” for this latter one), but I don’t know how to deal with these two modules to have them “in the wild” (as I also need accurate UV measurement, I can’t have a roof on it) and get accurate PM and temp/humidity measurement too…
@kap I saw on your pictures that you have a roof on top of your node, but did you test other configurations?
As you noticed, I didn’t have to bother too much about waterproofing. The next step that I have in mind (just waiting for more sensors to arrive) would be to put the PMS5003 inside the box entirely and just cut out holes to match sensor’s vents. Not yet sure how to handle the humidity sensor, though.
Have a look at how airly did it: https://airly.eu/en/sensor/
Rumor has it they are using PMS5003 too. The sensor is on the bottom of the box, facing down, behind the meshed part of the case. You won’t get this with any universal case I guess, but that’s how it’s done in a production unit.
How do we deal with waterproofing: we have 3 types of boxes: an upside down PVC rain collector of rain gutter with holes covered with gutter end pieces, PVC air roof outlet and outdoor V220 electricity connector box (see for pictures http://behouddeparel.nl/samen-meten).
Meteo people use Stepheson screens (more expensive).
My favor is Plantower PMS7003 (small and more PM ranges).
Warning 1: humidity above 70% is causing exponential raise of PM values. A report on this is in progress. I prefer the BME Bosch meteo sensors.
Warning 2: PM and meteo sensors differ in the production batch as well between manufacturers. You need to do calibration. See https://githup.com/teusH/MySense for this.
In MySense we use LoPy and Plantower PMS7003 or Nova SDS011. Wiring is simple on the PyCom or LoPy board. The big advantage is the functionality with python and so the ability to use multi threading. Make sure you upgraded to the latest firmware release.
See https://github.com/teusH/MySense the folder PyCom for details of the wiring and how to read the values of the sensors.
Yes it is running now outside for several months. Main problem so far is that meteo sensors need to be reset (I2C bus problem) or too wet. Some good meteo sesors (Bosch 680) or Sensirion (SHT31) one can heat up the sensor when needed. We did not discover much corroted leads. The air tube we use have a firm natural (convection) air throughput.