ประกอบร่าง! เครื่องวัดฝุ่น PM2.5 โคตรตึงด้วย Arduino GIGA R1 WiFi

Air Quality Monitor with Arduino GIGA R1 and DFRobot PM2.5
เซ็ตอัปเครื่องวัดฝุ่น 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 ⚙️

Arduino GIGA R1 Board Support Package Select Arduino GIGA R1 Board DFRobot AirQualitySensor Library
ขั้นตอนการติดตั้งบอร์ดแพ็กเกจ (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 Output Data
เมื่อรันโค้ดสำเร็จ หน้าจอ Serial Monitor (ที่ Baud rate 115200) จะรายงานปริมาณฝุ่นทั้ง 3 ขนาด พร้อมประเมินคุณภาพอากาศให้ทันที!

📚 แหล่งข้อมูลศึกษาเพิ่มเติม:

*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากโปรเจกต์ในต่างประเทศ การเขียนโค้ดและการต่อวงจรเป็นเพียงแนวทางเบื้องต้น (Beginner guide) ในการดึงค่าจากเซนเซอร์ หากต้องการนำไปพัฒนาเป็นสถานีตรวจวัดคุณภาพอากาศแบบเต็มรูปแบบ แนะนำให้ศึกษา คู่มือจากไลบรารีของ DFRobot เพื่อต่อยอดการส่งข้อมูลขึ้นระบบ Cloud IoT เพิ่มเติมครับ

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี