Capteur basé sur un laser SDS011 PM2.5/PM10 permettant de tester avec précision et fiabilité la qualité de l'air
Principe:
Ce capteur est basé sur un laser SDS011 PM2.5/PM10 permettant de tester avec précision et fiabilité la qualité de l'air.
Ce laser fiable, rapide et précis mesure le taux de particules dans l'air compris entre 0,3 et 10 µm.
Il communique avec un microcontrôleur compatible via une sortie UART.
Le capteur est livré sans cordon de raccordement mais peut être utilisé avec des cordons de prototypages M/F par exemple.
Une librairie Arduino sous licence GPL est disponible en téléchargement .
Librairie à télécharger:
Nova Fitness SDS011 Dust Sensors Library
by Pawel Kolodziejczyk
En option:
Le capteur SDS011 peut également être utilisé sur un PC via un convertisseur USB vers UART TTL inclus.
Caractéristiques :
Alimentation: 4,7 à 5,3 Vcc
Consommation:
- au travail: 70 mA ±10mA
- au repos: < 4 mA
Plage de mesure: 0 à 999,9 µg/m³
Résolution: 0,3 µg/m³
Fréquence d'échantillonage: 1 Hz
Température de service: -10 à 50 °C
Humidité de service: 70 % RH maxi
Pression atmosphérique: 86 KPa à 110 KPa
Dimensions: 71 x 70 x 23 mm
Pour utiliser facilement ce capteur, nous vous conseillons d'utiliser la bibliothèque SDS011-select-serial que vous trouverez ici, en cliquant sur ce lien
https://github.com/lewapek/sds-dust-sensors-arduino-library
Câblage :
Avant le Setup | Importation de la bibliothèque | #include "SdsDustSensor.h"
|
Création de l’objet | int rxPin = D1;
int txPin = D2; SdsDustSensor sds(rxPin, txPin);
| |
Dans le Setup | Démarrage de l’objet | void setup() {
Serial.begin(9600); sds.begin(); Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version Serial.println(sds.setActiveReportingMode().toString()); // ensures sensor is in 'active' reporting mode Serial.println(sds.setContinuousWorkingPeriod().toString()); // ensures sensor has continuous working period - default but not recommended }
|
Dans le Loop | Utilisation | void loop() {
PmResult pm = sds.readPm(); if (pm.isOk()) { Serial.print("PM2.5 = "); Serial.print(pm.pm25); Serial.print(", PM10 = "); Serial.println(pm.pm10); // if you want to just print the measured values, you can use toString() method as well Serial.println(pm.toString()); } else { // notice that loop delay is set to 0.5s and some reads are not available Serial.print("Could not read values from sensor, reason: "); Serial.println(pm.statusToString()); } delay(10000); } |
Astuce: il faut peut être que vous inversiez Rx et TX en D1 et D2 si cela ne fonctionne pas, sur votre carte.
Exemple :
#include "SdsDustSensor.h"
int rxPin = D1;
int txPin = D2;
SdsDustSensor sds(rxPin, txPin);
void setup() {
Serial.begin(9600);
sds.begin();
Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
Serial.println(sds.setActiveReportingMode().toString()); // ensures sensor is in 'active' reporting mode
Serial.println(sds.setContinuousWorkingPeriod().toString()); // ensures sensor has continuous working period - default but not recommended
}
void loop() {
PmResult pm = sds.readPm();
if (pm.isOk()) {
Serial.print("PM2.5 = ");
Serial.print(pm.pm25);
Serial.print(", PM10 = ");
Serial.println(pm.pm10);
// if you want to just print the measured values, you can use toString() method as well
Serial.println(pm.toString());
} else {
// notice that loop delay is set to 0.5s and some reads are not available
Serial.print("Could not read values from sensor, reason: ");
Serial.println(pm.statusToString());
}
delay(10000);Item-Capteur_de_particules_SDS011_ar-capteur-de-qualite-de-l-air-sds011-27929.jpg Draft
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #