Thiết kế mô hình hệ thống nhà thông minh điều khiển giám sát thiết bị từ xa bằng giọng nói

100 1 0
Thiết kế mô hình hệ thống nhà thông minh điều khiển giám sát thiết bị từ xa bằng giọng nói

Đ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

MỤC LỤC LỜI CẢM ƠN DANH MỤC HÌNH VẼ DANH MỤC BẢNG BIỂU DANH MỤC CHỮ VIẾT TẮT THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI CHƯƠNG TỔNG QUAN 1.1 Tổng quan chung lãnh vực nghiên cứu, Kết nghiên cứu nước 1.2 Mục tiêu đề tài 1.3 Nhiệm vụ giới hạn đề tài CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Tổng quan giao thức MQTT (Message Queuing Telemetry Transport) 2.1.1 Giới thiệu MQTT 2.1.2 Đặc điểm MQTT 2.1.3 Nguồn gốc tương lai MQTT 2.1.4 Mơ hình MQTT 2.1.5 Định dạng tin nhắn MQTT 10 2.1.6 Các khái niệm đáng ý MQTT 13 2.1.7 Quy trình truyền nhận liệu MQTT 16 2.1.8 Kết luận 20 2.2 Module wifi ESP32 21 2.2.1 Giới thiệu module 21 2.2.2 Sử dụng GPIO 22 2.2.3 Cảm biến nhiệt độ ESP32 23 2.2.4 Cảm biến điện dung ESP32 24 2.2.5 Trình biên dịch Arduino IDE cho ESP32 23 2.2.6 MQTT-Client ESP32 28 2.2.6.1 Cài đặt thư viện PubSubClient 28 2.2.6.2 Sử dụng hàm API thư viện PubSubClient 29 2.2.7 Kết luận 30 2.3 Nhận dạng giọng nói Universal Windows Platform (UWP) 30 2.3.1 Giới thiệu chung Unviversal Windows Flatform (UWP) 30 2.3.1.1 Giới thiệu chung 30 2.3.1.2 Vòng đời ứng dụng UWP 31 2.3.2 Nhận dạng giọng nói UWP 32 2.3.2.1 Công nghệ nhận giạng giọng nói 32 2.3.2.2 Sử dụng Speech Recognition UWP 32 2.3.3 UWP trợ lý ảo Cortana 34 2.3.4 MQTT-Client ứng dụng UWP 36 2.3.5 Kết luận 38 CHƯƠNG 3: XÂY DỰNG MƠ HÌNH HỆ THỐNG NHÀ THÔNG MINH 39 3.1 Sơ đồ khối tổng quan 39 3.1.1 Khối truyền thông 39 3.1.2 Khối nhận dạng giọng nói 41 3.1.3 Khối smart phone, laptop module ESP32 42 3.1.4 Khối cảm biến 45 3.1.5 Khối chấp hành 53 3.1.6 Khối nguồn 54 3.2 Sơ đồ kết nối 56 3.3 Giao diện điều khiển 57 3.4 Kết luận 57 CHƯƠNG 4: ĐÁNH GIÁ KẾT QUẢ, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 58 4.1 Kết luận 58 4.1.1 Kết đạt 58 4.1.2 Hạn chế 58 4.2 Hướng phát triển 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC 59 LỜI CÁM ƠN Trên thực tế thành cơng mà khơng gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp người khác Trong suốt thời gian từ bắt đầu học tập giảng đường đại học đến nay, chúng em nhận nhiều quan tâm, giúp đỡ quý thầy cơ, gia đình bạn bè Với lịng biết ơn sâu sắc nhất, em xin gửi đến quý thầy cô Khoa Điện - Điện Tử, Trường Đại Học Giao Thông Vận Tải Phân Hiệu Tại Thành Phố Hồ Chí Minh với tri thức tâm huyết để truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trường Và đặc biệt, học kỳ này, khoa tổ chức cho chúng em tiếp cận với đề tài nghiên cứu khoa học mà theo em hữu ích sinh viên ngành Điện – Điện Tử tất sinh viên thuộc chuyên ngành khoa khác Em xin chân thành cảm ơn Ngơ Thị Thu Hương thầy Nguyễn Văn Bình tận tâm hướng dẫn chúng em qua buổi học lớp buổi nói chuyện, thảo luận lĩnh vực sáng tạo nghiên cứu khoa học Nếu khơng có lời hướng dẫn, dạy bảo thầy em nghĩ báo cáo em khó hồn thiện Một lần nữa, em xin chân thành cảm ơn thầy cô Bài báo cáo thực khoảng thời gian gần tuần Bước đầu vào thực tế, tìm hiểu lĩnh vực sáng tạo nghiên cứu khoa học, kiến thức em hạn chế nhiều bỡ ngỡ Do vậy, không tránh khỏi thiếu sót điều chắn, em mong nhận ý kiến đóng góp quý báu quý thầy cô bạn học lớp để kiến thức em lĩnh vực hoàn thiện Lời cảm tạ cô Ngô Thị Thu Hương thầy Nguyễn Văn Bình Sau cùng, em xin kính chúc q thầy cô khoa Điện – Điện Tử thầy hiệu trưởng thật dồi sức khỏe, niềm tin để tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức cho hệ mai sau DANH MỤC HÌNH VẼ Hình 1.1 Xu hướng phát triển nhà thông minh giới Hình 1.2 Dây chuyền sản xuất thiết bị smarthome Bkav Ảnh: T.H Hình 2.1 Ví dụ kết nối mạng lưới MQTT Hình 2.2 gửi tín hiệu điều khiển actor node thơng qua broker Hình 2.3 Mơ hình truyền thông MQTT Hình 2.4 Quá trình phát triển MQTT Hình 2.5 Mơ hình giao thức MQTT Hình 2.6 Session subscription thiết lập với clean session flag = 17 Hình 2.7 Session subscription thiết lập với clean session flag = 18 Hình 2.8 QoS mức 18 Hình 2.9 QoS mức 19 Hình 2.10 QoS mức 20 Hình 2.11 Module ESP32 21 Hình 2.12 Sờ đồ chân Module ESP32 22 Hình 2.13 Nền tảng UWP 30 Hình 2.14 Vịng dời ứng dụng UWP 31 Hình 2.15 Vịng đời ứng dụng UWP phiên 1607 32 Hình 2.16 Microphone (DeviceCapability) 33 Hình 2.17 Kết giao diện người dung 34 Hình 2.18 Kết sau nói 34 Hình 3.1 Sơ đồ khối nhà thông minh 39 Hình 3.2 Mơ hình giao thức MQTT 39 Hình 3.3 Mosquitto Setup 40 Hình 3.4 Cấu hình mosquitto CMD 41 Hình 3.5 Lưu đồ nhận dạng giọng nói 43 Hình 3.6 Lưu đồ điều khiển thiết bị 44 Hình 3.7 Lưu đồ điều khiển giàn phơi đồ 45 Hình 3.8 Mạch cầu H dùng relay 45 Hình 3.9 Cảm biến mưa TRGS-01 45 Hình 3.10 Cảm biến khí gas MQ-2 46 Hình 3.11 Cảm biến chuyển động HC-SR501 48 Hình 3.12.Ví dụ kết nối với Arduino 50 Hình 3.13 Cảm biến nhiệt độ, độ ẩm DHT11 50 Hình 3.14 Sơ đồ chân cảm biến DHT11 51 Hình 3.15 Cách kết nối cảm biến DHT11 52 Hình 3.16.Lưu đồ hệ thống cảnh báo bảo vệ 53 Hình 3.17 Module relay 5V kênh 54 Hình 3.18 Module mosfet IRF520 54 Hình 3.19 Adapter 12V 2A 55 Hình 3.20 Module giảm áp LM2596 55 Hình 3.21 Sơ đồ kết nối thiết bị 56 Hình 3.22 Giao diện điều khiển 57 DANH MỤC BẢNG BIỂU Bảng 2.1 Header cố định 10 Bảng 2.2 Loại message 11 Bảng 2.3 Bảng cờ 11 Bảng 2.4 Giá trị QoS 12 Bảng 2.5 Bảng miêu tả độ dàu ứng với số byte 13 Bảng 2.6 Ý nghĩa gói CONNACK 14 Bảng 2.7 Giá trị mức QoS 15 DANH MỤC CHỮ VIẾT TẮT 1) MQTT : Message Queuing Telemetry Transport 2) IoT : Internet of Things 3) M2M : Machine to Machine/ Mobile to Mobile 4) UWP: Universal Windows Platform TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI PHÂN HIỆU TẠI THÀNH PHỐ HỒ CHÍ MINH THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Thiết kế mơ hình hệ thống nhà thơng minh điều khiển giám sát thiết bị từ xa giọng nói - Sinh viên thực hiện: Nguyễn Thanh Phương Tùng - Lớp: Tự Động Hóa Khoa: Điện- Điện Tử Năm thứ: Số năm đào tạo: Khoa: Điện- Điện Tử Năm thứ: Số năm đào tạo: Khoa: Điện- Điện Tử Năm thứ: Số năm đào tạo: 4,5 năm Huỳnh Thiên Duy - Lớp: Tự Động Hóa 4,5 năm Nguyễn Minh Châu - Lớp: Tự Động Hóa 4,5 năm - Người hướng dẫn: KS Ngô Thị Thu Hương Mục tiêu đề tài: - Xây dựng phần cứng phần mềm hệ thống nhà thông minh điều khiển, giám sát thiết bị từ xa - Nhận dạng giọng nói điều khiển thiết bị laptop, smart phone qua internet Tính sáng tạo: - Khơng cần di chuyển, ngồi nơi cầm điện thoại di động tay người sử dụng điều khiển thiết bị điện nhà Kết nghiên cứu: - Điều khiển thiết bị thông qua wifi, 3G - Xây dựng mơ hình hệ thống nhà thông minh điều khiển giám sát laptop, smart phone qua internet Đóng góp mặt kinh tế - xã hội, giáo dục đào tạo, an ninh, quốc phòng khả áp dụng đề tài: Về bản, hệ thống nhà thông minh cho phép điều khiển thiết bị nhà thiết bị chiếu sáng, điều hòa, chống trộm… cách tự động tập trung, nhằm tạo tiện nghi, thoải mái, tiết kiệm lượng an ninh Nhà thông minh bắt nguồn từ hệ thống tự động hóa tịa nhà, biến đổi để áp dụng vào quy mô nhỏ nhà hộ Ngày nay, với phát triển công nghệ, hệ thống nhà thơng minh cịn cho phép kết nối đến thiết bị smartphone hay tablet để tăng tính tiện dụng Cơng bố khoa học sinh viên từ kết nghiên cứu đề tài (ghi rõ họ tên tác giả, nhan đề yếu tố xuất có) nhận xét, đánh giá sở áp dụng kết nghiên cứu (nếu có): Ngày tháng năm Sinh viên chịu trách nhiệm thực đề tài (ký, họ tên) Nhận xét người hướng dẫn đóng góp khoa học sinh viên thực đề tài (phần người hướng dẫn ghi): Ngày tháng năm Người hướng dẫn (ký, họ tên) CHƯƠNG TỔNG QUAN 1.1 Tổng quan chung lãnh vực nghiên cứu, Kết nghiên cứu nước - Trên giới diễn đua sản phẩm thông minh Trong xu hướng Internet kết nối vạn vật (Internet of Things - IoT), nhiều công ty cố gắng làm nhiều sản phẩm để giữ họ sâu chơi Samsung năm ngoái tuyên bố 90% sản phẩm công ty kết nối Internet vào năm 2017 Nhờ kết nối Internet, người dùng lệnh cho loa tìm kiếm phát nhạc muốn nghe, smartphone kết nối tất vật dụng gia đình Tập hợp sản phẩm thông minh tạo nhà thơng minh Hình 1.1 Xu hướng phát triển nhà thơng minh giới - Tất hãng công nghệ lớn Google, Amazon, Apple Samsung tìm cách tiến sâu vào thị trường smarthome Theo thống kê Statista, năm 2020, giá trị thị trường smarthome dự báo đạt 43 tỉ USD, gấp lần so với năm 2014 Rõ ràng khách hàng ngày u thích ngơi nhà tự động Thị trường Việt Nam đánh giá cao bất động sản nhà phát triển xu hướng tích cực người dùng sẵn lịng chi nhiều tiền cho nội thất, tiện ích, có sản phẩm công nghệ 77 sp_rec.Constraints.Add(liscons); } foreach (string i in in_out) { string[] commands = { "clothes " + i }; string tag = i + ":" + "storehouse" + ":" + "clothes"; var liscons = new SpeechRecognitionListConstraint(commands, tag); sp_rec.Constraints.Add(liscons); } foreach (string l in locations) { foreach (string s in states) { foreach (string d in devices) { string[] commands = { "turn " + s + " the " + l + " " + d }; string tag = s + ":" + l + ":" + d; var liscons = new SpeechRecognitionListConstraint(commands, tag); sp_rec.Constraints.Add(liscons); } } } string[] commands2 = { "turn off yourselt" }; var liscons2 = new SpeechRecognitionListConstraint(commands2); sp_rec.Constraints.Add(liscons2); //============ sp_rec.UIOptions.AudiblePrompt = "Say what you want to "; sp_rec.UIOptions.ExampleText = @"Ex 'Turn on the living room light'"; await sp_rec.CompileConstraintsAsync(); created = true; } try 78 { SpeechRecognitionResult result = await sp_rec.RecognizeWithUIAsync(); if (result.Status == SpeechRecognitionResultStatus.Success) { if ((result.Confidence == SpeechRecognitionConfidence.High) || (result.Confidence == SpeechRecognitionConfidence.Medium) || (result.Confidence == SpeechRecognitionConfidence.Low)) { if (result.Text == "turn off yourselt") { client.Disconnect(); CoreApplication.Exit(); } else { string[] tags = result.Constraint.Tag.Split(':'); if (tags[1] + tags[2] == "bedroomlight") { if (tags[0] == "on") tags[0] = "100"; else if (tags[0] == "off") tags[0] = "0"; } if (tags[1] == "living room") tags[1] = "livingroom"; client.Publish("utc2/phone/" Encoding.UTF8.GetBytes(tags[0]), 2, true); } } } } catch { } } private async void StartRecog() + tags[1] + "/" + tags[2], 79 { speechRecognizer = new SpeechRecognizer(); // create our grammar string[] commands = { "V home" }; var liscons = new SpeechRecognitionListConstraint(commands); speechRecognizer.Constraints.Add(liscons); //=========== await speechRecognizer.CompileConstraintsAsync(); speechRecognizer.ContinuousRecognitionSession.ResultGenerated += async (sender, args) => { if (args.Result.Status == SpeechRecognitionResultStatus.Success) { if ((args.Result.Confidence == SpeechRecognitionConfidence.High) || (args.Result.Confidence == SpeechRecognitionConfidence.Medium) || (args.Result.Confidence == SpeechRecognitionConfidence.Low)) { await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if(args.Result.Text == "V home") StartRec(sp_rec, client); }); speechRecognizer.ContinuousRecognitionSession.Resume(); } } }; StartRec(sp_rec, client); await this.speechRecognizer.ContinuousRecognitionSession.StartAsync(SpeechContinuous RecognitionMode.PauseOnRecognition); 80 } /// /// Invoked when Navigation to a certain page fails /// /// The Frame which failed navigation /// Details about the navigation failure void OnNavigationFailed(object sender, NavigationFailedEventArgs e) { throw new Exception("Failed to load Page " + e.SourcePageType.FullName); } /// /// Invoked when application execution is being suspended Application state is saved /// without knowing whether the application will be terminated or resumed with the contents /// of memory still intact /// /// The source of the suspend request. /// Details about the suspend request. private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); //TODO: Save application state and stop any background activity deferral.Complete(); } } } Code module wifi ESP32 #include 81 #include "modified_font.h" #include "WiFi.h" #include #include "DHT.h" #define DHTTYPE DHT11 #define DHTPIN 23 DHT dht(DHTPIN, DHTTYPE); #include #include "SSD1306.h" #define SSD_ADDRESS 0x3c #define SDA_PIN 21// GPIO21 -> SDA #define SCL_PIN 22// GPIO22 -> SCL SSD1306 display(SSD_ADDRESS, SDA_PIN, SCL_PIN); const char* ssid = "phuongtung"; //ten wifi const char* password = "tungphuong1995"; //pass wifi const char* mqtt_server = "iot.eclipse.org"; //ten broker int mqtt_port = 1883; //port const char* username = "tung"; //ten dang nhap vao broker const char* pass = "tungzon121"; // pass dang nhap WiFiClient espClient; PubSubClient client(espClient); // chon chan cua esp32 #define door 15 #define lock #define bedroom_radio 18 #define toilet_light 19 #define kitchen_light 13 #define kitchen_fan 12 #define bedroom_light 14 82 #define R 25 #define G 26 #define B 27 #define MQ2 36 int gas = 0; int on = 0; int off = 1; float temp = 0; float hum = 0; int freq = 50; int channel = 0; int resolution = 8; int dutyCycle = 30; int freq1 = 5000; int ledChannel1 = 1; int resolution1 = 8; int dutyCycle1 = 0; int dNum = 0; int OldBrightness = 255; void callback(char* topic, byte* payload, unsigned int length); void reconnect(); void displayData(int displayNum); void lightColor(String color); void taskOne( void * parameter ) { while(1) { 83 String inString; char buf[100]; float tempIni = temp; float humIni = hum; temp = dht.readTemperature(); hum = dht.readHumidity(); gas = analogRead(MQ2); if (isnan(hum) || isnan(temp)) // Check if any reads failed and exit early (to try again) { temp = tempIni; hum = humIni; } inString = temp; inString.toCharArray(buf, inString.length()+1); client.publish("utc2/esp/temp", buf, true); inString = hum; inString.toCharArray(buf, inString.length()+1); client.publish("utc2/esp/hum", buf, true); inString = gas; inString.toCharArray(buf, inString.length()+1); client.publish("utc2/esp/gas", buf, true); if(dNum == 4) dNum = 1; displayData(dNum); if(dNum != 0) dNum = dNum + 1; vTaskDelay(2000 / portTICK_PERIOD_MS); } 84 } void setup() { pinMode(lock,OUTPUT); pinMode(kitchen_light,OUTPUT); pinMode(kitchen_fan,OUTPUT); pinMode(bedroom_radio,OUTPUT); pinMode(toilet_light,OUTPUT); pinMode(R,OUTPUT); pinMode(G,OUTPUT); pinMode(B,OUTPUT); digitalWrite(lock, off); digitalWrite(kitchen_light, off); digitalWrite(kitchen_fan, off); digitalWrite(bedroom_radio, off); digitalWrite(toilet_light, off); digitalWrite(R, 0); digitalWrite(G, 0); digitalWrite(B, 0); WiFi.begin(ssid, password); client.setServer(mqtt_server, mqtt_port ); // port 11626 client.setCallback(callback); reconnect(); Serial.begin(112500); dht.begin(); ledcSetup(channel, freq, resolution); ledcAttachPin(door, channel); ledcWrite(channel, dutyCycle); //ledcSetup(ledChannel1, freq1, resolution1); ledcAttachPin(bedroom_light, ledChannel1); ledcWrite(ledChannel1, dutyCycle1); display.init(); 85 display.flipScreenVertically(); display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(Open_Sans_Condensed_Light_20); // set a font xTaskCreate(taskOne, "TaskOne", 10000, NULL, 1, NULL); } void loop() { if (!client.connected()) { reconnect(); // neu mat ket noi goi lai ham ket noi } client.loop(); } void callback(char* topic, byte* payload, unsigned int length) // nhan du lieu { payload[length] = '\0'; String strTopic = String((char*)topic); // ep kieu string String strmess = String((char*)payload); // ep kieu string if (strTopic == "utc2/phone/livingroom/light") { lightColor(strmess); } if (strTopic == "utc2/phone/livingroom/TV") { if (strmess == "on"){ dNum = 1; client.publish("utc2/esp/livingroom/TV", "on", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "off"){ dNum = 0; 86 client.publish("utc2/esp/livingroom/TV", "off", true); // Topic Phan cung phan hoi cho smart phone; } displayData(dNum); } if (strTopic == "utc2/phone/livingroom/door") { if (strmess == "open"){ ledcWrite(channel, 15); client.publish("utc2/esp/livingroom/door", "open", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "close"){ ledcWrite(channel, 30); client.publish("utc2/esp/livingroom/door", "close", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/livingroom/security") { if (strmess == "on"){ digitalWrite(lock, on); client.publish("utc2/esp/livingroom/security", "on", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "off"){ digitalWrite(lock, off); client.publish("utc2/esp/livingroom/security", "off", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/kitchen/light") 87 { if (strmess == "on"){ digitalWrite(kitchen_light, on); client.publish("utc2/esp/kitchen/light", "on", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "off"){ digitalWrite(kitchen_light, off); client.publish("utc2/esp/kitchen/light", "off", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/kitchen/fan") { if (strmess == "on"){ digitalWrite(kitchen_fan, on); client.publish("utc2/esp/kitchen/fan", "on", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "off"){ digitalWrite(kitchen_fan, off); client.publish("utc2/esp/kitchen/fan", "off", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/bedroom/light") { int intmess = map(strmess.toInt(), 0, 100, 0, 255); ledcWrite(ledChannel1, intmess); char buf[100]; String inString = String(intmess); inString.toCharArray(buf, inString.length()+1); 88 client.publish("utc2/esp/brightness", buf, true); // Topic Phan cung phan hoi cho smart phone; ledcWrite(ledChannel1, intmess); if(intmess == 0){ client.publish("utc2/esp/bedroom/light", "off", true); // Topic Phan cung phan hoi cho smart phone; } else{ client.publish("utc2/esp/bedroom/light", "on", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/bedroom/radio") { if (strmess == "on"){ digitalWrite(bedroom_radio, on); client.publish("utc2/esp/bedroom/radio", "on", true); // Topic Phan cung phan hoi cho smart phone; } else if (strmess == "off"){ digitalWrite(bedroom_radio, off); client.publish("utc2/esp/bedroom/radio", "off", true); // Topic Phan cung phan hoi cho smart phone; } } if (strTopic == "utc2/phone/toilet/light") { if (strmess == "on"){ digitalWrite(toilet_light, on); client.publish("utc2/esp/toilet/light", "on", true); // Topic Phan cung phan hoi cho smart phone; } 89 else if (strmess == "off"){ digitalWrite(toilet_light, off); client.publish("utc2/esp/toilet/light", "off", true); // Topic Phan cung phan hoi cho smart phone; } } } // Ham duoc goi ket noi cong void reconnect() { if (client.connect("ESP32Client1", username, pass, "utc2/esp/lwt1", 2, true, "off")) //last will mat ket noi se gui "off" { client.publish("utc2/esp/lwt1", "on", true); //khi ket noi se gui "on" client.subscribe("utc2/phone/#"); // Topic ma smart phone gui den phan cung de dieu khien } else vTaskDelay(3000 / portTICK_PERIOD_MS); ; // sau 3s neu ket noi that bai se ket noi lai } void displayData(int displayNum) { display.clear(); // clear the display switch (displayNum) { case 0: display.clear(); break; case 1: display.setFont(ArialMT_Plain_24); display.drawString(0, 31, "G:"); display.drawString(30, 31, String(gas)); break; 90 case 2: display.setFont(ArialMT_Plain_24); display.drawString(0, 31, "T:"); display.drawString(30, 31, String(temp)); display.drawString(100, 31, "oC"); break; case 3: display.setFont(ArialMT_Plain_24); display.drawString(0, 31, "H:"); display.drawString(30, 31, String(hum)); display.drawString(100, 31, "%"); break; default: display.clear(); break; } display.display(); // write the buffer to the display vTaskDelay(10 / portTICK_PERIOD_MS); } void lightColor(String color){ if ((color == "off")||(color == "black")){ digitalWrite(R, 0); digitalWrite(G, 0); digitalWrite(B, 0); client.publish("utc2/esp/livingroom/light", "off", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "blue"){ digitalWrite(R, 0); digitalWrite(G, 0); digitalWrite(B, 1); client.publish("utc2/esp/livingroom/light", "blue", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "green"){ digitalWrite(R, 0); digitalWrite(G, 1); digitalWrite(B, 0); 91 client.publish("utc2/esp/livingroom/light", "green", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "red"){ digitalWrite(R, 0); digitalWrite(G, 1); digitalWrite(B, 0); client.publish("utc2/esp/livingroom/light", "red", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "yellow"){ digitalWrite(R, 1); digitalWrite(G, 1); digitalWrite(B, 0); client.publish("utc2/esp/livingroom/light", "yellow", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "pink"){ digitalWrite(R, 1); digitalWrite(G, 0); digitalWrite(B, 1); client.publish("utc2/esp/livingroom/light", "pink", true); // Topic Phan cung phan hoi cho smart phone; } if (color == "turquoise"){ digitalWrite(R, 0); digitalWrite(G, 1); digitalWrite(B, 1); client.publish("utc2/esp/livingroom/light", "turquoise", true); // Topic Phan cung phan hoi cho smart phone; } if ((color == "on")||(color == "white")){ digitalWrite(R, 1); digitalWrite(G, 1); digitalWrite(B, 1); client.publish("utc2/esp/livingroom/light", "on", true); // Topic Phan cung phan hoi cho smart phone; } }

Ngày đăng: 31/05/2023, 10:41

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

  • Đang cập nhật ...

Tài liệu liên quan