Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 62 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
62
Dung lượng
3,76 MB
Nội dung
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 Tieu luan KHOA ĐIỆN TỬ CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc BỘ MƠN KỸ THUẬT MÁY TÍNH PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN MƠN HỌC HỆ THỐNG NHÚNG Nhóm sinh viên: : Vũ Tiến Hoàng - K195520207026 Phạm Minh Hùng - K195520207028 Lớp: 55ĐVT.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 chuyển động relay Yêu cầu bước thực 1- Giới thiệu phân tích 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) Tieu luan 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) Tieu luan 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) Tieu luan MỤC LỤC CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN 1.1 Khái niệm nhà thông minh 1.2 Cơ sở hình thành hệ thống tắt bật đèn thơng minh 10 1.3 Yêu cầu công nghệ hệ thống tắt bật đèn thông minh 10 1.3.1 Tính tự động 10 1.3.2 Tính thơng minh 11 1.3.3 Tính đơn giản 11 1.3.4 Tính thẩm mỹ 11 1.3.5 Tính thuận tiện 11 CHƯƠNG 2: NỀN TẢNG GIAO TIẾP 12 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 Hoạt động 16 2.3.3 Tính năng, đặc điểm bật 16 2.3.4 Ưu điểm 17 2.3.5 Nhược điểm 17 Tieu luan CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 18 3.1 Sơ đồ nguyên lý 18 3.2 Chọn linh kiện 18 3.2.1 Module ESP8266 18 3.2.2 Module Relay 5V 21 3.2.3 Cảm biến chuyển động HC PIR-SR501 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 đạt 39 5.2 Hướng phát triển đề tài 39 Tieu luan 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 Chuyển Động 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 Tieu luan CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN 1.1 Khái niệm nhà thông minh Nhà thông minh (tiếng Anh “Smart Home”) hệ thống nhà thông minh nhà/căn hộ trang bị hệ thống tự động tiên tiến dành cho điều khiển đèn chiếu sáng, nhiệt độ, truyền thông đa phương tiện, an ninh, rèm cửa, cửa nhiều tính khác nhằm mục đích làm cho sống ngày tiện nghi, an tồn góp phần sử dụng hợp lý nguồn tài nguyên Nhà thông minh sử dụng thiết bị kết nối Internet để quản lý giám sát thiết bị hệ thống từ xa ánh sáng nhiệt độ Hình 1.1 Ảnh minh họa Tieu luan Cơng nghệ nhà thơng minh Smart Home, cịn biết đến Home Automation (tự động hóa ngơi nhà), cung cấp cho chủ nhà an toàn, thoải mái, tiện lợi tiết kiệm lượng cách cho phép họ kiểm sốt thiết bị thơng minh ứng dụng smart home điện thoại smartphone thiết bị kết nối mạng khác Một phần mạng lưới vạn vật kết nối (Internet of Things - IoT), hệ thống thiết bị nhà thông minh thường hoạt động nhau, chia sẻ liệu người dùng tự động hóa hành động dựa quyền ưu tiên chủ nhà CHƯƠNG 2: NỀN TẢNG GIAO TIẾP 2.1 Home Assistant Home Assistant gọi “HA” hay “HASS” tảng quản lý nhà thông minh lập trình ngơn ngữ Python Nó chạy tảng hệ điều hành quản lý nhà thông minh qua giao diện web hay qua ứng dụng smartphone Home Assistant có phiên Phiên “Home Assistant” hay "Home Assistant Core" thành phần cốt lõi nhất, cài đặt lên tảng hệ điều hành giống phần mềm máy tính “Home Assistant OS” kết hợp “Home Assistant Core” công cụ khác Phiên cài đặt lên máy tính Raspberry Pi, máy ảo Hai phiên cài lên thiết bị biến thiết bị thành hub tổng giúp kết nối điều khiển thiết bị nhà thông minh, tương tự Gateway tảng Xiaomi, Aqara, Hub tổng tảng Samsung SmartThings Tieu luan Hình 2.1 Một giao diện quản lý nhà thông minh với Home Assistant Là phần mềm nguồn mở với hỗ trợ đội ngũ kỹ sư, lập trình viên khắp giới, Home Assistant tương thích với hầu hết thiết bị nhà thông minh, mở khả làm việc không giới hạn thiết bị nhà Dù sử dụng phiên nào, người dùng phải cài đặt Home Assistant trước, sau hệ thống qt qua thiết bị nhà thơng minh có, người dùng tiến hành cấu hình để thiết bị làm việc theo nhu cầu Như vậy, xét tiện lợi, nhanh chóng, tảng nhà thông minh giới thiệu viết trước tỏ vượt trội, đó, Home Assistant lại mạnh khả điều khiển mạng nội tùy biến mạnh mẽ 10 Tieu luan 48 Tieu luan Sau ta tìm đến file “configuration.yaml” Open Notepad++ để cấu hình thực thể 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 49 Tieu luan 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 501 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” 50 Tieu luan Sau đó, ta phải check xem cấu hình hay chưa Nếu sai phải sử lại cho sau bấm “Restart” 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 501) vừa thêm vào 51 Tieu luan 52 Tieu luan Tiếp theo, ta cần kiểm tra MQTT Broker hoạt động Sử dụng công cụ MQTT Explorer để 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 53 Tieu luan 4.3 Sơ đồ thuật tốn Hình 4.1 Sơ đồ thuật tốn 54 Tieu luan 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 - Hồ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 55 Tieu luan 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 56 Tieu luan PHỤ LỤC //ESP8266 Simple MQTT switch controller #include "PubSubClient.h" #include //void callback(char* topic, byte* payload, unsigned int length); void callback(char* topic, byte* payload, unsigned int length); #define MQTT_SERVER "172.20.10.5" //you MQTT IP Address #define MQTT_USER "user_mqtt" #define MQTT_PASS "1" #define MQTT_PORT 1883 const char* ssid = "Hoang"; const char* password = "12345678"; //Pin In ESP8266 const int sensorPin = D1; 57 Tieu luan const int buttonPin = D3; const int switchPin = D2; const int switchPin_2 = D5; //topic switch_1 char const* switchStateTopic = "/home/switch1/status"; char const* avaiSwitchTopic = "/home/bedroom/switch1/available"; //topic switch_2 char const* switchStateTopic_2 = "/home/switch2/status"; char const* avaiSwitchTopic_2 = "/home/stair/switch2/available"; //topic sensor char const* sensorStateTopic = "/home/sensor_pir/status"; char const* avaiSensorTopic = "/home/sensor_pir/available"; char const* Topic2 = "inLight"; WiFiClient wifiClient; 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); //Serial.println(msg); client.subscribe(topic); } void switch_on() { digitalWrite(switchPin_2, HIGH); Serial.println("BAT DEN"); //mqtt_send(avaiSwitchTopic_2, "online"); mqtt_send(switchStateTopic_2, "on"); } 58 Tieu luan void switch_off() { digitalWrite(switchPin_2, LOW); Serial.println("TAT DEN"); //mqtt_send(avaiSwitchTopic, "online"); mqtt_send(switchStateTopic_2, "off"); } void setup() { //initialize pinMode(switchPin, OUTPUT); // Relay Switch pinMode(buttonPin, INPUT); // button by hand pinMode(sensorPin, INPUT); // SR505 - PIR sensor pinMode(switchPin_2, OUTPUT); client.setCallback(callback); //HIGH==off led-buidin digitalWrite(switchPin, LOW); digitalWrite(buttonPin, LOW); digitalWrite(switchPin_2, LOW); //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 reconnect(); connect to the MQTT server //wait a bit before starting the main loop delay(2000); } void loop() { //reconnect if connection is lost if (!client.connected() && WiFi.status() == 3) { reconnect(); } //maintain MQTT connection client.loop(); if(digitalRead(sensorPin) == HIGH) { digitalWrite(switchPin, HIGH); //Relay cho dòng qua 59 Tieu luan //mqtt_subscribe("inLight"); //mqtt_send(avaiSwitchTopic, "online"); //mqtt_send(avaiSwitchTopic_2, "online"); mqtt_send(sensorStateTopic, "on"); mqtt_send(switchStateTopic, "on"); delay(1000); } else { digitalWrite(switchPin, LOW); //Relay ko cho dòng qua //mqtt_subscribe("inLight"); //mqtt_send(avaiSwitchTopic, "online"); //mqtt_send(avaiSwitchTopic_2, "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(); }*/ if(!client.connected() && WiFi.status() == 3) reconnect(); else client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.println("] = "); for (int i=0;i