Skip to content

Latest commit

 

History

History
213 lines (179 loc) · 9.66 KB

README.th.md

File metadata and controls

213 lines (179 loc) · 9.66 KB

ToshibaCarrierHvac

สวัสดีครับ ไลบรารี่นี้ใช้การสื่อสารแบบอนุกรม(serial/uart) สำหรับเชื่อมต่อ Arduino หรือ NodeMCU เข้ากับเครื่องปรับอากาศ Toshiba/Carrier ผ่านช่องเชื่อมต่อกล่อง wifi บนบอร์ดโดยตรง คุณสามารถใช้ไลบรารี่นี้เพื่อต่อยอดและพัฒนาใช้งานร่วมกับระบบ smart home ที่มีอยู่ได้ ควบคุมแอร์ผ่านอินเทอร์เน็ตหรือวงแลน ระบบอัตโนมัติ และอื่นๆอีกมากมาย

ใช้ได้กับไมโครคอนโทรลเลอร์:

  • ESP8266
  • ESP32
  • ATmega328P (Arduino Uno R3, Arduino Nano)

รองรับเครื่องปรับอากาศ:

  • Toshiba Seiya
  • Toshiba Shorai
  • Carrier X Inverter (42TVAA)
  • Carrier X Inverter Plus 2024 (42TVAB)

อาจรองรับ (ยังไม่ได้ทดสอบ):

  • Carrier Color Smart (42TVCA)

รองรับการสั่งงาน:

  • เปิด/ปิด
  • ปรับโหมด (auto, cool, dry, fan_only)
  • ปรับระดับความแรงลม
  • การส่ายใบปรับทิศทางลม (คงที่, แนวตั้ง, แนวนอนม, แนวตั้งและแนวนอน, ตำแน่งที่ 1, ตำแน่งที่ 2, ตำแน่งที่ 3,ตำแน่งที่ 4, ตำแน่งที่ 5)
  • เปิด/ปิดระบบฟอกอากาศพลาสมาไอออน (Pure)
  • เลือกระดับการใช้พลังงาน (PSEL)
  • เลือกการทำงาน (High Power, ECO, Silent1, Silent2, 8Degree, Fireplace1, Fireplace2)
  • เปิด/ปิดไฟสถานะ WiFi หน้าเครื่อง
  • ดูอุณหภูมิภายในห้อง
  • ดูอุณหภูมิภายนอก
  • ดูสถานะการตั้งเวลาเปิด/ปิด
  • ดูสถานะ CDU

Header & Connector pinout

ดูรูปภาพ ที่นี่

วงจรตัวอย่าง

ข้อควรระวัง: กรณีใช้กับ ESP8266 หรือ ESP32 ควรใช้งานร่วมกับ TTL level shifter (5V to 3.3V TTL)

วงจรตัวอย่าง

วิธีใช้งาน

1) เรียกใช้งานไลบรารี่ในโปรแกรม

#include <ToshibaCarrierHvac.h>

2) เลือกพอร์ตที่ต้องการใช้งาน

  • Hardware serial
ToshibaCarrierHvac hvac(&Serial);
  • Software serial
ToshibaCarrierHvac hvac(D5, D6); // RX, TX

3) เพิ่ม handleHvac เข้าไปใน loop

void loop() {
    hvac.handleHvac();
}

โครงสร้างข้อมูลที่ใช้งานได้

  • โครงสร้างข้อมูลการตั้งค่า
struct hvacSettings {
    const char* state;
    uint8_t setpoint;
    const char* mode;
    const char* swing;
    const char* fanMode;
    const char* pure;
    const char* powerSelect;
    const char* operation;
    const char* wifiLed;
};
  • โครงสร้างข้อมูลสถานะ
 struct hvacStatus {
    int8_t roomTemperature;
    int8_t outsideTemperature;
    const char* offTimer;
    const char* onTimer;
    bool running;
};

ฟังก์ชั่น

  • เรียกใช้โครงสร้างข้อมูลสถานะปัจจุบันทั้งหมด
hvacStatus newStatus = hvac.getStatus;
  • เรียกใช้โครงสร้างข้อมูลการตั้งค่าปัจจุบันทั้งหมด
hvacSettings newSettings = hvac.getSettings;
  • การเลือกใช้เพียงข้อมูลเดียว
hvac.getState();
hvac.getSetpoint();
hvac.getMode();
hvac.getFanMode();
hvac.getSwing();
hvac.getPure();
hvac.getOffTimer();
hvac.getOnTimer();
hvac.getPowerSelect();
hvac.getOperation();
  • การเซ็ตการตั้งค่าจากพรีเซ็ตที่ตั้งไว้
hvacSettings myPreset {
    "on",    // State ["off", "on"]
    25,      // Setpoint [16-30c]
    "cool",  // Mode ["auto", "cool", "heat", "dry", "fan_only"]
    "on",    // Swing ["off", "on"]
    "lvl_3", // Fan mode ["quiet", "lvl_1", "lvl_2", "lvl_3", "lvl_4", "lvlL_5", "auto"]
    "off",   // Pure ["off", "on"]
    "100%",  // Power select ["50%", "75%", "100%"]
    "normal" // Operation ["normal", "high_power", "silent_1", "eco", "silent_2"]
};

hvac.applyPreset(myPreset);
  • การเลือกเซ็ตเพียงค่าเดียว
hvac.setState("on");
hvac.setSetpoint(25);
hvac.setMode("cool");
hvac.setfanMode("lvl_3");
hvac.setSwing("off");
hvac.setPure("on");
hvac.getPowerSelect("100%");
hvac.getOperation("normal");
  • สถานะแบบบูลีน (true หรือ false)
hvac.isConnected();
hvac.isCduRunning();

การใช้ฟังก์ชั่นเรียกกลับ

ตั่งค่าฟังก์ชั่นเรียกกลับใน setup สามารถดูตัวอย่างเพิ่มเติมใน UseCallback.ino

void acCallback(hvacStatus newStatus) {
    if (newStatus.roomTemperature > 30) hvac.setState("on");
}

void setup() {
    hvac.setStatusUpdatedCallback(acCallback);
}

ฟังก์ชั่นเรียกกลับสถานะมีการอัพเดต

ฟังก์ชั่นเรียกกลับนี้จะทำงานเมื่อสถานะมีการอัพเดต และส่งกลับข้อมูลโครงสร้างสถานะปัจจุบัน (hvacStatus)

hvac.setStatusUpdatedCallback(YourCallbackFunction);

ฟังก์ชั่นเรียกกลับการตั้งค่ามีการอัพเดต

ฟังก์ชั่นเรียกกลับนี้จะทำงานเมื่อการตั้งค่ามีการอัพเดต และส่งกลับข้อมูลโครงสร้างการตั้งค่าปัจจุบัน (hvacSettings)

hvac.setSettingsUpdatedCallback(YourCallbackFunction);

ฟังก์ชั่นเรียกกลับข้อมูลมีการอัพเดต

ฟังก์ชั่นเรียกกลับนี้จะทำงานเมื่อสถานะ หรือการตั้งค่ามีการอัพเดต แต่ไม่ส่งกลับข้อมูลใดๆ

hvac.setUpdateCallback(YourCallbackFunction);

ฟังก์ชั่นเรียกกลับข้อมูลที่มีการอัพเดต

ฟังก์ชั่นเรียกกลับนี้จะทำงานเมื่อสถานะ หรือการตั้งค่ามีการอัพเดต และส่งกลับเป็นชื่อของข้อมูลที่อัพเดต

hvac.setWhichFunctionUpdatedCallback(YourCallbackFunction);

ส่งแพ็คเก็ตที่สร้างขึ้นเอง

แพ็คเก็ตที่สร้างขึ้นเองควรมีขนาด 8 ถึง 17 ไบต์. ฟังก์ชั่นนี้จะส่งแพ็คเก็ตของคุณออกไปโดยไม่ได้ตรวจสอบความถูกต้อง ดังนั้นโปรดใช้ด้วยความระมัดระวัง

byte myPacket[] = {2, 0, 3, 144, 0, 0, 9, 1, 48, 1, 0, 0, 0, 2, 163, 65, 76};
hvac.sendCustomPacket(myPacket, sizeof(myPacket));

ออกแบบและทำบอร์ดต้นแบบ

ใช้โปรแกรม KiCad ในการออกแบบ. ค่าใช้จ่ายในการสั่งทำ PCB รวมค่าอุปกรณ์ ตกชิ้นละประมาณ 80 บาท

  • วงจร prototype schematics

  • PCB prototype pcb

  • การต่อสาย prototype wiring

  • ผลลัพธ์ prototype

จะทำเร็วๆนี้:

  • ส่งแพ็คเก็ตที่สร้างขึ้นเอง
  • ออกแบบและทำบอร์ดต้นแบบ
  • ฟังก์ชั่นเรียกกลับสำหรับการ debug