🌡️ Building an IoT Air Monitoring System
Tech Stack: ESP32 | SHT31 | PMS7003 | Node.js | MySQL
วันนี้สภาพอากาศค่อนข้างแย่ครับ ทั้งร้อนและมีฝุ่น PM2.5 สูง ผมเลยถือโอกาสสร้างระบบ IoT Air Monitoring เพื่อวัดค่าแบบ Real-time และส่งข้อมูลไปเก็บไว้ที่ iot.weaq.cc
🎯 Objectives
- วัดอุณหภูมิและความชื้น (SHT31)
- วัดค่าฝุ่น PM2.5 (PMS7003)
- ประมวลผลและเชื่อมต่อ Wi-Fi ด้วย ESP32
- ส่งข้อมูลผ่าน HTTP POST API
- Future: ระบบแจ้งเตือนผ่าน Line/Telegram
⚙️ System Architecture
การไหลของข้อมูลถูกออกแบบให้มีความเสถียรและเรียกดูได้จากทุกที่:
| Phase | Description |
|---|---|
| Sensing | SHT31 (I2C) & PMS7003 (UART) อ่านค่าส่งให้ ESP32 |
| Transport | ESP32 ส่ง JSON Payload ผ่าน HTTP API |
| Storage | Backend (Node.js) รับค่าและบันทึกลง MySQL |
| Display | Dashboard ดึงข้อมูลมาแสดงผลเป็นกราฟ Real-time |
🛠️ Hardware Components
1. Sensors & Controller
- ESP32 DevKit V1: หัวใจหลักในการประมวลผล
- SHT31: เซนเซอร์วัดอุณหภูมิ/ความชื้นที่มีความแม่นยำสูง
- PMS7003: เซนเซอร์วัดฝุ่นด้วยหลักการ Laser Scattering
2. Data Structure (JSON)
ตัวอย่างโครงสร้างข้อมูลที่ ESP32 ส่งไปยัง Server:
{ "device_id": "esp32-node-01", "temperature": 34.2, "humidity": 62.5, "pm25": 85 }
🚀 Challenges & Solutions
[!IMPORTANT] Serial Data Management: การอ่านค่าจาก PMS7003 ต้องจัดการ Checksum ให้ถูกต้องเพื่อป้องกันข้อมูลผิดพลาด
- Network Stability: เพิ่มระบบ Reconnect อัตโนมัติหาก Wi-Fi หลุด
- Data Smoothing: ใช้การทำ Average ค่าที่อ่านได้ 10 ครั้งก่อนส่ง เพื่อลด Noise
- Database Optimization: ออกแบบ Index ให้รองรับการ Query ข้อมูลย้อนหลังปริมาณมาก
📈 Next Steps & Improvements
- Protocol Change: เปลี่ยนจาก HTTP เป็น MQTT เพื่อลด Overhead
- Analytics: ใช้ AI/ML ในการทำ Forecasting แนวโน้มฝุ่น
- Solar Power: พัฒนาระบบให้ใช้พลังงานแสงอาทิตย์
📝 Conclusion
โปรเจกต์นี้ช่วยให้เราได้รับข้อมูลสภาพแวดล้อมที่ "จริง" ที่สุดในจุดที่เราอยู่อาศัย ไม่ใช่แค่ค่าเฉลี่ยของจังหวัด ซึ่งเป็นพื้นฐานสำคัญในการดูแลสุขภาพในอนาคตครับ