Automatisk luft övervakning cruise robot (7 / 9 steg)
Steg 7: Steg sju
Montera luft kvalitet övervakning sensorn (skarpa GP2Y1010) med Arduino.
Instruktionen anslutning illustreras i figuren.
Det är en air sensor baserad på de partiklarna reflektion, vilket gör luftkvaliteten en synlig mätning. Du bara läsa och analysera spänningen det matar tillbaka och varje spänning motsvarar en specifik partikel densitet.
Koden för hantering av spänning feedback är nedan.
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
int measurePin = A0; Anslut damm sensor till Arduino A0 stift
int ledPower = 2; Ansluta 3 led driver stift av damm sensor till Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
int jag = 0;
flyta voMeasured = 0;
flyta voMeasuredReal = 0;
flyta voMeasuredLast = 123.0;
flyta calcVoltage = 0;
flyta dustDensity = 0;
LiquidCrystal_I2C lcd(0x27,16,2); Ange adressen som LCD till 0x27 för en 16 tecken och 2 raders display
void setup() {
Serial.BEGIN(9600);
pinMode(ledPower,OUTPUT);
pinMode(A0,INPUT);
LCD.init(); initiera lcd
LCD.init();
LCD.backlight();
LCD.Home();
}
void loop() {
0 - 5V mappas till 0 - 1023 heltalsvärden
calcVoltage = voMeasured/5.0*5.5;
dustDensity = 0,17 * calcVoltage - 0,1;
digitalWrite(ledPower,LOW); makt på LED
delayMicroseconds(samplingTime);
voMeasured=analogRead(measurePin); läsa värdet damm via stift 5 på sensorn
voMeasuredReal = voMeasured;
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); Inaktivera LED
smidig buller
voMeasured = voMeasuredLast + (voMeasured-voMeasuredLast) / 10,0;
IF(voMeasured<150)
dustDensity=0.15*(voMeasured-130.0);
annat if(voMeasured<160)
dustDensity=3+1.7*(voMeasured-150.0);
annars om (voMeasured < 220)
dustDensity = 5 * (voMeasured-150,0);
annat
dustDensity = voMeasured-220.0;
om (dustDensity < 0) dustDensity = 0,0;
om (dustDensity > 600) dustDensity = 600,0;
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print("ASY-02012317-Seu");
lcd.setCursor (0, 1);
LCD.Print ("PM2.5");
lcd.setCursor (10, 1);
LCD.Print(dustDensity);
voMeasuredLast = voMeasured;
Delay(2000);
delayMicroseconds(sleepTime);
om (jag < = 30)delay(1000);
annars försena (5000);
// i++;
om (jag > 1024) jag = 31;