โปรเจค Arduino Nodemcu เครื่องวัดฝุ่น PM2.5 ด้วย Sensor GP2Y1010AU0F
1 เดือนที่ผ่านมา
โดย เจ้าของร้าน
โปรเจค Arduino Nodemcu เครื่องวัดฝุ่น PM2.5 ด้วย Sensor GP2Y1010AU0F
สวัสดีครับช่วงนี้กระแสเกี่ยวกับ ฝุ่น ควันพิษ PM2.5 กำลังมาแรง ในช่วงที่แอดมินเขียนบทความก็จะเป็นช่วงปลายเดือน มิถุนายน ของทุกปี ก็จะมีฝุ่น ควัน จากไฟป่าประเทศอินโดนนีเซีย พัดพากลุ่มควันไฟป่ามายังภาพใต้ของประเทศไทยทุกปี เป็นประจำ และช่วง ปลายหนาวของประเทศไทย ก็จะเป็นช่วงที่พี่น้อง ชาวเกษตรกร เผ่าอ้อยกันทุกปี ควัน ฝุ่นพิษ PM2.5 กวนอยู่แถวภาคกลาง กรุงเทพ เป็นประจำ ปีนี้บูมมาก ทำให้เรได้รู้ถึงควันพิษ ฝุ่นละอองขนาดเล็ก PM2.5 มันอันตรายแค่ไหน .
วันนี้ทาง เว็บก็ได้จัดทำ Mini Project อย่างง่ายๆมาให้เล่นกัน ครับ เป็นโปรเจค สำหรับวัดฝุ่นละอองภายในบ้านราคาถูก สามารถพัฒนาต่อยอดได้หลากหลาย สามารถพัฒนาต่อยอดไปทางด้าน IOT (Internet of things) ได้อีกด้วย
อุปกรณ์มีดังต่อไปนี้
- Nodemcu esp8266 V.2 https://www.ab.in.th/p/98
- Sensor Dust GP2Y1010AU0Fhttps://www.ab.in.th/p/89
- จอแสดงผล LCD I2C https://www.ab.in.th/product/tag/lcd-i2c
- Shield Nodemcu Dust V1 Code ตัวอย่าง
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); //Module IIC/I2C Interface บางรุ่นอาจจะใช้ 0x3f int measurePin = A0; int ledPower = D6; //Pin LED int 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); lcd.begin(); lcd.backlight(); // เปิด backlight } void loop() { digitalWrite(ledPower, LOW); // power on the LED delayMicroseconds(samplingTime); voMeasured = analogRead(measurePin); // read the dust value delayMicroseconds(deltaTime); digitalWrite(ledPower, HIGH); // turn the LED off delayMicroseconds(sleepTime); // 0 - 3.3V mapped to 0 - 1023 integer values // recover voltage calcVoltage = voMeasured * (3.3 / 1024); // linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/ // Chris Nafis (c) 2012 dustDensity = 0.17 * calcVoltage - 0.1; Serial.print("Raw Signal Value (0-1023): "); Serial.print(voMeasured); Serial.print(" - Voltage: "); Serial.print(calcVoltage); if (dustDensity <= 0.00) { dustDensity = 0.00; } dustDensity = dustDensity * 1000; Serial.print(" - Dust Density: "); Serial.print(dustDensity); Serial.println(" µg/m³"); lcd.home(); lcd.setCursor(1, 0); lcd.print("Dust Density "); lcd.setCursor(2, 1); lcd.print(dustDensity); lcd.print(" ug/m3 "); delay(1000); }
ไม่มีความคิดเห็น:
แสดงความคิดเห็น