ESP32-P4 Weather Station จอ 10 นิ้ว วัดอากาศครบ
Weather Station ธรรมดาอาจจบที่อุณหภูมิ ความชื้น และพยากรณ์อากาศ แต่ Project นี้ไปไกลกว่านั้นมาก: ESP32-P4 + จอ 10.1 นิ้ว + SEN66 + LoRa + ESP-NOW รวมข้อมูลตั้งแต่ PM2.5, CO₂, VOC, NOx ไปจนถึง Sensor นอกบ้านและ Geiger Counter ไว้บน Dashboard เดียว
Project นี้เป็นผลงานของ Harald Kreuzer และพัฒนามาถึง Weather Station เวอร์ชัน 3.0 โดย Base Station ใช้ ESP32-P4 ขับจอ Touchscreen ขนาด 10.1 นิ้ว พร้อม Sensor ตรวจคุณภาพอากาศภายในตัวเครื่อง
ถ้าต้องการขยายพื้นที่ตรวจวัด ก็เพิ่ม Wireless Sensor Node ผ่าน LoRa หรือ ESP-NOW ได้ โดยไม่ต้องส่ง Sensor Data ขึ้น Cloud ก่อน
และถ้าอยากดู Forecast ระบบยังเลือกเชื่อมต่อ Open-Meteo, OpenWeatherMap หรือ Visual Crossing ผ่าน Internet ได้อีกต่างหาก
จุดที่น่าสนใจคือ ผู้สร้างไม่ได้พยายามให้ MCU ตัวเดียวทำทุกอย่าง แต่แยกระบบเป็น Base Station → Radio Receiver → Wireless Sensor Nodes ทำให้ Project นี้เป็นตัวอย่างของ System Architecture ที่น่าเรียนรู้มากกว่าการต่อ Sensor เข้ากับ ESP32 ทีละตัว
Key Takeaways
- Base Station ใช้ Waveshare ESP32-P4-Module-DEV-KIT-C พร้อมจอ 10.1 นิ้ว
- จอทำงานแนวนอนที่ 1280 × 800
- SEN66 ตรวจ PM1.0, PM2.5, PM4.0, PM10, CO₂, VOC, NOx, Temperature และ Humidity
- ESP32-P4 ไม่มี Wi-Fi/Bluetooth Radio ในตัว จึงใช้ ESP32-C6 ที่อยู่บน Module เป็น Wireless Coprocessor
- ESP-NOW ยังไม่รองรับผ่าน esp-hosted ใน Setup ของผู้สร้าง จึงมี Heltec ESP32-S3 เป็น Receiver แยก
- Sensor Receiver รับทั้ง LoRa + ESP-NOW แล้วส่งข้อมูลต่อเข้า ESP32-P4 ผ่าน I²C
- Dashboard รองรับ Wireless Sensor ได้สูงสุด 6 Slot
- มี 24-hour History สำหรับค่าคุณภาพอากาศ
- Forecast แสดงข้อมูล 48 ชั่วโมง และ 7 วัน
- รองรับ Open-Meteo, OpenWeatherMap และ Visual Crossing
- ระบบ Sensor ทำงานแบบ Local-first และไม่ได้พึ่ง Cloud Service สำหรับ Sensor Network
- Base Station ใช้ LVGL และ GUI ถูกออกแบบผ่าน EEZ Studio
- Enclosure และ Sensor Case ใช้ 3D Printing
- CNX ประเมินต้นทุน Main Unit ขั้นต่ำประมาณ $185 ก่อน Tax, Shipping และของจุกจิกอื่น
ESP32-P4 Weather Station ตัวนี้คืออะไร?
ถ้าเรียกแค่ “Weather Station” อาจทำให้ดูเล็กกว่าความจริงไปหน่อย
ตัว Project รวม 3 งานเข้าด้วยกัน:
- Weather Dashboard
- Indoor Air Quality Monitor
- Wireless Environmental Sensor Hub
Base Station แสดงทั้งข้อมูลของตัวเอง, Sensor จากจุดอื่นในบ้านหรือสวน และ Forecast จาก Internet บนหน้าจอเดียว
ผู้สร้างตั้งใจหลีกเลี่ยง Cloud Service และ Mesh System สำหรับ Sensor Network โดยข้อมูลจาก Sensor ส่งเข้าหา Base Station โดยตรง ผ่าน LoRa หรือ ESP-NOW
Local-first ไม่ได้แปลว่า Offline 100%: Sensor ภายในระบบไม่จำเป็นต้องส่งข้อมูลผ่าน Cloud แต่ Weather Forecast ยังต้องใช้อินเทอร์เน็ตเพื่อดึงข้อมูลจาก Weather API
Architecture ถูกแบ่งเป็น 3 ชั้น
Repository แบ่งระบบหลักออกเป็นสามส่วน ซึ่งช่วยให้เราเข้าใจ Project ได้ง่ายขึ้นมาก
Base Station
ESP32-P4 + Touchscreen เป็นส่วนที่ผู้ใช้มองเห็นและใช้งาน ทำหน้าที่แสดง Sensor, History Chart, Forecast และ Setup
Sensor Receiver
ใช้ Heltec WiFi LoRa 32 ที่มี ESP32-S3 เป็น Gateway สำหรับรับ LoRa และ ESP-NOW
Wireless Sensor Nodes
แต่ละ Node มี Sensor ของตัวเอง แล้วตื่นเป็นช่วง ๆ เพื่ออ่านค่าและส่ง Packet ก่อนกลับไป Sleep
↓ LoRa / ESP-NOW
Sensor Receiver — ESP32-S3
↓ I²C
ESP32-P4 Base Station
↕
Wi-Fi / HTTPS → Weather API
นี่คือ Lesson ใหญ่ของ Project: ถ้างานเริ่มใหญ่ ไม่จำเป็นต้องบังคับ MCU ตัวเดียวให้รับ Sensor, Wireless, UI และ Protocol ทุกอย่างพร้อมกัน การแยก Component ตาม Responsibility ทำให้ระบบจัดการง่ายขึ้น
Base Station ใช้ Hardware อะไรบ้าง?
| Hardware | หน้าที่ / Spec จาก Source |
|---|---|
| Waveshare ESP32-P4-Module-DEV-KIT-C | Base Board หลัก ใช้ ESP32-P4 Module, 32 MB PSRAM และ ESP32-C6 สำหรับ Wireless |
| 10.1-inch IPS Display | Native 800 × 1280, ใช้งานแนวนอนเป็น 1280 × 800, Contrast 800:1, Brightness 400 cd/m² |
| Sensirion SEN66 | Air Quality Sensor หลัก |
| BH1750 | Ambient Light Sensor สำหรับปรับ Backlight |
| DFRobot C4001 24GHz | mmWave Presence Sensor สำหรับตรวจว่ามีคนอยู่หน้า Display หรือไม่ |
| Heltec WiFi LoRa 32 V4 | ESP32-S3 + LoRa Receiver รับ LoRa และ ESP-NOW |
CNX ยังระบุว่า Waveshare Kit มี Speaker 8Ω 2W และ RPi Camera แต่ Hardware สองชิ้นนี้ ไม่ได้ถูกใช้ใน Project นี้
ESP32-P4 ไม่มี Wi-Fi แล้วต่อ Internet ยังไง?
จุดที่หลายคนอาจงงคือ ESP32-P4 ไม่มี Wi-Fi หรือ Bluetooth Radio ในตัว
Waveshare Module จึงใส่ ESP32-C6 มาเป็น Wireless Coprocessor
การสื่อสารระหว่าง P4 กับ C6 ใช้ ESP-Hosted-MCU ทำให้ฝั่ง ESP32-P4 ยังสามารถใช้ API ของ ESP-IDF เพื่อเข้าถึง Network ได้ในลักษณะคล้ายมี Wireless อยู่กับตัว
ESP32-C6 ทำหน้าที่หลักใน Project นี้สำหรับ:
- Wi-Fi
- เชื่อม Weather API
- ดาวน์โหลด Firmware Update
มี ESP32-C6 แล้ว ทำไมยังต้องมี Heltec Receiver?
เพราะ Creator ระบุว่า ESP-NOW ยังไม่รองรับผ่าน esp-hosted ใน Architecture นี้
แต่ ESP-NOW เป็นหนึ่งใน Protocol สำคัญของ Wireless Sensors
ผู้สร้างจึงเพิ่ม Heltec WiFi LoRa 32 V4 ที่ใช้ ESP32-S3 + SX1262 ให้ทำหน้าที่ Radio Gateway แยก
Receiver ตัวนี้:
- รับ ESP-NOW
- รับ LoRa
- เก็บ Packet จาก Sensor
- เพิ่ม RSSI / SNR / Timestamp
- ส่งข้อมูลต่อให้ ESP32-P4 ผ่าน I²C
ฝั่ง ESP32-P4 จึงไม่ต้องจัดการ Radio Packet โดยตรง แต่เพียง Poll ข้อมูลจาก Receiver ผ่าน I²C
SEN66 ตัวเดียววัดอะไรได้บ้าง?
SEN66 เป็นหัวใจของการวัด Indoor Air Quality ใน Base Station
Particulate Matter
- PM1.0
- PM2.5
- PM4.0
- PM10.0
Gas / Air Quality
- CO₂
- VOC Index
- NOx Index
Environment
- Temperature
- Relative Humidity
Creator อธิบายว่า การรวม Parameter หลายอย่างไว้ใน Sensor เดียว ทำให้ Design ง่ายขึ้น เพราะไม่ต้องใช้ Sensor แยกหลายตัว เหมือน Weather Station รุ่นก่อน
SEN66 ติดต่อกับ ESP32-P4 ผ่าน I²C เช่นเดียวกับ Sensor หลายตัวใน Base Station
BH1750 + C4001 ไม่ได้มีไว้แค่ทำจอสวย
ถ้ามีแค่ BH1750 เราก็สามารถปรับ Brightness ให้สัมพันธ์กับแสงรอบตัวได้
แต่ผู้สร้างเจออีกปัญหา: Backlight ของ Display สร้างความร้อน และความร้อนอาจมีผลต่อค่าที่ SEN66 วัด
จึงเพิ่ม C4001 24GHz mmWave Radar เข้ามาช่วยตรวจ Presence
ไม่มีคนอยู่หน้าเครื่อง
Display ถูกลดความสว่างลงมาก ทำให้เกิดความร้อนน้อยลง
ตรวจพบคนเข้าใกล้
C4001 ทำให้ระบบกลับมาเปิด Display ที่ระดับใช้งานปกติ
BH1750 ปรับตาม Ambient Light
เมื่อมีคนใช้งาน BH1750 จะช่วยปรับระดับ Backlight ให้เหมาะกับแสงรอบตัว
นี่เป็นตัวอย่างของ System Design ที่ดี: Sensor สำหรับ Display ไม่ได้แก้แค่เรื่อง UX แต่ยังช่วยลดปัญหาความร้อน ที่อาจไปรบกวน Sensor Environment ซึ่งอยู่ในเครื่องเดียวกัน
อยากวัดหลายห้อง? เพิ่ม Wireless Sensor Node ได้
Main Unit สามารถใช้งานเดี่ยว ๆ ได้ แต่ Project ถูกออกแบบให้ขยาย Sensor ไปยังตำแหน่งอื่นได้
| Sensor Project | Board | สิ่งที่วัด | Radio |
|---|---|---|---|
| Sensor-LORA-BME280 | Heltec ESP32-S3 | Temperature / Humidity / Pressure | LoRa |
| Sensor-LORA-BME280-HTCC-AB01 | CubeCell HTCC-AB01 V2 | Temperature / Humidity / Pressure | LoRa |
| Sensor-LORA-SHT45 | Heltec ESP32-S3 | Temperature / Humidity | LoRa |
| Sensor-LORA-RadiationD | Heltec ESP32-S3 | Radiation / Geiger Counter | LoRa |
| Sensor-LORA-RadiationD-HTCC-AB01 | CubeCell HTCC-AB01 V2 | Radiation / Geiger Counter | LoRa |
| Sensor-ESP-NOW-BME280 | Generic ESP32 | Temperature / Humidity / Pressure | ESP-NOW |
Creator ยังอธิบายว่า ESP-NOW BME280 เป็น Sub-project รุ่นเก่าที่สุด และใช้ PCB ที่ผู้สร้างออกแบบเอง
ดังนั้นคำว่า “ไม่มี Custom Hardware” ต้องอ่านแบบมีบริบท: Architecture หลักใช้บอร์ดสำเร็จรูปเป็นจำนวนมาก แต่ Build Guide มีทั้ง Add-on Board สำหรับ Receiver และ Sensor Board บาง Version ที่ผู้สร้างออกแบบเอง
Wireless Sensor อยู่ด้วย Battery ได้นาน เพราะไม่ได้เปิดตลอดเวลา
Repository ระบุว่า Sensor Node ใช้เวลาส่วนใหญ่อยู่ใน Deep Sleep
สำหรับ Node อุณหภูมิ / ความชื้น / ความกดอากาศ:
Wake → วัดค่า → ส่งข้อมูล → Sleep
Repo ปัจจุบันระบุว่า Node กลุ่มนี้ ตื่นทุกประมาณ 10 นาที เพื่อวัดและส่งข้อมูล
Sensor บาง Version ยังสามารถชาร์จ Battery ผ่าน Solar Cell ได้
Geiger Counter ซับซ้อนกว่า
Geiger Counter ไม่สามารถตื่นมาอ่าน Snapshot แล้วจบเหมือน Temperature Sensor เพราะต้องสะสมจำนวน Pulse ตามเวลา
ESP32 Version จึงใช้ ULP Coprocessor ช่วยนับ Pulse ระหว่างที่ Main CPU อยู่ใน Sleep
Sensor หลายแบบคุยกันได้ เพราะใช้ Packet Format เดียวกัน
Sensor Firmware, Receiver และ Base Station แชร์ Definition ของ packet_format.h เหมือนกัน
Header หลักมีเพียง 4 bytes เพื่อบอกว่า:
- นี่คือ Message แบบไหน
- มาจาก Sensor Slot ไหน
- เป็น Sensor Type อะไร
- Payload ที่ตามมายาวเท่าไร
typedef struct __attribute__((packed)) {
uint8_t msg_type;
uint8_t sensor_nr;
uint8_t sensor_type;
uint8_t payload_len;
} packet_header_t;
ตัว Header ไม่จำเป็นต้องรู้รายละเอียด Measurement ทุกชนิด
Payload ของ BME280, SHT45 และ Geiger ถูกแยกเป็น Struct ของตัวเอง
Receiver จึงสามารถรับ Packet แล้วส่งต่อแบบ Raw โดยไม่จำเป็นต้องรู้ Logic ของ Sensor ทุกประเภท ส่วน Base Station ค่อย Interpret Payload จากค่า sensor_type
ข้อดีของวิธีนี้: ถ้าเพิ่ม Sensor Type ใหม่ Architecture ไม่จำเป็นต้อง Rewrite Receiver ทั้งชุด เพราะ Receiver มีหน้าที่หลักแค่รับ เก็บ Metadata แล้วส่ง Packet ต่อ
หน้าจอรองรับ Sensor สูงสุด 6 Slot พร้อม Offline Detection
Dashboard สามารถแสดง Wireless Sensor ได้สูงสุด 6 Slot
แต่ละ Slot สามารถตั้งชื่อ และเลือก Icon ได้ เช่น:
- Kitchen
- Bedroom
- Balcony
- ตำแหน่งอื่นตาม Setup
Header ของ Sensor Card ยังแสดง:
- ชื่อ
- Icon
- Battery
- Signal Strength
ถ้า Sensor หายไปนานกว่าช่วงเวลาที่ควรส่งข้อมูล ระบบจะ Mark Sensor นั้นว่า Offline
Creator ระบุว่า Receiver จะ Mark Offline เมื่อเวลาที่ไม่มี Packet ยาวเกินประมาณ 3 เท่า ของ Interval ปกติของ Sensor นั้น
Forecast ไม่ได้มีแค่ “วันนี้ฝนไหม”
UI ของ Base Station แสดงทั้ง:
- Current Weather
- Hourly Forecast 48 ชั่วโมง
- Daily Forecast 7 วัน
Creator ตั้งใจให้ UI ใช้พื้นที่จอ 10 นิ้ว แสดงข้อมูลจำนวนมาก แต่ยังอ่านง่าย
Dashboard จึงรวมทั้ง Weather API, Base Station Data และ Wireless Sensor ไว้ในหน้าเดียว
Weather API มีให้เลือก 3 เจ้า ไม่ได้ผูกกับ Provider เดียว
| Provider | ข้อมูลจาก Build Guide |
|---|---|
| Open-Meteo | ไม่ต้อง Register, ไม่มี Account, ไม่มี API Key |
| Visual Crossing | ใช้ Account + API Key |
| OpenWeatherMap | ใช้ API Key และ Build Guide ระบุว่า One Call API Version ที่ผู้สร้างใช้ ต้องผูก Credit Card แม้อยู่ใน Free Quota |
Provider ทั้งสาม ให้ Data Structure ไม่เหมือนกัน
Firmware จึงมี Mapping Layer แปลง Raw Data ของแต่ละ Provider มาเป็น Target Format กลาง
UI จึงไม่จำเป็นต้องรู้ว่า Forecast ตอนนี้มาจาก Provider ไหน
เงื่อนไข API เปลี่ยนได้: Account Requirement, Free Quota, Credit Card Requirement และ Endpoint สามารถเปลี่ยนหลังจากวันที่ผู้สร้างเขียน Build Guide จึงควรตรวจหน้า Provider ปัจจุบันอีกครั้ง ก่อนตั้งระบบจริง
Software ฝั่ง Base Station ไม่ใช่ Arduino Sketch ธรรมดา
Main Unit ถูกพัฒนาด้วย ESP-IDF และใช้ LVGL สำหรับ GUI
Layout ถูกออกแบบด้วย EEZ Studio
ส่วน CubeCell-based Node บาง Project ใช้ Arduino / PlatformIO
Task ถูกแยกตาม Responsibility
เมื่อ Main Screen เริ่มทำงาน Application จะ Start Task แยกตามงานแต่ละประเภท
Repository แยกส่วนสำคัญออกเป็น Module เช่น:
- Display
- I²C
- Receiver
- Wi-Fi
- NVS
- Weather Providers
- LVGL Charts
- Sensor GUI
- Setup Screen
Project นี้เหมาะกับคนที่อยากขยับจาก Arduino Sketch ไป Embedded Application จริงจัง: เพราะ Code ไม่ได้กองทุกอย่างไว้ใน setup() และ loop() แต่เริ่มแยก Layer ตามหน้าที่ของระบบ
จุดที่ต้องเช็กก่อน Build: ESP-IDF Version ไม่ตรงกันทุก Source
Build Guide ของ Creator ระบุว่า Project ถูกพัฒนาด้วย ESP-IDF 6.x
แต่ BaseStation README ของ Repository Branch develop ที่ตรวจในรอบนี้ ระบุ:
Requires ESP-IDF v5.5.4
อย่าเลือก Version จากบทความอย่างเดียว: Project มีการพัฒนาต่อเนื่อง และ Creator เองก็เตือนว่า Build Guide เป็นเพียง Snapshot ซึ่งอาจต่างจาก GitHub ปัจจุบันเล็กน้อย ดังนั้นตอน Build จริง ให้ยึด README ของ Branch / Commit ที่กำลังใช้อยู่
Firmware Update ได้เองผ่าน GitHub Releases
Base Station และ Sensor Receiver รองรับ Automatic Update ผ่าน GitHub Releases
Creator ระบุว่า Base Station จะตรวจ Firmware Version ใหม่เป็นช่วง ๆ และหากมี Version ใหม่ จะแจ้งผ่าน Popup
หลัง Update:
- Base Station ถูก Update ก่อน
- Receiver ถูก Update ตาม
ถ้า Firmware ใหม่มีปัญหา ระบบถูกออกแบบให้ Rollback ไป Version ก่อนหน้า
3D Printed Housing เป็นงานใหญ่กว่าที่เห็น
ตัว Housing ไม่ได้ถูกออกแบบสำเร็จในครั้งเดียว
Creator เล่าว่า Design แรกของ Rear Cover ใช้ Support Material เยอะ และผลลัพธ์ยังไม่เป็นที่พอใจ
สุดท้ายจึงเปลี่ยนเป็น Housing แบบสองชิ้น เพื่อให้ Print ง่ายขึ้น
อีกปัญหาคือจอ Top-heavy
ด้วยน้ำหนักและขนาดของ Display Prototype ช่วงแรก ล้มง่าย
Base จึงต้องถูกแก้หลายรอบ เพื่อให้ตั้งบนโต๊ะได้มั่นคงขึ้น
Sensor อยู่ใน Base ด้วย
Light Sensor และ Radar Sensor ถูกวางไว้ใน Base เพื่อให้ขอบ Display ยังดูแคบ
ไฟล์ CAD ปัจจุบันมีแล้ว
CNX อัปเดตบทความว่า STEP และ SolidWorks Files ของ Version ใหม่ อยู่ใน SolidWorks folder ของ Repository
มีไฟล์ 3D แล้ว แต่ไม่มีเครื่องหรือไม่อยากเสียเวลาลองหลาย Revision? สามารถส่งไฟล์ 3D ให้ทีม Globalbyte ช่วยประเมินงานรับปริ้นท์ 3D ก่อนเริ่มประกอบ Electronics ได้ โดยควรตรวจว่าไฟล์ CAD ตรงกับ Hardware Revision ที่คุณกำลังใช้ก่อนสั่งผลิต
ต้นทุน Main Unit ประมาณเท่าไร?
CNX Software ประเมิน Component หลักประมาณ:
| Component | ราคาอ้างอิงในบทความ CNX |
|---|---|
| Waveshare ESP32-P4-Module-DEV-KIT-C | $77.99 ตามราคา Waveshare ที่ CNX อ้างอิง |
| Heltec V4 | $29.99 |
| Sensirion SEN66 | $62.03 |
| BH1750 | $1.39 ตามแหล่งราคาที่ CNX อ้างอิง |
| C4001 24GHz | $12.90 |
CNX สรุปว่า Main Unit อยู่ที่อย่างน้อยประมาณ $185
และยังไม่รวม:
- Tax
- Shipping
- Screw / Nut
- Connector
- Filament
- External Sensor Node
Creator เอง ประเมิน Material Cost ของ Base Station ไว้ประมาณ 160 ยูโร ตามราคาที่เขาซื้อในยุโรป
ราคาเป็นข้อมูลอ้างอิงช่วงที่ Source จัดทำ: ราคา Component, ภาษี, Shipping และอัตราแลกเปลี่ยน เปลี่ยนได้ตลอด จึงไม่ควรใช้ตัวเลขนี้เป็นใบเสนอราคาสำหรับ Build ในประเทศไทย
แล้วทำเองทำไม ถ้าของสำเร็จรูปอาจถูกกว่า?
CNX พูดตรง ๆ ว่า Project นี้แทบแน่นอนว่า ไม่ได้ช่วยประหยัดเงิน เมื่อเทียบกับ Weather Station ที่ถูกออกแบบเพื่อผลิตจำนวนมาก
สิ่งที่ได้กลับมาแทนคือ:
- เลือก Sensor เอง
- เพิ่ม Sensor Type เอง
- ควบคุม Data Flow เอง
- ไม่ต้องผูก Sensor Network กับ Cloud
- แก้ GUI เองได้
- ปรับ Housing เองได้
- เรียน ESP-IDF / LVGL / I²C / LoRa / ESP-NOW
- ได้เรียน Architecture ของระบบหลาย MCU
สรุปง่าย ๆ: ถ้าเป้าหมายคือ “ซื้อเครื่องวัดอากาศให้ถูกที่สุด” Project นี้อาจไม่ตอบโจทย์ แต่ถ้าเป้าหมายคือ “อยากสร้าง Environmental Monitoring System ของตัวเอง” นี่เป็นคนละเรื่องเลย
ถ้าจะทำในไทย มีอะไรที่ควรเช็กเพิ่ม?
1. LoRa Frequency / Regional Setting
Repository ของผู้สร้าง มีการกำหนด LoRa Parameters ตามระบบที่เขาใช้งานอยู่
หากนำ Project มาใช้ในประเทศไทย ควรตรวจ Frequency, Region Configuration และข้อกำหนดการใช้คลื่น ที่เกี่ยวข้องในไทยก่อน แทนการ Copy Radio Setting จาก Repository ไปใช้ตรง ๆ
2. Weather API Location
Setup ต้องกำหนด Latitude, Longitude, Altitude และ Time Zone ให้ตรงกับพื้นที่จริง
3. Sensor Placement สำคัญ
ค่า Indoor Air Quality ถูกวัดที่ Base Station ดังนั้นตำแหน่งวางเครื่อง ย่อมเป็นตำแหน่งที่ SEN66 กำลังวัดสภาพอากาศจริง
หากต้องการวัดหลายห้อง ควรใช้ Wireless Node เพิ่มตาม Architecture ของ Project มากกว่านำค่าจุดเดียว ไปแทนทั้งบ้าน
ภาพ Hardware, Sensor และ Architecture เพิ่มเติม
หน้าแรกแสดง Hero Image เพียงภาพเดียว ส่วนภาพทางเทคนิคอื่น ถูกเก็บใน View more แบบ Pure CSS
Project นี้ค่อนข้างใหญ่ — Build จริงควรเปิดคู่มือต้นฉบับควบคู่กัน
CNX ช่วยสรุป Project ได้กระชับ แต่รายละเอียดเรื่อง:
- Software Architecture
- Sensor Packet
- Weather API
- ESP-IDF Setup
- Enclosure
- Wireless Node
- Power Optimization
อยู่ใน Build Guide และ GitHub Repository ของผู้สร้างมากกว่า
ก่อน Build จริง: แนะนำให้อ่าน บทความสรุป ESP32-P4 Weather Station จาก CNX Software , อ่าน Build Guide ฉบับเต็มจาก Harald Kreuzer และ ตรวจ Source Code และ Revision ล่าสุดบน GitHub ควบคู่กัน
FAQ: ESP32-P4 Weather Station
ESP32-P4 มี Wi-Fi ในตัวหรือไม่?
ไม่มี Radio Wi-Fi / Bluetooth ในตัว แต่ Waveshare Module ที่ Project ใช้ มี ESP32-C6 เป็น Wireless Coprocessor และเชื่อมกับ P4 ผ่าน ESP-Hosted-MCU
ถ้ามี ESP32-C6 แล้ว ทำไมยังต้องใช้ Heltec ESP32-S3?
เพราะ Creator ระบุว่า ESP-NOW ยังไม่รองรับผ่าน esp-hosted ในระบบนี้ Heltec Receiver จึงถูกใช้รับทั้ง ESP-NOW และ LoRa แล้วส่งข้อมูลเข้า ESP32-P4 ผ่าน I²C
SEN66 วัด PM2.5 ได้อย่างเดียวหรือไม่?
ไม่ SEN66 ตรวจ PM1.0, PM2.5, PM4.0, PM10, CO₂, VOC, NOx, Temperature และ Humidity ตามข้อมูลใน Build Guide
ต้องใช้ Cloud หรือสมัคร Account เพื่อดู Sensor ไหม?
Sensor Network ถูกออกแบบให้ทำงานแบบ Local และไม่ได้พึ่ง Cloud Service แต่ Weather Forecast ต้องเชื่อม Weather API ผ่าน Internet
Weather API ตัวไหนไม่ต้องใช้ API Key?
Build Guide ระบุว่า Open-Meteo ไม่ต้อง Register และไม่ต้องใช้ API Key ส่วน Visual Crossing และ OpenWeatherMap ต้องใช้ API Key
Dashboard แสดง Sensor ได้กี่จุด?
Layout ปัจจุบันรองรับ Wireless Sensor สูงสุด 6 Slot พร้อม Sensor ภายใน Base Station
Sensor หายจากระบบแล้วรู้ได้ไหม?
มี Offline Detection และ Header ของ Sensor Card จะเปลี่ยนสถานะ เมื่อ Sensor ไม่ส่งข้อมูล นานเกินช่วงเวลาที่ระบบคาดไว้
ใช้ Arduino IDE ทำ Base Station ได้ไหม?
Source หลักของ Base Station ใช้ ESP-IDF ไม่ใช่ Arduino Sketch ทั่วไป ส่วน CubeCell Sensor บาง Version ใช้ Arduino / PlatformIO
ใช้ ESP-IDF Version ไหน?
Build Guide ระบุ ESP-IDF 6.x แต่ README ของ develop branch ที่ตรวจพบระบุ v5.5.4 จึงควรยึด README ของ Branch / Commit ที่คุณกำลัง Build จริง
Housing มีไฟล์ 3D ให้ไหม?
CNX อัปเดตว่า STEP และ SolidWorks Files สำหรับ Version ใหม่ มีอยู่ใน SolidWorks Folder ของ Repository แล้ว
Project นี้ใช้ Custom PCB หรือไม่?
Main Architecture เน้นบอร์ดสำเร็จรูป แต่ Creator มี Add-on Board และ Sensor Board บาง Version ที่ออกแบบเอง ดังนั้นไม่ควรสรุปว่า ไม่มี Custom Hardware ทุกส่วน
ต้นทุนถูกกว่า Weather Station สำเร็จรูปไหม?
CNX ระบุว่ามีโอกาสสูงมากที่จะไม่ถูกกว่า โดย Main Unit ถูกประเมินไว้อย่างน้อยประมาณ $185 ก่อนค่าใช้จ่ายอื่น
ทำไมยังน่าสร้างถ้าแพงกว่า?
เพราะ Project เปิดให้แก้ Hardware, Sensor, Wireless, GUI, Weather Provider และ Enclosure ได้เอง จุดคุ้มค่าจึงอยู่ที่การเรียนรู้และการปรับแต่ง มากกว่าการประหยัดต้นทุน
นี่ไม่ใช่ ESP32 ต่อ Sensor แล้วโชว์ค่าบนจอธรรมดา
สิ่งที่ทำให้ Project นี้น่าสนใจ คือมันเริ่มแตะโครงสร้าง ของระบบ Embedded ขนาดใหญ่ขึ้นจริง ๆ
มี Base Station ที่เน้น Display และ Application
มี Receiver ที่รับผิดชอบ Wireless
มี Sensor Nodes ที่ Optimize เพื่อ Battery
มี Packet Format ที่แชร์กันระหว่าง Device
มี API Abstraction เพื่อเปลี่ยน Weather Provider โดยไม่ต้องเขียน UI ใหม่
มี OTA Update และ Rollback
และยังต้องคิดถึง Mechanical Design ของ 3D Printed Housing ไปพร้อมกันด้วย
สำหรับคนที่เล่น ESP32 จนเริ่มรู้สึกว่า “ต่อ BME280 แล้ว Print ค่า Serial มันง่ายไปแล้ว” Project นี้คืออีก Step ที่ทำให้เห็นว่า Sensor Project สามารถขยายเป็น Distributed Embedded System ได้อย่างไร
References / แหล่งข้อมูลต้นฉบับ
มีไฟล์ 3D แล้ว อยากเริ่มจาก Housing ก่อน?
Project แบบนี้มีทั้ง Electronics และชิ้นส่วน 3D Printed หลายจุด ถ้ามี STEP / STL หรือกำลังทำ Housing, Stand, Sensor Case สำหรับ ESP32 Project สามารถส่งไฟล์ให้ทีม Globalbyte ช่วยประเมินบริการรับปริ้นท์ 3D ได้
ถ้ายังอยู่ช่วง Prototype ก็สามารถเข้ามาคุยเรื่อง Development Board, Sensor และอุปกรณ์ Maker กับ Community ได้เช่นกัน