De Sharp GP2Y1010AU is een heel gevoelige (een eitje bakken op 6 meter afstand en de buzzer gaat af)
stof en rook sensor.
Als je de sensor alleen wil gebruiken om iets te laten gebeuren bij een (niet precies bepaalde) hoeveelheid stof (bij voorbeeld buzzer af laten gaan), dan kan je onderstaande test sketch gebruiken. Wil je bepaalde hoeveelheden stof/rook deeltjes gaan meten kijk dan o.a. naar de links in de toelichting van de sketch.
Hieronder zie het aansluitschema. De draden 1 t/m 6 in het schema zijn ook de draden 1 t/m 6 op de foto hiernaast.
Aansluitingen dust sensor:
1: Via 150 ohm weerstand naar GND
2: GND
3: Pin 2
4: GND
5: Analoge pin 0
6: 5V
Een 150 ohm weerstand tussen draad 1 en GND. Een 220 mF elco tussen draad 1 en GND.
Buzzer op pin 8.
// Dust sensor test
// Een eenvoudig testprogramma waarbij de sensor op de analoge pin 0 wordt uitgelezen.
// Er is een buzzer toegevoegd die boven een bepaalde (in te stellen) waarde gaat buzzen.
// Uitgebreidere sketch: http://www.dfrobot.com/wiki/index.php/Sharp_GP2Y1010AU
// Documentatie dust sensoren: http://www.howmuchsnow.com/arduino/airquality/
// En: http://sensorapp.net/sharp-dust-sensor-and-arduino/
// En: https://itp.nyu.edu/archive/physcomp-spring2014/sensors/Reports/GP2Y1010AU.html
int dustPin = 0; // dustpin (aansluiting 5) op analoge pin 0
int dustWaarde = 0; // variabele voor de dustWaarde
int ledPin = 2; // aansluiting 3 op pin 2
int buzzerPin = 8; // buzzer op pin 8
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, LOW); // led aan (werkt blijkbaar andersom)
delayMicroseconds(300);
dustWaarde = analogRead(dustPin); // lees de waarde op pin 0
delayMicroseconds(40);
digitalWrite(ledPin, HIGH); // led uit (werkt blijkbaar andersom)
delayMicroseconds(1000);
Serial.print(" dustWaarde (0-1023): "); // analoge waarde is een getal tussen 0 en 1023
Serial.println(dustWaarde); // schrijf de dustWaarde op de monitor
if (dustWaarde > 600) {
digitalWrite(buzzerPin, HIGH);
}
else {
digitalWrite(buzzerPin, LOW);
}
delay(1000);
}