โปรเจค Arduino: เครื่องวัดฝุ่น PM2.5 ด้วย Sensor GP2Y1010AU0F + NodeMCU
ช่วงนี้ปัญหาฝุ่น PM2.5 กลับมาอีกครั้ง โดยเฉพาะช่วงปลายฝนต้นหนาว
หรือช่วงที่มีไฟป่า ซึ่งส่งผลกระทบต่อสุขภาพโดยตรง
บทความนี้จะพาเพื่อนๆ มาสร้าง เครื่องวัดฝุ่นแบบง่ายๆ
โดยใช้ NodeMCU (ESP8266) และเซนเซอร์ GP2Y1010AU0F
พร้อมแสดงผลผ่านหน้าจอ LCD
Sensor GP2Y1010AU0F คืออะไร?
GP2Y1010AU0F เป็นเซนเซอร์วัดฝุ่นที่สามารถตรวจจับฝุ่นละอองในอากาศ
โดยเฉพาะฝุ่นขนาดเล็ก เช่น PM2.5
- ให้ค่าเป็นสัญญาณ Analog
- เหมาะสำหรับ Arduino และ NodeMCU
- นิยมใช้ในงานวัดคุณภาพอากาศ
อุปกรณ์ที่ใช้
- NodeMCU ESP8266 V2 https://shopee.co.th/product/243007968/5826175179
- Sensor GP2Y1010AU0F https://shopee.co.th/product/243007968/6626174991
- LCD I2C 1602 https://shopee.co.th/product/243007968/6125582015
- Adapter 9V 1A https://shopee.co.th/product/243007968/3137986354
- สาย Jumper https://shopee.co.th/product/243007968/7325582738
- Shield NodeMCU Dust https://shopee.co.th/product/243007968/7625583169
หลักการทำงาน
เซนเซอร์ GP2Y1010AU0F จะตรวจจับฝุ่นในอากาศโดยใช้แสง IR
เมื่อมีฝุ่นผ่าน จะเกิดการกระเจิงของแสง (Light Scattering)
จากนั้นจะส่งค่า Analog ไปยัง NodeMCU เพื่อนำไปคำนวณเป็น
ค่าความเข้มข้นฝุ่น (µg/m³)
โค้ดโปรแกรม NodeMCU
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 16, 2);
int measurePin = A0;
int ledPower = D5;
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();
}
void loop() {
digitalWrite(ledPower, LOW);
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin);
delayMicroseconds(deltaTime);
digitalWrite(ledPower, HIGH);
delayMicroseconds(sleepTime);
calcVoltage = voMeasured * (3.3 / 1024);
dustDensity = 0.17 * calcVoltage - 0.1;
if (dustDensity <= 0.00) {
dustDensity = 0.00;
}
dustDensity = dustDensity * 1000;
Serial.print("Dust Density: ");
Serial.print(dustDensity);
Serial.println(" ug/m3");
lcd.home();
lcd.setCursor(1, 0);
lcd.print("Dust Density");
lcd.setCursor(2, 1);
lcd.print(dustDensity);
lcd.print(" ug/m3");
delay(1000);
}
การทำงานของโปรเจค
- อ่านค่าฝุ่นจากเซนเซอร์แบบเรียลไทม์
- แปลงค่าเป็น µg/m³
- แสดงผลผ่าน LCD
- สามารถต่อ WiFi เพื่อส่งข้อมูลออนไลน์ได้
ประโยชน์ของโปรเจค
- ตรวจสอบคุณภาพอากาศภายในบ้าน
- ป้องกันปัญหาสุขภาพจากฝุ่น
- ต้นทุนต่ำ ทำเองได้
- ต่อยอดเป็น IoT ได้ง่าย
ไอเดียต่อยอด
- เชื่อมต่อ WiFi ส่งข้อมูลขึ้นเว็บ
- แจ้งเตือนผ่าน LINE Notify
- ควบคุมเครื่องฟอกอากาศอัตโนมัติ
- แสดงผลผ่านมือถือ
สรุป
โปรเจคนี้เป็นตัวอย่างที่ดีสำหรับผู้เริ่มต้นที่อยากเรียนรู้
IoT และการนำเทคโนโลยีมาดูแลสุขภาพ
ใช้งบไม่สูง แต่สามารถนำไปใช้งานจริงได้
เหมาะทั้งทำเล่น ทำเรียน หรือทำขายต่อยอด
รู้ค่าฝุ่นก่อน = ป้องกันสุขภาพได้ก่อน