ทุกวันนี้อุปกรณ์วัดสภาพแวดล้อมมีให้เห็นเต็มไปหมดครับ ตั้งแต่สถานีตรวจอากาศอัจฉริยะไปจนถึงเครื่องวัดคุณภาพอากาศในบ้าน แต่ส่วนใหญ่มักจะมีข้อจำกัดเหมือนๆ กันคือ "มันโชว์แค่ตัวเลข" ถึงแม้ค่าที่วัดได้จะแม่นยำแค่ไหน แต่มันก็ทิ้งคำถามคาใจให้ผู้ใช้งานอย่างเราเสมอว่า "แล้วตัวเลขพวกนี้มันแปลว่าอะไรล่ะ? แล้วเราต้องทำยังไงต่อ?"
ตอนที่ผมเริ่มศึกษาเรื่องเซนเซอร์ ผมสังเกตเห็นช่องโหว่นี้ครับ อุปกรณ์ส่วนใหญ่วัดค่าได้ แต่มีน้อยมากที่จะ ตีความหมาย (Interpret) ให้เราเข้าใจจริงๆ การเห็นค่า PM2.5 หรือ % ความชื้นมันก็ดีครับ แต่สำหรับคนทั่วไป มันยากที่จะแปลงตัวเลขเหล่านั้นเป็นการลงมือทำเพื่อปรับปรุงสุขภาพหรือความสบายในบ้าน
นั่นคือจุดเริ่มต้นของไอเดีย EnviroScope ครับ!
EnviroScope คือผู้ช่วยพกพาส่วนตัวด้านสภาพอากาศและคุณภาพอากาศ ที่จับเอาเซนเซอร์หลายๆ ตัว, แผงวงจร PCB แบบ Custom และหน้าจอทัชสกรีนขนาด 2.8 นิ้วมารวมไว้ด้วยกัน แถมยังรันโมเดล Machine Learning ไว้ในตัวเครื่องเลย ทำให้มันสามารถตีความข้อมูลสภาพแวดล้อมได้แบบเรียลไทม์
ระบบนี้จะคอยมอนิเตอร์พารามิเตอร์ในร่ม (Indoor) เช่น ฝุ่น PM2.5, ก๊าซคาร์บอนมอนอกไซด์ (CO), อุณหภูมิ, ความกดอากาศ, ความชื้น, รังสี UV และแสงสว่างรอบข้าง ในขณะเดียวกันก็ดึงข้อมูลสภาพอากาศภายนอก (Outdoor) ผ่าน Wi-Fi มาด้วย เพื่อเปรียบเทียบและสร้างคำแนะนำที่เข้ากับสถานการณ์ (Context-aware) ได้อย่างชาญฉลาด ทุกกระบวนการคิดวิเคราะห์เกิดขึ้นแบบ Edge AI (ทำจบในตัวเครื่อง) เปลี่ยนตัวเลขธรรมดาให้กลายเป็น "ข้อมูลเชิงลึกที่นำไปใช้ได้จริง" (Actionable insights) ครับ!
อุปกรณ์ที่ต้องใช้ (Supplies)
ก่อนเริ่มลุย มาดูชิ้นส่วนฮาร์ดแวร์กันก่อนครับ (หากเพื่อนๆ กำลังมองหาบอร์ดไมโครคอนโทรลเลอร์ เซนเซอร์ หรือเส้นพลาสติก 3D Print เกรดโปรสำหรับทำเคส สามารถเข้าไปเลือกช้อปสินค้าคุณภาพได้ที่ Globalbyte เลยครับ)
- แผงวงจร Custom Designed PCB
- โมดูล ESP32-S3
- ไมโครคอนโทรลเลอร์ STM32G474RB
- หน้าจอ Wavehare 2.8 นิ้ว LCD Touch panel
- เซนเซอร์: BME688, PMS7003T, SCD40, BH1750FVI, LTR390-UV
- แบตเตอรี่ Li-ion 18650 พร้อมรางถ่าน
- วงจรจัดการพลังงาน: TP4056 (ชาร์จ), MAX17048 (วัดระดับแบต), TPS61023 (Boost), AMS1117-3.3 (LDO)
- พอร์ต USB-C, ปุ่มกด SMD, ตัวต้านทาน (Resistors) และคาปาซิเตอร์ (Capacitors) แบบ SMD
Step 1: ฟีเจอร์เด่นของ EnviroScope (Features)
-
ตรวจสอบสภาพแวดล้อมในร่มแบบจัดเต็ม: วัดทั้ง PM2.5, CO, อุณหภูมิ, ความกดอากาศ, ความชื้น, UV และแสงสว่าง ให้ภาพรวมของคุณภาพอากาศแบบครบถ้วน
-
On-Device Intelligence (Edge AI): รันโมเดล Machine Learning ในตัวเครื่องเลย! ไม่ต้องพึ่งพาอินเทอร์เน็ตในการคิดวิเคราะห์ ทำให้ตอบสนองไว เป็นส่วนตัว และไว้ใจได้เสมอ
-
ดึงข้อมูลสภาพอากาศภายนอก: เชื่อมต่อ Wi-Fi เพื่อดึงข้อมูลอากาศข้างนอกมาเปรียบเทียบ เช่น ถ้าข้างนอกอากาศดีกว่า AI จะแนะนำให้เปิดหน้าต่างระบายอากาศแทน
-
พกพาสะดวกด้วยแบตเตอรี่: ใช้แบต 18650 มีวงจรชาร์จผ่าน USB ในตัว พร้อมชิป MAX17048 บอกเปอร์เซ็นต์แบตเตอรี่ได้ด้วย
-
Touchscreen UI: หน้าจอ 2.8 นิ้วสุดล้ำ แสดงข้อมูลเรียลไทม์ กราฟย้อนหลัง และคำแนะนำแบบ Interactive ดูกราฟิกสวยๆ เข้าใจง่าย
Step 2: สถาปัตยกรรมระบบ (System Architecture)
ระบบนี้ใช้ดีไซน์แบบ Dual-MCU (ไมโครคอนโทรลเลอร์ 2 ตัว) ครับ โดย STM32G4 จะรับบทเป็นตัวจัดการเซนเซอร์ (Sensor Interface Controller) ดึงข้อมูลผ่าน UART และ I2C จัดการแพ็กเกจข้อมูลให้เรียบร้อยแล้วส่งต่อผ่าน UART ไปยัง ESP32-S3 ซึ่งจะรับบทเป็น "สมองกลหลัก" ในการทำ Edge AI Inference, เรนเดอร์หน้าจอ UI และต่อ Wi-Fi ส่วนระบบไฟ (Power Management) ก็ถูกจัดการอย่างเป็นระเบียบเพื่อให้จ่ายไฟจากแบต 18650 ได้อย่างเสถียรครับ
Step 3: การออกแบบวงจรและ PCB (Schematic & PCB Design)
ตอนแรกโปรเจกต์นี้เริ่มจากการเอาบอร์ดพัฒนา (Dev boards) มาเสียบสายจัมเปอร์โยงไปมาครับ แต่มันเกะกะ เปราะบาง และดูไม่เหมือน "โปรดักส์" ที่จะเอามาวางบนโต๊ะสวยๆ ได้เลย ผมเลยตัดสินใจออกแบบวงจร (Schematic) และแผ่น PCB แบบ 2-layer หนา 1.6mm ขึ้นมาเอง เพื่อรวมทุกอย่างให้กะทัดรัด แข็งแรง และเชื่อถือได้ครับ (สามารถโหลดไฟล์ PDF วงจรไปดูได้ที่ EnviroScope_Sch.pdf)
Step 4: การสั่งผลิตและประกอบ PCB (Manufacturing & Assembly)
เมื่อดีไซน์เสร็จ ผมได้ใช้บริการจาก NextPCB ในการผลิตและประกอบชิ้นส่วนลงบอร์ด (PCBA) ครับ ต้องขอบคุณ NextPCB ที่สนับสนุนโปรเจกต์นี้ แผ่นวงจรที่ได้มาเนี้ยบมาก การบัดกรีอุปกรณ์ชิ้นเล็กๆ ทำออกมาได้เป๊ะสุดๆ ช่วยลดเวลาการพัฒนาไปได้เยอะมากครับ
Step 5: โครงสร้าง Software & Firmware
ซอฟต์แวร์ถูกออกแบบมาให้แบ่งหน้าที่กันอย่างชัดเจนครับ:
-
STM32G4 (Sensor Layer): รับผิดชอบคุยกับเซนเซอร์ อ่านค่า จัดรูปแบบ แล้วส่งไปให้ ESP32-S3 ผ่าน UART
-
Data Collection & Model Training: เอาข้อมูลเซนเซอร์มาเทรน Machine Learning ใน Edge Impulse Studio สร้างโมเดลจำแนกสถานการณ์
-
ESP32-S3 (Control Unit): รันโมเดล Edge AI ภายในตัวเครื่อง (Local Inference) เพื่อตัดสินใจและสร้างคำแนะนำ
-
User Interface: ใช้ LVGL (Light and Versatile Graphics Library) ทำให้กราฟิกบนจอทัชสกรีนลื่นไหลและสวยงาม
-
Wi-Fi Integration: เชื่อมต่อเน็ตดึงข้อมูลอากาศภายนอกมาประกอบการตัดสินใจ
Step 6: การรับข้อมูลเซนเซอร์ (STM32G4)
เราเขียน Firmware ใน STM32CubeIDE เพื่ออ่านค่าเซนเซอร์ครับ PM2.5 อ่านผ่าน UART ส่วนเซนเซอร์ตัวอื่นอ่านผ่าน I2C จากนั้นจะแพ็กข้อมูลส่งเป็น String ไปให้ ESP32-S3 (ใครสนใจโค้ดตัวเต็มดูได้ที่ GitHub เลยครับ)
char tx_buffer[128];
void read_sensors_and_send()
{
float pm25 = read_pm25_uart();
float co2 = read_co2_i2c();
float temp = read_temp_humidity();
float hum = get_humidity();
float uv = read_uv();
float lux = read_light();
sprintf(tx_buffer,
"PM25:%.2f,CO2:%.2f,TEMP:%.2f,HUM:%.2f,UV:%.2f,LUX:%.2f\n",
pm25, co2, temp, hum, uv, lux);
HAL_UART_Transmit(&huart1, (uint8_t*)tx_buffer, strlen(tx_buffer), 100);
}
Step 7: การเก็บข้อมูล (Data Collection) สำหรับ Edge Impulse
เมื่อ ESP32-S3 ได้รับข้อมูลจาก STM32 มันจะแปลงและปริ้นท์ออกทาง Serial Terminal ในรูปแบบ CSV เพื่อให้เราเอาไปเก็บเป็น Dataset สำหรับเทรน AI ครับ ขั้นตอนนี้สำคัญมาก เราต้องจงใจเก็บข้อมูลในหลายๆ สถานการณ์ เช่น ห้องอากาศดี, ห้อง CO2 สูง หรือห้องที่มีฝุ่น เพื่อให้โมเดล AI เรียนรู้ได้ครอบคลุม (ตัวอย่างไฟล์ high_co2.csv)
Step 8: เทรนโมเดล Edge AI ด้วย Edge Impulse
นี่คือหัวใจของความฉลาดเลยครับ! เราเอาข้อมูลที่เก็บมาอัปโหลดเข้า Edge Impulse Studio จากนั้นติดป้ายกำกับ (Label) ว่าข้อมูลช่วงนี้คือ Good Air, Poor Ventilation หรือ High Pollution ข้อมูลยิ่งเยอะและหลากหลาย โมเดลยิ่งทายแม่นครับ
เมื่อเทรนและทดสอบจนพอใจแล้ว เราก็ Export โมเดลออกมาเป็นไลบรารีของ Arduino แล้วเอาไปยัดใส่ Firmware ของ ESP32-S3 ให้มันประมวลผลเองได้เลยแบบออฟไลน์!
Step 9: ออกแบบ UI ด้วย SquareLine Studio และ LVGL
เพื่อให้ใช้งานง่าย ผมใช้ SquareLine Studio (โปรแกรมทำ UI แบบลากวาง) ช่วยออกแบบหน้าจอครับ แบ่งเป็น 3 หน้าหลักๆ คือ Welcome Screen, Indoor Environment Screen และ Outdoor Weather Screen โปรแกรมนี้จะช่วยแปลงดีไซน์ของเราออกมาเป็นโค้ด LVGL ให้อัตโนมัติ พร้อมใช้งานร่วมกับหน้าจอ ST7789T3 และระบบสัมผัส CST328 ได้เลย
Step 10: การตั้งค่า ESP32-S3 บน Arduino IDE
มาเซ็ตอัพบอร์ด ESP32-S3 กันครับ เริ่มจากเพิ่ม URL https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json ใน Board Manager แล้วติดตั้งบอร์ด ESP32S3 Dev Module จากนั้นลงไลบรารี LVGL v8.3.10 และ TFT_eSPI
อย่าลืมเข้าไปตั้งค่าไฟล์ User_Setup.h สำหรับชิปจอ ST7789 ตามโค้ดด้านล่างนี้ และตั้งค่า lv_conf.h เพื่อกำหนดความละเอียดและสีจอครับ
Step 11: การเขียน Firmware ขั้นสุดท้าย (Final Implementation)
มาถึงจุดเชื่อมต่อทุกอย่างเข้าด้วยกันบน ESP32-S3! โค้ดส่วนนี้จะรับข้อมูลจาก UART (มีระบบเช็ค CRC ป้องกันข้อมูลพัง), โยนข้อมูลเข้าโมเดล Edge AI, อัปเดตหน้าจอ UI และหากพบความผิดปกติ เช่น "Polluted" ก็จะสั่งโชว์ป๊อปอัปแจ้งเตือนให้ทำตามคำแนะนำทันที เช่น "Ventilate the room (ระบายอากาศ)" (ดูโค้ดตัวเต็มทั้งหมดได้ที่ GitHub)
Step 12: สาธิตการทำงานและบทสรุป (Demonstration)
วิดีโอนี้แสดงให้เห็นกระบวนการทำงานทั้งหมดตั้งแต่รับข้อมูล คิดวิเคราะห์ด้วย AI ไปจนถึงแสดงผลครับ EnviroScope พิสูจน์ให้เห็นแล้วว่าเราสามารถสร้างเครื่องวัดสภาพแวดล้อมขนาดพกพาที่ "ฉลาด" ได้จริง การจบทุกกระบวนการด้วย Edge AI ทำให้เครื่องทำงานไว เป็นส่วนตัว และไม่ต้องง้อ Cloud เลยครับ
ในอนาคต เราสามารถต่อยอดด้วยการ ออกแบบเคส 3D สวยๆ ทนทานๆ, ทำแอปมือถือเชื่อมต่อ หรือปรับ Optimize พลังงาน เพื่อให้แบตอึดขึ้นไปอีก... ลองเอาไอเดียนี้ไปทำเล่นหรือต่อยอดกันดูนะครับ!
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา สามารถตรวจสอบเนื้อหาโดยละเอียดได้ที่
ต้นฉบับภาษาอังกฤษ