เซ็ตอัปเครื่องวัดฝุ่น PM2.5 ระดับโปรด้วยบอร์ดทรงพลัง Arduino GIGA R1 WiFi และเซนเซอร์จาก DFRobot
สวัสดีชาว Maker สายรักสุขภาพทุกคนครับ! 🏥 ทุกวันนี้ปัญหามลพิษทางอากาศ โดยเฉพาะฝุ่นจิ๋ว PM2.5 เป็นเรื่องที่น่ากลัวมาก เพราะมันสามารถทะลุทะลวงเข้าสู่ปอดและกระแสเลือดเราได้เลย! จะรอเช็กค่าฝุ่นจากแอปมือถืออย่างเดียวบางทีมันก็ไม่อัปเดตแบบเรียลไทม์ใช่ไหมล่ะครับ?
งั้นเรามาสร้าง เครื่องวัดคุณภาพอากาศ (Air Quality Monitor) ระดับโปรเฟสชันนัลใช้เองกันเถอะ! โปรเจกต์นี้เราจะจับเอาบอร์ดรุ่นท็อปอย่าง Arduino GIGA R1 WiFi มาคู่กับเซนเซอร์วัดฝุ่นด้วยเลเซอร์ DFRobot PM2.5 (SEN0460) ที่อ่านค่าได้แม่นยำยันระดับ PM1.0 เลยทีเดียว! โปรเจกต์นี้ต่อสายง่ายมาก แถมยังต่อยอดทำแดชบอร์ด IoT ได้สบายๆ เลยครับ!
ทำไมต้องคู่หูดูโอ้นี้? (Hardware Combo) 🧠
-
บอร์ดประมวลผล (Arduino GIGA R1 WiFi): นี่คือบอร์ด Arduino ที่ทรงพลังที่สุดตัวนึงเลยครับ! ใช้ชิป STM32H747XI (Dual-core) แรมจุกๆ 1MB และพิน I2C ถึง 3 พอร์ต! แค่วัดฝุ่นเนี่ยจิ๊บๆ เอาไปต่อจอทัชสกรีนหรือส่งข้อมูลขึ้น Cloud พร้อมกันยังได้ชิลๆ
-
เซนเซอร์ (DFRobot PM2.5): ตัวนี้ใช้เทคโนโลยี Laser-scattering ยิงเลเซอร์สแกนหาอนุภาคฝุ่นตั้งแต่อนุภาค 0.3 ถึง 10 ไมครอน สามารถวัดค่า PM1.0, PM2.5, และ PM10 ได้พร้อมกัน ส่งข้อมูลผ่านโปรโตคอล I2C ที่ต่อสายแค่ 4 เส้นจบ!
💡 Maker's Tip: บอร์ด Arduino GIGA R1 ทำงานที่ระดับแรงดันลอจิก 3.3V (Logic Level) นะครับ ห้ามเอาไฟ 5V ไปจิ้มเข้าขา GPIO ตรงๆ เด็ดขาด! โชคดีที่เซนเซอร์ DFRobot ตัวนี้รองรับลอจิก 3.3V ทางสาย I2C (SDA/SCL) พอดี เลยสามารถต่อตรงเข้าบอร์ดได้เลยครับ!
หากเพื่อนๆ กำลังมองหา บอร์ดตระกูล Arduino, เซนเซอร์วัดฝุ่น PM2.5, และสายเชื่อมต่อต่างๆ แวะมาช้อปของแท้มีประกันได้ที่ Globalbyte Shop เลยครับ หรืออยากปรึกษาเรื่องโปรเจกต์ IoT ก็ทัก LINE OA Globalbyteshop มาได้ตลอดเลยนะ!
ขั้นตอนการทำ Step-by-Step 🚀
Step 1: ตั้งค่าโปรแกรม Arduino IDE
ใครยังไม่มีโปรแกรม Arduino IDE ก็โหลดมาลงให้เรียบร้อยก่อนนะครับ จากนั้นเข้าไปที่ Boards Manager ค้นหาคำว่า "GIGA" แล้วติดตั้งแพ็กเกจ Arduino Mbed OS GIGA Board Package ให้เรียบร้อย เสร็จแล้วเสียบสาย USB-C เลือกพอร์ตให้ตรงเป็นอันจบสเต็ปแรกครับ
Step 2: การต่อสาย (Wiring) 🔌
บนบอร์ด GIGA R1 จะมีพอร์ต I2C มาให้ถึง 3 พอร์ต เราจะเลือกใช้ I2C1 (Wire) ซึ่งอยู่ที่พิน 20 (SDA) และ 21 (SCL) ครับ ต่อสายไฟตามนี้เลย:
- เซนเซอร์ VCC → บอร์ด 5V
- เซนเซอร์ GND → บอร์ด GND
- เซนเซอร์ SDA → บอร์ด Pin 20
- เซนเซอร์ SCL → บอร์ด Pin 21
Step 3: โหลดไลบรารีและอัปโหลดโค้ด 💻
ไปที่ Manage Libraries ใน Arduino IDE แล้วค้นหา "DFRobot AirQualitySensor" กดปุ่ม Install ให้เรียบร้อย หรือจะไปโหลดไฟล์ ZIP จาก GitHub ของ DFRobot ก็ได้เหมือนกันครับ
⚠️ ข้อควรรู้เรื่องค่า Standard vs Atmospheric
เซนเซอร์ตัวนี้สามารถแสดงผลค่าฝุ่นได้ 2 แบบ คือ Standard (ค่ามาตรฐานที่ผ่านการคาลิเบรตจากแล็บ) และ Atmospheric (ค่าที่ปรับตามสภาพแวดล้อม) สำหรับการใช้งานทั่วไป แนะนำให้เขียนโค้ดเรียกใช้ค่าแบบ Standard จะแม่นยำที่สุดครับ!
ภาพการตั้งค่าในโปรแกรม Arduino IDE ⚙️
ขั้นตอนการติดตั้งบอร์ดแพ็กเกจ (Board Package) และไลบรารีสำหรับเซนเซอร์ผ่าน Library Manager
ตัวอย่างโค้ดฉบับเต็ม (Complete Sketch) 💻
ก๊อปปี้โค้ดด้านล่างนี้ไปวางใน Arduino IDE แล้วกด Upload ได้เลยครับ โค้ดนี้จะอ่านค่าฝุ่น PM1.0, PM2.5 และ PM10 แล้วแสดงผลบอกสถานะอากาศด้วย!
#include "DFRobot_AirQualitySensor.h"
// กำหนด Address I2C เริ่มต้นของเซนเซอร์ (0x19)
#define I2C_ADDRESS 0x19
DFRobot_AirQualitySensor particle(&Wire, I2C_ADDRESS);
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println(F("Initializing PM2.5 Sensor..."));
// เช็กว่าเจอเซนเซอร์หรือไม่
while (!particle.begin()) {
Serial.println(F("Sensor not detected! Check wiring."));
delay(1000);
}
Serial.println(F("Sensor initialized successfully!"));
delay(1000);
}
void loop() {
// อ่านค่าฝุ่นแบบ Standard (µg/m³)
uint16_t pm1_0 = particle.gainParticleConcentration_ugm3(PARTICLE_PM1_0_STANDARD);
uint16_t pm2_5 = particle.gainParticleConcentration_ugm3(PARTICLE_PM2_5_STANDARD);
uint16_t pm10 = particle.gainParticleConcentration_ugm3(PARTICLE_PM10_STANDARD);
// ปริ้นท์ผลลัพธ์ออกจอ Serial Monitor
Serial.println(F("--- Air Quality Readings ---"));
Serial.print(F("PM1.0 concentration: "));
Serial.print(pm1_0);
Serial.println(F(" µg/m³"));
Serial.print(F("PM2.5 concentration: "));
Serial.print(pm2_5);
Serial.println(F(" µg/m³"));
Serial.print(F("PM10 concentration: "));
Serial.print(pm10);
Serial.println(F(" µg/m³"));
// ประเมินคุณภาพอากาศเบื้องต้นจากค่า PM2.5
Serial.print(F("Air Quality: "));
if (pm2_5 <= 35) {
Serial.println(F("Good"));
} else if (pm2_5 <= 75) {
Serial.println(F("Moderate"));
} else {
Serial.println(F("Unhealthy"));
}
Serial.println();
delay(1000); // อัปเดตข้อมูลทุกๆ 1 วินาที
}
ผลลัพธ์ผ่านหน้าจอ Serial Monitor 🖥️
เมื่อรันโค้ดสำเร็จ หน้าจอ Serial Monitor (ที่ Baud rate 115200) จะรายงานปริมาณฝุ่นทั้ง 3 ขนาด พร้อมประเมินคุณภาพอากาศให้ทันที!
📚 แหล่งข้อมูลศึกษาเพิ่มเติม:
*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากโปรเจกต์ในต่างประเทศ การเขียนโค้ดและการต่อวงจรเป็นเพียงแนวทางเบื้องต้น (Beginner guide) ในการดึงค่าจากเซนเซอร์ หากต้องการนำไปพัฒนาเป็นสถานีตรวจวัดคุณภาพอากาศแบบเต็มรูปแบบ แนะนำให้ศึกษา
คู่มือจากไลบรารีของ DFRobot เพื่อต่อยอดการส่งข้อมูลขึ้นระบบ Cloud IoT เพิ่มเติมครับ