1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án môn học hệ thống nhúng đề tài thiết kế hệ thống cảm biến chuyển động và relay

52 2 0

Đ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

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TỬ BỘ MƠN KỸ THUẬT MÁY TÍNH ĐỒ ÁN MƠN HỌC HỆ THỐNG NHÚNG Đề tài : Thiết Kế Hệ thống Cảm Biến Chuyển Động Và ReLay Nhóm sinh viên thực : Vũ Tiến Hoàng-K195520207026 : Phạm Minh Hùng- K195520207028 Lớp : 55ĐVT.01 Giáo viên hướng dẫn : ThS Đỗ Duy Cốp Thái Nguyên – 2022 KHOA ĐIỆN TỬ CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM BỘ MƠN KỸ THUẬT MÁY TÍNH Độc lập - Tự - Hạnh phúc PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG Nhóm sinh viên: : Nguyễn Thị Hồi-K195520207024 :Nguyễn Thanh Hoa - K195520207022 Lớp:55 KĐT.01 Ngành: Kỹ Thuật Điện Tử Ngày giao đề: Ngày hoàn thành: Tên đề tài Thiết kế cảm biến độ ẩm, nhiệt độ rơlay Yêu cầu bước thực 1- Giới thiệu phân tích yêu cầu tốn thiết kế 2- Trình bày tổng quan cơng nghệ 3- Mơ tả cụ thể trình tự bước thiết kế, kết minh họa 4- Kết luận hướng phát triển TRƯỞNG BỘ MÔN GIÁO VIÊN HƯỚNG DẪN (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Thái Nguyên, ngày….tháng… năm 2022 GIÁO VIÊN HƯỚNG DẪN (Ký ghi rõ họ tên) NHẬN XÉT CỦA GIÁO VIÊN CHẤM ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Thái Nguyên, ngày….tháng… năm 2022 GIÁO VIÊN CHẤM (Ký ghi rõ họ tên) MỤC LỤC CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN 1.1 Khái niệm minh nhà 1.2 Cơ sở hình thành hệ minh 10 bật 1.3 Yêu cầu công nghệ minh 10 1.3.1 thống hệ thống tắt tắt bật thơng đèn đèn Tính thơng thơng tự động 10 1.3.2 Tính thơng minh 11 1.3.3 Tính giản 11 đơn 1.3.4 Tính mỹ 11 thẩm 1.3.5 Tính thuận tiện 11 CHƯƠNG 2: NỀN TIẾP 12 TẢNG GIAO 2.1 Home Assistant 12 2.2 Các tính Home Assitant 13 2.3 Giao thức MQTT 15 2.3.1 MQTT gì? .15 2.3.2 động 16 Hoạt 2.3.3 Tính năng, đặc bật 16 điểm 2.3.4 Ưu điểm 17 2.3.5 Nhược điểm 17 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 18 3.1 Sơ đồ nguyên lý 18 3.2 Chọn kiện 18 linh 3.2.1 ESP8266 18 Module 3.2.2 Module 5V 21 Relay 3.2.3 DHT11 21 3.2.4 I2CLCD 21 3.2.5 Mạch sạc pin lion 3.7V 21 CHƯƠNG 4: CÀI ĐẶT 24 4.1 Home Assistant 24 4.2 MQTT – Add-on Mosquitto broker .30 4.3 Sơ đồ thuật toán .38 CHƯƠNG 5: KẾT LUẬN 39 5.1 Các kết 39 đạt 5.2 Hướng phát triển tài 39 mục lục hình ản đề Hình 1.1 Ảnh minh họa Hình 1.2 Đèn thơng minh thị trường 10 Hình 2.1 Một giao diện quản lý nhà thơng minh với Home Assistant 12 Hình 2.2 Giao diện quản lý Home Assistant thân thiện dễ dùng 13 Hình 2.3 Home Assistant kết nối thương hiệu khác để hoàn tất tác vụ nhà thơng minh cần thiết 15 Hình 2.4 Sơ đồ hoạt động MQTT Hình 18 3.1 Sơ Hình 18 Hình 19 16 đồ 3.2 3.3 Sơ nguyên Module Đồ Chân lý ESP8266 NodeMCU ESP8266 Hình 3.4 Sơ đồ chân Module Relay 5V kênh 21 Hình 3.5 DHTT 22 Hình 4.1 Sơ đồ thuật tốn 38 LỜI NĨI ĐẦU Ngày nay, việc ứng dụng cho hệ thống nhúng ngày trở nên phổ biến: từ ứng dụng đơn giản điều khiển chốt đèn giao thông định thời, đếm sản phẩm dây chuyền sản xuất, điều khiển tốc độ động điện chiều, thiết kế biển quảng cáo dùng Led ma trận, đồng hồ thời gian thực….đến ứng dụng phức tạp hệ thống điều khiển robot, kiểm soát nhà máy hệ thống kiểm soát máy lượng hạt nhân Các hệ thống tự động trước sử dụng nhiều công nghệ khác hệ thống tự động hoạt động nguyên lý khí nén, thủy lực, rơle điện, mạch điện tử số, thiết bị máy móc tự động cam chốt khí thiết bị, hệ thống có chức xử lý mức độ tự động thấp so với hệ thống tự động đại xây dựng tảng hệ thống nhúng Với mong muốn giới thiệu ứng dụng hệ thống nhúng đời sống đại, nhóm chúng em đưa mơ hình: Thiết Kế Hệ thống Cảm Biến Nhiệt Độ ,Độ Ẩm Và ReLay Trong trình thực đồ án mơn học, nhóm chúng em cố gắng thiết kế cho mơ hình đơn giản nhất, ổn định nhất; nhiên vấn đề thời gian kinh nghiệm nên mơ hình cịn gặp phải vấn đề chưa thể khắc phục Chúng em xin chân thành cảm ơn thầy cô tận tình hướng dẫn, bảo chúng em trình thực đồ án 10 Sau ta chọn “Start” để bắt đầu dịch vụ Sau ta cần thêm tài khoản cho mqtt server để thêm thực thể để mqtt quản lý Để thêm tài khoản cấu hình cổng PC dành cho mqtt sử dụng, ta vào tab “Configuration” để thực Để đặt tên mật cho mqtt broker, ta chọn tab “Configuration” addon mqtt broker Trong ô “Options”, ta đặt tên mật dòng “logins” hình Và để cấu hình port cho mqtt, ta vào “Network” để đặt port hình Sau thay đổi xong hai, ta phải nhấn “Save” để lưu thay đổi Tiếp theo, ta cài “add-on File Editor” Ta cài đặt “add-on File Editor” tương tự cài “add-on Mosquitto broker” 38 Sau đó, mở add-on File Editor lên, ta chọn biểu tượng có hình thư mục Sau ta tìm đến file “configuration.yaml” để ta thêm mqtt server thực thể thuộc tảng mqtt Thêm topic trạng thái, cài đặt trạng thái cho thực thể thuộc mqqt Vì file “configuration.yaml” có yaml, liệu file thể dạng ngôn ngữ YAML 39 Sau vào file “configuration.yaml” Ta thêm dòng để thêm server mqtt vào home assistant Với “X.X.X.X” địa IP máy ảo Home Assistant ta cài “ten_tai_khoan_mqtt” “mat_khau_mqtt” tương ứng tên tài khoản mật cho mqtt server bạn đặt tab “Configuration” “add-on mqtt broker” 40 Tiếp theo, ta thêm thực thể topic tương ứng với thực thể Trong đồ án, em thêm hai thực thể tương ứng module relay 5V cảm biến PIR 505 Với ba dòng “state_topic:”, “command_topic:”, “availability_topic:” tương đương với ba kênh mqtt broker Các giá trị “payload” tương ứng với giá trị “state_topic”, giá trị “state” tương ứng với giá trị “command_topic”, giá trị “payload_available”, “payload_not_available” tương ứng với giá trị “availablility_topic” Sau đó, ta phải “Restart” lại “Server” để nhận thiết bị ta vừa thêm cách chọn “Server Controls” tab “Configuration” Home Assistant Trong “Server Controls” ta chọn “Restart” để khởi động lại server 41 Và chọn “OK” Rồi đợi lúc để server tiến hành việc khởi động lại, Home Assitant sau khởi động lại nhận thiết bị MQTT switch (relay) binary_sensor (PIR 505) vừa thêm vào Tiếp theo, ta cần kiểm tra mqtt broker hoạt động Sử dụng công cụ Hercules để kiểm cổng 1833 IP MQTT broker hoạt động chưa, kết conneted Mosquitto broker hoạt động Với ô Module IP địa IP máy ảo Home Assistant 42 4.3 Sơ đồ thuật tốn Hình 4.1 Sơ đồ thuật toán 43 CHƯƠNG 5: KẾT LUẬN 5.1 Các kết đạt - Nắm rõ thực hành kiến thức học môn “Hệ thống nhúng” vào đời sống - Hiểu hệ thống quản lý nhà thông minh Home Assistant tùy biến theo yêu cầu - Hiểu giao thức MQTT, cài đặt thành công client NodeMCU ESP8266 giao tiếp với broker - Hoàn thành sản phẩm tắt bật đèn thông minh sử dụng giao thức MQTT - Sản phẩm cho phép điều khiển chỗ, từ xa qua HassIO SmartPhone, cho phép HassIO tự động điều khiển theo kịch lập sẵn 5.2 Hướng phát triển đề tài - Chế tạo nhiều sản phẩm smarthome sử dụng giao thức MQTT để giao tiếp với HassIO cảm biến nhiệt độ, cảm biến độ ẩm, cảm biến chuyển động, … - Cấu hình thư viện NabuCasa Home Assistant Cloud để giao tiếp với Google Assistant, để điều khiển thiết bị qua qua giọng nói thơng qua trợ lý giọng nói Google - Tìm hiểu giao thức khác sử dụng lượng Zigbee để sử dụng cho cảm biến không dây, sử dụng pin 44 TÀI LIỆU THAM KHẢO [1] Tài liệu HassIO: https://www.home-assistant.io/ [2] Giao thức MQTT: https://mqtt.org/ [3] Add-on Mosquitto broker: https://github.com/homeassistant/addons/tree/master/mosquitto [4] Config MQTT: https://www.home-assistant.io/integrations/mqtt/ [5] MQTT Client Component: https://esphome.io/components/mqtt.html [6] NodeMCU ESP8266: https://esphome.io/devices/nodemcu_esp8266.html [7] Relay: https://randomnerdtutorials.com/guide-for-relay-module-with-arduino/ [8] Arduino IDE: https://www.arduino.cc/en/software [9] Esp8266 board on Arduino: https://github.com/esp8266/Arduino [10] ESP8266WiFi lib on Arduino: https://arduinoesp8266.readthedocs.io/en/latest/ [11] MQTT lib on Arduino: https://github.com/knolleary/pubsubclient 45 PHỤ LỤC //ESP8266 Simple MQTT switch controller #include "PubSubClient.h" #include //void callback(char* topic, byte* payload, unsigned int length); #define MQTT_SERVER "192.168.1.26" //you MQTT IP Address #define MQTT_USER "doannhung" #define MQTT_PASS "doan_123" #define MQTT_PORT 1883 const char* ssid = "Tran Viet Dung"; const char* password = "30112000"; //Pin In ESP8266 const int sensorPin = D1; const int switchPin = D2; const int buttonPin = D3; //topic switch char const* switchStateTopic = "/home/switch1/status"; char const* avaiSwitchTopic = "/home/switch1/available"; //topic sensor char const* sensorStateTopic = "/home/sensor_pir/status"; char const* avaiSensorTopic = "/home/sensor_pir/available"; WiFiClient wifiClient; 46 PubSubClient client(MQTT_SERVER, MQTT_PORT, wifiClient); //Gui Gia Tri Payload to MQTT Home Assistant void mqtt_send(char const* topic, char* msg){ Serial.print("MQTT_Send to topic "); Serial.print(topic); Serial.print(" msg: "); Serial.println(msg); client.publish(topic, msg); } /*void mqtt_subscribe(char const* topic){ Serial.print("MQTT subscribe to "); Serial.println(topic); client.subscribe(topic); }*/ void switch_on() { digitalWrite(switchPin, LOW); //LOW==on Serial.println("Bật Đèn"); mqtt_send(avaiSwitchTopic, "online"); mqtt_send(switchStateTopic, "on"); } void switch_off() { digitalWrite(switchPin, HIGH); //HIGH==off Serial.println("Tắt Đèn"); mqtt_send(avaiSwitchTopic, "online"); 47 mqtt_send(switchStateTopic, "off"); } void setup() { //initialize pinMode(switchPin, OUTPUT); // Relay Switch pinMode(buttonPin, INPUT); // button by hand pinMode(sensorPin, INPUT); // SR505 - PIR sensor //HIGH==off led-buidin digitalWrite(switchPin, HIGH); digitalWrite(buttonPin, HIGH); //start the serial line for debugging Serial.begin(115200); delay(100); //start wifi subsystem WiFi.begin(ssid, password); //attempt to connect to the WIFI network and then connect to the MQTT server reconnect(); //wait a bit before starting the main loop delay(2000); } void loop() { //reconnect if connection is lost 48 if (!client.connected() && WiFi.status() == 3) { reconnect(); } //maintain MQTT connection client.loop(); while(digitalRead(sensorPin) == LOW) { digitalWrite(switchPin, LOW); //Relay cho dòng qua //mqtt_send(avaiSwitchTopic, "online"); mqtt_send(sensorStateTopic, "on"); mqtt_send(switchStateTopic, "on"); delay(1000); } digitalWrite(switchPin, HIGH); //Relay ko cho dòng qua //mqtt_send(avaiSwitchTopic, "online"); mqtt_send(sensorStateTopic, "off"); mqtt_send(switchStateTopic, "off"); delay(1000); /*if(digitalRead(buttonPin) == LOW && digitalRead(sensorPin) == HIGH) { if(digitalRead(switchPin) == HIGH) switch_on(); else switch_off(); }*/ 49 if(!client.connected() && WiFi.status() == 3) reconnect(); else client.loop(); } /*void callback(char* topic, byte* payload, unsigned int length) { String topicStr = topic; //Print out some debugging info Serial.println("Callback update."); Serial.print("Topic: "); Serial.println(topicStr); if (topicStr == Topic2) { if (payload[0] == 'o' && payload[1] == 'n' && length == 2) { switch_on(); } else if (payload[0] == 'o' && payload[1] == 'f' && payload[2] == 'f' && length == 3) { switch_off(); } } }*/ void reconnect() { //attempt to connect to the wifi //if connection is lost 50 if (WiFi.status() != WL_CONNECTED) { //debug printing Serial.print("Connecting to "); Serial.println(ssid); //loop while we wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //print out some more debug once connected Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } //make sure we are connected to WIFI //before attemping to reconnect to MQTT if (WiFi.status() == WL_CONNECTED) { // Loop until we're reconnected to the MQTT server while (!client.connected()) { Serial.print("Connect to MQTT "); // Generate client name based on MAC String clientName; clientName += "esp8266-"; uint8_t mac[6]; WiFi.macAddress(mac); clientName += macToStr(mac); Serial.print(" from client "); 51 Serial.print(clientName); Serial.print(" "); if (client.connect((char*) clientName.c_str(), MQTT_USER, MQTT_PASS)) { Serial.println("\tMQTT Connected"); //mqtt_subscribe(Topic2); mqtt_send(avaiSwitchTopic, "online"); mqtt_send(avaiSensorTopic, "online"); } //otherwise print failed for debugging else { Serial.println("\tFailed."); abort(); } } } } //generate unique name from MAC addr String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); //if (i < 5)result += ':'; } return result; } 52

Ngày đăng: 18/07/2023, 18:03

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w