Maker.io main logo

An Outdoor Air Quality Station with Enviro+ and Luftdaten

2024-01-18 | By Pimoroni

License: See Original Project

Courtesy of Pimoroni

Guide by Pimoroni

Let's contribute to citizen science! We're going to build an air quality ‎monitoring station that can be mounted outside your house (or office, or ‎wherever) that sends data to Luftdaten, an open data project that maps air ‎quality using low-cost air quality monitoring devices.‎

We built Enviro+ specifically for this purpose (as well as lots of other uses) as, ‎traditionally, air quality monitoring devices have been out of reach for most ‎people, costing tens of thousands of pounds. This project costs less than a ‎hundred pounds and can be built and deployed in just a couple of hours.‎

This tutorial will guide you through attaching Enviro+ and the particulate ‎matter sensor to your Raspberry Pi Zero W, installing the necessary software, ‎signing up to Luftdaten, and then fitting your Enviro+ in a weatherproof ‎housing that can be attached to the outside of your building.‎

Note: Make sure that you have permission to attach your Enviro+ air quality ‎monitor to wherever you're attaching it!‎

What you'll need

Here's a list of what you'll need for this project:‎

It should take a couple of hours to put everything together.‎

Attaching Enviro+ to your Raspberry Pi Zero W

Although Enviro+ works with any 40-pin version of the Raspberry Pi, for this ‎one you'll need to use a Raspberry Pi Zero W, due to its small size and built-in ‎wireless networking. We'd recommend the Pi Zero WH, as it comes with a ‎pre-soldered header.‎

First, let's attach the metal standoffs to your Enviro+. Hold the standoffs ‎underneath the mounting holes at the four corners of Enviro+ and use four of ‎the metal M2.5 screws to secure them. If you're using just two standoffs, ‎then attach them to the two mounting holes on the front edge of Enviro+ (the ‎long edge furthest from the header).‎

raspberry_1

Push the Enviro+ female header down onto the male header of the Pi Zero W, ‎making sure that all the pins are lined up correctly, and secure with the ‎remaining M2.5 metal screws.‎

screws_2

Attaching the PMS5003 particulate matter sensor

Note: Do this part BEFORE powering on your Pi, as hot plugging the sensor ‎will cause you Pi to reboot!‎

Plug one end of the cable (supplied with the PMS5003) into the connector on ‎the PMS5003 particulate matter sensor.‎

Note: It'll only fit easily one way round, so if you're having to force it then ‎stop what you're doing and try it the other way round!‎

Plug the other end of the cable into the connector on the underside of Enviro+ ‎‎(below the PM label on the top side), again making sure that the cable is ‎going in the right way round!‎

You can peel the blue plastic protective film off the particulate sensor if you ‎wish but leaving it on won't cause any problems.‎

plug_3

Setting up your micro-SD card

You can find really good instructions on how to set up your micro-SD card ‎with the Raspbian operating system in this guide from Raspberry Pi. If you're ‎a beginner, it's best to use the full "Raspbian Buster with desktop and ‎recommended software", as it's a little easier to set up and use, but you can ‎also use Raspbian Lite, if you want. This tutorial will only cover how to set ‎things up with full Raspbian Buster with desktop and recommended software.‎

Booting up and connecting to Wi-Fi

Before we put everything into its weatherproof housing, we'll need to boot the ‎Pi up, connect it to Wi-Fi, set all of the software up, and test to make sure it's ‎working properly.‎

Note: This is a good opportunity to test your USB cable and power supply to ‎make sure that they can supply enough power to run your Pi Zero W, etc., so ‎use the same cable and power supply here as you'll be using for the final ‎build.‎

You'll need a display, keyboard, and mouse connected for this part, as it'll ‎involve some typing and such. If you don't want to fiddle around with USB ‎hubs (which you'll need to connect the keyboard and mouse to the Pi Zero W ‎at the same time) and such, then you can do this next setup part on a ‎Raspberry Pi 3 B+, if you have one, and then switch the micro-SD into the Pi ‎Zero W once it's done.‎

Pop the micro-SD card into your Pi and boot it up now. Because it's the first ‎time you're booting the Raspbian OS, it'll guide you through connecting to ‎your Wi-Fi network. Connecting to Wi-Fi is essential for the rest of this tutorial.‎

Installing the Enviro+ software

Now that we've booted up our Pi and connected to Wi-Fi we can install and ‎set up the Enviro+ software!‎

Open a terminal (press control-alt-t or find it in the Raspberry Pi menu) and then ‎type the following:‎git clone https://github.com/pimoroni/enviroplus-python

Copy Code
git clone https://github.com/pimoroni/enviroplus-python
cd enviroplus-python
sudo ./install.sh

There's just one other requirement that's needed by the Luftdaten script we'll ‎be running that's not installed either by default in "Raspbian Stretch with ‎desktop and recommended software" or by our installer.‎

Type the following in the terminal:‎

Copy Code
sudo pip install smbus2

Once that's all done, type sudo reboot to reboot your Pi and apply the changes ‎to the Pi's interfaces.‎

The install script enables I2C, SPI, and serial, disables the serial console, and ‎enables the miniuart interface that the Pi uses to talk to the PMS5003 ‎particulate sensor.‎

If you ever need to revert these changes to the UART and serial configuration, ‎then you can run the uninstall script by typing sudo ./uninstall.sh within ‎the enviroplus-python folder in the terminal, and then sudo reboot to reboot and ‎apply the changes.‎

Testing the Luftdaten script

Our Luftdaten script reads the temperature, pressure, humidity, PM2.5, and ‎PM10 (both measures of the concentration of particulates in the air, 2.5 ‎microns and less and 10 microns and less in ug/l of air) and sends those data ‎to the Luftdaten server.‎

For Luftdaten to receive data from your Enviro+, you'll have to register with ‎them and add the serial number and details of your device (we'll do that in ‎the next section), but the script will still run without that being set up.‎

Let's run the script now. Type the following in the terminal:‎

Copy Code
cd enviroplus-python/examples
python luftdaten.py

The script will print the readings from the sensors to the terminal. It'll also ‎display the serial number of the Pi that you'll have to enter on the Luftdaten ‎site on the LCD on Enviro+. Take a note of the serial number now.‎

If possible, it's good to leave the script running until we've registered with ‎Luftdaten and set up our device, as we should be able to see the data ‎starting to come through once it's set up. If not, you can press control-c to stop ‎it and then start it again after we've registered with Luftdaten.‎

Registering with Luftdaten and setting up your device

On a separate computer, head to: https://meine.luftdaten.info/register

Type your email address that you want associated with the account and a ‎password and then click "Register". Complete the registration process by ‎following the URL sent by email.‎

register_4

Click on the "My sensors" page and then "Register new sensor".‎

sensors_5

In the box that says "Sensor ID", type in the serial number that you made a ‎note of earlier from the Enviro+ LCD, making sure that you type it carefully ‎and correctly.‎

Under "Sensor Board", select "raspi".‎

Give your sensor a name in the box that says, "Personal sensor name", ‎something like "Eric's Enviro+", and then fill in your address details. If you ‎don't want to reveal your exact location, then you can leave the "Publish ‎exact location" box empty.

name_6

In "Additional information", fill in the details of where your sensor is located.‎

Under "Hardware configuration", select "PMS5003" from the first dropdown, ‎and "BME280" from the second dropdown. Do not change the numbers in the ‎PIN boxes! They should be "1" for the PMS5003 and "11" for the BME280.‎

Click the "Lookup entered address" button and then pinpoint your location on ‎the map or enter your latitude and longitude manually.‎

lookup_7

Scroll to the very bottom and click "Save settings" to save the entered sensor ‎settings. On the "My sensors" page, you should now see your sensor listed.‎

If you still have your sensor running, then you should see that the responses ‎are now successful, as the Luftdaten server knows now to accept your data. ‎If you don't still have it running, then run the example again now, following ‎the instructions above in "Testing the Luftdaten script".‎

After a few minutes, you should see the "Last Update" time and date change ‎to indicate that data has been received. If you click on "Data", then you'll see ‎the most recent data, and if you click on the links "show on map", then you'll ‎see your data on the map.‎

This means that your Enviro+ is working and sending data successfully to ‎Luftdaten!‎

If you click on the tab at the bottom left corner, then you can change the ‎variable being displayed. You can also download your data as a CSV ‎from: https://archive.luftdaten.info/.‎

If no data is being sent (i.e., it says "Response: failed" in the terminal), or if ‎your data is not appearing on the "My sensors" page after more than 10 or 15 ‎minutes, then double-check that you entered the serial number correctly from ‎the LCD and that no other errors are appearing in the terminal.‎

Running the script automatically

We want the luftdaten.py script to run automatically when your Pi boots up, so ‎that we can put it into the housing, plug it into the power, and then have it ‎just work.‎

An easy way of running a script automatically on boot is to use crontab, a job ‎scheduler, which has an @reboot command that will run a script or command ‎when the Pi first boots up.‎

In the terminal, type crontab -e and then select nano as the editor.

‎Scroll down to the very bottom of the file with the arrow keys and type the ‎following line:

Copy Code
@reboot sudo python /home/pi/enviroplus-python/examples/luftdaten.py &

Double- and triple-check this command to make sure that it's exactly correct, ‎as any error will cause it not to run on boot.‎

Press control-x, then y, then enter to exit and save the new crontab.‎

You should now shutdown your Raspberry Pi Zero W, either through the ‎Raspberry Pi menu, or by typing sudo shutdown -h now in the terminal.‎

Now, let's go ahead and build it into the weatherproof housing!‎

Mounting your Enviro+ in the weatherproof housing

For this part of the tutorial, you'll need a few things:‎

  • ‎2x pieces of square 112-degree gutter downpipe offset bend (65mm ‎dia)
  • ‎3M Command Strips (we got the medium-sized ones)
  • Some duct tape
  • Long cable ties

things_8

You should be able to get all of these bits at your local DIY/hardware store. ‎We got our bits from B&Q in the UK, but you should also be able to find them ‎all at Amazon, they’ll cost around £10 or less in total.‎

Let's start to build it!‎

First, we'll attach the Command Strips to the bottom of the particulate sensor. ‎They're great because they let you remove your Pi and particulate sensor ‎from inside the housing if you need to, but otherwise hold it really securely.‎

Peel the backing off from one Command Strip and stick it onto one side of ‎the particulate sensor. Take another Command Strip, line it up with the one ‎you stuck on the sensor and then push them firmly together.‎

peel_9

peel_10

Take one of the narrower (male) ends of the downpipe bend, peel the ‎backing paper off the exposed Command Strip and stick it just inside the top ‎of the pipe, so that the cable sticks outward and the fan side of the sensor ‎faces down inside the pipe.‎

downpipe_11

Now, take the Pi Zero W and stick another two Command Strips onto the ‎underside, in a similar fashion to the sensor. In our testing, we haven't had ‎any issues with the Command Strip or its adhesive shorting any of the test ‎pads on the underside of the Pi Zero W, but if you're concerned about it then ‎you can stick some electrical tape onto the underside first.‎

Plug in the particulate sensor cable if it isn't already still plugged in.‎

cable_12

This next part if slightly tricky and might involve some trial and error to get ‎things positioned just right. The basic idea is to mount the Pi Zero W at an ‎almost 45-degree angle so that the USB power cable can fit.‎

Thread the USB cable up through the second piece of downpipe bend and ‎plug it into your Pi Zero W before doing this part, so that you can tell whether ‎it's fitting.‎

Stick the Pi Zero W just below where you mounted the particulate sensor at ‎an angle, so that the USB cable connector will fit once the other piece of ‎downpipe bend is pushed on.‎

test_13

Test the fit of the other piece of downpipe now, making sure that it's pushed ‎all the way in, and don't force it if the USB power cable is preventing it going ‎together. Instead, take it apart again and reposition things to make them fit ‎correctly.‎

fit_14

Before we tape the two pieces of downpipe together, it's a good point at ‎which to test that the script is running on boot correctly and still sending data ‎to Luftdaten. Plug the USB power in, leave it for 5 or so minutes, and then ‎check the "My sensors" page at Luftdaten to ensure that data is being sent.‎

Finally, use some duct tape to carefully seal along the join between the two ‎pieces of downpipe bend to ensure that no water gets in. An alternative is to ‎seal the join with some silicone sealant and then use duct tape on top to hold ‎everything secure, if you want it to be especially watertight.‎

duct_15

Mounting your housing outside

We mounted our housing to a downpipe from the guttering using some long, ‎heavy duty cable ties, as in the photo below, but we'd encourage you to get ‎creative with where and how you mount your housing.‎

Again, make sure that you have the appropriate permission to mount your ‎Enviro+ housing wherever you're mounting it, and take the necessary ‎precautions if you're using a ladder and/or working at height.

mount_16

Power alternatives

We used a long USB (A to micro-B) cable and USB power brick, but you could ‎also use some good-quality heavy-gauge wire or Cat5e cable, a 5V supply, ‎and solder straight to the 5V and ground pins on the Enviro+ (on the GPIO ‎breakout pins.)‎

Another option, which limits the potential for voltage drop across your cable, ‎would be to use one of our Wide Input SHIMs and a 12V power supply with a ‎long barrel jack cable, similar to those used for CCTV systems. The ‎advantage of Wide Input SHIM is that it will provide a regulated 5V at 2A, ‎plenty to power your Enviro+.‎

Upgrade ideas

A couple of pieces of fairly course plastic meshing cable-tied around the ends ‎of the housing can help to prevent insects or birds from taking up residence ‎in your housing. Make sure that it isn't too fine though, or it will prevent air ‎‎(and particulate) flow to the sensor.‎

You could adapt your code and add an LED that sticks through a hole in the ‎housing to show whether the script is successfully sending data to Luftdaten, ‎again using the GPIO breakout pins on Enviro+ (the pin marked #4 AKA pin ‎BCM 4 is ideal.)

Make sure that you share your Enviro+ hacks and modifications with us ‎on Twitter or Facebook!‎

That's all folks!

制造商零件编号 PIM458
ENVIRO+ FOR RASPBERRY PI
Pimoroni Ltd
制造商零件编号 PIM477
PARTICULATE MATTER SENSOR BREAKO
Pimoroni Ltd
制造商零件编号 SC0020
SBC 1.0GHZ 1 CORE 512MB RAM
Raspberry Pi
制造商零件编号 SC0252L
16GB SD CARD NOOBS SOFTWARE
Raspberry Pi
制造商零件编号 PIM271
WIDE INPUT SHIM KIT
Pimoroni Ltd
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum