Thiết kế và thi công hệ thống điều khiển nhà thông minh

111 0 0
Thiết kế và thi công hệ thống điều khiển nhà thông minh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỆN TỬ - VIỄN THÔNG THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH GVHD: THS NGUYỄN TRƯỜNG DUY SVTH: CAO THỊ LAN ANH PHẠM THỊ NGỌC HÂN SKL009703 Tp.Hồ Chí Minh, tháng 1/2023 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - VIỄN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH GVHD: ThS Nguyễn Trường Duy SVTH: Cao Thị Lan Anh 18161183 Phạm Thị Ngọc Hân 18161214 Tp Hồ Chí Minh – 01/2023 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - VIỄN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH GVHD: ThS Nguyễn Trường Duy SVTH: Cao Thị Lan Anh 18161183 Phạm Thị Ngọc Hân 18161214 Tp Hồ Chí Minh – 01/2023 i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp Hồ Chí Minh, ngày 26 tháng 09 năm 2022 NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP Họ tên sinh viên: Cao Thị Lan Anh Phạm Thị Ngọc Hân Chuyên ngành: Điện tử Công nghiệp Hệ đào tạo: Đại học quy Khóa: 2018 I MSSV: 18161183 MSSV: 18161214 Mã ngành: 161 Mã hệ: Lớp: 18161DT TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH II NHIỆM VỤ Các số liệu ban đầu: Đề tài sử dụng bao gồm: Kit Raspberry Pi model B, module wifi ESP-32, module Relay 5V kênh, hình Nextion (HMI), động Servo, cảm biến nhiệt độ, độ ẩm DHT-11, cảm biến khí gas MQ-135, cảm biến mưa Ngơn ngữ lập trình: Python, C Nội dung thực hiện: - Nội dung 1: Kết nối module wifi ESP32 với module cảm biến có hệ thống - Nội dung 2: Kết nối module wifi ESP32 với Internet để cập nhật liệu dùng cho việc hiển thị nhận lệnh điều khiển - Nội dung 3: Nghiên cứu xây dựng ứng dụng Android giao tiếp người dùng hệ thống - Nội dung 4: Nghiên cứu xây dựng hệ thống trợ lý ảo hỗ trợ điều khiển thiết bị hệ thống - Nội dung 5: Thiết kế vẽ mơ hình nhà thông minh 3D hệ thống vi mạch - Nội dung 6: Nguyên cứu, tìm hiểu để lập trình giao tiếp với hệ thống - Nội dung 7: Thi cơng mạch, phần cứng mơ hình, chạy thử nghiệm hiệu chỉnh hệ thống - Nội dung 8: Viết hoàn chỉnh báo cáo đề tài thực ii - Nội dung 9: Bảo vệ luận văn III NGÀY GIAO NHIỆM VỤ: 13/09/2022 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 29/12/2022 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Trường Duy CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii TRƯỜNG ĐẠI HỌC SPKT TPHCM Khoa Điện - Điện Tử Bộ Môn Điện Tử Cơng Nghiệp-Y Sinh CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp Hồ Chí Minh, ngày 26 tháng 09 năm 2022 LỊCH TRÌNH THỰC HIỆN KHĨA LUẬN TỐT NGHIỆP Họ tên sinh viên: Cao Thị Lan Anh MSSV: 18161183 Lớp: 18161DT1 Họ tên sinh viên: Phạm Thị Ngọc Hân MSSV: 18161214 Lớp: 18161DT2 Tên đề tài: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH Xác nhận Tuần/ngày Nội dung GVHD Tuần (11/09 – 18/09) - Gặp GVHD để nghe phổ biến yêu cầu làm đồ án, tiến hành chọn đồ án - Tìm hiểu đề tài nghiên cứu có liên quan Tuần - GVHD tiến hành xét duyệt đề tài (19/09 – 25/09) - Nộp đề cương chi tiết cho mơn - Viết tóm tắt nội dung đề tài chọn Tuần - Viết lịch trình thực đồ án tốt nghiệp (26/09 – 02/10) - Tìm hiểu đề tài kiến thức liên quan đến đề tài Tuần (03/10 – 09/10) Tuần (10/10 – 16/10) Tuần (17/09 – 23/10) Tuần (24/10 – 30/10) - Tìm hiểu nguyên lý hoạt động lựa chọn thiết bị sử dụng cho đề tài - Tìm hiểu cách giao tiếp cảm biến, module wifi cách kết nối linh kiện sử dụng đề tài - Tiến hành thiết kế sơ đồ khối, giải thích chức khối - Tính tốn, lựa chọn linh kiện sử dụng khối - Thiết kế sơ đồ ngun lý tồn mạch, giải thích sơ đồ nguyên lý hoạt động mạch - Mô mạch - Tiến hành tính tốn để bố trí linh kiện phù hợp, vẽ mạch PCB iv - Hoàn chỉnh mạch in Tuần (31/10 – 06/11) Tuần - Tiến hành thi công mạch - Báo cáo tiến độ với GVHD - Kiểm tra hoàn thiện mạch thi công (07/11 – 13/11) - Thiết kế, xây dựng mơ hình cho hệ thống Tuần 10 - Vẽ lưu đồ giải thuật, viết chương trình cho hệ thống (14/11 – 20/11) Tuần 11 (21/11 – 27/11) Tuần 12 (28/11 – 04/12) Tuần 13 (05/12 – 11/12) Tuần 14 (12/12 – 18/12) Tuần 15 (19/12 – 25/12) Tuần 16 (26/12 – 01/01) - Lập trình cho Arduino hoạt động, điều khiển xử lý liệu từ cảm cảm biến Thiết kế App Android truyền, nhận liệu Firebase, App với hệ thống điều khiển - Kiểm tra sửa lỗi - Hồn thiện giao diện App mơ hình - Chạy thử hiệu chình tồn hệ thống - Kiểm tra hoạt động hệ thống sửa lỗi - Viết báo cáo hoàn chỉnh - Làm slide báo cáo Hoàn thiện báo cáo in báo cáo Báo cáo với GVHD GV HƯỚNG DẪN (Ký ghi rõ họ tên) v LỜI CAM ĐOAN Đề tài đồ án tốt nghiệp “Thiết kế thi công hệ thống điều khiển nhà thơng minh” nhóm chúng em bao gồm Cao Thị Lan Anh Phạm Thị Ngọc Hân thực hướng dẫn thầy Nguyễn Trường Duy, dựa đề tài số tài liệu có liên quan đến đề tài nhóm, nhóm em tham khảo để có thêm nguồn thông tin lượng kiến thức vừa đủ phục vụ cho việc hồn thành đề tài tốt trích dẫn nguồn đầy đủ rõ ràng Nhóm chúng em xin cam kết khơng chép từ tài liệu hay cơng trình có liên qua hay đề tài trước Nếu có vấn đề gian lận nào, nhóm xin chịu tồn trách nhiệm đề tài Người thực Cao Thị Lan Anh Phạm Thị Ngọc Hân vi LỜI CẢM ƠN Đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành sâu sắc đến Thầy Nguyễn Trường Duy _ Giảng viên môn Điện tử công nghiệp – Y sinh trực tiếp hướng dẫn tận tình, giúp đỡ tạo điều kiện để nhóm chúng em hồn thành tốt đề tài Nhóm em xin chân thành cảm ơn quý thầy cô công tác khoa Điện – Điện tử dạy dỗ, truyền đạt cho chúng em kiến thức chuyên ngành cần thiết, góp ý chia sẻ nhiều kinh nghiệm quý báu, tạo cho chúng em tảng vững môi trường học tập rèn luyện chất lượng đủ cho nhóm chúng em thực tốt đề tài Ngồi ra, nhóm xin gởi lời cảm ơn chân thành đến gia đình, người thân, anh chị, bạn bè lớp 18161DT bên cạnh hỗ trợ chúng em suốt quãng đường đại học, góp ý chia sẻ tận tình giúp chúng em có nhiều động lực, ý chí dốc học tập thực thành công đồ án tốt nghiệp Cuối cùng, chúng em xin cám ơn nhà thứ hai, trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, gia đình thứ hai – khoa Điện - Điện tử, tất q thầy dìu dắt nâng đỡ hết mình, hỗ trợ bạn bè suốt thời gian qua, để chúng em tự trang bị đầy đủ, tất kiến thức lẫn kỹ mềm nhằm góp phần phục vụ đường tương lai phía trước Chúng em ln nhớ khoảng thời gian gắn bó với trường, ln tự hào phần xn thuộc nhà Đại học Sư phạm Kỹ Thuật Thành phố Hồ Chí Minh Xin trân trọng cảm ơn! Người thực đề tài Cao Thị Lan Anh Phạm Thị Ngọc Hân vii TĨM TẮT Nhà thơng minh trở thành giải pháp tối ưu đại bậc thời điểm công nghệ ngày nâng cao Ngày nay, người trải nghiệm sống mẽ với tiện ích mà nhà thơng minh mang lại giúp ích cho sống họ thêm màu sắc thú vị Vì mục đích đó, nhóm nghiên cứu tiến hành thực đề tài “ Thiết kế thi công hệ thống điều khiển nhà thông minh” sử dụngcác trợ lý ảo hạn chế tối đa thao tác tay chân, tối ưu hóa điều khiển người giọng nói, cú chạm lên hình điện thoại vận hành tồn hệ thống thiết bị nhà Đề tài ứng dụng trợ lý ảo dựa tảng kit Raspberry Pi Model B sử dụng ngơn ngữ lập trình Python Sau hệ thống hoàn chỉnhthu kết hệ thống có khả điều khiển thiết bị điện nhàbằng thao tác tay thông thường, cú chạm bật tắt phần mềm thiết lập thực điều khiển thơng minh giọng nói Các kết đo từ cảm biếnhiển thị qua hình Nextion HMI trực tiếp điều khiển thông qua app điện thoạiAndroid viii } void RainTask(void* arg){ DeviceInit(RAIN_PIN, GPIO_MODE_INPUT); while(1){ ESP_LOGI(TAG, "SensorData.rain = %d", SensorData.rain); vTaskDelay(3000 / portTICK_PERIOD_MS); } } void ReadNVS(void){ NVSDriverOpen("nvs"); char* Sdev1 = NULL; NVSDriverRead("Sdev1", &Sdev1); if(Sdev1!=NULL){ device.Fan1State = atoi(Sdev1); } free(Sdev1); char* Sdev2 = NULL; NVSDriverRead("Sdev2", &Sdev2); } void DeviceTask(void *arg){ DeviceInit(FAN1, GPIO_MODE_OUTPUT); DeviceInit(FAN2, GPIO_MODE_OUTPUT); DeviceInit(LED1, GPIO_MODE_OUTPUT); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81 DeviceInit(LED2, GPIO_MODE_OUTPUT); while (1) { if(device.LED1State!=device.LED1StateO){ if(device.LED1State){ DeviceSetLevel(LED1, ON); }else{ DeviceSetLevel(LED1, OFF); } device.LED1StateO = device.LED1State; } if(device.LED2State!=device.LED2StateO){ if(device.LED2State){ DeviceSetLevel(LED2, ON); }else{ DeviceSetLevel(LED2, OFF); } device.LED2StateO = device.LED2State; } if(device.Fan1State!=device.Fan1StateO){ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 82 if(device.Fan1State){ DeviceSetLevel(FAN1, ON); }else{ DeviceSetLevel(FAN1, OFF); } device.Fan1StateO = device.Fan1State; } if(device.Fan2State!=device.Fan2StateO){ if(device.Fan2State){ DeviceSetLevel(FAN2, ON); }else{ DeviceSetLevel(FAN2, OFF); } device.Fan2StateO = device.Fan2State; } vTaskDelay(10/ portTICK_PERIOD_MS); } } static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event) { int msg_id; // your_context_t *context = event->context; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 83 switch (event->event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); msg_id = esp_mqtt_client_publish(client, IO_TOPIC, "1000", 0, 1, 0); ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_subscribe(client, LED1_TOPIC, 0); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_subscribe(client, LED2_TOPIC, 0); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_subscribe(client, FAN1_TOPIC, 0); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_subscribe(client, FAN2_TOPIC, 0); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); break; case MQTT_EVENT_DISCONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); break; case MQTT_EVENT_SUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); break; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 84 case MQTT_EVENT_UNSUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id); break; case MQTT_EVENT_PUBLISHED: ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); break; case MQTT_EVENT_DATA: ESP_LOGI(TAG, "MQTT_EVENT_DATA"); printf("TOPIC=%.*s\r\n", event->topic_len, event->topic); printf("DATA=%.*s\r\n", event->data_len, event->data); if(strcmp(topic, "led1\r\n") == 0){ ESP_LOGI(TAG, "led1"); sprintf(data, "%.*s\r\n", event->data_len, event->data); printf("data=%s", data); if(strcmp(data, "0\r\n") == 0){ device.LED1State = 0; }else{ device.LED1State = 1; } }else if(strcmp(topic,"led2\r\n") == 0){ ESP_LOGI(TAG, "led2"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85 sprintf(data, "%.*s\r\n", event->data_len, event->data); printf("data=%s", data); if(strcmp(data, "0\r\n") == 0){ device.LED2State = 0; }else{ device.LED2State = 1; } }else if(strcmp(topic,"fan1\r\n") == 0){ ESP_LOGI(TAG, "fan1"); sprintf(data, "%.*s\r\n", event->data_len, event->data); printf("data=%s", data); if(strcmp(data, "0\r\n") == 0){ device.Fan1State = 0; }else{ device.Fan1State = 1; } }else if(strcmp(topic,"fan2\r\n") == 0){ ESP_LOGI(TAG, "fan2"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 86 sprintf(data, "%.*s\r\n", event->data_len, event->data); printf("data=%s", data); if(strcmp(data, "0\r\n") == 0){ device.Fan2State = 0; }else{ device.Fan2State = 1; } } break; case MQTT_EVENT_ERROR: ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); break; default: ESP_LOGI(TAG, "Other event id:%d", event->event_id); break; } return ESP_OK; } static void mqtt_app_start(void) { esp_mqtt_client_config_t mqtt_cfg = { uri = BROKER_URL, // user_context = (void *)your_context }; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 87 esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg); esp_mqtt_client_start(client); } void app_main() { //Read NVS ReadNVS(); //wifi pre setup Param.WN = "CODER HOUSE"; Param.WP = "88888888"; //Init Nextion HMI NextionInit(); //Nextion RX Task xTaskCreate(&NextionRXTask, "NextionRXTask", 1024*2, NULL, 1, NULL); //Nextion TX Task xTaskCreate(&NextionTXTask, "NextionTXTask", 1024*2, NULL, 2, NULL); //Device control Task xTaskCreate(&DeviceTask, "DeviceTask", 1024*2, NULL, 4, NULL); if(wifi_init_sta()){ mqtt_app_start(); // DHT11Run(); // MQ135Run(); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 88  CODE CHƯƠNG TRÌNH HỆ THỐNG TRÊN NEXTION #include "nextion.h" #include "common.h" #include "device.h" #include "cJSON.h" #include "cmd.h" static const char *TX_TASK_TAG = "LAGP-NextionTXTask"; static const char *RX_TASK_TAG = "LAGP-NextionRXTask"; void NextionInit() { const uart_config_t uart_config = { stop_bits = UART_STOP_BITS_1, flow_ctrl = UART_HW_FLOWCTRL_DISABLE }; uart_param_config(UART_HMI, &uart_config); uart_set_pin(UART_HMI, TX_HMI, RX_HMI, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); } int NextionSendData(const char* logName, const char* data) { const int len = strlen(data); const int txBytes = uart_write_bytes(UART_HMI, data, len); ESP_LOGD(logName, "Wrote %d bytes", txBytes); return txBytes; } void NextionTXTask(void* arg) { while (1) { ESP_LOGD(TX_TASK_TAG, "Free memory: %d bytes", esp_get_free_heap_size()); sprintf(cmd, "Monitor.power_v.txt=\"%d*C\"\xFF\xFF\xFF", SensorData.temperature); ESP_LOGD(TX_TASK_TAG, "Monitor.power_v.txt=%d*C", SensorData.temperature); NextionSendData(TX_TASK_TAG, cmd); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 89 sprintf(cmd, "Monitor.freq_v.txt=\"%d%%RH\"\xFF\xFF\xFF", SensorData.humidity); ESP_LOGD(TX_TASK_TAG, "Monitor.freq_v.txt=%d%%RH", SensorData.humidity); NextionSendData(TX_TASK_TAG, cmd); sprintf(cmd, "Monitor.vol_v.txt=\"%d\"\xFF\xFF\xFF", SensorData.mq135); ESP_LOGD(TX_TASK_TAG, "Monitor.vol_v.txt=%d", SensorData.mq135); NextionSendData(TX_TASK_TAG, cmd); sprintf(cmd, "Monitor.amp_v.txt=\"%d\"\xFF\xFF\xFF", SensorData.rain); ESP_LOGD(TX_TASK_TAG, "Monitor.amp_v.txt=%d", SensorData.rain); NextionSendData(TX_TASK_TAG, cmd); if(device.LED1State){ NextionSendData(TX_TASK_TAG, "Control.t1.txt=\"ON\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t1.pco=2016\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt0.val=1\xFF\xFF\xFF"); //DeviceSetLevel(FAN1, ON); }else if(!device.LED1State){ NextionSendData(TX_TASK_TAG, "Control.t1.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t1.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt0.val=0\xFF\xFF\xFF"); //DeviceSetLevel(FAN1, OFF); } if(device.LED2State){ NextionSendData(TX_TASK_TAG, "Control.t4.txt=\"ON\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t4.pco=2016\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt1.val=1\xFF\xFF\xFF"); //DeviceSetLevel(FAN2, ON); }else if(!device.LED2State){ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 90 NextionSendData(TX_TASK_TAG, "Control.t4.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t4.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt1.val=0\xFF\xFF\xFF"); //DeviceSetLevel(FAN2, OFF); } if(device.Fan1State){ NextionSendData(TX_TASK_TAG, "Control.t6.txt=\"ON\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t6.pco=2016\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt2.val=1\xFF\xFF\xFF"); //DeviceSetLevel(LED1, ON); }else if(!device.Fan1State){ NextionSendData(TX_TASK_TAG, "Control.t6.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t6.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt2.val=0\xFF\xFF\xFF"); //DeviceSetLevel(LED1, OFF); } if(device.Fan2State){ NextionSendData(TX_TASK_TAG, "Control.t8.txt=\"ON\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t8.pco=2016\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt3.val=1\xFF\xFF\xFF"); //DeviceSetLevel(LED2, ON); }else if(!device.Fan2State){ NextionSendData(TX_TASK_TAG, "Control.t8.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t8.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt3.val=0\xFF\xFF\xFF"); //DeviceSetLevel(LED2, OFF); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 91 if (device.Fan1State && device.Fan2State && device.LED1State && device.LED2State) { NextionSendData(TX_TASK_TAG, "Control.t9.txt=\"ON\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t9.pco=2016\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt4.val=1\xFF\xFF\xFF"); // DeviceSetLevel(FAN1, ON); // DeviceSetLevel(FAN2, ON); // DeviceSetLevel(LED1, ON); // DeviceSetLevel(LED2, ON); } else if (! (device.Fan1State) ) { NextionSendData(TX_TASK_TAG, "Control.t9.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t9.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt4.val=0\xFF\xFF\xFF"); //DeviceSetLevel(FAN1, OFF); }else if (! (device.Fan2State) ) { NextionSendData(TX_TASK_TAG, "Control.t9.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t9.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt4.val=0\xFF\xFF\xFF"); //DeviceSetLevel(FAN2, OFF); }else if (! (device.LED1State) ) { NextionSendData(TX_TASK_TAG, "Control.t9.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t9.pco=63488\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.bt4.val=0\xFF\xFF\xFF"); //DeviceSetLevel(LED1, OFF); }else if (! (device.LED2State) ) { NextionSendData(TX_TASK_TAG, "Control.t9.txt=\"OFF\"\xFF\xFF\xFF"); NextionSendData(TX_TASK_TAG, "Control.t9.pco=63488\xFF\xFF\xFF"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 92 }; NextionSendData(TX_TASK_TAG, "Control.bt4.val=0\xFF\xFF\xFF"); //DeviceSetLevel(LED2, OFF); } vTaskDelay(1000 / portTICK_PERIOD_MS); //Transmit every 10 seconds } } void NextionRXTask(void* arg) { ESP_LOGD(RX_TASK_TAG,"NEXTION RX TASK"); uint8_t* data = (uint8_t*) malloc(RX_BUFFER+1); char *dstream = malloc(RX_BUFFER+1); while (1) { ESP_LOGD(RX_TASK_TAG, "Free memory: %d bytes", esp_get_free_heap_size()); memset(dstream,0,sizeof(malloc(RX_BUFFER+1))); const int rxBytes = uart_read_bytes(UART_HMI, data, RX_BUFFER, 500 / portTICK_RATE_MS); if (rxBytes > 0) { data[rxBytes] = 0; snprintf(dstream, RX_BUFFER+1, "%s", data); } ESP_LOGD(RX_TASK_TAG, "data recv %s", dstream); cJSON *sub; sub=cJSON_Parse(dstream); cJSON *body =cJSON_GetObjectItem(sub,"body"); char *value_body; //char *value_type_cmd; if(body){ value_body=cJSON_GetObjectItem(sub,"body")->valuestring; ESP_LOGD(RX_TASK_TAG, "body is %s",value_body); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 93 } cJSON *command =cJSON_GetObjectItem(sub,"command"); } //if(ParseCmd(value_type_cmd, value_body)==0)continue; // free(value_body); // free(value_type_cmd); vTaskDelay(100/portTICK_PERIOD_MS); } free(data); free(dstream); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 94 S K L 0

Ngày đăng: 10/05/2023, 09:46

Tài liệu cùng người dùng

Tài liệu liên quan