สวัสดีครับ ไลบรารี่นี้ใช้การสื่อสารแบบอนุกรม(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
ดูรูปภาพ ที่นี่
ข้อควรระวัง: กรณีใช้กับ ESP8266 หรือ ESP32 ควรใช้งานร่วมกับ TTL level shifter (5V to 3.3V TTL)
#include <ToshibaCarrierHvac.h>
- Hardware serial
ToshibaCarrierHvac hvac(&Serial);
- Software serial
ToshibaCarrierHvac hvac(D5, D6); // RX, TX
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 บาท
- ส่งแพ็คเก็ตที่สร้างขึ้นเอง
- ออกแบบและทำบอร์ดต้นแบบ
- ฟังก์ชั่นเรียกกลับสำหรับการ debug