4.3.8 PM2.5 Feinstaub-Erkennung
4.3.8.1 Übersicht

Bei der PM2.5-Feinstaub-Erkennung wird ein Laser-Staubsensor verwendet, um die Konzentration von PM2.5 in der Luft zu messen. Er kann die Staubkonzentration kontinuierlich überwachen, während Partikel gesammelt und deren Bestandteile analysiert werden. Partikel mit einem aerodynamischen Durchmesser von weniger als 2,5 Mikrometern nennt man PM2.5. Bei kleinerer Partikelgröße steigt die Aufnahme im Atmungssystem.
In diesem Projekt bauen wir ein PM2.5-Feinstaub-Erkennungssystem mit einem micro:bit-Board, PM2.5-Staubsensor, OLED-Anzeige, Zerstäubungsmodul und dem eingebauten Lautsprecher. Der PM2.5-Staubsensor erkennt PM2.5-Partikel in der Luft, und das OLED zeigt den erfassten PM2.5-Wert in Echtzeit an. Wenn der Wert einen Schwellenwert erreicht, löst der Lautsprecher Alarm aus und das Zerstäubungsmodul sprüht Wasserdampf, um den Staub zu reduzieren.

4.3.8.2 Komponentenkenntnisse

PM2.5-Staubsensor

Der PM2.5-Staubsensor ist mit einem GP2Y1014AU0F-Chip ausgestattet, um sehr feine Partikel mit einem Durchmesser größer als 0,8 μm, wie Zigarettenrauch, effektiv zu erkennen. Er verfügt außerdem über eine Infrarot-LED und einen diagonal angeordneten Phototransistor, die das von Staubpartikeln in der Luft reflektierte Licht erfassen. Er zeichnet sich durch sehr geringen Stromverbrauch aus (maximal 20 mA, typisch 11 mA) und sein analoger Spannungsausgang variiert linear mit der Staubdichte, weshalb er häufig in Luftreinigern, Luftqualitätsmonitoren von Klimaanlagen, PM2.5-Detektoren usw. eingesetzt wird.
⚠️ Hinweis: Der PM2.5-Staubsensor mit GP2Y1014AU0F-Chip benötigt mindestens 30 Sekunden bis 2 Minuten Einschaltaufheizzeit, um relativ genaue Messwerte zu erhalten.
Parameter:
Versorgungsspannung: DC 5 ~ 7V
Betriebsstrom: 20mA(Max)
Minimale Partikelgröße zur Erkennung: 0.8μm
Empfindlichkeit: 0.5V/(0.1mg/m³)
Spannung in sauberer Luft: 0.9V (typisch)
Betriebstemperatur: -10℃~65℃

4.3.8.3 Benötigte Komponenten
|
|
|
|---|---|---|
micro:bit V2 main board ×1 |
micro:bit shield ×1 |
Zerstäubungsmodul ×1 |
|
|
|
PM2.5 Staubsensor ×1 |
OLED display ×1 |
AA-Batterien (selbst bereitstellen) ×6 |
|
|
|
Batteriehalter ×1 |
4-poliges Kabel ×2 |
3-poliges Kabel ×1 |
|
||
micro USB Kabel ×1 |
4.3.8.4 Verdrahtungsdiagramm
⚠️ Beim Verdrahten bitte auf die Kabelfarben achten.
PM2.5 Staubsensor |
Kabelfarbe |
micro:bit shield Pin |
micro:bit Board Pin |
|---|---|---|---|
GND |
schwarz |
G |
G |
VCC |
rot |
V2 |
V |
LED |
blau |
1 |
P1 |
OUT |
grün |
2 |
P2 |
OLED display |
Kabelfarbe |
micro:bit shield Pin |
micro:bit Board Pin |
|---|---|---|---|
GND |
schwarz |
G |
G |
VCC |
rot |
V2 |
V |
SDA |
blau |
20 |
P20 |
SCL |
grün |
19 |
P19 |
Zerstäubungsmodul |
Kabelfarbe |
micro:bit shield Pin |
micro:bit Board Pin |
|---|---|---|---|
G |
schwarz |
G |
G |
V |
rot |
V2 |
V |
S |
gelb |
16 |
P16 |

4.3.8.5 Programmablauf

4.3.8.6 Testcode
⚠️ Tipp 1: Bevor Sie den Code auf das Microbit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306.py” entsprechend “Import Library on MU” .

⚠️ Tipp 2: Der Schwellwert 500 in der if()-Bedingung kann je nach tatsächlicher Situation angepasst werden.
Vollständiger Code:
'''
Theme: PM2.5 dust detection
Function: OLED displays the amount of PM2.5 dust and the PM2.5 dust sensor controls the micro:bit 5×5 dot matrix, speaker and atomization module
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# import related libraries
from microbit import *
from oled_ssd1306 import *
import music
import time
# initialize and clear oled
initialize()
clear_oled()
# Pin configuration
led_Pin = pin1
out_Pin = pin2
pin16.write_digital(1) # set P16 pin to high level
# Time parameter
delayTime = 280
delayTime2 = 40
offTime = 9680
def microsecond_delay(us):
"""Precise microsecond delay"""
start = time.ticks_us()
while time.ticks_diff(time.ticks_us(), start) < us:
pass
while True:
# Measurement sequence
led_Pin.write_digital(0) # LED OFF
microsecond_delay(delayTime) # 280μs
dustVal = out_Pin.read_analog() # Read the sensor
microsecond_delay(delayTime2) # 40μs
led_Pin.write_digital(1) # LED ON
microsecond_delay(offTime) # 9680μs
# Calculation and display
if dustVal > 36.455:
# The exact same calculation formula
voltage = dustVal / 1024.0
pm25 = (voltage - 0.0356) * 120000 * 0.035
# OLED displays detailed information
add_text(0, 0, "PM2.5 dust: ") # Display the value of PM2.5 in the corresponding position of OLED
add_text(0, 2, str(round(pm25)) + " ug/m3") # Display the value of PM2.5 in the corresponding position of OLED
# Quality indication
if pm25 > 500 : # PM2.5 value > 500
display.show(Image.SAD) # LED matrix displays a sad pattern
music.play("E5:4") # speaker plays E5 tone
sleep(1000)
pin16.write_digital(0) # set P16 pin to low level
sleep(200)
pin16.write_digital(1) # set P16 pin to high level
sleep(3000)
pin16.write_digital(0) # set P16 pin to low level
sleep(200)
pin16.write_digital(1) # set P16 pin to high level
sleep(1000)
else: # or
display.show(Image.HAPPY) # LED matrix displays a happy pattern
music.reset() # no tone
pin16.write_digital(1) # set P16 pin to high level
else:
print("Low value:", dustVal)
display.show(Image.NO)
# delay 0.2s
sleep(200)
clear_oled() # clear OLED

Kurze Erklärung:
① Bibliotheken microbit, oled_ssd1306, music und time importieren.
from microbit import *
from oled_ssd1306 import *
import music
import time
② OLED initialisieren und löschen.
initialize()
clear_oled()
③ Die Pins des PM2.5-Staubsensors initialisieren.
led_Pin = pin1
out_Pin = pin2
④ Das Zerstäubungsmodul an Pin P16 anschließen und zunächst ausschalten.
pin16.write_digital(1)
⑤ Anfangswerte der Zeitvariablen setzen.
delayTime = 280
delayTime2 = 40
offTime = 9680
⑥ Eine Unterfunktion für mikrosekunden-genaue Verzögerung definieren.
def microsecond_delay(us):
"""Precise microsecond delay"""
start = time.ticks_us()
while time.ticks_diff(time.ticks_us(), start) < us:
pass
⑦ Steuerung der Messzeitpunkte des PM2.5-Staubsensors einstellen, hauptsächlich zur Erfassung der Staubkonzentration in der Luft.
led_Pin.write_digital(0) # LED AUS
microsecond_delay(delayTime) # 280μs
dustVal = out_Pin.read_analog() # Sensor auslesen
microsecond_delay(delayTime2) # 40μs
led_Pin.write_digital(1) # LED EIN
microsecond_delay(offTime) # 9680μs
⑧ Verzweigung: if()…else…
Wenn der analoge Wert des PM2.5-Staubsensors größer als 36.455 ist, kann der Konzentrationswert berechnet und auf dem OLED angezeigt werden.
Andernfalls gibt der serielle Monitor die entsprechenden analogen Staubwerte aus.
if dustVal > 36.455:
# The exact same calculation formula
voltage = dustVal / 1024.0
pm25 = (voltage - 0.0356) * 120000 * 0.035
# OLED displays detailed information
add_text(0, 0, "PM2.5 dust: ") # Display the value of PM2.5 in the corresponding position of OLED
add_text(0, 2, str(round(pm25)) + " ug/m3") # Display the value of PM2.5 in the corresponding position of OLED
else:
print("Low value:", dustVal)
display.show(Image.NO)
⑨ Verzweigung: if()…else…
Wenn die ermittelte PM2.5-Konzentration 500ug/m³ überschreitet, zeigt die 5×5-LED-Matrix
und der Lautsprecher gibt Alarm. Nach 1 Sekunde sprüht das Zerstäubungsmodul Wasserdampf.
Andernfalls zeigt die 5×5-LED
, der Lautsprecher löst keinen Alarm aus und das Zerstäubungsmodul arbeitet nicht.
if pm25 > 500 : # PM2.5 value > 500
display.show(Image.SAD) # LED matrix displays a sad pattern
music.play("E5:4") # speaker plays E5 tone
sleep(1000)
pin16.write_digital(0) # set P16 pin to low level
sleep(200)
pin16.write_digital(1) # set P16 pin to high level
sleep(3000)
pin16.write_digital(0) # set P16 pin to low level
sleep(200)
pin16.write_digital(1) # set P16 pin to high level
sleep(1000)
else: # or
display.show(Image.HAPPY) # LED matrix displays a happy pattern
music.reset() # no tone
pin16.write_digital(1) # set P16 pin to high level
4.3.8.7 Testergebnis

Nach dem Verdrahten und dem Einschalten über das micro USB-Kabel, schließen Sie die externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie “Flash”, um den Code auf das micro:bit-Board zu übertragen.

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Fegen Sie den Boden im Innenraum / zünden Sie ein leichtes Streichholz / verbrennen Sie sicher eine kleine Menge Papier, um deutlich sichtbare PM2.5-Partikel zu erzeugen. Diese werden vom PM2.5-Staubsensor erkannt und ihre Konzentration wird in Echtzeit auf dem OLED angezeigt.
Wenn die ermittelte PM2.5-Konzentration 500ug/m³ überschreitet, zeigt die 5×5-LED-Matrix
und der Lautsprecher gibt Alarm. Nach 1 Sekunde sprüht das Zerstäubungsmodul Wasserdampf. Andernfalls zeigt die 5×5-LED
, der Lautsprecher löst keinen Alarm aus und das Zerstäubungsmodul arbeitet nicht.
Auf dem OLED erkannte Werte |
Luftqualität |
|---|---|
0-75 |
Ausgezeichnet |
75-150 |
Sehr gut |
150-300 |
Gut |
300-1050 |
Normal |
1050-3000 |
Schlecht |
3000 + |
Sehr schlecht |

⚠️ Hinweis: Die Bausteine für das Experiment sind nicht in diesem Bausatz enthalten.
(Tipp: Wenn kein Ergebnis angezeigt wird, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)










