Photon 2 คุม HVAC 4 โซน พร้อมแจ้งเตือน
ห้องหนึ่งร้อน อีกห้องเย็น แต่ Thermostat มีอยู่จุดเดียว ปัญหานี้แก้ด้วยการเร่งแอร์ทั้งบ้าน ก็ไม่ได้ช่วยให้ทุกห้องสมดุลเสมอไป
Project นี้จึงสร้าง HVAC 4-Zone Damper Controller ขึ้นมาเองด้วย Particle Photon 2 เพื่อควบคุม Damper ตามแต่ละพื้นที่ พร้อมอ่าน Temperature Sensor ตามห้อง, เก็บ Log ทุกวินาทีลง microSD และส่ง Email ทันที เมื่อระบบตรวจพบความผิดปกติของ Temperature Reading
จุดน่าสนใจคือ Logic ควบคุม HVAC หลัก ถูกออกแบบให้ทำงานอยู่บน Controller โดยไม่ต้องรอ Internet ส่วน Raspberry Pi 5 ถูกแยกไปทำหน้าที่รับข้อความผ่าน TCP แล้วส่ง Email Alert
Project นี้เกี่ยวข้องกับระบบ HVAC และหลายระดับแรงดัน: Source มีทั้ง 3.3V Logic, 5Vdc, 12Vdc, 24Vac และ Transformer 120Vac → 24Vac หากจะนำแนวคิดไปใช้จริง ต้องตรวจ Wiring, อุปกรณ์ HVAC และข้อกำหนดด้านไฟฟ้าของระบบจริงก่อนทุกครั้ง
Key Takeaways
- ใช้ Particle Photon 2 เป็น Controller หลัก
- ควบคุม HVAC 4 Zone แต่มี Physical Dampers รวม 7 ตัว
- สามห้องมี Damper ห้องละ 2 ตัว และต่อคู่ Damper แบบขนาน
- ใช้ Mikroe Relay4 Board เป็น Relay Output 4 Channel
- Damper ใช้ Belimo Actuator และไฟ 24Vac
- Damper เปิดหรือปิดในประมาณ 35 วินาทีตามอุปกรณ์ใน Project
- เมื่อ Photon 2 หยุดทำงานหรือเสีย Power Relay จะทำให้ Damper เปิด
- มี Local MCP9808 + BME280 ใน Furnace Plenum
- มี Remote MCP9808 ตามห้อง
- ใช้ Differential I²C และสาย Cat6 สำหรับเดิน Sensor ระยะไกล
- ตัวอย่าง Source ระบุระยะประมาณ 50 เมตร
- Cat6 ในส่วนนี้ไม่ได้ใช้ Ethernet/IP
- ใช้ I2C Mux 3 Click แบบ 8 Channel
- เก็บข้อมูลลง microSD ทุก 1 วินาที
- สร้าง Log File ใหม่ทุกวัน
- เมื่อ Temperature Reading ผิดปกติ Photon 2 ส่ง TCP ไป Raspberry Pi 5
- Raspberry Pi 5 รัน Python เพื่อส่ง Email Alert
- Rev1 เคยตรวจพบ Plenum Temperature Error จริง โดย Error Counter แสดง 898 ครั้ง
ปัญหาเริ่มจากห้องร้อน-เย็นไม่เท่ากัน
ผู้สร้างต้องการควบคุม Heating และ Cooling ใน:
- ห้องนอน 3 ห้อง
- พื้นที่ Basement ใต้ห้องเหล่านั้น
ตัวอย่างหนึ่งคือ เมื่อ ecobee4 ในโหมด Follow Me รับรู้ว่าผู้ใช้อยู่บริเวณ Basement และบริเวณนั้นเย็นเกินไป ระบบควรสามารถส่งความร้อนไป Basement โดยไม่ทำให้ห้องนอนชั้นบนร้อนเกินไป
ในทางกลับกัน เมื่ออากาศภายนอกร้อน และเปิด Air Conditioning ระบบควรช่วยทำให้ห้องนอนเย็นลง โดยไม่ทำให้ Basement เย็นเกินความต้องการ
แนวคิดของ Project: ไม่ได้เปลี่ยน Furnace หรือ AC แต่เพิ่มการควบคุม Airflow ด้วย Zone Dampers และ Temperature Sensors ในแต่ละพื้นที่
จาก Keen Home Smart Vents มาสู่ระบบที่เขียน Logic เอง
จุดเริ่มของระบบเดิม เกิดหลังจาก Keen Home Smart Vents ที่ผู้สร้างใช้อยู่ หยุดทำงาน
ผู้สร้างจึงเลือกสร้างระบบใหม่ ด้วย Particle Photon เพราะต้องการ Controller ที่รัน Software หลัก ที่ตัวเองเขียน และยังสามารถควบคุม HVAC Damper ได้แม้ไม่มี Internet
ต่อมา ระบบรุ่นแรกเริ่มพบปัญหา ด้าน Temperature Reading และ SD Card Storage จึงเกิดการ Upgrade ไปยัง Photon 2
↓
สร้างระบบด้วย Particle Photon
↓
ใช้งานจริงและเก็บ Log
↓
พบปัญหา Temperature Reading / Storage
↓
Upgrade เป็น Photon 2 + Hardware ใหม่
สิ่งที่ถูกเปลี่ยนใน Controller รุ่นใหม่
- Photon → Photon 2 + Feather Click Shield
- Relay Shield → Mikroe Relay4 Board
- เพิ่ม Terminal Click สำหรับ GPIO / Connection
- OpenLog → Mikroe MicroSD Click
- I²C Adapter / Breakout Mux เดิม → Mikroe I2C Mux 3 Click
- ปรับระบบ Power ให้รองรับ Feather Shield, Photon 2 และ Relay Board
ชื่อ 4-Zone แต่ Physical Dampers มี 7 ตัว
ตรงนี้เป็น Detail ที่อ่านผ่าน ๆ แล้วสับสนได้ง่าย
Project เป็น 4-Zone Controller แต่ Hardware List มี Damper:
7 ตัว
Source อธิบายว่า 3 ห้องมี Damper ห้องละ 2 ตัว และ Damper คู่ของแต่ละห้อง ถูกต่อแบบขนาน
ดังนั้น Relay Output ยังทำงานในระดับ Zone แม้ Physical Actuator จะมีมากกว่าจำนวน Zone
4 Zones ≠ 4 Physical Dampers: จำนวน Relay Control Group กับจำนวน Damper Actuator จริง ไม่จำเป็นต้องเท่ากัน ในระบบต้นฉบับนี้
System Architecture แบ่งเป็น Control, Sensor, Logging และ Alert
↓
I²C / Differential I²C
↓
I2C Mux 3 Click
↓
Particle Photon 2
↓
┌──────── Relay4 → 24Vac Damper Actuators
├──────── microSD → Local Logging
└──────── TCP → Raspberry Pi 5 → Email Alert
สิ่งที่ทำให้ Architecture นี้น่าสนใจ คือการไม่เอาทุกอย่าง ไปกองไว้บน Cloud
Control Logic หลัก อยู่บน Photon 2 ขณะที่:
- microSD รับผิดชอบ Local Logging
- Raspberry Pi 5 รับผิดชอบ TCP-to-Email
- iPhone ใช้ดู Sensor / Status Information ตามระบบที่ผู้สร้างตั้งไว้
คุมแอร์ต้องไม่รอ Cloud — ผู้สร้างตั้งใจให้ Control ทำงานได้แม้ Internet หาย
หนึ่งในเหตุผล ที่ผู้สร้างเลือก Particle Photon ตั้งแต่ระบบเดิม คือ Controller สามารถรัน Logic ที่เขียนไว้บนตัวเอง
เป้าหมายคือ Damper Control หลัก ต้องยังทำงานได้ แม้ไม่มี Internet หรือ Wi-Fi
แยกสองเรื่องนี้ออกจากกัน: Local Damper Control กับ Email / Remote Monitoring เป็นคนละ Layer Network มีปัญหา ไม่ได้หมายความว่า Local Control Logic ต้องหยุดตามไปด้วย
Sensor Architecture: มีทั้ง Local Plenum และ Remote Room Sensors
Local Sensors ใน Furnace Plenum
Controller อยู่ใกล้ Furnace Plenum จึงสามารถใช้ Qwiic I²C Cable ระยะประมาณ 0.5 เมตร เชื่อม Local Sensors ได้โดยตรง
Sensor หลักประกอบด้วย:
- MCP9808 — Temperature
- BME280 — Temperature / Humidity / Pressure
Remote Sensors ตามห้อง
Remote Temperature Sensors ใช้ MCP9808 เพื่ออ่านอุณหภูมิ ในแต่ละพื้นที่
Source ยังอธิบายแนวทาง Maintenance ว่าหาก Sensor รุ่นเก่าเสีย ผู้สร้างเตรียมเปลี่ยนเป็น Adafruit Qwiic MCP9808 แล้วต่อเข้ากับ Differential I²C Breakout ผ่าน Qwiic Cable สั้น
เดิน Sensor ไกลด้วย Differential I²C ผ่านสาย Cat6
Room Sensors ไม่ได้อยู่ใกล้ Furnace เหมือน Local Sensor จึงต้องจัดการปัญหาเรื่องระยะทาง
Project ใช้:
SparkFun Differential I²C Breakout
และใช้สาย Ethernet / Cat6 เป็นสาย Physical Cable สำหรับ Differential I²C โดย Source ยกตัวอย่างระยะประมาณ:
50 เมตร
Cat6 ตรงนี้ไม่ได้หมายถึง Ethernet/IP: สาย Cat6 ถูกนำมาใช้เป็นสื่อส่งสัญญาณ สำหรับ Differential I²C ระหว่าง Controller กับ Room Temperature Sensor
I2C Mux 3 Click
Replacement Controller ใช้:
MIKROE I2C Mux 3 Click แบบ 8 Channel
เพื่อจัดการ Branch ของ Remote Sensor หลายชุด จาก I²C Bus ของ Photon 2
Pull-up Resistor ต้องตรวจให้ดี: Source ระบุว่า Extender, Environmental Combo และ Temperature Breakout เดิม มี 4.7kΩ Pull-up บน SDA/SCL แต่ Output ของ Mux ตัวใหม่ ไม่ได้มี Pull-up ให้
MCP9808 เหมือนกันหลายตัว แล้ว I²C Address ไม่ชนกันเหรอ?
Local MCP9808 ถูกเปลี่ยน Address เพื่อไม่ให้ชน กับ Remote MCP9808 ตอนเชื่อมผ่าน I²C Multiplexer
| Sensor | Address | หมายเหตุ |
|---|---|---|
| Local MCP9808 | 0x19 | ต่อ A0 ไป Vdd ตาม Source |
| Remote MCP9808 | 0x18 | ใช้ Default Address และแยก Branch ผ่าน Mux |
นี่เป็นตัวอย่างที่ดีของ I²C Address Planning: Sensor รุ่นเดียวกันหลายตัว ไม่ได้เสียบรวม Bus เดียวแบบไม่คิด Address แต่ใช้ทั้งการเปลี่ยน Address และ Multiplexer ช่วยแยกอุปกรณ์
Damper ใช้ Belimo Actuator และไฟ 24Vac
Damper ในระบบต้นฉบับ ใช้ Belimo Actuator เพื่อสั่งเปิดหรือปิด Airflow
Source ระบุว่า Actuator ใช้เวลาประมาณ:
35 วินาที
ในการขับ Damper ไปยังตำแหน่ง Open หรือ Closed
กำลังไฟที่ผู้สร้างระบุสำหรับ Actuator ชุดนี้:
- ประมาณ 1.5 W ขณะกำลัง Open / Close
- ประมาณ 0.2 W เมื่อไปถึงตำแหน่ง Open / Closed แล้ว
ตัวเลขนี้เป็นข้อมูลของ Actuator ใน Project: ไม่ควรนำไปใช้แทน Datasheet ของ Belimo รุ่นอื่น หรือ Damper Actuator คนละรุ่น
Controller ล่มแล้ว Damper ทำอะไร? Project นี้เลือก Fail-open
Relay Wiring ถูกออกแบบให้ NC Contact เชื่อมกับ Damper Open Terminal
ดังนั้นถ้า:
- Photon 2 หยุดทำงาน
- Controller เสีย Power
Relay จะกลับสู่สภาวะ ที่ทำให้ Damper ถูกสั่งเปิด
↓
Relay คุม Damper ตาม Zone Logic
Controller / Power หาย
↓
Relay กลับ NC
↓
Damper Open
นี่คือ Fail-open Behavior ของ Project นี้: ไม่ได้หมายความว่า ระบบผ่านมาตรฐาน Safety Certification หรือเป็น Failsafe Design สำหรับ HVAC ทุกประเภท
ผู้สร้างไม่ยอมให้ปิด Room Dampers มากกว่า 3 พร้อมกัน
อีกหนึ่ง Control Rule ถูกใส่ไว้เพื่อไม่ให้ Furnace Plenum มี Back Pressure มากเกินไป
ผู้สร้างระบุว่า Logic จะไม่อนุญาตให้ มี Room Dampers ถูกปิดมากกว่า:
3 รายการพร้อมกัน
นี่เป็น Rule ของระบบต้นฉบับ ไม่ใช่กฎ HVAC สากล: จำนวน Damper ที่สามารถปิดได้อย่างปลอดภัย ขึ้นอยู่กับ Airflow, Duct Design, Furnace / Air Handler และข้อกำหนดของระบบจริง
ทุก 1 วินาที ระบบเขียนข้อมูลลง microSD
Replacement Controller ใช้:
MIKROE MicroSD Click
เชื่อมผ่าน SPI เพื่อเก็บ Local Log
Sensor และ Status Information ถูกบันทึก:
ทุก 1 วินาที
ข้อมูลที่บันทึก
- Date
- Time
- Room Set Temperature
- Room Actual Temperature
- Damper Auto / Manual Status
- Damper Open / Closed Status
- Plenum Temperature
- Plenum Relative Humidity
- Plenum Pressure
ระบบสร้าง Log File ใหม่ทุกวัน เพื่อไม่ให้ไฟล์แต่ละวัน มีขนาดใหญ่เกินไป
ผู้สร้างนำข้อมูลเหล่านี้ ไปดูย้อนหลัง และเปรียบเทียบกับ Log ของ ecobee4
จุดสำคัญ: Logging ของ Project นี้ อยู่บน Memory Card ในระบบ ไม่ใช่ Cloud Logging ที่ต้องพึ่ง Internet ตลอดเวลา
พบ Sensor Error แล้วแจ้งยังไง? Photon 2 ส่ง TCP ไป Raspberry Pi 5
ผู้สร้างต้องการ Email Alert ทันที เมื่อ Temperature Reading ผิดปกติ
แต่แทนที่จะใช้ External Automation Service เป็นตัวกลาง เขาเลือกเขียน Python บน Raspberry Pi 5 ใน Local Network
↓
เปิด TCP Client
↓
ส่ง Warning Message ผ่าน Local Network
↓
Raspberry Pi 5 TCP Server
↓
Python Program
↓
Email Alert
Main Program ที่ Source ระบุ:
-
Damper.cpp— Main C++ Program บน Photon 2 -
TCPtoEmail.py— Main Python Program บน Raspberry Pi 5
อย่าสลับบทบาท: Raspberry Pi 5 ไม่ได้เป็น Damper Controller หลัก ใน Architecture นี้ แต่ทำหน้าที่รับ TCP Message แล้วส่ง Email Warning
Case จริง: ระบบจับ Plenum Temperature Error ได้ 898 ครั้ง
Rev1 ของ Project เกิดหลังจากระบบตรวจพบ ปัญหากับ Temperature Sensor ตัวหนึ่ง
ในภาพ iPhone Error Counter ของ Plenum Temperature แสดง:
898 Errors
เมื่อ Reading ถูกตรวจว่าไม่ Valid ผู้สร้างตั้งค่าบาง Field ให้เป็น Default Values เพื่อช่วยให้หา Invalid Data ใน Log File ได้ง่ายขึ้น
หลังจากนั้น Sensor ที่สงสัย ก็ถูกเปลี่ยน และมีการถ่ายภาพ MCP9808 กับ BME280 ชุดใหม่ ที่เตรียมติดตั้งกลับเข้า Furnace Plenum
Logging + Error Counter ไม่ได้มีไว้โชว์: ใน Project นี้ Monitoring ช่วยเจอ Sensor Problem ที่เกิดขึ้นจริง และทำให้ย้อนกลับไปหา Data ที่ผิดปกติใน Log ได้
สถานะระบบดูจาก iPhone ได้
Source ระบุว่า ผู้สร้างสามารถเข้าถึง Sensor Information และ System Status จาก iPhone
มีตัวอย่างหน้าจอ ทั้งตอน:
- Air Conditioning ทำงาน
- Furnace ทำงาน
ใน Replacement System ยังเพิ่ม Monitoring ของ Temperature และ I²C มากขึ้น เนื่องจากระบบเก่า เคยมีปัญหาเรื่อง Temperature Reading
Recovery อีกชั้น: ผู้สร้างใช้ Smart Plug สำหรับ Remote Power Cycle
ใน Rev1 ผู้สร้างระบุว่า ใช้ Wyze Plug จ่ายไฟ 5Vdc ให้ Controller
จุดประสงค์คือ ถ้า Controller หรืออุปกรณ์ที่ต่ออยู่ เกิด Serious Error เขาสามารถ Remote Power Cycle ระบบได้
นี่เป็นวิธี Recovery ที่ผู้สร้างเลือกใช้: ไม่ใช่ Requirement ของ Photon 2 หรือ HVAC Controller ทุกระบบ
Project นี้มีหลาย Power Domain อย่าเอาทุกอย่างไปรวมเป็น “ไฟ 5V”
| ระดับไฟ | ใช้กับส่วนไหนตาม Source |
|---|---|
| 3.3V Logic | Feather / Wing Logic |
| 5Vdc | Feather Click Shield และ Photon 2 Power |
| 12Vdc | Mikroe Relay4 Board |
| 24Vac | Belimo Damper Actuator Circuit |
| 120Vac → 24Vac | Transformer ที่ระบุใน Hardware List |
Only 3.3V logic allowed บน Feather/Wing PCB: การที่ระบบมี Power Supply 5V หรือ Relay / Damper ใช้แรงดันสูงกว่า ไม่ได้หมายความว่า GPIO ของ Controller รับ Logic Voltage เหล่านั้นได้
Photon 2 Pin Mapping ที่ใช้ใน Project
| Photon 2 Pin | Function ใน Project |
|---|---|
| D0 | I²C SDA |
| D1 | I²C SCL |
| D5 | SPI CS / SS — Right Wing |
| D7 | Blue LED |
| D9 | Relay 3 / P2 |
| D11 | Relay 4 / P3 |
| D12 | SPI Card Detect — Right Wing |
| D13 | I²C Reset — Left Wing |
| D14 | Relay 1 / P0 |
| D15 | SPI MOSI |
| D16 | SPI MISO |
| D17 | SPI SCK |
| D19 | Relay 2 / P1 |
Right Wing
Source ระบุว่า MicroSD Click ใช้ SPI:
- D15 = MOSI
- D16 = MISO
- D17 = SCK
- D5 = CS / SS
- D12 = Card Detect
Left Wing
- D0 = SDA
- D1 = SCL
- D13 = I²C Reset
- D14 = Relay 1
- D19 = Relay 2
- D9 = Relay 3
- D11 = Relay 4
Terminal Click ใช้ Ground เชื่อม Common Ground ไปยัง Relay Board ตาม Wiring Summary ของผู้สร้าง
D6, D7 และ D8 มี Special Function ตอน Boot: Source เตือนว่า ไม่ควรนำ Pin เหล่านี้ ไปใช้เป็น GPIO ปกติ และ D7 ยังเชื่อมกับ Blue LED บน Feather / Photon 2
Hardware Components ที่ใช้ใน Project
เพื่อให้อ่านง่าย รายการจากต้นฉบับถูกจัดกลุ่มใหม่ โดยยังเก็บอุปกรณ์หลัก และจำนวนตาม Source
Core Controller / Interface
| อุปกรณ์ | จำนวน |
|---|---|
| Particle Photon 2 | 1 |
| MIKROE Feather Click Shield | 1 |
| MIKROE Relay4 Board | 1 |
| MIKROE MicroSD Click | 1 |
| MIKROE I2C Mux 3 Click | 1 |
| MIKROE Terminal Click | 1 |
Sensors / I²C Components
| อุปกรณ์ | จำนวน |
|---|---|
| SparkFun Flexible Qwiic Cable – Female Jumper 4-pin, 165 mm | 5 |
| SparkFun Qwiic I²C Adapter | 1 |
| SparkFun Differential I²C Breakout | 8 |
| SparkFun Qwiic I²C Cable Kit | 1 |
| Adafruit Qwiic MCP9808 I²C Temperature Sensor | 5 |
| Adafruit Qwiic JST-SH 4-pin Cable, 50 mm | 5 |
| Adafruit / Qwiic BME280 Temperature/Humidity/Pressure Sensor | 1 ตาม Replacement List |
HVAC / Power
| อุปกรณ์ | จำนวน |
|---|---|
| Zoning Supply DSUP-04 Pro-Grade Power Zone Damper 4" | 7 |
| Power Supply 12Vdc 1A, 2.1/5.5 mm Barrel Jack | 1 |
| Power Supply USB Type A, 5Vdc 3A | 1 |
| Transformer 120Vac → 24Vac | 1 |
| Adafruit DC Barrel Jack 2.1 mm Panel Mount | 1 |
| Thermostat Wire 18/3 Solid, 15 m | 1 |
| 20 AWG Stranded Speaker Wire | ประมาณ 10 นิ้ว |
Wiring / Mechanical / Monitoring
| อุปกรณ์ | จำนวน |
|---|---|
| SparkFun Hook-Up Wire Assortment, Stranded 22 AWG | 1 ชุด |
| Cat6 Ethernet Patch Cable, RJ45, 24 AWG | 1 |
| F-F 6" 20 AWG Jumpers | 4 |
| USB A to C Cable, 6' | ตาม Source List |
| USB A to Micro B Cable, 6' | 1 |
| Ideal In-Sure Push-in Wire Connectors | ตามงาน Wiring |
| Foil Duct Tape | 2 |
| Plastic Enclosure 263 × 182 × 60 mm | 1 |
| Plastic Box 70 × 45 × 30 mm | 4 |
| Adafruit Black Nylon Screw / Stand-off Kit | 1 ชุด |
| Raspberry Pi 5 สำหรับ Email | 1 |
Replacement Controller Hardware และราคาที่ผู้สร้างระบุ
ตัวเลขต่อไปนี้ เป็น Price Snapshot ที่ผู้สร้างใส่ไว้ใน Project ไม่ใช่ราคาปัจจุบัน และไม่ใช่ราคา Globalbyte
| รายการ | ราคาที่ Source ระบุ |
|---|---|
| MIKROE Feather Click Shield | $30 USD |
| MIKROE Relay4 Board | $36 USD |
| MIKROE Terminal Click | $8 USD |
| MIKROE I2C Mux 3 Click | $25 USD |
| MIKROE MicroSD Click | $19 USD |
| SparkFun Flexible Qwiic Cable 165 mm | $1.95 USD / เส้น |
| SparkFun Qwiic Adapter | $1.60 USD |
| Adafruit DC Barrel Jack 2.1 mm | $2.95 USD |
| Adafruit Qwiic MCP9808 | $4.95 USD / ตัว |
| Adafruit Qwiic 50 mm Cable | $0.86 USD / เส้น |
| Adafruit BME280 | $14.95 USD |
| Particle Photon 2 | $38.51 CAD จาก Newark ตาม Source |
ระบบเดิมถูกเปลี่ยนเป็นอะไรบ้าง?
| ระบบเดิม | Replacement |
|---|---|
| Particle Photon | Photon 2 + Mikroe Feather Click Shield |
| Relay Shield | Mikroe Relay4 Board + Terminal Click |
| OpenLog | Mikroe MicroSD Click ผ่าน SPI |
| I²C Qwiic Adapter + I²C Breakout Mux | Mikroe I2C Mux 3 Click 8-Channel |
| Power Supply เดิม | เพิ่ม 5Vdc สำหรับ Feather Shield / Photon 2 และเก็บ 12Vdc สำหรับ Relay |
| Power Cabling เดิม | เพิ่ม 2.1 mm Panel-mount Barrel Jack และ Wiring ไป Relay4 |
| Remote I/O Cabling | ใช้ Qwiic Cable Jumpers จาก Mux ไป Remote Sensor Items |
| Local I²C Connection | Qwiic Jumper + Adapter ผ่าน Terminal Click ไป Local Sensors |
อุปกรณ์ I/O ที่ยังเก็บไว้จากระบบเดิม
- SparkFun Differential I²C Breakout จำนวน 8 ตัว — 4 Local + 4 Remote ของ PCA9615 ตาม Source
- SparkFun Environmental Combo I²C Breakout สำหรับ Local BME280 โดย CCS811 ไม่ได้ใช้งานต่อ
- SparkFun Temperature I²C Breakout สำหรับ Local MCP9808 ที่ Address 0x19
- SparkFun Temperature I²C Breakout จำนวน 4 ตัวสำหรับ Remote MCP9808 ที่ Default Address 0x18
- หากจำเป็น ผู้สร้างวางแผนเปลี่ยน SparkFun CCS811/BME280 เป็น Adafruit BME280
- หาก Remote MCP9808 รุ่นเดิมเสีย สามารถเปลี่ยนเป็น Adafruit Qwiic MCP9808 พร้อม Qwiic Cable 50 mm ตามแนวทางของผู้สร้าง
Software ที่ใช้ใน Project
Development Environment ที่ Source ระบุคือ:
Particle Workbench บน Visual Studio Code
Main Programs
Damper.cppTCPtoEmail.py
Sensor / I²C / Driver Modules
Adafruit_MCP9808.hAdafruit_MCP9808.cppArduino.hArduino.cppi2cmux3.hi2cmux3.cppSparkFunBME280.hSparkFunBME280.cppdrv_digital_in.hdrv_digital_in.cppdrv_digital_out.hdrv_digital_out.cppdrv_i2c_master.hdrv_i2c_master.cpp
SD / FAT Modules
sd-card-library-photon-compat.hsd-card-library-photon-compat.cppfat-structs.hFile.cppmikro_port.hsd2-card.hsd2-card.cppsd2-card-config.hsd-fat.hsd-fat.cppsd-fat-main-page.hsd-fat-util.hsd-info.hsd-volume.cpp
ไม่มี Code Snippet ในบทความนี้: Source ที่ใช้รอบนี้ มีรายชื่อไฟล์และลิงก์ Download แต่ไม่ได้ให้ Code Body ของ Damper.cpp หรือ TCPtoEmail.py ในข้อมูลที่นำมาเรียบเรียง จึงไม่สร้าง Code ขึ้นเอง
ถ้าศึกษา Project นี้แบบ Step-by-Step ควรดูตามลำดับไหน?
เริ่มจาก Zone และ Airflow ก่อน
ทำความเข้าใจว่า ห้องไหนอยู่ Zone ไหน, Zone หนึ่งมี Damper กี่ตัว และ Damper คู่ไหนต่อแบบขนาน
แยก Sensor Local กับ Remote
Local Sensor ใช้ I²C ระยะสั้น ส่วน Remote Sensor ใช้ Differential I²C เพื่อเดินไปยังแต่ละห้อง
วาง I²C Address และ Mux
Local MCP9808 ใช้ 0x19 ส่วน Remote ใช้ 0x18 และแยก Branch ด้วย I2C Mux
แยก Relay Logic ออกจาก Sensor Logic
Photon 2 อ่าน Sensor และตัดสินใจ Zone State ก่อนสั่ง Relay4 ไปยัง Damper Actuator
เก็บ Local Log ก่อนพึ่ง Alert
microSD เก็บ Sensor / Damper Status ทุกวินาที เพื่อใช้ตรวจย้อนหลัง แม้ Email Alert จะมีปัญหา
เพิ่ม TCP Email Alert เป็น Monitoring Layer
เมื่อ Error Detection ทำงานแล้ว Photon 2 จึงส่ง Warning ไป Raspberry Pi 5 สำหรับ Email
ดู Controller, Sensor, Damper และ Wiring Diagram เพิ่มเติม
เนื่องจาก Project มีภาพจำนวนมาก หน้าแรกแสดงเฉพาะ Hero ส่วนภาพที่เหลือ ถูกซ่อนไว้ใน Pure CSS View more
ถ้าเอาแนวคิดนี้มาศึกษาในบริบท Maker ไทย ควรหยิบอะไรมาใช้?
Project นี้มี Hardware HVAC จริงค่อนข้างเยอะ แต่ไม่จำเป็นต้องเริ่มจากการคุม Furnace หรือ Damper จริง
สิ่งที่นำมาศึกษาแยกส่วนได้ เช่น:
- Temperature Monitoring หลายจุด
- I²C Multiplexer
- Differential I²C
- Long-distance Sensor Wiring
- microSD Data Logging
- Error Counter / Sensor Validation
- Local TCP Communication
- Raspberry Pi Email Notification
- Relay Fail-state Design
กำลังทำ Monitoring / Automation Project? ถ้าต้องการ Development Board, Raspberry Pi, Temperature Sensor, Environmental Sensor หรือ Module สำหรับทดลอง Data Logging และ Automation สามารถสอบถามทีม Globalbyte เพื่อช่วยเช็กอุปกรณ์ ที่เหมาะกับโจทย์ได้
Project นี้ซับซ้อน แนะนำเปิดต้นฉบับและ Wiring Diagram ควบคู่กัน
โดยเฉพาะส่วน:
- Relay / Damper Wiring
- 24Vac
- I²C Pull-up
- Address Configuration
- Photon 2 Pin Mapping
- microSD SPI
- TCP / Raspberry Pi Alert
ไม่ควรใช้บทความสรุป แทน Schematic, Datasheet หรือ Source Code ต้นฉบับ
FAQ: Photon 2 HVAC 4-Zone Controller
Project นี้ใช้ Controller อะไร?
ใช้ Particle Photon 2 เป็น Controller หลัก สำหรับ Sensor, Zone Logic, Relay Control และ Logging
ทำไมเรียก 4-Zone แต่มี Damper 7 ตัว?
เพราะสามห้อง มี Damper ห้องละสองตัว และ Damper คู่ถูกต่อขนานกัน ทำให้ Physical Damper มีมากกว่า Zone Control Output
Raspberry Pi 5 คุม Damper หรือไม่?
ไม่ Raspberry Pi 5 ใช้รับ TCP Message แล้วส่ง Email Warning ส่วน Damper Logic หลัก อยู่บน Photon 2
ถ้า Internet หาย HVAC ยังทำงานไหม?
ผู้สร้างตั้งใจให้ Local Damper Control สามารถทำงานได้ โดยไม่พึ่ง Internet แต่ Feature ที่ต้องใช้ Network เช่น Email Alert เป็นอีก Layer หนึ่ง
Remote Sensor ใช้ Ethernet ไหม?
ไม่ใช่ Ethernet/IP Project ใช้สาย Cat6 เป็นสาย Physical Cable สำหรับ Differential I²C
Remote Sensor เดินได้ไกลแค่ไหน?
Source ยกตัวอย่าง Differential I²C ผ่านสายมาตรฐาน Ethernet Cable ที่ระยะประมาณ 50 เมตร ในบริบทของ Project
Local MCP9808 ใช้ Address อะไร?
0x19 โดยผู้สร้างต่อ A0 ไป Vdd
Remote MCP9808 ใช้ Address อะไร?
0x18 ซึ่งเป็น Default Address และแยก Branch ด้วย I²C Mux
BME280 วัดอะไร?
ใน Project ใช้สำหรับ Temperature, Relative Humidity และ Pressure ภายใน Plenum
ระบบ Log บ่อยแค่ไหน?
ทุก 1 วินาที และสร้าง Log File ใหม่ สำหรับแต่ละวัน
เก็บ Log ไว้ที่ Cloud หรือไม่?
Project เก็บข้อมูลหลัก ลง Memory Card / microSD เพื่อเปิดดูย้อนหลัง และเปรียบเทียบกับ ecobee4 Log
พบ Temperature Error แล้วเกิดอะไรขึ้น?
Photon 2 ส่ง TCP Message ไปยัง Raspberry Pi 5 และ Python Program ส่ง Email Warning ให้ผู้สร้าง
Project เคยจับ Sensor Error จริงหรือไม่?
มี Rev1 ระบุว่า Plenum Temperature มี Error Counter แสดง 898 Errors ก่อนผู้สร้างเปลี่ยน Sensor ที่สงสัย
Damper ใช้ไฟเท่าไร?
Actuator ในระบบต้นฉบับ ใช้ 24Vac และใช้เวลาประมาณ 35 วินาที ในการ Open / Close
ถ้า Photon 2 ดับ Damper จะปิดค้างไหม?
Wiring ของ Project ใช้ NC Relay Contact เชื่อมกับ Damper Open Terminal ดังนั้นเมื่อ Controller หรือ Power หาย Dampers จะถูกสั่งไปทาง Open
ปิด Damper ได้สูงสุดกี่ตัว?
ผู้สร้างตั้ง Logic ไม่ให้ Room Dampers ถูกปิดมากกว่า 3 พร้อมกัน เพื่อหลีกเลี่ยง Back Pressure มากเกินไปในระบบของเขา ตัวเลขนี้ไม่ใช่มาตรฐาน HVAC สากล
มี Source Code ให้โหลดไหม?
Project ระบุไฟล์หลัก Damper.cpp และ TCPtoEmail.py พร้อมลิงก์ดาวน์โหลด Software จาก Hackster
ทำไมบทความนี้ไม่มี Code Snippet?
เนื้อหาที่ใช้เรียบเรียง มีรายชื่อไฟล์และลิงก์ Download แต่ไม่มี Code Body ของไฟล์หลักให้ตรวจโดยตรง จึงไม่สร้าง Code ขึ้นเอง
จุดเด่นของ Project นี้ไม่ใช่แค่ “เปิด-ปิด Damper ด้วยไมโครคอนโทรลเลอร์”
ถ้าดูเฉพาะ Relay Project นี้อาจดูเหมือน Controller เปิด-ปิด 4 Channel ทั่วไป
แต่สิ่งที่ทำให้ระบบน่าสนใจจริง ๆ คือหลาย Layer ถูกออกแบบให้ทำงานร่วมกัน:
↓
Differential I²C + Mux
↓
Photon 2 Zone Logic
↓
Relay + Dampers
↓
microSD Logging ทุก 1 วินาที
↓
Sensor Error Detection
↓
TCP → Raspberry Pi 5 → Email
และเมื่อระบบทำงานจริง Monitoring Layer ก็ไม่ได้เป็นของตกแต่ง เพราะ Rev1 แสดงให้เห็นว่า Error Detection ช่วยจับปัญหา Temperature Sensor ได้จริง
สำหรับสาย Maker จุดที่ควรหยิบไปเรียนรู้ จึงไม่ได้มีแค่ HVAC แต่รวมถึง:
- Local-first Control
- Long-distance Sensor Bus
- I²C Address Management
- Local Data Logging
- Fault Monitoring
- TCP-based Alert Pipeline
- Fail-state Relay Design
References / แหล่งข้อมูลต้นฉบับ
อยากทำ Monitoring หรือ Automation Project ของตัวเอง?
ถ้ากำลังทำ Project ที่ใช้ Raspberry Pi, Development Board, Temperature Sensor, Environmental Sensor, Data Logging หรือ Interface Module สามารถสอบถามทีม Globalbyte เพื่อช่วยเช็กอุปกรณ์ ที่เหมาะกับโจทย์ได้
โดยเฉพาะงานที่มี Sensor หลายจุด ควรดูพร้อมกันทั้ง: จำนวน I/O, Communication Interface, ระยะสาย, Logic Voltage, Power Supply และวิธีรับมือเมื่อ Sensor หรือ Network มีปัญหา
บทความนี้ไม่ได้ยืนยันว่า Particle Photon 2, Mikroe Click Boards, Belimo Damper หรืออุปกรณ์รุ่นเดียวกับต้นฉบับ มี Stock พร้อมจำหน่ายที่ Globalbyte กรุณาสอบถามผ่าน LINE OA เพื่อเช็กสินค้า หรือหา Board / Sensor ทางเลือก ที่เหมาะกับ Project