Capteur qualité d'air V4
Capteur de qualité d'air Grove
Capteur d'humidité et de T° Grove
Liste des donnée séparées par des ,
- 0. durée depuis le démarage de la captation (h:mn:s)
1. Qualité d'air ( 3 polution trés élevée , 2 polution élevée , 1 polution faible , 0 air sans poluants : monoxyde de carbone, alcool, acétone, diluant, formaldéhyde )
2. Qualité d'air (0-700)
3. Temperature (°c)
4. Humiditée (%)
5. Ratio Particules
6. concentration Particules (pcs/litres ou pcs/0.01cf)
Précautions
Veuillez garder le capteur Verticalement.
Un temps de préchauffage de 3 min est requis lors de la première utilisation.
(rectangle rouge marqué) sont utilisés uniquement pour le réglage d'usine. Veuillez NE PAS modifier la configuration par défaut.
Code source
// Capteurs // temps , Qualité d'Air , Temperature , humidité , Ratio particule , Concentration Particules // Enregistrement sur memoire interne #define DEBUG 0 #include <LFlash.h> #include <LBattery.h> #include <Wire.h> #include <SeeedOLED.h> #include"AirQualityLinkitOne.h" AirQuality airqualitysensor; int32_t lastSlope = 4; int temperature; int Airquality; int AQ; String Time; //Capteur d'humidité et temperature #include "DHT.h" #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); float tDHT; float hDHT; //Grove - Dust Sensor Demo v1.0 int Dustpin = 8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000;//sampe 30s ; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; void setup() { Wire.begin(); SeeedOled.init(); //initialze SEEED OLED display SeeedOled.clearDisplay(); //clear the screen and set start position to top left corner SeeedOled.setNormalDisplay(); //Set display to normal mode (i.e non-inverse mode) SeeedOled.setPageMode(); //Set addressing mode to Page Mode SeeedOled.setTextXY(0, 0); //Set the cursor to Xth Page, Yth Column SeeedOled.putString("Capteur polution"); //Print the String SeeedOled.setTextXY(1, 14); //Set the cursor to Xth Page, Yth Column SeeedOled.putString("V4"); //Print the String SeeedOled.setTextXY(2, 5); //Set the cursor to Xth Page, Yth Column SeeedOled.putString("(ppm)"); //Print the String SeeedOled.setTextXY(5, 0); //Set the cursor to Xth Page, Yth Column SeeedOled.putString("Initialisation.."); //Print the String if (LBattery.isCharging()) { info("En Charge...", -1, 7, 3); } dht.begin(); // initialise le capteur d'humidité airqualitysensor.init(A0); // initialise le capteur qualité d'air Serial.print("Premiere valeur de qualité d'air : "); Serial.println(airqualitysensor.initValue); //Ouvre le port serie Serial.begin(9600); Serial.print("Initialisation de la memoire Flash..."); LFlash.begin(); Serial.println("memoire flash initialisée."); SeeedOled.clearDisplay(); //Print the String pinMode(Dustpin, INPUT); starttime = millis();//get the current time; } void loop() { String dataString = ""; // Déclaration d'une chaine de caractere pour stoquer les données: duration = pulseIn(Dustpin, LOW); lowpulseoccupancy = lowpulseoccupancy + duration; if ((millis() - starttime) > sampletime_ms) //if the sampel time == 30s { ratio = lowpulseoccupancy / (sampletime_ms * 10.0); // Integer percentage 0=>100 concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62; // using spec sheet curve lowpulseoccupancy = 0; starttime = millis(); } int ret = dht.readHT(&tDHT, &hDHT); // lecture de la temperature de l'humidité Airquality = airqualitysensor.slope(); AQ = airqualitysensor.current(); if (hDHT > 0 && lowpulseoccupancy == 0 ) //Si on a recus des donnée du capteur de CO2 et d'humidité { int m = millis(); Time = String(m / (1000 * 60 * 60)) + ":" + String((m % (1000 * 60 * 60)) / (1000 * 60)) + ":" + String(((m % (1000 * 60 * 60)) % (1000 * 60)) / 1000); dataString += Time; info(Time, -1, 0, 0); if (LBattery.isCharging()) { info(">", LBattery.level(), 0, 9); } else { info("%", LBattery.level(), 0, 9); } dataString += ","; dataString += String(Airquality); dataString += ","; dataString += String(AQ); info("AQ:", AQ, 1, 0); dataString += ","; dataString += String(tDHT); info("T:", tDHT, 2, 0); dataString += ","; dataString += String(hDHT); info("H:", hDHT, 2, 8); dataString += ","; dataString += String(ratio); info("Particules", -1, 5, 0); info("Ratio:", ratio, 6 , 0); dataString += ","; dataString += String(concentration); info("pcs/L:", concentration, 7 , 0); Serial.println(dataString); LFile dataFile = LFlash.open("qualite_air_v4.txt", FILE_WRITE); // ouverture du fichier CO2 // Si le fichier est ouvert on ecris les données if (dataFile) { dataFile.println(dataString); dataFile.close(); //Fermeture du fichier } else { Serial.println("erreur d'ouverture du fichier"); } } delay(5000); } void info(String data, float val, int Row, int Column) { char _data[data.length() + 1]; data.toCharArray(_data, data.length() + 1); SeeedOled.setTextXY(Row, Column); //Set the cursor to Xth Page, Yth Column SeeedOled.putString(_data); //Print the String if (val >= 0) { SeeedOled.setTextXY(Row, Column + data.length()); SeeedOled.putFloat(val); } }