Canari - a Lamp That Transform Air Quality Measurement Into Light Patterns




Introduction: Canari - a Lamp That Transform Air Quality Measurement Into Light Patterns

About: I'm a designer based in Brussels, Belgium.

Canari is a lamp that transform local air quality data into light patterns. It draws its inspiration from the canari, a bird that was the coal-miners companion and alerted them when the air was contaminated.

The table lamp version of the project is supported by @kikk_festival through its edutainment program. A program that gathers academics, designers and companies around a theme related to science πŸ‘¨πŸΎπŸ”¬πŸ‘·πŸΌβ™€οΈπŸ‘¨πŸ½πŸ’»πŸ’«

It was developped in collaboration with Martin Pirson and the team of the Trakk in Namur,

You can find more info on my website and on the kikk website


- glass globes 20mm

- brass tubes 6mm and 4mm (with <1mm inside thickness)

- mini tube cutter

- raspberry pi zero

- Adafruit 16-Channel PWM / Servo Bonnet

- electronic leads/ dupont cables

- mini-button

- screws

- Suspension lamp canopy
- slip tube/rope/thread grip

- LED 3mm

- 3D-printed base

- 3D printed LED holders (7 or more depending on how many tubes you want)

- 3mm inserts (wood) and 3mm screws.

Step 1: Prepare the Tubes and the LED Holders

Print the base and the LED holder according to how many you want.
Cut the 6mm tubes according to how many and how tall you want them to be.
For this example I cut them at these lengths:
- 175,150,125,100,100,75,50mm

Cut small pieces of the 4mm tubes to put them on top of the LED: in this case it was more or less 1-3mm.

Once it's done you can assemble the led with their holder and the electronic dupont cables. You have to cut the legs of the LED so that they stop inside the dupont cables.

Step 2: Place the Insert in the 3D Printed Base

In order to join the base and the suspension lamp canopy, you can use insert in the hole of the 3D print, I used a soldering iron and it works ok.

More on inserts in 3D print in this video.

Step 3: Screw the Tube Grips to the Base

In order to fix the tube, you will need tube holders, these can be screwed directly from the canopy. I had to drill a few holes on top of the existing ones in order to be able to use 7 tubes, plus I added two other holes for a button and a status light.

Step 4: Assemble the Tubes and the Raspberry Pi With the Dupont Cables

Once you got all the elements, you can start to assemble, using gloves will make sure that your brass tube do not oxydate too quickly and keep their shiny color.

For the electronic side, you can find a detailled explanation of the code and electronics on this github.

The connections are as follow:

One WS2812B addressable LED plugged on 5V,
GND and GPIO 18One momentary switch plugged between GND and GPIO 21
White 3mm LEDs plugged on Signal and Ground of the PWM Bonnet (starting from 0 to 7)

Step 5: Screw on the Button

Screw the switch button on the base of the lamp.

Step 6: Add the Glass Globes

Once everything else is completed, you can add the glass globes, you can either let them rest on the holder or add a tiny bit of glue to make sure they don't move.

Step 7: Connect to the Interface and Experiment With Different Stations

Once connected to the internet, the lamp will fetch data from public API to determine the air quality. It has no embedded air quality sensor at the moment.
At the moment, the interface lets you choose between two types of data stream ( PM2.5 and PM10) and relies on two open-data API. The two are citizen-science project.
The first one is, a project initiated by a consortium of partners led by fablab Barcelona.
The second one is (formerly known as lufdaten), a project started in Germany.

You can choose to follow a specific sensor on the interface by using its id number or use GPS coordinates.

Step 8: Enjoy Your Air Quality Lamp

And let us know if you built it :).

STEM Contest

Participated in the
STEM Contest

Be the First to Share


    • Furniture Contest

      Furniture Contest
    • Make it Real Student Design Challenge #3

      Make it Real Student Design Challenge #3
    • Arduino Contest

      Arduino Contest



    3 days ago

    Looks great mate


    25 days ago

    This instructable seems to neglect the most important elements. What does it do and what does that mean? Sure, it has lights reacting to air quality information, but why? Is it to be used as an indicator? If so, an explanation of the what the lights patterns mean is an essential aspect of the tutorial. Or, is it merely decorative where interpreting the lights is meaningless? If the latter, it seems pointless checking air quality at all, where you could use a random function instead, therefore we must assume the former which is most unhelpful without any explanation on what to expect or how to interpret the results. Heck, we don't even know if light denotes the desirable or undesirable. The 'how' is always secondary to the 'why'. Why would I bother spending time, money, and effort building this project? Until I can answer the 'why' I am not interested in the 'how'.


    Reply 24 days ago

    Hi Bevan Richardson,
    Thanks for your comment :) .
    You will find more information on this website: and I will try to answer you quickly here.

    The light patterns is coded in a way that mirrors the particles. The more particles in the air, the more LEDs are dimmed and the quicker they fade in and out. The light "movement" of the LEDs is an indication of the PPM2.5 or PPM10 in the air.
    The ambition of this project is to give a visualisation that is more instinctive and less dry that mere numbers.
    Of course, this is more an experimentation so only has a limited impact, but by putting this data in the visible spectrum, we also hope to contribute to the awareness around this issue.
    I hope this answers some of your questions :)


    4 weeks ago

    This lamp looks beautiful and the tutorial leaves nothing to chance, well done ! However, I wanted to understand how this works and where the data comes from, what is detected in the air etc., and I am struggling. I have followed the various links and even looked at the github article. I assume that the lamp does not have its own sensor ( none in the list ), but somehow calls upon local monitoring stations in the public domain. Perhaps I should build it and find out ! Thanks again...


    Reply 4 weeks ago

    Hi 20-Below,
    Thanks for the nice comment :) .
    You are right, the lamp does not have a sensor and rely on public API to get the air quality data. We implemented with two sources for the moment, from citizen science projects: and (formerly luftdaten).
    I will add the info to the tutorial later on.


    6 weeks ago

    Cool project! Thanks for sharing.


    5 weeks ago

    That's stunning!


    5 weeks ago

    Nice looking project.

    It'd be great to see some dark shots so we can see how the lights-in-globes look... Maybe a time-lapse video showing how the lights react to changes in air quality?


    Reply 5 weeks ago

    It's updated :). I added a small video showing the interface and the interactions with a former model.