Nhom - 2 K62

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

TRƯỜ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

Sinh viên thực hiện: MSSV


Trịnh Minh Nhật 20170144
Nguyễn Đức Thuận 20170148
Mẫn Bá Hữu 20170140

HÀ NỘI, 12/2020
MỤC LỤC
CHƯƠNG 1. NHẬT KÝ 5
1.1 Tuần 1 (Họp ngày 6/12/2020) 5
Phân công công việc 5
Nội dung đã thực hiện 5
Nội dung vướng mắc 5
1.2 Tuần 2 (Họp ngày 13/12) 5
Phân chia công việc 5
Nội dung đã thực hiện 5
Nội dung vướng mắc 5
1.3 Tuần 3 (Họp ngày 20/12) 6
Phân chia công việc 6
Nội dung đã thực hiện 6
1.4 Tuần 4 (Họp ngày 27/12) 6
Phân chia công việc 6
Nội dung đã thực hiện 6
1.5 Tuần 5 (Họp ngày 3/1) 6
Phân chia công việc 6
Nội dung đã thực hiện 6
1.6 Tuần 6 (Họp ngày 10/1) 7
Phân chia công việc 7
Nội dung đã thực hiện 7
1.7 Đánh giá công việc của từng cá nhân 7
CHƯƠNG 2. NHIỆM VỤ THIẾT KẾ 8
2.1 Smart Home là gì? 8
2.2 Chức năng Smart Home của nhóm 9
CHƯƠNG 3. KỊCH BẢN SỬ DỤNG 10
3.1 Phục vụ cho thiết kế 10
Cửa tự động 10
Hiển thị thông tin nhiệt độ, độ ẩm 10
Giám sát, điều khiển từ xa 10
Công tắc cảm ứng 10
3.2 Phục vụ cho đánh giá 10

2
Cửa tự động 10
Hiển thị thông tin nhiệt độ, độ ẩm 10
Giám sát, điều khiển từ xa 10
Công tắc cảm ứng 10
CHƯƠNG 4. THIẾT KẾ 11
4.1 Thiết kế cơ khí 11
4.2 Thiết kế các chức năng, hệ thống (hardware) 12
4.3 Thiết kế phần mềm (software) 13
Tổng quan hệ thống 13
Cảm biến DHT11[2] 13
Cấu hình WiFi[3] 14
1 – Wire[4] 14
UART[5] 15
Truyền thông không dây và kết nối Internet[6] 17
CHƯƠNG 5. TRIỂN KHAI 19
5.1 Linh kiện, thiết bị 19
Vi điều khiển ESP8266 19
Cảm biến nhiệt độ & độ ẩm DHT11 20
Động cơ RC Servo SG90[7] 21
Cảm biến chạm TTP223 22
Máy bơm mini 23
5.2 Lập trình 24
CHƯƠNG 6. THỬ NGHIỆM, ĐÁNH GIÁ 29
TÀI LIỆU THAM KHẢO 33

3
Danh Mục Hình Ảnh

Hình 2.1.1 Mô hình smart home ___________________________________________8


Hình 4.1.1 Mặt trước homestay __________________________________________11
Hì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 ______________________________________________13
Hình 4.3.4.1 Chế độ 1-Wire _____________________________________________15
Hình 4.3.4.2 Giao thức 1-wire ___________________________________________15
Hình 4.3.5.1 Giao thức UART ___________________________________________16
Hình 4.3.5.2 Truyền dữ liệu bằng phương thức UART ________________________ 16
Hình 4.3.6.1 App Blynk ________________________________________________17
Hì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_____________________________________21
Hình 5.1.4.1 Nguyên lý cảm biến chạm ____________________________________22
Hình 5.1.4.2 So sánh 2 module cảm biến chạm ______________________________ 22
Hình 5.1.5.1 Máy bơm mini _____________________________________________23
Hì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
___________________________________________________________________29
Hình 6.2 Phòng khách homestay _________________________________________30
Hình 6.3 Phòng ngủ homestay ___________________________________________30
Hình 6.4 Sân homestay _________________________________________________ 31
Hình 6.5 Nhận diện chủ nhà qua camera trên PC ____________________________ 32

4
CHƯƠ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
- Phân công công việc
Thành viên Công việc

Hữ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ặt

Thuậ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ắc
1.2 Tuần 2 (Họp ngày 13/12)
Phân chia công việc
-
Thành viên Công việc

Hữ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ặt

Thuậ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

5
1.3 Tuần 3 (Họp ngày 20/12)
Phân chia công việc
Thành viên Công việc
Hữ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ệc

Hữu Lập trình cùng Thuận

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, 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ệc

Hữ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.

6
1.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


Hữu Làm slide

Nhật Viết báo cáo


Thuậ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

Hữu 30 %

Nhật 35%

Thuận 35%

7
CHƯƠ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ều khiể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ích
hợ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ều
khiể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ững chươ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ều
khiể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ử
đặt trong 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, cho phé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 động theo 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.

8
Cá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
• Camera, chuông hình
• 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
CHƯƠ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).
Công tắc cảm ứng
- Bật tắt đèn bằng công tắc cảm ứng khi không có điện thoại thông minh bên cạnh.

3.2 Phục vụ cho đánh giá


Cửa tự động
- Khi chủ nhà lại gần, camera sẽ ghi hình và nhận dạng, nếu là chủ nhà, màn hình
sẽ hiện tên, đồng thời cửa sẽ tự mở.
- 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
- Bật đèn, tắt đèn theo thứ tự từng phòng, đèn sẽ sáng tắt theo thứ tự.
- Bật tắt đèn cùng 1 lúc, đèn sáng tắt cùng một lúc.
- Bật, tắt đài phun nước thì máy bơm sẽ hoạt động/không hoạt động.
Công tắc cảm ứng
- Chạm tay vào công tắc cảm ứng ở từng phòng, mỗi lần chạm sẽ thay đổi trạng
thái của đèn của phòng đó.

10
CHƯƠNG 4. THIẾT KẾ
4.1 Thiết kế cơ khí

Hình 4.1.1 Mặt trước homestay

11
Hì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:
- Led phòng ngủ D1
- Led phòng khách D2
- Led ngoài sân D3
- Động cơ servo D4
- Cảm biến nhiệt độ DHT11 D5
- 3 Công tắc cảm ứng D6, D7, D8
- Máy bơm mini SD3
- 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.

12
4.3 Thiết kế phần mềm (software)
Tổng quan hệ thống

Hình 4.3.1.1 Sơ đồ tín hiệu

Cảm biến DHT11[2]


Sử dụng thư viện có sẵn của DHT11 để đọc nhiệt độ và độ ẩm của môi trường.
< DHT.h>
void processDHT11()
{
h = dht.readHumidity();
t = dht.readTemperature();
if (isnan(h) || isnan(t))
{

13
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
}
Cấu hình WiFi[3]
Sử dụng thư viện có sẵn cơ bản cho ESP8266.
<ESP8266WiFi.h>
Bên cạnh đó còn sủ dụng thư viện tự động lựa chọn WiFi có tốc độ tốt nhất để kết nối.
<ESP8266WiFiMulti.h>

WiFiMulti.addAP(WIFI_SSID2, PASSWORD2);
Serial.print("Wait for WiFi... ");

if(WiFiMulti.run() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqttBroker, 1883);
client.setCallback(callback);
1 – Wire[4]
Dùng 1 – Wire ở chế độ master – slave
Trong đó ESP8266 là master còn DHT11 là slave.

Hình STYLEREF 1 \s 4. SEQ Hình \* ARABIC \s 1 3 Kết nối 1-Wire

14
Hình 4.3.4.1 Chế độ 1-Wire

Do chỉ dùng 1 dây để truyền dữ liệu nên việc truyền nhận có tốc độ thấp, phù hợp cho
việc truyền nhận dữ liệu nhiệt độ, độ ẩm, không cần tốc độ cao.
Dùng cơ sở truyền nhận READ: ESP8266 sẽ kéo xuống 0 một khoảng A (1- 6 micro
giây) sau đó delay một khoảng E (1-9 micro giây) rồi mới nhận giá trị DHT11 gửi về.

Hình STYLEREF 1 \s 4. SEQ Hình \* ARABIC \s 1 4 Giao thức 1-Wire

Hình 4.3.4.2 Giao thức 1-wire

Bus dữ liệu khi ở trạng thái chờ (khoảng thời gian không có dữ liệu trên đường truyền )
phải ở mức cao do vậy bus dữ liệu cần được kéo lên nguồn thông qua một điện trở. Và
DHT11 đã có sẵn trở kéo đó nên nhóm không cần thiết kế thêm trở để duy trì bus nữa.
Thư 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ền thông
(I2C & SPI). Chức năng chính của UART là truyền dữ liệu nối tiếp. Trong UART, 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.

15
Hì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ếp giữ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
hai cá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ể
được thự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 khi nhậ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 bit như 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ệu nhậ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ệu nhậ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

16
Truyề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 quan
tâ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ế độ:
- Chế độ WiFi Station
- Chế độ WiFi Access Point
- Đồng thời cả 2 chế độ trên
-
b) Blynk
Blynk là một ứng dụng chạy trên nền tảng iOS và Android để điều khiển và giám sát
thiết bị thông qua internet. Blynk không bị ràng buộc với những phần cứng cụ thể nào
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ủa bạ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ụng Raspberry 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
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
char auth[] = "YourAuthToken"; //AuthToken copy ở Blynk Project
char ssid[] = "YourNetworkName"; //Tên wifi
char pass[] = "YourPassword"; //Mật khẩu wifi
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}

18
CHƯƠ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
Wifi SoC 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
- Chip nạp: CP2102.
- 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.
- Kích thước: 25x50 mm

19
Cả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 đơn
giả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 giao
thứ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

20
Độ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ều khiể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.
Thông số kỹ thuật:
- Kích thước: 23mmX12.2mmX29mm
- Trọng lượng: 9 gram
- Điện áp hoạt động: 4.2-6V
- Nhiệt độ: 0 ℃ - 55 ℃
- Tốc độ: 0.3 giây / 60 độ

Hình 5.1.3.1 Động cơ RC Servo SG90

21
Cả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

22
Má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


● Màu sắc: trắng ngà
● Điện áp: 3VDC - 12VDC
● Máy Bơm Nằm Ngang
○ Chiều dài bơm chìm: 43 mm
○ Đường Kính máy bơm: 24mm
○ Đường kính ống ra: 8mm
● Máy Bơm Thẳng Đứng
○ Chiều dài bơm chìm: 42 mm
○ Đường Kính máy bơm: 23mm
○ Đường kính ống ra: 6mm

23
5.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 đã được cấu
hình trước. Sau đó, một hàm Blynk.run() được hoạt động có chức năng: Kiểm tra xem
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ương
trì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ết
nối lại với wifi.

#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
#include "DHTesp.h"

24
DHTesp dht;
Servo myservo;
char auth[] = "uJA9SlCdCIBAcQk6QVzvsfQ1WTcipJuT";

char ssid[] = "Minhduc";


char pass[] = "nhatsiunhan";

int pos, pinValue6, pinValue7, pinValue8, pinValue, pinValue10;


bool gate;
boolean checkDataV6 = false;
boolean checkDataV7 = false;
boolean checkDataV8 = false;
boolean checkDataV10 = false;

void myTimerEvent()
{
delay(dht.getMinimumSamplingPeriod());
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, humidity);
}

BLYNK_WRITE(V6)
{
pinValue6 = param.asInt();
checkDataV6 = true;
}

BLYNK_WRITE(V7)
{
pinValue7 = param.asInt();
checkDataV7 = true;
}

BLYNK_WRITE(V8)
{
pinValue8 = param.asInt();
checkDataV8 = true;
}

BLYNK_WRITE(V10)
{
pinValue10 = param.asInt();
if (pinValue10) {
digitalWrite(10,1);}

25
else digitalWrite(10,0);
}

BLYNK_WRITE(V3)
{
pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
if(pinValue == 0 && gate == false){
for (pos = 0; pos <=100; pos += 1) {
// if(pos%20==0) {digitalWrite(9,0); delay(50); digitalWrite(9,1);}
myservo.write(pos);
delay(50);
}
gate = true;
}
if(pinValue == 1 && gate == true){
for (pos = 100; pos >=0; pos -= 1) {
// if(pos%20==0) {digitalWrite(9,0); delay(50); digitalWrite(9,1);}
myservo.write(pos);
delay(50);
}
gate = false;
}

void setup()
{
// Debug console
pinMode(5, OUTPUT); //D1
pinMode(4, OUTPUT); //D2
pinMode(0, OUTPUT); //D3
pinMode(10, OUTPUT); //SDD3
pinMode(12, INPUT); //D6
pinMode(13, INPUT); //D7
pinMode(15, INPUT); //D8
myservo.attach(2);
dht.setup(14, DHTesp::DHT11);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass,"iot.htpro.vn", 8080);

void loop()
{

Blynk.run();

26
delay(dht.getMinimumSamplingPeriod());

float humidity = dht.getHumidity();


float temperature = dht.getTemperature();
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, humidity);

/*******************LED*************************************/
if (checkDataV6 == true) {
digitalWrite(5, pinValue6);
checkDataV6 == false;

}
if (digitalRead(12) != 0)
{
delay(500);
pinValue6 = !pinValue6;
digitalWrite(5, pinValue6);
Blynk.virtualWrite(V6, pinValue6);
}
/*****************************************/
if (checkDataV7 == true) {
digitalWrite(4, pinValue7);
checkDataV7 == false;
}
if (digitalRead(13) != 0)
{
delay(500);
pinValue7 = !pinValue7;
digitalWrite(4, pinValue7);
Blynk.virtualWrite(V7, pinValue7);
}
/*****************************************/
if (checkDataV8 == true) {
digitalWrite(0, pinValue8);
checkDataV8 == false;
}
if (digitalRead(15) != 0)
{
delay(500);
pinValue8 = !pinValue8;
digitalWrite(0, pinValue8);
Blynk.virtualWrite(V8, pinValue8);
}

/**************DOOR*****************************************/
if(Serial.available()) { // nếu có dữ liệu gửi đến

27
String text = Serial.readStringUntil('\n'); // đọc giá trị gửi đến cho đến khi gặp kí
tự xuống dòng \n

if (text == "nhat" && gate == true) {

for (pos = 100; pos >= 0; pos -= 1) {


myservo.write(pos);
delay(50);
}
gate = false;
Blynk.virtualWrite(V3,1);
}
text = Serial.readString();
}
}

28
CHƯƠNG 6. THỬ NGHIỆM, ĐÁNH GIÁ

Hình 6.1a thể hiện giao diện app Blynk bao gồm các chức năng điều khiển ngôi nhà từ
xa : Bật tắt đèn, đài phun nước; Đóng mở cửa từ xa; Hiển thị nhiệt độ, độ ẩm. Ngoài ra
app còn được lập trình để hiển thị thông báo lên điện thoại thông minh khi homestay bị
mất kết nối mạng (hình 6.1b)

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

29
Phòng khách và phòng ngủ của homestay được biểu thị dưới hình 6.2 và hình 6.3, gồm
nội thất và bật tắt đèn bằng cảm biến chạm.

Hình 6.2 Phòng khách homestay

Hình 6.3 Phòng ngủ homestay

30
Ngoài ra, ngoài sân của homestay được thiết kế đầy đủ tiện nghi với phong cách trang
trí bắt mắt và sáng tạo : gồm cửa tự động, đài phun nước, công tắc cảm ứng bật tắt đèn,
xích đu, ….

Hình 6.4 Sân homestay

31
Để tăng sự bảo mật cho homestay, tại cửa tự động được gắn camera sử dụng trí tuệ
nhân tạo để nhận diện khuôn mặt khi có người đứng trước cửa.

Hình 6.5 Nhận diện chủ nhà qua camera trên PC

Từ hình 6.5, kết quả nhận diện rất tốt khi thấy chủ nhà. Tuy nhiên, một hạn chế của
điều này là lúc nào camera cũng được bật, nhận diện dẫn đến việc hao tốn năng lượng,
và hiện tại công nghệ này chỉ áp dụng khi sử dụng PC. Điều này sẽ cố gắng khắc phục
trong những dự án tương lai : có thể sử dụng raspberry pi, …

32
TÀI LIỆU THAM KHẢO
[1] L. Jiang, D.-Y. Liu, and B. Yang, "Smart home research," in Proceedings of 2004
international conference on machine learning and cybernetics (IEEE Cat. No.
04EX826), 2004, vol. 2, pp. 659-663: IEEE.
[2] D. Srivastava, A. Kesarwani, and S. Dubey, "Measurement of Temperature and
Humidity by using Arduino Tool and DHT11," International Research Journal
of Engineering and Technology (IRJET), vol. 5, no. 12, pp. 876-878, 2018.
[3] M. Schwartz, Internet of Things with ESP8266. Packt Publishing Ltd, 2016.
[4] A. M.-l. Lin and L. A. Neyman, "1-wire communication protocol and interface
circuit," ed: Google Patents, 2012.
[5] N. R. Laddha and A. Thakare, "A review on serial communication by UART,"
International journal of advanced research in computer science and software
engineering, vol. 3, no. 1, 2013.
[6] M. Sadiku, S. M. Musa, and S. Nelatury, "Internet of things: An introduction,"
International Journal of Engineering Research and Advanced Technology, vol.
2, no. 3, pp. 39-43, 2016.
[7] T. VanHuy, D. T. Minh, N. P. Kien, and T. A. Vu, "Simple robotic hand in motion
using arduino controlled servos," International Journal of Science and Research
(IJSR), vol. 6, no. 3, pp. 972-975, 2017.

33

You might also like