ในตั้งแต่ช่วงปลายปี 2562 เป็นต้นมา ประเทศไทยถือเป็นหนึ่งในประเทศที่ติดอันดับคุณภาพแย่มากที่สุดในโลก โดยเฉพาะค่าฝุ่น PM2.5 ที่พุ่งสูงจนอยู่ในระดับที่ต้องใช้หน้ากากกันฝุ่น ปัญหาฝุ่น PM2.5 ไม่ได้เกิดขึ้นทุกวัน บางวันที่มีลมพัด จะทำให้อากาศถ่ายเท ลมจะพัดพาเอาฝุ่นไปด้วย ทำให้อากาศดีขึ้นบ้าง แต่ปัญหาคือ แล้วเราจะรู้ได้อย่างไรว่าวันไหนอากาศดี ไม่ต้องใส่หน้ากากออกนอกบ้าน ? แล้ววันไหนอากาศไม่ดี จำเป็นต้องใส่หน้ากากออกจากบ้าน ? หลายคนอาจจะเลือกดูจากแอพพลิเคชั่น AirVisual แอพพลิเคชั่นเช็คคุณภาพอากาศยอดนิยม แต่ค่าที่ได้จากแอพ AirVisual ก็ไม่ใช่ค่าคุณภาพอากาศที่แท้จริงในบริเวณที่เราอยู่จริง ๆ รวมทั้งข้อมูลที่ได้ก็ไม่ได้เรียลไทม์มากนัก ดังนั้นทางเลือกที่หลายคนเลือกคือซื้อเครื่องวัดฝุ่น แต่สำหรับ Maker อย่างเรา ๆ แล้ว การจะสร้างเครื่องวัดฝุ่นขึ้นมา ไม่ยากเลย ใช้อุปกรณ์เพียงไม่กี่ชิ้นเท่านั้น แถมยังส่งค่าขึ้นบนเซิร์ฟเวอร์ ดูค่าได้จากที่ไหนก็ได้บนโลก ขอแค่มีอินเตอร์เน็ตก็พอ
อุปกรณ์ที่ใช้ทำเครื่องวัดฝุ่นส่งค่าขึ้นเว็บ มีดังนี้
1.เซ็นเซอร์ฝุ่น PMS7003 ราคา 706 บาท จำนวน 1 ตัว
2.บอร์ด ESP32 รุ่นใดก็ได้ที่มีช่องต่อ VIN หรือ 5V จำนวน 1 บอร์ด ในบทความเลือกใช้บอร์ด NodeMCU-32S
3.จอ LCD 20x4 แบบ I2C สีใดก็ได้ จำนวน 1 ชุด ในบทความเลือกใช้สีเขียว
4.สายจั้มผู้-เมีย 7 เส้น และสายจั้มผู้-ผู้ 2 เส้น
5.โพรโทรบอร์ดขนาด 400 จุด หรือ โพรโทรบอร์ดขนาด 830 จุด จำนวน 1 แผ่น ในบทความเลือกใช้ขนาด 400 จุด
ขั้นตอนจะแบ่งออกเป็น 3 ส่วน คือ 1) ต่อวงจร 2) เตรียมเว็บ Senses IoT และ 3) เขียนโปรแกรม
การต่อวงจรคือการเชื่อมต่ออุปกรณ์ต่าง ๆ เข้าด้วยกันด้วยสายไฟ ในบทความนี้เลือกใช้โพรโทบอร์ดเป็นอุปกรณ์สำหรับเสียบบอร์ด ESP32 และใช้พักสายจั้ม ให้นำสายจั้มผู้-ผู้ และผู้-เมียต่อตามรูปด้านล่างนี้
หรือให้ต่อตามตารางด้านล่างนี้
บอร์ด ESP32 | จอ LCD 20x4 แบบ I2C | เซ็นเซอร์ฝุ่น PMS7003 |
---|---|---|
VIN หรือ 5V | VCC | 5V |
GND | GND | GND |
23 | TX | |
22 | SCL | |
21 | SDA |
SENSES คือ Platform ประเภทหนึ่งสำหรับรับค่าจากอุปกรณ์ IoT (Internet of things) มาแสดงผลบนออนไลน์ในรูปแบบ Dashboard (ที่มา : IoT ไปกับ SENSES Platform ตอนที่ 1)
สำหรับในบทความนี้ เว็บ Senses IoT จะใช้แสดงค่าฝุ่นในรูปแบบของกราฟบนหน้าเว็บ เพื่อให้เปิดดูที่ไหนก็ได้บนโลกนี้ ขอแค่มีอินเตอร์เน็ต ขั้นตอนการเตรียมเว็บ Senses IoT มีดังนี้
สมัครสมาชิกกับ Senses IoT โดยเข้าไปที่ https://www.sensesiot.com/login.html#signup แล้วคลิกที่แท็ป Sign Up ตั้งชื่อผู้ใช้ กรอกอีเมล์ที่ใช้ (อีเมลที่กรอกจะใช้ยืนยันตัวตน) ตั้งค่ารหัสผ่าน แล้วกรอกรหัสผ่านซ้ำอีกครั้งเพื่อยืนยัน แล้วกดปุ่ม SIGN UP NOW
หากกรอกข้อมูลการสมัครสมาชิกครบถ้วน ระบบจะแจ้งว่าการสมัครสมาชิกเสร็จเรียบร้อยแล้ว แต่จำเป็นต้องยืนยันตัวตนก่อน
ให้เข้าไปดูในเมล์ จะมีอีเมล์ส่งเข้ามาแล้ว ในอีเมล์ให้กดปุ่ม Activate เพื่อยืนยันตัวตน
แล้วระบบจะแจ้งว่าการยืนยันตัวตนสำเร็จแล้ว ถือว่าการสมัครสมาชิกเสร็จสมบูรณ์ จากนั้นให้กดที่เมนู Login
ในหน้าล็อกอิน กรอกอีเมล์ และรหัสผ่าน ที่ได้สมัครสมาชิกไว้ แล้วกดปุ่ม LOG IN
หลังจากล็อกอินแล้ว ระบบจะพามาที่หน้า DASHBOARD (หากไม่พามา ให้กดที่เมนู DASHBOARD)
เริ่มลงทะเบียนอุปกรณ์เครื่องวัดฝุ่น โดยกดที่ปุ่ม My IoT garage
ในหน้าลงทะเบียนอุปกรณ์ ฝั่งด้านขวาจะเป็นจุดให้เพิ่มอุปกรณ์ลงไปในระบบ ในช่องแรก ให้ใส่ชื่ออุปกรณ์ลงไป โดยสามารถตั้งเป็นชื่ออะไรก็ได้ ในช่องที่ 2 ใส่คำอธิบายลงไป โดยใส่อะไรก็ได้ จากนั้นกดปุ่ม Register device
หากเพิ่มอุปกรณ์สำเร็จ ชื่ออุปกรณ์จะปรากฏที่ตารางด้านซ้าย พร้อมทั้งแจ้ง Key ประจำตัวอุปกรณ์ด้วย (อุปกรณ์ 1 ตัว มี Key เป็นของตัวเอง 1 Key และ Key จะถูกนำไปใช้ตอนเขียนโปรแกรม)
จากนั้นจะเริ่มสร้างหน้าแสดงข้อมูลฝุ่นในรูปแบบกราฟ และแบบเกจวัด ให้กดกลับไปที่เมนู DASHBOARD
จากนั้นกดปุ่ม Create Dashboard
ตั้งชื่อหน้าแสดงข้อมูล ตัวอย่างตั้ง PM2.5 จากนั้นกดปุ่ม Save
จากนั้นกดปุ่ม Dashboard Manager
เลือกหน้าแสดงผลที่ได้สร้างไว้ โดยกดที่ชื่อของหน้า (ไม่ใช่กดที่รูปถังขยะ หากกดถังขยะ หน้าแสดงผลจะถูกลบ ต้องสร้างใหม่อีกรอบ)
เมื่อเลือกหน้าแสดงผลแล้ว ขั้นตอนต่อมาคือใส่กราฟ และเกจวัดลงในหน้าแสดงผล ให้กดปุ่ม Edit Dashboard
พื้นหลังของเว็บจะเปลี่ยนเป็นสีดำ พร้อมแสดงเส้นกริดขึ้นมา เพื่อบอกว่าตอนนี้อยู่ในโหมดแก้ไข
กดปุ่ม chart ที่อยู่ด้านล่าง เพื่อเพิ่มกราฟ
กราฟที่สร้างขึ้นใหม่จะแสดงขึ้นมา การย้ายกราฟทำได้โดยคลิกที่กราฟแล้วลากไปพื้นที่ที่ต้องการ
กราฟที่สร้างขึ้นมาใหม่นี้ กำหนดให้ใช้แสดงข้อมูลฝุ่น PM2.5 โดยกดปุ่ม SETTING ที่อยู่เหนือกราฟ
แก้ไขข้อมูลดังนี้
ทำซ้ำขั้นตอนเดิม เพิ่มกราฟของ PM1.0 PM10.0 กำหนดค่าต่าง ๆ เหมือนเดิม แต่เปลี่ยนตรงช่อง Slot เป็น 2 สำหรับ PM1.0 และเป็น 3 สำหรับ PM10.0 (ในขั้นตอนการเขียนโปรแกรม จะกำหนดให้ข้อมูล PM1.0 มาจาก Slot หมายเลข 2 และ PM10.0 มาจาก Slot หมายเลข 3)
ผลคือ ได้กราฟของ PM2.5 PM1.0 และ PM10.0 มาแล้ว
เพิ่มการแสดงผลข้อมูลแบบเกจวัด โดยที่ด้างล่าง กดปุ่ม gauge
เกจวัดจะถูดเพิ่มขึ้นมา กดปุ่ม SETTING เพื่อตั้งค่าเกจวัด
กำหนดข้อมูลในช่องต่าง ๆ ดังนี้
ทำซ้ำขั้นตอนเดิม โดยเพิ่มเกจวัดของ PM2.5 และ PM10.0 กำหนด Slot data ให้ถูกต้อง
ผลคือจะได้กราฟและเกจวัดมาทั้งหมดรวม 6 ตัว จัดวางทุกอย่างให้สวยงาม แล้วกดปุ่ม Save edited Dashboard เพื่อบันทึกรูปแบบการจัดวางทั้งหมด
จะได้หน้าแสดงผลข้อมูลที่สมบูรณ์ พร้อมใช้แสดงผลข้อมูลหลังเขียนโปรแกรมในขั้นตอนต่อไป
หากท่านยังไม่เคยใช้งาน ESP32 มาก่อน แนะนำให้ทำขั้นตอนตามบทความ [ติดตั้ง] มาลองเล่นเจ้า ESP32 กันเถอะ ! เพื่อทดสอบการทำงานของบอร์ด และทดลองอัพโหลดโปรแกรมก่อน
ในการเขียนโปรแกรมใช้โปรแกรม ArduinoIDE
ให้เปิดโปรแกรม ArduinoIDE ขึ้นมา ติดตั้งไลบiารี่จอ LCD แบบ I2C โดยกดไปที่ Sketch > Include Library เลือก Manage Libraries...
ในหน้าต่าง Library Manager ค้นหา LiquidCrystal_PCF8574 คลิกเลือก LiquidCrystal_PCF8574 แล้วกดปุ่ม Install
รอจนกว่าจะติดตั้งเสร็จ เมื่อติดตั้งเสร็จแล้ว จะแสดงข้อความ INSTALLED (ดังรูป) ให้กดปุ่ม Close ได้เลย
สร้างไฟล์ใหม่ให้เรียบร้อย แล้วคัดลอกโค้ดโปรแกรมด้านล่างนี้ไปใส่ในโปรแกรม ArduinoIDE
แล้วให้แก้ไขโค้ดโปรแกรมดังนี้
ดูตัวอย่างการแก้ไขข้อมูลได้จากรูปด้านล่างนี้
เลือกบอร์ดเป็น NodeMCU-32S (แม้ท่านไม่ได้ใช้บอร์ด NodeMCU-32S แต่ให้เลือกบอร์ด NodeMCU-32S) เลือกพอร์ตให้เรียบร้อย แล้วอัพโหลดโปรแกรมลงบอร์ดได้เลย
หลังอัพโหลดโปรแกรม หน้าจอ LCD จะต้องแสดงผลข้อความขึ้นมา ดังรูป โดยจะแสดงสถานะการเชื่อมต่อ WiFi ก่อน
หลังเชื่อมต่อ WiFi ได้แล้ว ที่หน้าจอจะแสดงค่าฝุ่น PM2.5 PM1.0 และ PM10.0 ขึ้นมา
ที่ Senses IoT หน้า Dashboard จะเริ่มแสดงข้อมูลต่าง ๆ ขึ้นมาแล้ว
ก็เป็นอันเสร็จสิ้นการทำเครื่องวัดฝุ่นด้วยตัวเองแล้ว แถมดูบนเว็บจากที่ไหนก็ได้บนโลกด้วย !
ปัญหา | การแก้ไข |
---|---|
จอ LCD 20x4 แบบ I2C ไม่แสดงผล |
ให้ทำตาขั้นตอนดังนี้ (หากขั้นตอนใดทำแล้วใช้งานได้ ไม่ต้องทำขั้นตอนต่อไป) 1) ตรวจสอบการเชื่อมต่อสายไฟให้ดี 2) ใช้ไขควงปรับที่ VR ด้านหลังจอ จนกว่าจะขึ้นตัวอักษร หากขึ้นแต่แถบสีดำ ให้ทำขั้นตอนต่อไป 3) ในโค้ดโปรแกรมบรรทัดที่ 16 แก้ไขจาก 0x27 เป็น 0x3F แล้วทดลองอัพโหลดโปรแกรมอีกครั้ง |
จอ LCD 20x4 แบบ I2C แสดงผลมั้ว | เกิดจากสายไฟหลวม ให้เปลี่ยนสายไฟใหม่ |
Senses IoT ไม่ขึ้นค่า | ตรวจสอบ ID และ Key ว่าตรงกับในเว็บ Senses IoT หรือไม่ |
ขึ้น Connecting ค้าง | แก้ไขช่อง WIFI_NAME และ WIFI_PASS ให้ถูกต้อง หากใช้สัญญาณ WIFI จากโทรศัพท์มือถือ ให้ลองเปลี่ยนเครื่องโทรศัพท์มือถือที่ปล่อยสัญญาณ (โทรศัพท์อาจจะใหม่ไป ปล่อยสัญญาณ WiFi 5GHz แต่ ESP32 รับได้แค่ 2.4GHz) |
ค่าฝุ่นไม่ขึ้นในหน้าจอ | ตรวจสอบการเชื่อมต่อสายกับ PMS7003 ขา TX ต้องต่อกับ GPIO23 และพัดลมที่ PMS7003 ต้องหมุน |
สำหรับบทความหน้าเราจะมาทำกล่องใส่เครื่องวัดฝุ่นนี้กัน โดย DIY จากกล่องกระดาษ หรือใช้เครื่องปริ้น 3D ปริ้นกล่องออกมา ฝากติดตามด้วยนะครับ
~สวัสดีครับ~