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

Photon 2 HVAC 4-zone damper controller
Photon 2 HVAC 4-Zone Damper Controller รุ่นอัปเกรดที่รวม Relay, I²C Multiplexer, microSD Logging และ Sensor Monitoring ไว้ใกล้ Furnace Plenum

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

Keen Home Smart Vents หยุดทำงาน

สร้างระบบด้วย 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

Room / Plenum Sensors

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 ถูกสั่งเปิด

Controller ทำงาน

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

Photon 2 ตรวจพบ Temperature Error

เปิด 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.cpp
  • TCPtoEmail.py

Sensor / I²C / Driver Modules

  • Adafruit_MCP9808.h
  • Adafruit_MCP9808.cpp
  • Arduino.h
  • Arduino.cpp
  • i2cmux3.h
  • i2cmux3.cpp
  • SparkFunBME280.h
  • SparkFunBME280.cpp
  • drv_digital_in.h
  • drv_digital_in.cpp
  • drv_digital_out.h
  • drv_digital_out.cpp
  • drv_i2c_master.h
  • drv_i2c_master.cpp

SD / FAT Modules

  • sd-card-library-photon-compat.h
  • sd-card-library-photon-compat.cpp
  • fat-structs.h
  • File.cpp
  • mikro_port.h
  • sd2-card.h
  • sd2-card.cpp
  • sd2-card-config.h
  • sd-fat.h
  • sd-fat.cpp
  • sd-fat-main-page.h
  • sd-fat-util.h
  • sd-info.h
  • sd-volume.cpp

ไม่มี Code Snippet ในบทความนี้: Source ที่ใช้รอบนี้ มีรายชื่อไฟล์และลิงก์ Download แต่ไม่ได้ให้ Code Body ของ Damper.cpp หรือ TCPtoEmail.py ในข้อมูลที่นำมาเรียบเรียง จึงไม่สร้าง Code ขึ้นเอง

ถ้าศึกษา Project นี้แบบ Step-by-Step ควรดูตามลำดับไหน?

1

เริ่มจาก Zone และ Airflow ก่อน

ทำความเข้าใจว่า ห้องไหนอยู่ Zone ไหน, Zone หนึ่งมี Damper กี่ตัว และ Damper คู่ไหนต่อแบบขนาน

2

แยก Sensor Local กับ Remote

Local Sensor ใช้ I²C ระยะสั้น ส่วน Remote Sensor ใช้ Differential I²C เพื่อเดินไปยังแต่ละห้อง

3

วาง I²C Address และ Mux

Local MCP9808 ใช้ 0x19 ส่วน Remote ใช้ 0x18 และแยก Branch ด้วย I2C Mux

4

แยก Relay Logic ออกจาก Sensor Logic

Photon 2 อ่าน Sensor และตัดสินใจ Zone State ก่อนสั่ง Relay4 ไปยัง Damper Actuator

5

เก็บ Local Log ก่อนพึ่ง Alert

microSD เก็บ Sensor / Damper Status ทุกวินาที เพื่อใช้ตรวจย้อนหลัง แม้ Email Alert จะมีปัญหา

6

เพิ่ม 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

Original HVAC damper controller system
ระบบ Controller รุ่นเดิม ก่อน Upgrade ไป Photon 2 โดยบางส่วนของ Wiring ไปยัง Plenum Dampers ยังคงใช้งานต่อ
iPhone screen showing plenum temperature errors
ตัวอย่างหน้าจอ iPhone ที่แสดง Plenum Temperature Error โดยผู้สร้างระบุว่า Error Counter ขึ้นถึง 898 ครั้ง
MCP9808 and BME280 local HVAC sensors
Local Temperature / Environmental Sensors MCP9808 และ BME280 ติดตั้งบน Metal Holder ก่อนนำกลับเข้า Furnace Plenum
Belimo HVAC damper actuator
ตัวอย่าง Belimo Damper / Actuator ที่ใช้เปิดและปิด Airflow ในระบบต้นฉบับ
New Photon 2 HVAC damper controller enclosure
Controller Enclosure รุ่นใหม่ และตำแหน่ง Local Sensors ใกล้ Furnace Plenum
HVAC controller installed in furnace room
ภาพรวมอุปกรณ์ส่วนใหญ่ ที่ติดตั้งอยู่ใน Furnace Room
Remote HVAC room temperature sensor
Remote Temperature Sensor รุ่นเดิมเมื่อถอด Cover ออก โดย Cover ถูกเจาะรู เพื่อช่วยให้อากาศผ่าน Sensor
iPhone HVAC interface while air conditioning is on
ตัวอย่าง Interface บน iPhone ขณะ Air Conditioning ทำงาน
iPhone HVAC interface while furnace is on
ตัวอย่าง Interface บน iPhone ขณะ Furnace ทำงาน
Photon 2 HVAC damper controller wiring diagram
Wiring Diagram ของ Damper Controller ตาม Project ต้นฉบับ
Expanded Photon 2 HVAC damper controller wiring diagram
Expanded Wiring Diagram ที่แสดง Connection ของ Controller, Relay, I²C และอุปกรณ์ที่เกี่ยวข้องเพิ่มเติม

ถ้าเอาแนวคิดนี้มาศึกษาในบริบท 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 ถูกออกแบบให้ทำงานร่วมกัน:

Temperature Sensors

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


Blog posts