Outils pour utilisateurs

Outils du site


wiki:projets:rfid:capteur_particules_fines:reverseeng

SHARP GP2Y1010

  • *reverse engineering Afin de mettre au point notre propre détecteur de particules fines, nous avons commencé par une phase de reverse engineering sur 2 capteurs low-cost du marché : le SHARP GP2Y1010 et le SHINYEI PPD42NS. Ci-dessous les photos du Sharp désossé avec légendes. plume_sharp_all plume_sharp_scattered plume_sharp_circuit plume_sharp_casing plume_sharp_optics Le faisceau collimaté de l'émetteur est diffusé par les particules fines. Le flux diffusé par les particules situées dans la champ optique collimaté du récepteur à un certain angle constitue la mesure. 
En pratique, ce flux est très faible. Il est le paramètre contraignant le dispositif. Code <code=cpp> /* Interface to Sharp GP2Y1010AU0F Particle Sensor Program by Christopher Nafis Written April 2012 http://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf http://sensorapp.net/?p=479 Sharp pin 1 (V-LED) ⇒ 5V (connected to 150ohm resister) Sharp pin 2 (LED-GND) ⇒ Arduino GND pin Sharp pin 3 (LED) ⇒ Arduino pin 2 Sharp pin 4 (S-GND) ⇒ Arduino GND pin Sharp pin 5 (Vo) ⇒ Arduino A0 pin Sharp pin 6 (Vcc) ⇒ 5V */ #include <SPI.h> #include <Ethernet.h> #include <stdlib.h> int dustPin=0; int ledPower=2; int delayTime=280; int delayTime2=40; float offTime=9680; int dustVal=0; int i=0; float ppm=0; void setup(){ Serial.begin(9600); pinMode(ledPower,OUTPUT); i=0; ppm =0; } void loop(){ i=i+1; digitalWrite(ledPower,LOW); power on the LED delayMicroseconds(delayTime); dustVal=analogRead(dustPin); read the dust value ppm = ppm+dustVal; delayMicroseconds(delayTime2); digitalWrite(ledPower,HIGH); turn the LED off delayMicroseconds(offTime); } </code> ====== SHINYEI PPD42NS ====== reverse engineering plume_shinyei_all plume_shinyei_scattered (aqicn.org) Code <code=cpp> /* Interface to Shinyei Model PPD42NS Particle Sensor Program by Christopher Nafis Written April 2012 http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html http://www.sca-shinyei.com/pdf/PPD42NS.pdf JST Pin 1 (Black Wire) ⇒ Arduino GND JST Pin 3 (Red wire) ⇒ Arduino 5VDC JST Pin 4 (Yellow wire) ⇒ Arduino Digital Pin 8 */ int pin = 8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; void setup() { Serial.begin(9600); pinMode(8,INPUT); starttime = millis(); } void loop() { duration = pulseIn(pin, LOW); lowpulseoccupancy = lowpulseoccupancy+duration; if ((millis()-starttime) > sampletime_ms) { 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 Serial.print(lowpulseoccupancy); Serial.print(“,”); Serial.print(ratio); Serial.print(“,”); Serial.println(concentration); lowpulseoccupancy = 0; starttime = millis(); } } </code>
wiki/projets/rfid/capteur_particules_fines/reverseeng.txt · Dernière modification: 2020/10/05 16:39 (modification externe)