Étape 7: Étape 7
Monter le capteur de surveillance de qualité de l’air (SHARP GP2Y1010) avec Arduino.
L’instruction de connexion est illustrée sur la figure.
C’est un capteur d’air basé sur la réflexion des particules, ce qui fait la qualité de l’air une mesure visible. Vous venez de lire et analyser la tension il se nourrit en retour et chaque tension correspond à une densité de particules spécifiques.
Le code de gestion de la rétroaction de tension est ci-dessous.
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
int measurePin = A0 ; Connecter le capteur de poussière à goupille de Arduino A0
ledPower int = 2 ; Connectez 3 bornes led pilote de capteur de poussières à Arduino D2
int samplingTime = 280 ;
int deltaTime = 40 ;
int sleepTime = 9680 ;
int i = 0 ;
float voMeasured = 0 ;
float voMeasuredReal = 0 ;
float voMeasuredLast = 123,0 ;
float calcVoltage = 0 ;
float dustDensity = 0 ;
LiquidCrystal_I2C lcd(0x27,16,2) ; mettre l’adresse de LCD sur 0 x 27 pour un 16 caractères et affichage de la ligne 2
void setup() {}
Serial.Begin(9600) ;
pinMode(ledPower,OUTPUT) ;
pinMode(A0,INPUT) ;
LCD.init() ; initialiser l’écran lcd
LCD.init() ;
LCD.backlight() ;
LCD.Home() ;
}
void loop() {}
0 - 5V mappé à 0 - 1023 de valeurs entières
calcVoltage = voMeasured/5.0*5.5 ;
dustDensity = 0,17 * calcVoltage - 0,1 ;
digitalWrite(ledPower,LOW) ; allumer la LED
delayMicroseconds(samplingTime) ;
voMeasured=analogRead(measurePin) ; lire la valeur de la poussière avec la broche 5 sur le capteur
voMeasuredReal = voMeasured ;
delayMicroseconds(deltaTime) ;
digitalWrite(ledPower,HIGH) ; éteindre la LED
bruit doux
voMeasured = voMeasuredLast + (voMeasured-voMeasuredLast) / 10.0 ;
if(voMeasured<150)
dustDensity=0.15*(voMeasured-130.0) ;
d’autre if(voMeasured<160)
dustDensity=3+1.7*(voMeasured-150.0) ;
ElseIf (voMeasured < 220)
dustDensity = 5 * (voMeasured-150,0) ;
d’autre
dustDensity = voMeasured-220,0 ;
Si (dustDensity < 0) dustDensity = 0.0 ;
Si (dustDensity > 600) dustDensity = 600,0 ;
LCD.Clear() ;
lcd.setCursor (0, 0) ;
LCD.Print("asy-02012317-seu") ;
lcd.setCursor (0, 1) ;
LCD.Print ("P2", "5") ;
lcd.setCursor (10, 1) ;
LCD.Print(dustDensity) ;
voMeasuredLast = voMeasured ;
Delay(2000) ;
delayMicroseconds(sleepTime) ;
Si (j’ai < = 30)delay(1000) ;
sinon retarder (5000) ;
// i++;
Si (j’ai > 1024) j’ai = 31 ;