บทความนี้ กล่าวถึงขั้นตอนการใช้งาน เซ็นเซอร์วัดฝุ่น PM2.5 กับ Arduino UNO โดยใช้ เซ็นเซอร์วัดฝุ่น PM2.5 Keyestudio GP2Y1014AU ของ Sharp เซ็นเซอร์ฝุ่นนี้มีขนาดเล็กและสามารถตรวจจับฝุ่นละอองและอนุภาคควันในสิ่งแวดล้อมได้ ใช้พลังงานน้อยมากในขณะที่ทำงานจึงเหมาะอย่างยิ่งสำหรับระบบตรวจสอบที่เปิดตลอดเวลา

รายการอุปกรณ์



ขั้นตอนการทํางาน

1 : ติดตั้งโปรแกรม Arduino IDE

สำหรับการเขียนโปรแกรมของ Arduino IDE นั้นจะใช้ภาษา C/C++ ซึ่งเป็นรูปแบบภาษาซีประยุกต์แบบหนึ่ง ที่มีโครงสร้างการทำงานของตัวภาษาโดยรวม คล้ายกับ ภาษาซีมาตรฐาน (ANSI-C) ทั่วๆไป เพียงแต่ได้มีการปรับปรุงเพื่อลดความยุ่งยากในการใช้งานลง เพื่อให้ผู้ใช้สามารถใช้งาน เขียนโปรแกรมได้ง่าย และสะดวกมากกว่าเขียนภาษาซี แบบมาตรฐาน

Arduino integrated development environment หรือเรียกสั้นๆว่า โปรแกรม Arduino IDE เป็นโปรแกรมที่ “แจกฟรี” ภายใต้เงื่อนไขในการใช้งานลักษณะ Open source ซึ่ง Arduino IDE จะทำหน้าที่ ติดต่อ ระหว่าง คอมพิวเตอร์ ของเรา (Windows, Mac OS X และ Linux) กับ บอร์ด Arduino ซึ่งโปรแกรมนี้ออกแบบให้ง่ายต่อการเขียนโค้ดและอัปโหลดโค้ดที่เราเขียน เข้าสู่ บอร์ด Arduino

โดย Download ตัวติดตั้งได้จาก

https://www.arduino.cc/en/Main/Software

เลือก Windows Installer, for Windows 7 and up

Download ตัวติดตั้ง Arduino IDE


คลิกเลือก JUST DOWNLOAD (หากต้องการร่วมบริจาคช่วยการพัฒนา Arduino Software สามารถกด CONTRIBUTE & DOWNLOAD)

เมื่อดาวน์โหลดเสร็จแล้ว ให้ติดตั้งตามที่โปรแกรมแนะนำ


2 : เชื่อมต่อ เซ็นเซอร์วัดฝุ่น PM2.5 เข้ากับ Arduino UNO


ประกอบ Sensor Shield V 5.0 เข้ากับ Arduino UNO

ประกอบ Sensor Shield V 5.0 เข้ากับ Arduino UNO



เชื่อมต่อสายระหว่าง เซ็นเซอร์วัดฝุ่น PM2.5 กับ Sensor Shield ตามรูปด้านล่าง

การใช้งาน เซ็นเซอร์วัดฝุ่น PM2.5
เชื่อมต่อสายระหว่าง เซ็นเซอร์วัดฝุ่น PM2.5


3 : อัพโหลดโค้ดให้กับ Arduino UNO


เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปที่บอร์ด Arduino UNO แล้ว เปิดโปรแกรม Arduino IDE เขียนโปรแกรม หรือ Sketch ตามโค้ดด้านล่างนี้



int  measurePin  =  0;  //Connect  dust  sensor  to  Arduino  A0  pin
int  ledPower  =  2;  //Connect  led  driver  pins  of  dust  sensor  to  Arduino  D2
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);
  Serial.print("******************  keyestudio  ******************\n");

}

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  -  5V  mapped  to  0  -  1023  integer  values
  //  recover  voltage
  calcVoltage  =  voMeasured  *  (5.0  /  1024.0);
  dustDensity  =  170 * calcVoltage  -  0.1;
  Serial.print("The  dust  concentration  is:  ");
  Serial.print(dustDensity);
  Serial.print("  ug/m3\n");
  delay(1000);


}


ไปที่ Tools -> Board -> Arduino AVR Boards -> แล้วเลือกให้ตรงกับบอร์ดที่ใช้งาน สำหรับ Arduino UNO ให้เลือกบอร์ด Arduino Uno

สำหรับ Arduino UNO ให้เลือกบอร์ด Arduino Uno



เลือก Port โดยไปที่ Tools -> Port -> COM4
(โดย COM4 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)

เลือก Port โดยไปที่ Tools -> Port -> COM4



คลิกที่ Upload

คลิกที่ Upload

รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว

รอจนกระทั่งขึ้น Done uploading.



4 : ผลลัพธ์การทำงาน


เปิดหน้าต่าง Serial Monitor  โดยไปที่ Tools -> Serial Monitor

เปิดหน้าต่าง Serial Monitor  โดยไปที่ Tools -> Serial Monitor


ที่มุมขวาล่าง ของ Serial Monitor เลือกเป็น 9600 baud  คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล  คือ 9600 ตามที่เราเขียนโค้ดไว้

Serial Monitor เลือกเป็น 9600 baud

ที่ Serial Monitor แสดงค่าฝุ่น PM2.5 แสดงว่า เซ็นเซอร์วัดฝุ่น PM2.5 พร้อมใช้งานแล้ว

เซ็นเซอร์วัดฝุ่น PM2.5 พร้อมใช้งานแล้ว

ข้อมูลเปรียบเทียบกับคุณภาพอากาศ:

3000 + = Very Bad
1050-3000 = Bad
300-1050 = Ordinary
150-300 = Good
75-150 = Very Good
0-75 = Tiptop


นี่คือแผนภูมิเปรียบเทียบความเข้มข้นของฝุ่น
ตรวจสอบได้ไหมว่าค่าความเข้มข้นของฝุ่นอยู่ในระดับใด?

ในการทดสอบของเราตอนนี้ค่าที่วัดได้แสดงให้เห็นว่าคุณภาพอากาศดีมาก (Very Good)