NHẬT KÝ 1.1 Tuần 1 Họp ngày 6/12/2020Phân công công việc Thành viên Công việcHữu Thiết kế mô hình ngôi nhàNhật Tìm hiểu mô hình nhận dạng khuôn mặtThuận Tìm hiểu cách lập trình và phương
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
BÁO CÁO
Kiến trúc và giao thức truyền thông trong IoT
Project Cuối Kỳ: Smart HomeStay
Giảng viên hướng dẫn: PGS.TS Nguyễn Quốc Cường
HÀ NỘI, 12/2020
Trang 2MỤC LỤCCHƯƠNG 1 NHẬT KÝ
1.1 Tuần 1 (Họp ngày 6/12/2020)
Phân công công việcNội dung đã thực hiệnNội dung vướng mắc1.2 Tuần 2 (Họp ngày 13/12)
Phân chia công việcNội dung đã thực hiệnNội dung vướng mắc1.3 Tuần 3 (Họp ngày 20/12)
Phân chia công việcNội dung đã thực hiện1.4 Tuần 4 (Họp ngày 27/12)
Phân chia công việcNội dung đã thực hiện1.5 Tuần 5 (Họp ngày 3/1)
Phân chia công việcNội dung đã thực hiện1.6 Tuần 6 (Họp ngày 10/1)
Phân chia công việcNội dung đã thực hiện1.7 Đánh giá công việc của từng cá nhân
CHƯƠNG 2 NHIỆM VỤ THIẾT KẾ
Công tắc cảm ứng3.2 Phục vụ cho đánh giá
Trang 3Cửa tự độngHiển thị thông tin nhiệt độ, độ ẩmGiám sát, điều khiển từ xa
Công tắc cảm ứng
CHƯƠNG 4 THIẾT KẾ
4.1 Thiết kế cơ khí4.2 Thiết kế các chức năng, hệ thống (hardware)4.3 Thiết kế phần mềm (software)
Tổng quan hệ thốngCảm biến DHT11[2]
Cấu hình WiFi[3]
1 – Wire[4]
UART[5]
Truyền thông không dây và kết nối Internet[6]
CHƯƠNG 5 TRIỂN KHAI
5.1 Linh kiện, thiết bị
Vi điều khiển ESP8266Cảm biến nhiệt độ & độ ẩm DHT11Động cơ RC Servo SG90[7]
Cảm biến chạm TTP223Máy bơm mini
5.2 Lập trình
CHƯƠNG 6 THỬ NGHIỆM, ĐÁNH GIÁ TÀI LIỆU THAM KHẢO
Trang 4Danh Mục Hình Ảnh
Hình 2.1.1 Mô hình smart home _ 8Hình 4.1.1 Mặt trước homestay 11Hình 4.1.2 Ngôi nhà nhìn từ trên xuống (a) Phòng ngủ (b) Phòng khách (c) Sân _ 12 Hình 4.3.1.1 Sơ đồ tín hiệu 13Hình 4.3.4.1 Chế độ 1-Wire _ 15Hình 4.3.4.2 Giao thức 1-wire _ 15Hình 4.3.5.1 Giao thức UART _ 16Hình 4.3.5.2 Truyền dữ liệu bằng phương thức UART 16Hình 4.3.6.1 App Blynk 17Hình 5.1.1.1 Vi điều khiển ESP8266 19
Hình 5.1.2.1 Cảm biến nhiệt độ, độ ẩm DHT11 _ 20
Hình 5.1.3.1 Động cơ RC Servo SG90 _ 21Hình 5.1.4.1 Nguyên lý cảm biến chạm 22Hình 5.1.4.2 So sánh 2 module cảm biến chạm 22Hình 5.1.5.1 Máy bơm mini _ 23Hình 5.2.1 Sơ đồ trạng thái 24
Hình 6.1 a) giao diện trên app Blynk b) thông báo khi homestay bị mất kết nối mạng
_ 29Hình 6.2 Phòng khách homestay _ 30Hình 6.3 Phòng ngủ homestay _ 30Hình 6.4 Sân homestay _ 31
Hình 6.5 Nhận diện chủ nhà qua camera trên PC 32
Trang 5CHƯƠNG 1 NHẬT KÝ 1.1 Tuần 1 (Họp ngày 6/12/2020)
Phân công công việc
Thành viên Công việcHữu Thiết kế mô hình ngôi nhàNhật Tìm hiểu mô hình nhận dạng khuôn mặtThuận Tìm hiểu cách lập trình và phương pháp kết nối với app Blynk-
Nội dung đã thực hiện
- Lên ý tưởng, thống nhất các chức năng, lên danh sách linh kiện
Nội dung vướng mắc1.2 Tuần 2 (Họp ngày 13/12)
Phân chia công việc
Thành viên Công việcHữu Tiếp tục thiết kế mô hình ngôi nhàNhật Xây dựng mô hình nhận dạng khuôn mặtThuận Lập trình bật tắt đèn, đóng mở cửa bằng app-
-Nội dung đã thực hiện
- Đã mua đủ linh kiện: ESP, đèn, động cơ servo, máy bơm mini, cảm biến DHT11
- Hoàn thành khung ngôi nhà, tiếp tục lắp ráp phần cứng
- Lập trình được bật tắt đèn cơ bản sử dụng Blynk
- Tìm được cách dùng Blynk server không bị giới hạn energy
Nội dung vướng mắc
Trang 61.3 Tuần 3 (Họp ngày 20/12)
Phân chia công việc
Thành viên Công việcHữu Lắp ráp linh kiện lên ngôi nhà, kết nối các module
Nhật Triển khai mô hình nhận diện khuôn mặt lên ESP
Thuận Lập trình bật tắt đèn, đóng mở cửa, quan sát nhiệt độ độ ẩm
bằng app Blynk
Nội dung đã thực hiện
- Hoàn thành ngôi nhà với các trang thiết bị
- Hoàn thành mô hình nhận dạng khuôn mặt
- Đạt 50% nội dung lập trình
1.4 Tuần 4 (Họp ngày 27/12)
Phân chia công việc
Thành viên Công việcHữu Lập trình cùng ThuậnNhật Triển khai mô hình nhận diện khuôn mặt lên ESP
Thuận Lập trình bật tắt đèn, đóng mở cửa, bật tắt đài phun nước bằng
cảm biến chạm TTP223
Nội dung đã thực hiện
- Hoàn thành mở cửa bằng nhận diện khuôn mặt
- Hoàn thành 70% nội dung lập trình
1.5 Tuần 5 (Họp ngày 3/1)
Phân chia công việc
Thành viên Công việcHữu Lập trình, hiệu chỉnh
Nhật Lập trình, hiệu chỉnh
Thuận Lập trình, hiệu chỉnh
Nội dung đã thực hiện
- Cơ bản hoàn thiện các nội dung của đề tài
Trang 71.6 Tuần 6 (Họp ngày 10/1)
Phân chia công việc
Thành viên Công việc
Nhật Viết báo cáoThuận Viết báo cáo
Nội dung đã thực hiện
- Hoàn hiện phần lập trình cũng như ngôi nhà
1.7 Đánh giá công việc của từng cá nhân
Thành viên Phần trăm đóng góp
Trang 8CHƯƠNG 2 NHIỆM VỤ THIẾT KẾ 2.1 Smart Home là gì?
Hiểu theo cách đơn giản nhất, Smart Home là ngôi nhà mà ở đó mọi thiết bị liên quanđến điện năng đều được điều khiển trực tiếp bằng bản công tắc cảm ứng hay điềukhiển từ xa qua những nút chạm hiển thị trên màn hình smart phone, tablet, máy tính
cá nhân (PC, laptop)[1]
Theo nghĩa tương đối đầy đủ Smart Home hay nhà thông minh là ngôi nhà được tíchhợp những công nghệ tân tiến về kỹ thuật điện – điện tử – tin học để quản lý và điềukhiển các thiết bị điện theo mong muốn của chủ nhà mọi lúc, mọi nơi theo nhữngchương trình được cài đặt theo ngữ cảnh, lịch trình, cảm biến tự động
Như vậy sự khác biệt với một ngôi nhà bình thường mà ở đó mọi việc quản lý và điềukhiển thiết bị điện đều thực hiện bằng cách thủ công cơ học theo nguyên tắc Mở/Tắt(On/Off) thì Smart Home đã tiến lên một đẳng cấp khác về điều khiển, quản lý thiết bịmột cách thông minh hơn rất nhiều
Hình 2.1.1 Mô hình smart home
Nhà thông minh (tiếng Anh: home automation, domotics, smart home hoặc Intellihome) làkiểu nhà được lắp đặt các thiết bị điện, điện tử có thể được điều khiển hoặc tự động hoáhoặc bán tự động, thay thế con người trong thực hiện một hoặc một số thao tác quản lý,điều khiển Hệ thống điện tử này giao tiếp với người dùng thông qua bảng điện tử đặttrong nhà, ứng dụng trên điện thoại di động, máy tính bảng hoặc một giao diện web
Trong căn nhà thông minh, đồ dùng trong nhà từ phòng ngủ, phòng khách đến toiletđều gắn các bộ điều khiển điện tử có thể kết nối với Internet và điện thoại di động, chophép chủ nhân điều khiển vật dụng từ xa hoặc lập trình cho thiết bị ở nhà hoạt độngtheo lịch Thêm vào đó, các đồ gia dụng có thể hiểu được ngôn ngữ của nhau và có khảnăng tương tác với nhau
Trang 9Các chức năng chính của nhà thông minh :
• Điều khiển chiếu sáng (on/off, dimmer, scence, timer, logic,…)
• Điều khiển mành, rèm, cửa cổng
• Hệ thống an ninh, báo động, báo cháy
• Điều Khiển Điều hòa, máy lạnh
• Hệ Thống Âm thanh đa vùng
• Hệ thống Bảo vệ nguồn điện
• Các tiện ích và ứng dụng khác
2.2 Chức năng Smart Home của nhóm
- Sử dụng app điện thoại Blynk để giám sát chỉ, điều khiển từ xa (khi được kết nối internet)
- Hệ thống khóa cửa thông minh: nhận dạng khuôn mặt, đóng mở cửa bằng app
- Giám sát các thông số về nhiệt độ, độ ẩm trên app
- Điều khiển hệ thống đèn trên app và bằng công tắc cảm ứng
- Điều khiển đài phun nước trên app
9
Trang 10CHƯƠNG 3 KỊCH BẢN SỬ DỤNG 3.1 Phục vụ cho thiết kế
Cửa tự động
- Sử dụng phần mềm nhận diện khuôn mặt trên máy tính, khi chương trình nhận diện được chủ nhà thì cửa sẽ mở
- Điều khiển cửa đóng mở trên app Blynk
Hiển thị thông tin nhiệt độ, độ ẩm
- Đo các giá trị nhiệt độ, độ ẩm sau đó gửi lên app để cho chủ nhà thuận tiện trong việc giám sát
- Cập nhật thông số liên tục
Giám sát, điều khiển từ xa
- Sử dụng app Blynk bật tắt đèn, đài phun nước thông qua điện thoại từ xa (có kết nối mạng internet)
- Muốn đóng cửa phải dùng app trên điện thoại
- Khi người lạ lại gần camera, hệ thống không nhận diện được, cửa không mở
Hiển thị thông tin nhiệt độ, độ ẩm
- Hiển thị thông tin nhiệt độ, độ ẩm trên app Blynk
- Khi thay đổi nhiệt độ, độ ẩm ở cảm biến thì giá trị trên app tự cập nhật theo ngay lập tức
Giám sát, điều khiển từ xa
Trang 11CHƯƠNG 4 THIẾT KẾ 4.1 Thiết kế cơ khí
Hình 4.1.1 Mặt trước homestay
Trang 12Hình 4.1.2 Ngôi nhà nhìn từ trên xuống (a) Phòng ngủ (b) Phòng khách (c) Sân
- Thiết kế tổng thể:
Gồm 2 phòng và 1 sân với kích thước như sau o Phòng ngủ: 20cm x 15cm x 10cm
o Phòng ăn: 20 cm x 15 cm x 10cm o Sân: 30cm x 20cm
Các thiết bị trong nhà:
o Cổng + cửa thông minh
o 3 đèn led bố trí tại 3 địa điểm trong nhà (phòng ngủ, phòng khách, sân) + 3 công tắc cảm ứng ứng với 3 đèn.
o Cảm biến nhiệt độ, độ ẩm bố trí ở sân.
o Đài phun nước bố trí ở sân.
- Cách thức tiến hành: Làm bằng fomex, dán bằng keo nến.
4.2 Thiết kế các chức năng, hệ thống (hardware)
- Các dây nguồn 5V, 3.3V chạy quanh tường
- ESP8266 đặt ngầm dưới nhà: Điều khiển toàn bộ hệ thống đèn, công tắc cảm ứng, và cảm biến nhiệt độ độ ẩm, truyền tín hiệu không dây
- Kết nối ngoại vi với EPS8266:
- Máy tính cá nhân kết nối với ESP8266 qua dây USB, sử dụng giao thức UART để gửi tín hiệu đóng mở cửa bằng khuôn mặt
Trang 13h = dht.readHumidity();
t = dht.readTemperature(); if (isnan(h) || isnan(t))
{
13
Trang 14Serial.println(F("Failed to read from DHT sensor!"));
return;
}}
Trang 15Thư viện sử dụng: <DHT.h>
UART[5]
Tên đầy đủ UART là “Universal Asynchronous Receiver / Transmitter”, và nó là một
vi mạch sẵn có trong một vi điều khiển nhưng không giống như một giao thức truyềnthông (I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp TrongUART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giao tiếp dữliệu nối tiếp và giao tiếp dữ liệu song song
Trang 16Hình 4.3.5.1 Giao thức UART
Trong giao tiếp này, có hai loại UART có sẵn là truyền UART và nhận UART và giao tiếpgiữa hai loại này có thể được thực hiện trực tiếp với nhau Đối với điều này, chỉ cần haicáp để giao tiếp giữa hai UART Luồng dữ liệu sẽ từ cả hai chân truyền (Tx) và nhận (Rx)của UARTs Trong UART, việc truyền dữ liệu từ Tx UART sang Rx UART có thể đượcthực hiện không đồng bộ (không có tín hiệu CLK để đồng bộ hóa các bit o / p)
Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus dữ liệu ởdạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU, v.v Sau khinhận được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm ba bitnhư bắt đầu, dừng lại và trung bình Nó đọc từng bit gói dữ liệu và chuyển đổi dữ liệunhận được thành dạng song song để loại bỏ ba bit của gói dữ liệu Tóm lại, gói dữ liệunhận được bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận
Hình 4.3.5.2 Truyền dữ liệu bằng phương thức UART
Trang 17Truyền thông không dây và kết nối Internet[6]
a) Kết nối ESP8266 và WiFi
Để kết nối các thiết bị wireless hoặc có dây vào mạng nội bộ (LAN), ta cần 1 thiết bịgọi là Điểm truy cập (Access Point) Những thiết bị kết nối với Access Point được gọi
là Station
Để một Station có thể kết nối không dây vào Access Point thì có 2 thông số cần quantâm
- SSID: tên của Access Point muốn kết nối đến
- Password: mật khẩu truy nhập Access Point
ESP8266 có thể kết nối với các thiết bị khác thông qua mạng WiFi theo các chế độ:
cả, thay vào đó, nó hỗ trợ phần cứng cho bạn lựa chọn như Arduino, Raspberry Pi,ESP8266 và nhiều module phần cứng phổ biến khác
Có ba thành phần chính trong nền tảng:
- Blynk App: cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các
widget khác nhau mà nhà cung cấp đã thiết kế sẵn
- Blynk Server: chịu trách nhiệm xử lý dữ liệu trung tâm giữa điện thoại, máy tính bảng
và phần cứng Bạn có thể sử dụng Blynk Cloud của Blynk cung cấp hoặc tự tạo máy chủ Blynk riêng củabạn Vì đây là mã nguồn mở, nên bạn có thể dễ dàng intergrate vào các thiết bị và thậm chí có thể sử dụngRaspberry Pi làm server của bạn
- Library Blynk: support cho hầu hết tất cả các nền tảng phần cứng phổ biến - cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi
Hình 4.3.6.1 App Blynk
17
Trang 18#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
char auth[] = "YourAuthToken"; //AuthToken copy ở Blynk Project
char ssid[] = "YourNetworkName"; //Tên wifichar pass[] = "YourPassword"; //Mật khẩu wifivoid setup()
{Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}void loop(){
Blynk.run();
}
Trang 19CHƯƠNG 5 TRIỂN KHAI 5.1 Linh kiện, thiết bị
Vi điều khiển ESP8266
Hình 5.1.1.1 Vi điều khiển ESP8266
- Kit RF thu phát Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền chip WifiSoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino đểlập trình và nạp code
- Dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT
Thông số kỹ thuật
- Phiên bản firmware: NodeMCU Lua
- GPIO tương thích hoàn toàn với firmware Node MCU
- Cấp nguồn: 5VDC MicroUSB hoặc nguồn tự làm
- GIPO giao tiếp ở hiệu điện thế 3.3V
- Có Led báo trạng thái, nút Reset
- Tương thích hoàn toàn với trình biên dịch Arduino
Trang 20Cảm biến nhiệt độ & độ ẩm DHT11
Hình 5.1.2.1 Cảm biến nhiệt độ, độ ẩm DHT11
DHT11 là cảm biến nhiệt độ & độ ẩm giá rẻ, cơ bản nhất hiện nay Nó có cấu tạo đơngiản, kích cỡ nhỏ gọn 15.5x12x5.5mm, nên thường được sử dụng trong những dự IoTđơn giản hoặc yêu cầu kích cỡ cảm biến nhỏ Cảm biến truyền dữ liệu thông qua giaothức 1-wire
Thông số cảm biến:
- Điện áp hoạt động: 3V - 5V (DC)
- Dải độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH
- Dải nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C
- Khoảng cách truyển tối đa: 20m
Trang 21Động cơ RC Servo SG90[7]
Động cơ RC Servo 9G là động phổ biến dùng trong các mô hình điềukhiển nhỏ và đơn giản như cánh tay robot, khớp nối, Động cơ có tốc độphản ứng nhanh, được tích hợp sẵn Driver điều khiển động cơ, dễ dàngđiều khiển góc quay bằng phương pháp điều độ rộng xung PWM
Trang 22Cảm biến chạm TTP223
Cảm ứng điện dung là công nghệ cảm ứng dựa trên những thay đổi của điện tích trên
bề mặt cảm ứng khi tay người, hoặc các vật có tích điện chạm nhẹ vào Bề mặt cảmứng điện dung sử dụng một tấm kính được phủ ion, lớp ion kim loại trên bề mặt sẽ tạo
ra mạng lưới các tụ điện Các tụ điện này sẽ bị mất điện tích khi tay người hay các vật
có điện chạm vào Nhờ vậy, bề mặt cảm ứng dạng có thể được điều khiển bởi những
“cái chạm” rất nhẹ từ ngón tay
Hình 5.1.4.1 Nguyên lý cảm biến chạm
Hình 5.1.4.2 So sánh 2 module cảm biến chạm
Trang 23Máy bơm mini
Hình 5.1.5.1 Máy bơm mini
Thông số kỹ thuật của máy bơm chìm mini 3 - 12VDC:
● Vật liệu: nhựa cứng cao cấp
Trang 245.2 Lập trình
Hình 5.2.1 Sơ đồ trạng thái
Mô tả: Sau khi được cấp nguồn, hệ thống được khởi tạo và kết nối với wifi đã đượccấu hình trước Sau đó, một hàm Blynk.run() được hoạt động có chức năng: Kiểm traxem có nút nào được nhấn hay không Nếu có nút nào đó được ấn, thao tác tương ứng
sẽ được thực thi bao gồm: bật, tắt đèn, bật, tắt máy bơm, đóng, mở cổng Nếu không
có nút nào được nhấn, chương trình thực thi đo giá trị nhiệt độ, độ ẩm
Đọc giá trị nhiệt độ, độ ẩm: đọc từ cảm biến DHT11 và gửi lên server ở mỗi vòng lặp,giá trị được cập nhật theo chu kỳ của vòng lặp
Sau khi cập nhật giá trị của DHT11, chương trình sẽ kiểm tra buffer UART, nếu cóchuỗi “<ten_chu_nha>” thì sẽ điều khiển cho mở cổng Nếu không có dữ liệu, chươngtrình thực hiện lại vòng lặp
Nếu có sự cố ngắt kết nối mạng, app sẽ hiện thông báo và hàm Blynk.run() tự động kếtnối lại với wifi
#define BLYNK_PRINT Serial