Mobile Pi monitAir device

Here is my latest
monitAir Raspberry Pi device
It’s designed to be mobile or fixed, it doesn’t matter other than the power source.

Now forgive me for no fancy formatting, but I’m on my phone for the pictures. :wink:

Just before the lid goes on and power up

All unpacked ready to get squeezed in

It is a tight squeeze as the SDS011 is almost the size of the 80x80 IP55 box.
But it goes in,
The GNSS module is placed just behind the SDS011 as there is room.
The Pi ZeroW just happens to bolt on to SDS011 nicely, it has my preferred vibration reduction standoffs™*

Everything is removable, I was going to solder everything up to PP points (usb), GPIO points and remove and make it more compact, but this just makes it easier to change and fix.
Speedfit/polypipe tube is used at the bottom, cutting off the 14mm entry point. This keeps it in place, tight and waterproof. An o-ring or similar could be used to stop it from being pulled out, there seems no need here.
The BME280 is slipped down the tube, this will be fed air that comes in the SDS and must pass the exhaust down the tube and out.
Possibly with reduced humidity, I don’t know.
But the values may be compared to an outside source and calibration compensation adjustments made (this is how it normally done in say a phone or other cases.)
I’m not so worried about these results, it’s more to pick up humidity readings.

That’s about it, it running python3 software at boot, timestamps are created from the gnss, which is especially useful for a Pi device as it doesn’t keep time itself at reboot but uses a last known time.
So time should always be accurate

I hope it keeps working :slight_smile:I’m buying some 2m USB cables for a stationary device power, it can then go on walls etc

*They are actually little rubber terminal protectors found on a brand of PP3 battery, could be Duracell Industrial?

1 Like

Great project! Very neat layout with possibilities to re-work!

So far the temperature is working nicely. It is tracking close (half a degree) to a calibrated digital thermometer I have. (Though it was some time ago it was calibrated, it’s thermocouple based)
Which is probably as good as it’ll get.
I could implement some sort of cpu temp adjustment calibration too, but I don’t think it is needed. Since I don’t think the BME280 temp is really design for absolute temp.
It says in the blurb it is ambient temp if wanted and it is mainly there to calibrate the humidity/pressure, so if you are trying similar, don’t try to hard.

The airflow is good, the cables are more robust than I thought, I’ve dangled 20Ah and 10Ah USB power packs and man handled it into by bag etc.

Only problem is something in my setup is buggering up the GPS time read which is a minor problem. It is also why I get* a burst of 6 @second apart and then a big thime gap in the record. I logged all the timing locally at each point and all is good.
(*Currently it using system time so is correct apart from at .the very start of a reboot)

It’s not actually a burst read, just a timestamp problem.

I might switch over to the GPSD deamon and read from that and not direct from serial (another advantage is I can then set the clock time on the Pi itself.)

1 Like

I keep thinking how to add a camera and create a small waterproof window.

I can tell you deodorant aerosols will spike readings, as seen when the boys at the sports changing room uses them.
It agrees with my test with it as well.
Just something to note in placing them, be aware of the surroundings.

I had a thought of using ‘non-absorbing cotton wool’ in the outlet tube to stop bugs getting in. But then it may cause a back pressure (easy to see as the sensor would pick it up).
Also it would need changing as it would filter the air coming out too. Which is not the best idea.
A small mesh is probably better.

(I guess like the water inlet filter you’ve been looking at?)

Is that a Raspberry Pi Zero?

Yes a ZeroW.

For this weekend it’s co-located with it older brother.

1 Like

Nice! Do keep us updated as to how it’s doing :slight_smile:

8:20am till 8:43am the next day.
So one full day of use on a 37Wh (10Ah) USB power bank.
AUKEY Power Bank 10000mAh, Compact Portable Charger.
Which was £14 a year ago.

20Ah version of that currently attached after changiver this morning.

It is recording every 2.5mins iirc.
SDS set to always on mode.
GNSS always on
WiFi always on
BME280 always on (i don’t think I have it set to on demand).
No small power optimization of the Pi Zero either.

Rough calculation.
37Wh/5V /24.3h ~= 300mA drain.
Seems about right assuming 37Wh is best case charge.

SDS011 : 70mA ±10mA
Ublox M8030-KT : 21mA @ 3.0 V (Continuous) (will be more as the module)
PiZeroW : 120mA idle to 160mA load
BME280 a magnitude less than the others?

Nice! Looks like there’s lots of scope for reducing power usage too.

Since you’re using a Pi Zero, you shouldn’t have to worry about program space as much as I have (blog post coming soon on this - long story short I’ve got 26 bytes program space to spare…), so you should be able to put that ublox GPS unit into eco mode. Maybe this will help, along with the protocol spec? Unfortunately you can’t set eco mode with NMEA, the text-based protocol.

Not sure how long that BME takes to warm up, but it’s possible that you can turn it off effectively between readings to save power.

In terms of the Pi itself, making sure there are no services running that don’t need to be should help. Try installing htop and checking it for processes that are running. Also try powertop for (mostly transparent) power tuning - but don’t forget that you need to copy the commands it shows you when you change a “bad” to a “good” and paste them in /etc/rc.local for them to persist.

There are a few other Pi tweaks, turning of part of it HDMI Bluetooth, checking WiFi has power save enabled or go bare metal (never tried this last part)

I’ll have a look at the Ublox power save.

The SDS of course could do with shutting power save, but as is the PiZero cannot cope with it and no capacitor will help.
Also always on helps keep the inside cool and the BME with airflow.

There is an on-demand mode for the BME280, but it wasn’t working and you loose filtering of some sort I think (technical name escapes me this morning).

I also have the nodeMCU setup and running of a lipstick usb battery (~3Ah at a guess) in the same (but larger) case now, no GNSS/GPS attached though. That’s because I could find my serial one when putting it together.

It is not as tidy inside though and I had to remove loads of pins from the nodeMCU board as I don’t like them just free to touch anything.

It is of course a LOT more power effecient. (See other post for that, once I get the time to finish it off). Busy week this week.

As for this, I intend to have the Zero switch to AP mode if no WiFi after a while, just need to find my documents.
First I’ll bump it up to Raspbian “Buster” as that now the current release.

The aim of the Pi version is to make an programming version (for learning). I find it a bit nicer to use python, a Pi than Arduino or just flashing firmware.
That and after finding I could bolt it direct to the SDS, I just had too. It is tidy.

Also the PiJam in a few weeks will be having a good look at them if they want.
I’ll take all three along.

1 Like