ผู้เขียนบทความ : นายธนภัทร เพ็ชรอินทอง #COE15
นายณน สุวรรณมณี #COE15
นายณัฐพงค์ ตะวัน#COE15
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา 04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมา
ในตั้งแต่ช่วงปลายปี 2562 เป็นต้นมา ประเทศไทยถือเป็นหนึ่งในประเทศที่ติดอันดับคุณภาพแย่มากที่สุดในโลก โดยเฉพาะค่าฝุ่น PM2.5 ที่พุ่งสูงจนอยู่ในระดับที่ต้องใช้หน้ากากกันฝุ่น ปัญหาฝุ่น PM2.5 ไม่ได้เกิดขึ้นทุกวัน บางวันที่มีลมพัด จะทำให้อากาศถ่ายเท ลมจะพัดพาเอาฝุ่นไปด้วย ทำให้อากาศดีขึ้นบ้าง แต่ปัญหาคือ แล้วเราจะรู้ได้อย่างไรว่าวันไหนอากาศดี ไม่ต้องใส่หน้ากากออกนอกบ้าน ? แล้ววันไหนอากาศไม่ดี จำเป็นต้องใส่หน้ากากออกจากบ้าน ? หลายคนอาจจะเลือกดูจากแอพพลิเคชั่น AirVisual แอพพลิเคชั่นเช็คคุณภาพอากาศยอดนิยม แต่ค่าที่ได้จากแอพ AirVisual ก็ไม่ใช่ค่าคุณภาพอากาศที่แท้จริงในบริเวณที่เราอยู่จริง ๆ รวมทั้งข้อมูลที่ได้ก็ไม่ได้เรียลไทม์มากนัก
2.วัตถุประสงค์
2.1 เพื่อแสดงข้อมูลแบบเรียลไทม์
2.2 เพื่อความสะดวกสบายในการใช้งาน
2.3 เพื่อวัดคุณภาพอากาศ
3.ขอบเขต
3.1 สามารถเพิ่มความสะดวกสบายและความแม่นยำในการตรวจวัดค่าฝุ่นละอองในอากาศ
3.2 สามารถแจ้งเตือนการใช้ ESP32 เพื่อตรวจวัดค่า PM2.5 และส่งการแจ้งเตือนผ่านแอปพลิเคชันโทรศัพท์เมื่อระดับ PM2.5 เกินค่าที่กำหนด
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1 สามารถตรวจวัดค่าฝุ่นละอองตามตำแหน่งและเวลาที่ต้องการ
4.2 เพื่อป้องกันการรับฝุ่นอันตรายเข้าสู้ร่างกาย
4.3 เป็นแนวทางให้ผู้สนใจนำไปต่อยอดใช้งานได้
5.ความรู้ที่เกี่ยวข้อง
5.1 อุปกรณ์ที่ใช้
ESP32 คือ wifi microcontroller ที่ถูกพัฒนาต่อจาก ESP8266 โดยเพิ่ม CPU เป็น 2 core, Wi-Fi ที่เร็วขึ้น, มีขา GPIO ให้ใช้งานมากขึ้น และรองรับ Bluetooth อีกด้วย
สายต่อจัมเปอร์ (Jumpers) คือสายที่ใช้สำหรับเชื่อมต่อระหว่าง Arduino กับ Sensor หรือบอร์ดทดลอง โมดูลต่างๆ เพื่อเชื่อมต่อกับวงจร
PM2.5 Laser Dust Sensor เป็นเซนเซอร์ตรวจจับฝุ่น pm2.5 แบบเลเซอร์ โดยที่เซนเซอร์จะใช้พัดลมดูดอากาศเข้าไปในตัวเซนเซอร์ แล้วตรวจจับฝุ่นด้วยแสงเลเซอร์
5.2 Main Code
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6IL75pc3W"
#define BLYNK_TEMPLATE_NAME "Non"
#define BLYNK_AUTH_TOKEN "1ySKiwcDTCx_hHK9WPO2sQy4izvNXmdx"
#include "PMS.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
PMS pms(Serial);
PMS::DATA data;
// Your WiFi credentials.
// Set password to "" for open networks.
char auth[] = "1ySKiwcDTCx_hHK9WPO2sQy4izvNXmdx";
char ssid[] = "Non";
char pass[] = "0655060465";
WidgetLCD LCD(V0);
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop()
{
Blynk.run();
if (pms.read(data)){
LCD.clear();
LCD.print(5,0," PMS");
LCD.print(4,1," Monitor");
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0 );
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5 );
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0 );
Blynk.virtualWrite(V1,data.PM_AE_UG_1_0 );
Blynk.virtualWrite(V2,data.PM_AE_UG_2_5 );
Blynk.virtualWrite(V3,data.PM_AE_UG_10_0);
}
}
บรรทัดนี้กำหนดให้ข้อมูลของการเชื่อมต่อแสดงผลบน Serial Monitor.
#define BLYNK_PRINT Serial
กำหนดข้อมูลของแม่แบบและโทเคน (token) สำหรับ Blynk ที่คุณได้รับจาก Blynk Device Info.
#define BLYNK_TEMPLATE_ID "TMPL6IL75pc3W" และ #define BLYNK_AUTH_TOKEN "1ySKiwcDTCx_hHK9WPO2sQy4izvNXmdx"
นำเข้าไลบรารีที่จำเป็น เช่น “PMS,” “WiFi,” “WiFiClient,” และ “BlynkSimpleEsp32.”
#include "PMS.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
กำหนดการเริ่มต้นของเซ็นเซอร์ PMS และตั้งค่าการสื่อสารผ่านพอร์ต Serial.
PMS pms(Serial);
PMS::DATA data;
ระบุข้อมูลของเครือข่าย WiFi ในตัวแปร ssid
และ pass
.
char auth[] = "1ySKiwcDTCx_hHK9WPO2sQy4izvNXmdx";
char ssid[] = "Non";
char pass[] = "0655060465";
กำหนด WidgetLCD ที่ชื่อ LCD
เพื่อใช้งานกับพินเสมือน V0 ในแอป Blynk.
WidgetLCD LCD(V0);
ในฟังก์ชัน setup()
, โค้ดเริ่มต้นการสื่อสารผ่าน Serial และเชื่อมต่อกับ Blynk โดยใช้โทเคน (token) และข้อมูลเครือข่าย WiFi.
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
ในฟังก์ชัน loop()
, โค้ดเรียกใช้ฟังก์ชัน Blynk.run()
เพื่อจัดการการสื่อสารกับ Blynk.
void loop()
{
Blynk.run();
ข้อมูลจากเซ็นเซอร์ PMS ถูกอ่านด้วยฟังก์ชัน pms.read(data)
และถ้าข้อมูลถูกอ่านสำเร็จ จะแสดงผลลัพธ์บนวิดเจ็ต LCD และส่งไปยังพินเสมือน V1, V2, และ V3 ของ Blynk เพื่อให้คุณสามารถดูค่าความเข้มของสารอนุภาคขนาดต่าง ๆ (PM1.0, PM2.5, และ PM10.0) ในอากาศผ่านแอป Blynk ได้ด้วยการใช้ ESP32 และเซ็นเซอร์ PMS.
if (pms.read(data)){
LCD.clear();
LCD.print(5,0," PMS");
LCD.print(4,1," Monitor");
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0 );
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5 );
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0 );
Blynk.virtualWrite(V1,data.PM_AE_UG_1_0 );
Blynk.virtualWrite(V2,data.PM_AE_UG_2_5 );
Blynk.virtualWrite(V3,data.PM_AE_UG_10_0);
}
}
6.ผลการดำเนินงาน
Diagram ของระบบ
วิธีการใช้งาน
ในการเริ่มต้นการใช้งานระบบจะแจ้งเตือนค่าฝุ่นที่แอปพลิเคชั่น blynk ต้องมีแอปพลิเคชั่น blynk ในมือถือเพื่อรับการแจ้งเตือนหลังจากนั้น ทำการจ่ายไฟให้ระบบและเชื่อมต่อ WIFI ระบบก็พร้อมทำงานได้ทันที
เมื่อตัวเซนเซอร์เปิดใช้งานแล้ว เมื่อได้รับค่าฝุ่นตัวเซนเซอร์จะใช้เลเซอร์ในการประมวณผลและแสดงผลออกมาทางแอปพลิเคชั่นที่ตั้งค่าไว้
7.สรุปผลการทดลอง
การทดลองตัววันฝุ่นโดยใช้แป้งและควันจากบุหรี่ แสดงให้เห็นว่าเมื่อละอองฝุ่นหรือควันเมื่อโดนเซนเซอร์ตรวจจับ
เซนเซอร์จะประมวณผลเป็น3ค่า คือ PM10 PM2.5 PM1 และจะแสดงค่าผ่านโปรแกรมที่ได้ตั้งไว้ ค่าจะมากหรือน้อย
ขึ้นอยู่กับชนิด และ ปริมาณของฝุ่นควัน สามารถนำไปต่อยอดได้ ทั้งการหารายได้ และ การศีกษาข้อมูลของฝุ่นตามบริเวณ หรือ พื้นที่นั้นๆ
ทดสอบ | PM10 | PM2.5 | PM1 |
ควันจากแป้ง | 184μg | 25μg | 12μg |
ควันจากบุหรี่ | 200μg | 200μg | 200μg |
8.ข้อมูลอ้างอิง
8.1 ข้อมูลฝุ่น PM2.5 https://www.mnre.go.th/om/th/news/detail/31459
8.2 เซนเซอร์ PMS3003 และ ESP32 https://www.cybertice.com/article/376/%E0%B8%AA%E0%B8%AD%E0%B8%99%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-esp32-pm2-5-%E0%B9%80%E0%B8%8B%E0%B9%87%E0%B8%99%E0%B9%80%E0%B8%8B%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B8%95%E0%B8%A3%E0%B8%A7%E0%B8%88%E0%B8%88%E0%B8%B1%E0%B8%9A%E0%B8%9D%E0%B8%B8%E0%B9%88%E0%B8%99%E0%B8%A5%E0%B8%B0%E0%B8%AD%E0%B8%AD%E0%B8%87-%E0%B8%A7%E0%B8%B1%E0%B8%94%E0%B8%84%E0%B8%B8%E0%B8%93%E0%B8%A0%E0%B8%B2%E0%B8%9E%E0%B8%AD%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A8-laser-dust-sensor-pms3003
8.3 การใช้งานแอป Blynk https://www.youtube.com/watch?si=3bj41DWQgCfnedvi&v=oL0jiShVStU&feature=youtu.be
วิดีโอการใช้งานเซนเซอร์วัดฝุ่น PM10 PM2.5 และ PM1