MicroPython: capteur de particules

Bonjour à tous,

Cela faisait un moment que nous n'avions pas publié de pilote MicroPython.
Aujourd'hui, nous nous penchons sur le PMS5003 aussi connu sous le nom "capteur de particule PM2.5 Laser". Un capteur bien pratique pour évaluer la pollution de l'air.

Les polluants et poussières en suspension dans l'air peuvent aussi avoir un impact sur notre santé. Suivant leur tailles, en microns (µM), indiqué par un indice PM, celle-ci peuvent nous irriter (PM10, 10µM de diamètre), pénétrer notre système respiratoire (PM2.5) plus ou moins profondément, voir même pénétrer notre système sanguin (PM0.1). Voyez notre petit résumé sur les matières particulaire sur notre Wiki.

capteur de particule PM2.5 Laser

La bibliothèque pm25.py permet à une carte MicroPython d'interroger le capteur et d'obtenir les informations sur la qualité de l'air.

Ce capteur exploitant une interface série (un UART), il est très facile à brancher sur un microcontrôleur. Nous avons utilisé un Raspberry-Pi Pico dans le cas présent. 

Source: GitHub esp8266-upy/pm25

Le script d'exemple est relativement simple à utiliser et permet d'obtenir les informations suivantes:

  • Les concentrations PM1.0, PM2.5 et PM10.0 dans l'unité standard (en µ g/m^3).
    Devrait être utilisé en environnement industriel.
  • Les concentrations PM1.0, PM2.5 et PM10.0 dans l'unité environnemental (en µ g/m^3).
    sous environnement atmosphérique.
  • Les relevés des particules par 0.1L d'air : Indique le nombre de particules au-delà de 0.3µm, 0.5µm, 1.0µm, 2.5µm, 5.0µm et 10µm de diamètre par 0.1 L d'air.

Et le script d'exemple permet d'extraire l'information.

from machine import UART
from pm25 import PM25
import time

# Raspberry Pico : GP0=tx (not used), GP1=rx (used)
ser = UART( 0, baudrate=9600, timeout=800 )
pm25 = PM25( ser )

while True:
	pm25.acquire()
	print( '-'*40 )
	print( 'Concentration Units (standard)')
	print( '  pm1.0: %i' % pm25.data.std.pm10 )
	print( '  pm2.5: %i' % pm25.data.std.pm25 )
	print( '  pm10.0: %i' % pm25.data.std.pm100 )
	print( 'Concentration Units (Environmental)')
	print( '  pm1.0: %i' % pm25.data.env.pm10 )
	print( '  pm2.5: %i' % pm25.data.env.pm25 )
	print( '  pm10.0: %i' % pm25.data.env.pm100 )
	print( 'Particle > x um / 0.1L air')
	print( '  0.3um: %i' % pm25.data.particles.um03 ) # Particles > 0.3 µM / 0.1L air
	print( '  0.5um: %i' % pm25.data.particles.um05 ) # Particle > 0.55 µM / 0.1L air
	print( '  1.0um: %i' % pm25.data.particles.um10 )# Particle > 1.0 µM / 0.1L air
	print( '  2.5um: %i' % pm25.data.particles.um25 )
	print( '  5.0um: %i' % pm25.data.particles.um50 )
	print( '  10.0um: %i' % pm25.data.particles.um100 )
	time.sleep(1x

Voici ce que produit le capteur dans mon bureau un peu poussièreux

Concentration Units (standard)
  pm1.0: 36
  pm2.5: 52
  pm10.0: 53
Concentration Units (Environmental)
  pm1.0: 28
  pm2.5: 42
  pm10.0: 50
Particle > x um / 0.1L air
  0.3um: 6216
  0.5um: 1771
  1.0um: 302
  2.5um: 13
  5.0um: 1
  10.0um: 1


bSi les données présentent des taux apparemment élevés (voir indice 0.3µM), que dire alors des informations ci-dessous avec la fumée qui s'échappe de mon fer à souder!

Concentration Units (standard)
  pm1.0: 80
  pm2.5: 134
  pm10.0: 146
Concentration Units (Environmental)
  pm1.0: 52
  pm2.5: 88
  pm10.0: 96
Particle > x um / 0.1L air
  0.3um: 13620
  0.5um: 3934
  1.0um: 900
  2.5um: 87
  5.0um: 14
  10.0um: 9


Si vous avez un capteur du même type, il serait intéressant d'avoir des relevés dans les pièces de vie... histoire de pouvoir comparer nos informations.

Shopping list

Intéressé par ce projet MicroPython et ses possibilités? n'hésitez pas à aller jeter un oeil sur les fiches produits.

Aucun commentaire