Tentang proyek ini
Sensor Debu Optik Tajam (GP2Y1010AU0F) sangat efektif dalam mendeteksi partikel yang sangat halus seperti asap rokok, dan umumnya digunakan dalam sistem pembersih udara. Dioda pemancar inframerah dan fototransistor diatur secara diagonal ke dalam perangkat ini, untuk memungkinkannya mendeteksi cahaya pantulan debu di udara.
Dalam video sebelumnya saya telah menunjukkan kepada Anda monitor kualitas udara berdasarkan papan sensor DSM501A dan PPD42NS. Kali ini saya akan menyajikan kepada Anda perangkat yang sama, sekarang berdasarkan papan sensor Sharp GP2Y1010AU0F yang juga sangat murah dan berharga sekitar $ 5. Skema kelistrikan perangkat ini sangat sederhana dan ditunjukkan pada gambar di bawah ini. Sensor udara memiliki fungsi yang sangat konsumsi arus rendah (maks 20mA, tipikal 11mA), dan dapat ditenagai langsung dari papan Arduino. Keluaran sensor adalah tegangan analog yang sebanding dengan kepadatan debu yang diukur, dengan sensitivitas 0,5V/0,1mg/m3.
Saya memodifikasi kode sampel Arduino dari halaman "Dfrobot" sehingga membaca nilainya dalam mikrog/m3. Selanjutnya saya menulis kode Pemrosesan berdasarkan pustaka "meter", sehingga nilai ini direpresentasikan pada monitor PC dalam bentuk instrumen analog besar, memberikan efek visual yang berbeda.
Terakhir mari kita bandingkan ketiga papan sensor (DSM501A dan PPD42NS yang telah saya jelaskan di video sebelumnya dan Sharp GP2Y1010AU0F yang dijelaskan di atas). Ketiga sensor ini sangat murah dan dapat dibeli dengan beberapa dolar. Menurut hasil saya menguji mereka di bawah kondisi yang sama dan pemenangnya adalah Sharp GP2Y1010AU0F. Ada beberapa poin positif di antaranya:
-Ini lebih sensitif terhadap nilai yang sangat rendah
-Ini memiliki konsumsi daya yang sangat rendah dan dapat ditenagai langsung dari Arduino
-Kode Arduino yang sangat sederhana yang mudah disesuaikan
-Ini memiliki output analog sehingga dapat langsung dihubungkan ke alat ukur tanpa elektronik tambahan
Sensor ini dapat dibeli di AliExpress
https://www.aliexpress.com/item/32661666070.html?spm=a2g0s.9042311.0.27424c4dKW7gUj
Terima kasih telah menonton
Kode
- Kode Arduino
- Memproses kode
Kode ArduinoArduino
/* Sketsa Mandiri untuk digunakan dengan Arduino UNO dan Sensor Debu Optik Tajam GP2Y1010AU0F*/int measurePin =0; //Hubungkan sensor debu ke pinint led Arduino A0Power =2; //Hubungkan 3 pin driver led sensor debu ke Arduino D2int samplingTime =280;int deltaTime =40;int sleepTime =9680;float voMeasured =0;float calcVoltage =0;float dustDensity =0;void setup(){ Serial.begin (9600); pinMode(ledPower,OUTPUT);}void loop(){ digitalWrite(ledPower,LOW); // nyalakan LED delayMicroseconds(samplingTime); voMeasured =analogRead(measurePin); // membaca nilai debu delayMicroseconds(deltaTime); digitalWrite (Daya led, TINGGI); // matikan LED delayMicroseconds(sleepTime); // 0 - 5V dipetakan ke 0 - 1023 nilai integer // memulihkan tegangan calcVoltage =voMeasured * (5.0 / 1024.0); // persamaan linier diambil dari http://www.howmuchsnow.com/arduino/airquality/ // Chris Nafis (c) 2012 dustDensity =170 * calcVoltage - 0,1; Serial.println(densitas debu); // satuan:ug/m3 delay(1000);}
Kode pemrosesanC/C++
/* //<>// Meter sebagai lingkaran parsial. Ubah beberapa warna. Perhatikan bahwa lingkaran dimulai pada 90,0 derajat (6:00 OC) dan bergerak searah jarum jam. Label skala harus dalam urutan ini. Contoh Non-Perangkat Keras. dibuat 19 April 2017 oleh Bill (Papa) Kujawa. Contoh kode ini ada di domain publik. */import processing.serial.*;import meter.*;Serial port;String[] list;Meter m;void setup() { size(1150, 910); latar belakang (255, 255, 200); port =Serial baru(ini, "COM4", 9600); // Menampilkan meteran lingkaran penuh. m =Meter baru(ini, 125, 25, benar); // Membuat instance kelas meteran lingkaran penuh. m.setMeterWidth(850); m.setFrameColor(warna(100, 0, 0)); m.setTitleFontColor(warna(0, 200, 0)); m.setPivotPointColor(warna(255, 0, 0)); m.setArcColor(warna(0, 0, 200)); m.setScaleFontColor(warna(200, 100, 0)); m.setTicMarkColor(warna(217, 22, 247)); // Tentukan di mana label skala akan muncul m.setArcMinDegrees(90.0); // (mulai) m.setArcMaxDegrees(360.0); // ( akhir) m.setArcThickness(5); m.setKetebalan Jarum(4); // Atur nilai meteran sesuai dengan label skala. m.setMinScaleValue(0.0); m.setMaxScaleValue(800.0); m.setInputSignalOutOfRangeFontColor(color(0, 255, 0)); m.setMinInputSignal(0); m.setMaxInputSignal(800); m.setHighSensorWarningActive(benar); m.setHighSensorWarningValue((float)200.0); String[] scaleLabelsA ={"0", "100", "200", "300", "400", "500", "600", "700", "800"}; m.setScaleLabels(scaleLabelsA); // Ubah judul dari "Tegangan" default ke label yang lebih bermakna. m.setTitle("Kualitas Udara (ug/m3)"); // Menampilkan nilai meteran digital. m.setDisplayDigitalMeterValue(true);}void draw() { if (port.available()> 0) { String val =port.readString(); daftar =split(val, ','); float air =float(list[0]);println("Kualitas Udara:" + udara + " mg/m3 " );m.updateMeter(int(udara)); }}
Skema