lOMoARcPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
MÔN: IoT VÀ ỨNG DỤNG
ĐỀ TÀI: NTHÔNG MINH
ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
Giảng viên hướng dẫn
:
Nhóm lớp
:
10
Nhóm bài tập
: 5-2
Họ và Tên
Mã sinh viên
Nguyễn Trọng Kính
B21DCCN473
Nguyễn Châu Long
B21DCCN495
Hà Nội – 2024
lOMoARcPSD| 58647650
LỜI NÓI ĐẦU
Trong những năm gần đây, công nghệ Internet of Things (IoT) đã tạo ra những bước
tiến vượt bậc, mở ra một kỷ nguyên mới trong việc tự động hóa kết nối các thiết bị.
Đặc biệt, trong lĩnh vực nhà thông minh, IoT đang thay đổi cách thức chúng ta sống, làm
việc và tương tác với môi trường xung quanh. Những ứng dụng của IoT trong nhà thông
minh không chỉ mang lại sự tiện nghi còn giúp tối ưu hóa năng lượng, cải thiện an
ninh và nâng cao chất lượng cuộc sống.
Đề tài "Mô hình nhà thông minh ứng dụng IoT" được chúng em thực hiện với
mục tiêu nghiên cứu và phát triển một hệ thống nhà thông minh ứng dụng các công
nghệ IoT hiện đại. Với sự phát triển mạnh mẽ của các thiết bị kết nối, việc điều khiển,
giám sát và tối ưu hóa các hoạt động trong ngôi nhà trở nên dễ dàng và hiệu quả hơn
bao giờ hết. Đề tài không chỉ giúp hiểu rõ hơn về các thành phần cấu thành của một hệ
thống nhà thông minh, mà còn khám phá các vấn đề kỹ thuật như giao thức truyền
thông, bảo mật dữ liệu và tối ưu hóa năng lượng.
Trong quá trình nghiên cứu, chúng em nhận được sự hỗ trợ và hướng dẫn quý báu
từ giảng viên Nguyễn Tài Tuyên, người đã giúp chúng em tiếp cận những kiến thức sâu
rộng về IoT và ứng dụng của nó trong thực tế. Em hy vọng với những kết quả đạt được
từ đề tài này, thể đóng góp một phần nhỏ o việc phát triển công nghệ nhà thông minh
trong tương lai, nâng cao chất lượng cuộc sống cho cộng đồng.
Xin chân thành cảm ơn sự chỉ dẫn của thầy Nguyễn Tài Tuyên, cùng những nguồn
tài liệu phong phú đã giúp chúng em hoàn thành đề tài này.
Hà Nội, ngày 11 tháng 12 năm 2024
Trưởng nhóm ký tên
Nguyễn Trọng Kính
MỤC LỤC
MỤC LỤC ........................................................................................................................ 1
MỞ ĐẦU .......................................................................................................................... 2
1. Lý do chọn đề tài ...................................................................................................... 2
2. Tổng quan về vấn đề nghiên cứu ............................................................................. 2
3. Mục đích nghiên cứu ................................................................................................ 3
4. Đối tượng và phạm vi nghiên cứu ............................................................................ 3
4.1. Đối tượng nghiên cứu: ......................................................................................... 3
4.2. Phạm vi nghiên cứu: ............................................................................................ 3
5. Phương pháp nghiên cứu .......................................................................................... 3
CHƯƠNG 1 – TỔNG QUAN .......................................................................................... 4
1.1. Tổng quan về IoT ( Internet of Things) ................................................................. 4
1.2. Tổng quan về mô hình Nhà thông minh (Smart Home) ....................................... 4
1.3 Tổng quan về MQTT ((Message Queuing Telemetry Transport)) ......................... 5
lOMoARcPSD| 58647650
CHƯƠNG 2 - PHÁT TRIỂN HỆ THỐNG ...................................................................... 5
2.1. Thiết kế phần cứng: ............................................................................................... 5
2.2. Code Arduino: ....................................................................................................... 6
Chương 3: ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG .................................................. 14
3.1. Tổng quan về ứng dụng ....................................................................................... 14
3.2. Các block logic của ứng dụng: ............................................................................ 16
KẾT LUẬN .................................................................................................................... 19
1. Kết quả đạt được .................................................................................................... 19
2. Hạn chế ................................................................................................................... 19
3. Định hướng phát triển trong tương lai ................................................................... 19
DANH SÁCH TÀI LIỆU THAM KHẢO...................................................................... 20
MỞ ĐẦU
1. Lý do chọn đề tài
Nhà thông minh là một trong những xu ớng công nghệ nổi bật trong thời đại hiện
nay, khi IoT (Internet of Things) ngày càng được ứng dụng sâu rộng trong đời sống.
Việc lựa chọn đề tài y xuất phát từ nhu cầu thực tế về sự tiện nghi, an toàn tối ưu
hóa năng lượng trong quản lý nhà ở. Trong bối cảnh hiện đại, con người ngày càng quan
tâm đến việc cải thiện chất lượng cuộc sống, nhà thông minh cung cấp các giải pháp
tự động hóa, tiết kiệm thời gian, và tăng cường bảo mật.
Bên cạnh đó, với sự phát triển mạnh mẽ của các thiết bị IoT, hình nhà thông
minh còn mở ra hội học tập nghiên cứu các công nghệ tiên tiến như cảm biến, vi
điều khiển, giao thức truyền thông (như MQTT, Zigbee), trí tuệ nhân tạo (AI). Đề tài
cũng góp phần giải quyết những vấn đề hội quan tâm như tiêu thụ năng lượng hiệu
quả, giảm thiểu rủi ro cháy nổ, hay bảo vệ môi trường thông qua việc sử dụng công nghệ
tối ưu.
Ngoài ra, mô hình nhà thông minh có tiềm năng ứng dụng rộng rãi, không chỉ trong
đời sống gia đình còn trong các lĩnh vực kinh doanh, giáo dục y tế. Do đó, việc
nghiên cứu và triển khai đề tài không chỉ có ý nghĩa trong việc học tập mà còn tạo ra giá
trị thực tiễn cao, đồng thời cung cấp kiến thức nền tảng cho các dự án IoT trong tương
lai.
2. Tổng quan về vấn đề nghiên cứu
Nghiên cứu về hình nhà thông minh tập trung vào việc giải quyết nhiều vấn
đề quan trọng, từ thiết kế hệ thống đến ứng dụng thực tế. Một trong những vấn đề cốt
lõi kiến trúc hệ thống, bao gồm việc lựa chọn các thiết bị, cảm biến giao thức
truyền thông để đảm bảo sự linh hoạt tương thích. Các giao thức như MQTT, Zigbee
lOMoARcPSD| 58647650
hay Bluetooth cần được nghiên cứu để đảm bảo kết nối ổn định giữa các thiết bị. Bên
cạnh đó, tự động hóa và trí tuệ nhân tạo đóng vai trò quan trọng trong việc tạo ra các
kịch bản tự động hóa thông minh, tối ưu hóa năng lượng cải thiện trải nghiệm người
dùng. Một vấn đề khác cần được nghiên cứu bảo mật quyền riêng của người
dùng, vì các thiết bị IoT dễ bị tấn công nếu không có các biện pháp bảo vệ thích hợp.
Ngoài ra, việc phát triển các ứng dụng di động thân thiện, cùng với các giao diện người
dùng trực quan, là yếu tố không thể thiếu để điều khiển hệ thống nthông minh. Cuối
cùng, việc đánh giá tính thực tiễn và khả năng mở rộng của hệ thống, đặc biệt là trong
điều kiện hạ tầng mạng hạn chế, vấn đề quan trọng để đảm bảo sự thành công
hiệu quả lâu dài của nhà thông minh.
3. Mục đích nghiên cứu
Mục đích chính của nghiên cứu này là phát triển và triển khai thành công một
ứng dụng điều khiển từ xa trên android và thiết kế được một bảng mạch mô hình đơn
giản về các cảm biến được sử dụng trong mô hình nhà thông minh
Nghiên cứu tập trung vào việc tạo ra một ứng dụng dễ sử dụng, có thể tích hợp
trong các môi trường làm việc từ xa đồng thời thiết kế nên một board mạch có tính
ứng dụng cao trong thực tế
4. Đối tượng và phạm vi nghiên cứu
4.1. Đối tượng nghiên cứu:
Giao thức MQTT, module ESP32, các cảm biến thông dụng được sử dụng trong các
hình nhà thông minh trong thực tế .
4.2. Phạm vi nghiên cứu:
Dự án tập trung vào việc phát triển ứng dụng bật tắt các thiết bị từ xa thông qua
giao thức MQTT, đồng thời thiết kế và phát triển một board mạch sử dụng module
ESP32 để kết nối cũng như tương tác giữa các cảm biến
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu được sử dụng trong đề tài này bao gồm:
Phân tích lý thuyết: Nghiên cứu tài liệu về các cảm biến và giao thức kết nối
MQTT
Phát triển phần mềm: Sử dụng các kiến thức thuyết để thực hiện thiết kế, phát triển
ra ứng dụng.
Thử nghiệm đánh giá: Thử nghiệm ứng dụng trong các môi trường mạng khác nhau
để đánh giá hiệu suất, tính ổn định bảo mật của ứng dụng. Kết quthử nghiệm sẽ
được so sánh với các giải pháp hiện có để đưa ra đánh giá khách quan.
lOMoARcPSD| 58647650
CHƯƠNG 1 – TỔNG QUAN
1.1. Tổng quan về IoT ( Internet of Things)
Internet of Things (IoT) mạng lưới các thiết bị vật được kết nối với internet,
bao gồm cảm biến, phần mềm các công nghệ khác, cho phép thu thập, trao đổi xử
dữ liệu một cách tự động không cần sự can thiệp của con người. IoT bao gồm ba
thành phần chính: thiết bị vật như cảm biến hoặc thiết bị gia dụng, hệ thống kết nối
mạng sử dụng các giao thức như Wi-Fi hoặc Zigbee, và hệ thống xử lý dữ liệu, thường là
trên nền tảng đám mây. IoT đã tạo ra các ứng dụng đột phá trong nhiều lĩnh vực như n
thông minh, y tế, nông nghiệp, giao thông và công nghiệp, mang lại lợi ích lớn trong việc
tối ưu hóa nguồn lực, tự động hóa và cải thiện chất lượng cuộc sống. Tuy nhiên, IoT cũng
đối mặt với các thách thức lớn về bảo mật, quyền riêng tư, chi phí triển khai quản
dữ liệu. Với sự hỗ trợ của công nghệ tiên tiến như AI, 5G blockchain, IoT được kỳ
vọng sẽ tiếp tục phát triển mạnh mẽ, đóng góp vào việc xây dựng các giải pháp thông
minh và bền vững trong tương lai.
1.2. Tổng quan về mô hình Nhà thông minh (Smart Home)
Nhà thông minh (Smart Home) một hệ thống tích hợp các thiết bị điện tử công
nghệ IoT (Internet of Things) để tự động hóa và điều khiển các hoạt động trong ngôi nhà.
Thông qua kết nối mạng, người dùng thể giám sát, điều khiển quản các thiết b
từ xa bằng smartphone, máy tính bảng hoặc bằng giọng nói. Nhà thông minh không chỉ
mang lại sự tiện nghi còn giúp tối ưu hóa năng lượng đảm bảo an toàn cho người
sử dụng.
hình nhà thông minh bao gồm năm thành phần chính. Đầu tiên các thiết bị
thông minh như cảm biến nhiệt độ, độ m, ánh sáng, chuyển động, cùng với các thiết bị
đầu ra như đèn, máy lạnh, và rèm cửa tự động. Tiếp theo là hệ thống điều khiển trung tâm
(hub hoặc gateway), đóng vai trò kết nối và xử lý dữ liệu giữa các thiết bị trong nhà. Thứ
ba là kết nối mạng, thường sử dụng các giao thức như Wi-Fi, Zigbee, hoặc Bluetooth để
truyền thông tin giữa các thiết bị. Thành phần thứ ứng dụng di động, giúp người
dùng quản lý và điều khiển nhà thông minh qua giao diện đơn giản dễ sử dụng. Cuối
cùng, hạ tầng đám mây được dùng để lưu trữ dữ liệu, phân tích thông minh và hỗ trợ tích
hợp với các nền tảng AI như Google Assistant hoặc Amazon Alexa.
Nhà thông minh cung cấp nhiều chức năng nổi bật. Người dùng thể điều khiển
từ xa các thiết bị điện trong nhà, chẳng hạn như bật/tắt đèn hoặc điều chỉnh nhiệt độ điều
hòa không mặt tại nhà. Các hệ thống tự động hóa giúp thiết lập kịch bản như đèn
tự động bật khi trời tối hoặc rèm cửa đóng khi ánh ng quá mạnh. Ngoài ra, nhà thông
minh còn hỗ trợ giám sát và bảo mật với camera, cảm biến an ninh và cảnh báo khi phát
hiện nguy như rò rỉ gas hay cháy nổ. Một nh năng quan trọng khác tối ưu hóa năng
lượng, giúp giảm tiêu thụ điện chi phí sinh hoạt nhờ tự động ngắt thiết bị khi không
sử dụng.
Nhà thông minh mang lại nhiều lợi ích thiết thực trong cuộc sống. cung cấp sự
tiện nghi khi người ng thể kiểm soát mọi thiết bị trong nhà qua điện thoại di động
không cần di chuyển. Đồng thời, hệ thống giúp đảm bảo an toàn với các cảnh báo
lOMoARcPSD| 58647650
sớm về cháy nổ, xâm nhập trái phép hoặc rỉ khí độc. Một lợi ích khác là tiết kiệm năng
lượng, nhờ khả năng tự động hóagiám sát tiêu thụ điện. Ngoài ra, giao diện tích hợp
trên ứng dụng giúp người dùng dễ dàng quản mọi hoạt động trong nhà trên một nền
tảng duy nhất
mang lại nhiều lợi ích, hình nhà thông minh vẫn n một số hạn chế. Chi
phí đầu ban đầu thường cao, đặc biệt với các hệ thống hiện đại đầy đủ chức năng.
Hệ thống này cũng phụ thuộc vào kết nối internet, nên việc mất mạng thể gây gián
đoạn trong điều khiển từ xa hoặc giám sát. Một vấn đề đáng lo ngại khác là nguy cơ bảo
mật, khi các thiết bị IoT có thể bị tấn công mạng nếu không được bảo vệ kỹ lưỡng. Cuối
cùng, sự thiếu đồng bộ giữa các thiết bị của các nhà sản xuất khác nhau thể gây khó
khăn trong quá trình tích hợp và sử dụng.
1.3 Tổng quan về MQTT ((Message Queuing Telemetry Transport))
MQTT (Message Queuing Telemetry Transport) là một giao thức truyền thông nhẹ,
được thiết kế để hoạt động hiệu quả trong các môi trường có băng thông thấp, độ trễ cao
hoặc tài nguyên hạn chế, như các ứng dụng IoT. Được phát triển lần đầu vào m 1999
bởi IBM, MQTT hoạt động theo hình publish/subscribe (xuất bản/đăng ký), nơi các
thiết bị IoT giao tiếp thông qua một máy chủ trung gian gọi là broker.
Trong hệ thống MQTT, các thiết bị không giao tiếp trực tiếp với nhau mà thông qua
broker. Các thiết bị publish dữ liệu lên các chủ đề (topics) cụ thể, và những thiết bị quan
tâm sẽ subscribe để nhận thông tin từ các chủ đề đó. Điều này giúp giảm tải cho thiết bị
và tối ưu hóa hiệu suất hệ thống. MQTT hỗ trợ ba cấp độ chất lượng dịch vụ (QoS): gửi
tối thiểu một lần (at least once), gửi đúng một lần (exactly once), gửi tối đa một lần
(at most once), phù hợp với các yêu cầu khác nhau về độ tin cậy.
MQTT được đánh giá cao bởi khả năng sử dụng ít tài nguyên và tính linh hoạt, làm
cho trở thành một lựa chọn tưởng trong các ứng dụng IoT như nhà thông minh,
giám sát công nghiệp, hoặc quản lý năng lượng. Tuy nhiên, giao thức này cũng có những
thách thức, đặc biệt trong bảo mật, dữ liệu thể bị đánh cắp nếu không được
hóa hoặc bảo vệ đúng cách. Để giải quyết vấn đề này, MQTT thường được triển khai với
các lớp bảo mật như SSL/TLS nhằm đảm bảo an toàn trong việc truyền dữ liệu.
CHƯƠNG 2 - PHÁT TRIỂN HỆ THỐNG
2.1. Thiết kế phần cứng:
Các phần cứng được sử dụng:
- ESP32 DEVKITV1
- 4 đèn LED
- Cảm biến nhiệt độ, độ ẩm DHT11
- Cảm biến âm thanh
- Cảm biến phát hiện vật cản hồng ngoại
- Board và các dây kết nối
lOMoARcPSD| 58647650
Các chân GND và VCC của các cảm biến được nối với chân GND và 3V3 của ESP32.
Chân DATA của DHT11 được nối với chân D18 trên ESP32.
Chân OUT của cảm biến âm thanh được nối với chân D13 trên ESP32.
Chân OUT của cảm biến phát hiện vật cản được nối với chân D27 trên ESP32.
Đèn LED trắng, xanh lục, xanh lam, đỏ lần lượt nối với chân D26, D33, D32, D19.
Đèn LED trắng đèn LED báo hiệu phát hiện vật cản từ cảm biến phát hiện vật cản,
đèn LED xanh dương mô phỏng quạt, đèn LED xanh lá bật/tắt theo tín hiệu phát hiện
âm thanh từ cảm biến âm thanh.
2.2. Code Arduino:
- Link:
https://drive.google.com/file/d/112rIzNli4gwZdf50YwPFhe59WpW0pUFG/
view?usp=sharing - IDE: Arduino IDE 2.3.2
- Các thư viện được sử dụng:
WiFi.h: Kết nối WiFi.
DHTesp.h: Đọc dữ liệu từ cảm biến nhiệt độ và độ ẩm.
PubSubClient.h: Gửi/nhận dữ liệu qua giao thức MQTT.
WiFiClientSecure.h: Đảm bảo kết nối an toàn với máy chủ MQTT.
- MQTT broker được sử dụng: HiveMQ:
URL: 2efecadacb8544af95a7cd4a873e2d87.s1.eu.hivemq.cloud
Port: 8883
Username: klnq123
Password: KinhNg123
Code chi tiết:
- Khai báo thư viện và các chân I/O
#include <WiFi.h>
#include "DHTesp.h"
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
Thêm các thư viện:
WiFi.h: Kết nối ESP32 với mạng WiFi.
DHTesp.h: Đọc dữ liệu từ cảm biến nhiệt độ và độ ẩm DHT11.
PubSubClient.h: Gửi và nhận dữ liệu qua MQTT.
WiFiClientSecure.h: Tạo kết nối an toàn qua SSL/TLS.
#define DHTPIN 18
#define LED 19
#define FAN 32
lOMoARcPSD| 58647650
#define IRPIN 27
#define IRLED 26
#define SOUND 13
#define SOUNDLED 33
DHTesp dht;
Khai báo các chân:
DHTPIN: Chân cảm biến DHT11.
LED: Đèn LED.
FAN: Quạt.
IRPIN & IRLED: Cảm biến và đèn hồng ngoại (IR).
SOUND & SOUNDLED: Cảm biến âm thanh và đèn LED âm thanh.
- Thông tin WiFi và MQTT const
char* ssid = "Tâng_5"; const char*
password = "Tang5123456"; const
char* mqtt_server =
"2efecadacb8544af95a7cd4a873e2d87.
s1.eu.hivemq.cloud"; const int
mqtt_port = 8883; const char*
mqtt_username = "klnq123"; const
char* mqtt_password = "KinhNg123";
const char* topic = "Tempdata"; const
char* clientId = "ESP32_Client_1";
ssidpassword: Thông tin kết nối mạng WiFi.
mqtt_servermqtt_port: Địa chỉ và cổng của máy chủ MQTT.
mqtt_username và mqtt_password: Tài khoản MQTT.
topic: Chủ đề MQTT mà ESP32 gửi dữ liệu. ● clientId: ID của thiết bị.
- Các biến toàn cục
lOMoARcPSD| 58647650
WiFiClientSecure espClient;
PubSubClient client(espClient);
espClient: Tạo kết nối an toàn.
client: Quản giao tiếp MQTT. int IROutputState; unsigned long
startMillisIR; unsigned long currentMillisIR; const unsigned long periodIR = 200;
const unsigned long ledOnDuration = 2000; unsigned long ledTurnOffMillis = 0;
Quản lý cảm biến hồng ngoại (IR):
startMillisIR, currentMillisIR: Thời gian kiểm tra cảm biến IR.
ledOnDuration: Thời gian bật LED hồng ngoại khi phát hiện vật cản.
unsigned long previousMillis = 0;
const long interval =
5000; String msgStr = "";
float temp, hum;
unsigned long lastEvent = 0;
bool soundLed = false;
Quản lý thời gian và gửi dữ liệu:
interval: Chu kỳ gửi dữ liệu MQTT.
msgStr: Chuỗi dữ liệu để gửi qua MQTT.
soundLed: Trạng thái LED âm thanh.
- Hàm kết nối WiFi
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
lOMoARcPSD| 58647650
WiFi.begin(ssid, password); while
(WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print("."); }
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
Kết nối ESP32 với mạng WiFi.
In địa chỉ IP khi kết nối thành công.
- Hàm kết nối MQTT
void reconnect() { while
(!client.connected()) {
Serial.print("Attempting MQTT connection..."); if
(client.connect(clientId, mqtt_username, mqtt_password)) {
Serial.println("connected"); client.subscribe("lights");
client.subscribe("fan");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
Kết nối ESP32 với máy chủ MQTT.
Đăng ký các topic lightsfan để nhận lệnh điều khiển.
- Hàm callback MQTT
lOMoARcPSD| 58647650
void callback(char* topic, byte* payload, unsigned int length)
{ String data = ""; for (int i = 0; i < length; i++) { data
+= (char)payload[i];
}
if (strcmp(topic, "fan") == 0) {
if (data == "ON") {
digitalWrite(FAN, HIGH);
} else {
digitalWrite(FAN, LOW);
}
} else if (strcmp(topic, "lights") == 0)
{ if (data == "ON") {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
}
● Nhận lệnh từ MQTT:
lights: Bật/tắt đèn LED.
fan: Bật/tắt quạt.
- Hàm setup()
void setup() { Serial.begin(115200);
dht.setup(DHTPIN, DHTesp::DHT11);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
pinMode(FAN, OUTPUT);
digitalWrite(FAN, LOW);
pinMode(IRLED, OUTPUT);
lOMoARcPSD| 58647650
pinMode(IRPIN, INPUT);
digitalWrite(IRLED, LOW);
startMillisIR = millis();
pinMode(SOUND, INPUT);
pinMode(SOUNDLED, OUTPUT);
setup_wifi(); espClient.setInsecure();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback); }
● Cấu hình ban đầu:
Thiết lập cảm biến, các chân và kết nối WiFi/MQTT.
- Hàm loop()
void loop() { if
(!client.connected()) {
reconnect();
}
client.loop();
● Kiểm tra kết nối MQTT, nếu mất thì kết nối lại.
- Xử lý cảm biến âm thanh int
sensorData = digitalRead(SOUND);
if (sensorData == LOW) {
soundLed = !soundLed; if (millis() -
lastEvent >= 200) {
Serial.println("Clap detected!"); if
lOMoARcPSD| 58647650
(soundLed) {
digitalWrite(SOUNDLED, HIGH);
} else {
digitalWrite(SOUNDLED, LOW);
} }
lastEvent = millis();
}
● Phát hiện tiếng vỗ tay và bật/tắt đèn LED tương ứng.
- Xử cảm biến hồng ngoại
currentMillisIR = millis();
if (currentMillisIR - startMillisIR >= periodIR) {
IROutputState = digitalRead(IRPIN);
if (IROutputState == LOW) {
Serial.println("There is an obstacle !");
digitalWrite(IRLED, HIGH);
ledTurnOffMillis = millis() + ledOnDuration;
} startMillisIR =
millis();
}
if (millis() > ledTurnOffMillis) {
digitalWrite(IRLED, LOW);
}
Phát hiện vật cản bằng cảm biến IR bật LED hồng ngoại.- Gửi dữ liệu
nhiệt độ, độ ẩm qua MQTT unsigned long currentMillis = millis(); if (currentMillis
- previousMillis >= interval) { previousMillis = currentMillis; temp =
dht.getTemperature(); hum = dht.getHumidity(); Serial.print(temp);
lOMoARcPSD| 58647650
Serial.println(F("°C"));
Serial.print(hum);
Serial.println(F("%")); msgStr =
String(temp) +","+String(hum); byte
arrSize = msgStr.length() + 1; char
msg[arrSize];
Serial.print("PUBLISH DATA:");
Serial.println(msgStr);
msgStr.toCharArray(msg, arrSize);
client.publish(topic, msg); msgStr
= ""; delay(50); }
Đọc nhiệt độ và độ ẩm từ DHT11.
Gửi dữ liệu qua MQTT với định dạng “temp,hum”.
lOMoARcPSD| 58647650
Chương 3: ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
3.1. Tổng quan về ứng dụng.
- Hệ điều hành: Android 5+.
- Nền tảng phát triển: MIT App Inventor.
- Link file .aia: https://drive.google.com/file/d/1Z-
L1W8KkQU0kh1kqvH8nTkzBHIZqINL/view?usp=sharing - Giao diện ứng dụng:
Chưa kết nối với MQTT broker:
Đã kết nối với MQTT broker và đèn tắt, quạt tắt:
lOMoARcPSD| 58647650
Khi kết nối với MQTT broker và đèn bật, quạt bật:
lOMoARcPSD| 58647650
3.2. Các block logic của ứng dụng:
- Block quản việc thay đổi các label, button theo trạng thái kết nối tới MQTT
broker:
lOMoARcPSD| 58647650
- Block quản lý button thực hiện kết nối, ngắt kết nối tới MQTT broker:
- Block khởi tạo biến toàn cục lưu trữ giá trị nhiệt độ, độ ẩm nhận được từ broker:
- Block nhận dữ liệu theo topic đã subcribe từ MQTT broker và thay đổi giá trị nhiệt
độ, độ ẩm tương ứng:
lOMoARcPSD| 58647650
- Block thực hiện thay đổi biểu tượng tương ứng bật/tắt đèn gửi thông điệp điều
khiển đèn theo topic “lights” lên broker:
- Block thực hiện thay đổi biểu tượng tương ứng bật/tắt quạt gửi thông điệp điều
khiển đèn theo topic “fan” lên broker:
lOMoARcPSD| 58647650
KẾT LUẬN
1. Kết quả đạt được
Dự án đã hoàn thành được mục tiêu thực hiện tạo một mạch mô phỏng nhà
thông minh với các chức năng đo các thông số môi trường, sử dụng cảm biến âm
thanh vật cản để tự động hóa một số quá trình như bật tắt đèn. Xây dựng được
một ứng dụng di động cơ bản theo dõi được các thông số môi trường, bật/tắt các
thiết bị txa. Dự án đã giúp nhóm hội tìm hiểu thêm ứng dụng được
giao thức MQTT vào truyền gửi dữ liệu giữa ESP32 và thiết bị di động. Ngoài ra
dự án cũng cho nhóm được tiếp cận sử dụng công cMIT App Inventor để
phát triển ứng dụng di động tương tác với các thiết bị IoT.
2. Hạn chế
đã đạt được một smục tiêu, dự án vẫn còn những điểm hạn chế. Chưa
hình phỏng hoàn thiện các chức năng của các cảm biến được sử dụng, chỉ board
mạch, cảm biến chưa đủ đa dạng. Giao diện ứng dụng vẫn còn đơn giản, chưa chức
năng thông báo, lược đồ và lưu trữ dữ liệu.
3. Định hướng phát triển trong tương lai
Trong tương lai ứng dụng thể những cải tiến như sau: thêm các cảm biến với
nhiều mục đích, dựng mô hình mô phỏng căn nhà, thêm các thiết bị mô phỏng như quạt,

Preview text:

lOMoAR cPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
MÔN: IoT VÀ ỨNG DỤNG
ĐỀ TÀI: NHÀ THÔNG MINH VÀ
ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
Giảng viên hướng dẫn
: TS. Nguyễn Tài Tuyên Nhóm lớp : 10 Nhóm bài tập : 5-2 Họ và Tên Mã sinh viên Nguyễn Trọng Kính B21DCCN473 Nguyễn Châu Long B21DCCN495
Hà Nội – 2024 lOMoAR cPSD| 58647650 LỜI NÓI ĐẦU
Trong những năm gần đây, công nghệ Internet of Things (IoT) đã tạo ra những bước
tiến vượt bậc, mở ra một kỷ nguyên mới trong việc tự động hóa và kết nối các thiết bị.
Đặc biệt, trong lĩnh vực nhà thông minh, IoT đang thay đổi cách thức chúng ta sống, làm
việc và tương tác với môi trường xung quanh. Những ứng dụng của IoT trong nhà thông
minh không chỉ mang lại sự tiện nghi mà còn giúp tối ưu hóa năng lượng, cải thiện an
ninh và nâng cao chất lượng cuộc sống.
Đề tài "Mô hình nhà thông minh ứng dụng IoT" được chúng em thực hiện với
mục tiêu nghiên cứu và phát triển một hệ thống nhà thông minh ứng dụng các công
nghệ IoT hiện đại. Với sự phát triển mạnh mẽ của các thiết bị kết nối, việc điều khiển,
giám sát và tối ưu hóa các hoạt động trong ngôi nhà trở nên dễ dàng và hiệu quả hơn
bao giờ hết. Đề tài không chỉ giúp hiểu rõ hơn về các thành phần cấu thành của một hệ
thống nhà thông minh, mà còn khám phá các vấn đề kỹ thuật như giao thức truyền
thông, bảo mật dữ liệu và tối ưu hóa năng lượng.
Trong quá trình nghiên cứu, chúng em nhận được sự hỗ trợ và hướng dẫn quý báu
từ giảng viên Nguyễn Tài Tuyên, người đã giúp chúng em tiếp cận những kiến thức sâu
rộng về IoT và ứng dụng của nó trong thực tế. Em hy vọng với những kết quả đạt được
từ đề tài này, có thể đóng góp một phần nhỏ vào việc phát triển công nghệ nhà thông minh
trong tương lai, nâng cao chất lượng cuộc sống cho cộng đồng.
Xin chân thành cảm ơn sự chỉ dẫn của thầy Nguyễn Tài Tuyên, cùng những nguồn
tài liệu phong phú đã giúp chúng em hoàn thành đề tài này.
Hà Nội, ngày 11 tháng 12 năm 2024
Trưởng nhóm ký tên Nguyễn Trọng Kính MỤC LỤC
MỤC LỤC ........................................................................................................................ 1
MỞ ĐẦU .......................................................................................................................... 2
1. Lý do chọn đề tài ...................................................................................................... 2
2. Tổng quan về vấn đề nghiên cứu ............................................................................. 2
3. Mục đích nghiên cứu ................................................................................................ 3
4. Đối tượng và phạm vi nghiên cứu ............................................................................ 3
4.1. Đối tượng nghiên cứu: ......................................................................................... 3
4.2. Phạm vi nghiên cứu: ............................................................................................ 3
5. Phương pháp nghiên cứu .......................................................................................... 3
CHƯƠNG 1 – TỔNG QUAN .......................................................................................... 4
1.1. Tổng quan về IoT ( Internet of Things) ................................................................. 4
1.2. Tổng quan về mô hình Nhà thông minh (Smart Home) ....................................... 4
1.3 Tổng quan về MQTT ((Message Queuing Telemetry Transport)) ......................... 5 lOMoAR cPSD| 58647650
CHƯƠNG 2 - PHÁT TRIỂN HỆ THỐNG ...................................................................... 5
2.1. Thiết kế phần cứng: ............................................................................................... 5
2.2. Code Arduino: ....................................................................................................... 6
Chương 3: ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG .................................................. 14
3.1. Tổng quan về ứng dụng ....................................................................................... 14
3.2. Các block logic của ứng dụng: ............................................................................ 16
KẾT LUẬN .................................................................................................................... 19
1. Kết quả đạt được .................................................................................................... 19
2. Hạn chế ................................................................................................................... 19
3. Định hướng phát triển trong tương lai ................................................................... 19
DANH SÁCH TÀI LIỆU THAM KHẢO...................................................................... 20 MỞ ĐẦU
1. Lý do chọn đề tài
Nhà thông minh là một trong những xu hướng công nghệ nổi bật trong thời đại hiện
nay, khi mà IoT (Internet of Things) ngày càng được ứng dụng sâu rộng trong đời sống.
Việc lựa chọn đề tài này xuất phát từ nhu cầu thực tế về sự tiện nghi, an toàn và tối ưu
hóa năng lượng trong quản lý nhà ở. Trong bối cảnh hiện đại, con người ngày càng quan
tâm đến việc cải thiện chất lượng cuộc sống, và nhà thông minh cung cấp các giải pháp
tự động hóa, tiết kiệm thời gian, và tăng cường bảo mật.
Bên cạnh đó, với sự phát triển mạnh mẽ của các thiết bị IoT, mô hình nhà thông
minh còn mở ra cơ hội học tập và nghiên cứu các công nghệ tiên tiến như cảm biến, vi
điều khiển, giao thức truyền thông (như MQTT, Zigbee), và trí tuệ nhân tạo (AI). Đề tài
cũng góp phần giải quyết những vấn đề xã hội quan tâm như tiêu thụ năng lượng hiệu
quả, giảm thiểu rủi ro cháy nổ, hay bảo vệ môi trường thông qua việc sử dụng công nghệ tối ưu.
Ngoài ra, mô hình nhà thông minh có tiềm năng ứng dụng rộng rãi, không chỉ trong
đời sống gia đình mà còn trong các lĩnh vực kinh doanh, giáo dục và y tế. Do đó, việc
nghiên cứu và triển khai đề tài không chỉ có ý nghĩa trong việc học tập mà còn tạo ra giá
trị thực tiễn cao, đồng thời cung cấp kiến thức nền tảng cho các dự án IoT trong tương lai.
2. Tổng quan về vấn đề nghiên cứu
Nghiên cứu về mô hình nhà thông minh tập trung vào việc giải quyết nhiều vấn
đề quan trọng, từ thiết kế hệ thống đến ứng dụng thực tế. Một trong những vấn đề cốt
lõi là kiến trúc hệ thống, bao gồm việc lựa chọn các thiết bị, cảm biến và giao thức
truyền thông để đảm bảo sự linh hoạt và tương thích. Các giao thức như MQTT, Zigbee lOMoAR cPSD| 58647650
hay Bluetooth cần được nghiên cứu để đảm bảo kết nối ổn định giữa các thiết bị. Bên
cạnh đó, tự động hóa và trí tuệ nhân tạo đóng vai trò quan trọng trong việc tạo ra các
kịch bản tự động hóa thông minh, tối ưu hóa năng lượng và cải thiện trải nghiệm người
dùng. Một vấn đề khác cần được nghiên cứu là bảo mật và quyền riêng tư của người
dùng, vì các thiết bị IoT dễ bị tấn công nếu không có các biện pháp bảo vệ thích hợp.
Ngoài ra, việc phát triển các ứng dụng di động thân thiện, cùng với các giao diện người
dùng trực quan, là yếu tố không thể thiếu để điều khiển hệ thống nhà thông minh. Cuối
cùng, việc đánh giá tính thực tiễn và khả năng mở rộng của hệ thống, đặc biệt là trong
điều kiện hạ tầng mạng hạn chế, là vấn đề quan trọng để đảm bảo sự thành công và
hiệu quả lâu dài của nhà thông minh.
3. Mục đích nghiên cứu
Mục đích chính của nghiên cứu này là phát triển và triển khai thành công một
ứng dụng điều khiển từ xa trên android và thiết kế được một bảng mạch mô hình đơn
giản về các cảm biến được sử dụng trong mô hình nhà thông minh
Nghiên cứu tập trung vào việc tạo ra một ứng dụng dễ sử dụng, có thể tích hợp
trong các môi trường làm việc từ xa đồng thời thiết kế nên một board mạch có tính
ứng dụng cao trong thực tế
4. Đối tượng và phạm vi nghiên cứu
4.1. Đối tượng nghiên cứu:
Giao thức MQTT, module ESP32, các cảm biến thông dụng được sử dụng trong các mô
hình nhà thông minh trong thực tế .
4.2. Phạm vi nghiên cứu:
Dự án tập trung vào việc phát triển ứng dụng bật tắt các thiết bị từ xa thông qua
giao thức MQTT, đồng thời thiết kế và phát triển một board mạch sử dụng module
ESP32 để kết nối cũng như tương tác giữa các cảm biến
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu được sử dụng trong đề tài này bao gồm:
Phân tích lý thuyết: Nghiên cứu tài liệu về các cảm biến và giao thức kết nối MQTT
Phát triển phần mềm: Sử dụng các kiến thức lý thuyết để thực hiện thiết kế, phát triển ra ứng dụng.
Thử nghiệm và đánh giá: Thử nghiệm ứng dụng trong các môi trường mạng khác nhau
để đánh giá hiệu suất, tính ổn định và bảo mật của ứng dụng. Kết quả thử nghiệm sẽ
được so sánh với các giải pháp hiện có để đưa ra đánh giá khách quan. lOMoAR cPSD| 58647650
CHƯƠNG 1 – TỔNG QUAN
1.1. Tổng quan về IoT ( Internet of Things)
Internet of Things (IoT) là mạng lưới các thiết bị vật lý được kết nối với internet,
bao gồm cảm biến, phần mềm và các công nghệ khác, cho phép thu thập, trao đổi và xử
lý dữ liệu một cách tự động mà không cần sự can thiệp của con người. IoT bao gồm ba
thành phần chính: thiết bị vật lý như cảm biến hoặc thiết bị gia dụng, hệ thống kết nối
mạng sử dụng các giao thức như Wi-Fi hoặc Zigbee, và hệ thống xử lý dữ liệu, thường là
trên nền tảng đám mây. IoT đã tạo ra các ứng dụng đột phá trong nhiều lĩnh vực như nhà
thông minh, y tế, nông nghiệp, giao thông và công nghiệp, mang lại lợi ích lớn trong việc
tối ưu hóa nguồn lực, tự động hóa và cải thiện chất lượng cuộc sống. Tuy nhiên, IoT cũng
đối mặt với các thách thức lớn về bảo mật, quyền riêng tư, chi phí triển khai và quản lý
dữ liệu. Với sự hỗ trợ của công nghệ tiên tiến như AI, 5G và blockchain, IoT được kỳ
vọng sẽ tiếp tục phát triển mạnh mẽ, đóng góp vào việc xây dựng các giải pháp thông
minh và bền vững trong tương lai.
1.2. Tổng quan về mô hình Nhà thông minh (Smart Home)
Nhà thông minh (Smart Home) là một hệ thống tích hợp các thiết bị điện tử và công
nghệ IoT (Internet of Things) để tự động hóa và điều khiển các hoạt động trong ngôi nhà.
Thông qua kết nối mạng, người dùng có thể giám sát, điều khiển và quản lý các thiết bị
từ xa bằng smartphone, máy tính bảng hoặc bằng giọng nói. Nhà thông minh không chỉ
mang lại sự tiện nghi mà còn giúp tối ưu hóa năng lượng và đảm bảo an toàn cho người sử dụng.
Mô hình nhà thông minh bao gồm năm thành phần chính. Đầu tiên là các thiết bị
thông minh như cảm biến nhiệt độ, độ ẩm, ánh sáng, chuyển động, cùng với các thiết bị
đầu ra như đèn, máy lạnh, và rèm cửa tự động. Tiếp theo là hệ thống điều khiển trung tâm
(hub hoặc gateway), đóng vai trò kết nối và xử lý dữ liệu giữa các thiết bị trong nhà. Thứ
ba là kết nối mạng, thường sử dụng các giao thức như Wi-Fi, Zigbee, hoặc Bluetooth để
truyền thông tin giữa các thiết bị. Thành phần thứ tư là ứng dụng di động, giúp người
dùng quản lý và điều khiển nhà thông minh qua giao diện đơn giản và dễ sử dụng. Cuối
cùng, hạ tầng đám mây được dùng để lưu trữ dữ liệu, phân tích thông minh và hỗ trợ tích
hợp với các nền tảng AI như Google Assistant hoặc Amazon Alexa.
Nhà thông minh cung cấp nhiều chức năng nổi bật. Người dùng có thể điều khiển
từ xa các thiết bị điện trong nhà, chẳng hạn như bật/tắt đèn hoặc điều chỉnh nhiệt độ điều
hòa dù không có mặt tại nhà. Các hệ thống tự động hóa giúp thiết lập kịch bản như đèn
tự động bật khi trời tối hoặc rèm cửa đóng khi ánh sáng quá mạnh. Ngoài ra, nhà thông
minh còn hỗ trợ giám sát và bảo mật với camera, cảm biến an ninh và cảnh báo khi phát
hiện nguy cơ như rò rỉ gas hay cháy nổ. Một tính năng quan trọng khác là tối ưu hóa năng
lượng, giúp giảm tiêu thụ điện và chi phí sinh hoạt nhờ tự động ngắt thiết bị khi không sử dụng.
Nhà thông minh mang lại nhiều lợi ích thiết thực trong cuộc sống. Nó cung cấp sự
tiện nghi khi người dùng có thể kiểm soát mọi thiết bị trong nhà qua điện thoại di động
mà không cần di chuyển. Đồng thời, hệ thống giúp đảm bảo an toàn với các cảnh báo lOMoAR cPSD| 58647650
sớm về cháy nổ, xâm nhập trái phép hoặc rò rỉ khí độc. Một lợi ích khác là tiết kiệm năng
lượng, nhờ khả năng tự động hóa và giám sát tiêu thụ điện. Ngoài ra, giao diện tích hợp
trên ứng dụng giúp người dùng dễ dàng quản lý mọi hoạt động trong nhà trên một nền tảng duy nhất
Dù mang lại nhiều lợi ích, mô hình nhà thông minh vẫn còn một số hạn chế. Chi
phí đầu tư ban đầu thường cao, đặc biệt với các hệ thống hiện đại và đầy đủ chức năng.
Hệ thống này cũng phụ thuộc vào kết nối internet, nên việc mất mạng có thể gây gián
đoạn trong điều khiển từ xa hoặc giám sát. Một vấn đề đáng lo ngại khác là nguy cơ bảo
mật, khi các thiết bị IoT có thể bị tấn công mạng nếu không được bảo vệ kỹ lưỡng. Cuối
cùng, sự thiếu đồng bộ giữa các thiết bị của các nhà sản xuất khác nhau có thể gây khó
khăn trong quá trình tích hợp và sử dụng.
1.3 Tổng quan về MQTT ((Message Queuing Telemetry Transport))
MQTT (Message Queuing Telemetry Transport) là một giao thức truyền thông nhẹ,
được thiết kế để hoạt động hiệu quả trong các môi trường có băng thông thấp, độ trễ cao
hoặc tài nguyên hạn chế, như các ứng dụng IoT. Được phát triển lần đầu vào năm 1999
bởi IBM, MQTT hoạt động theo mô hình publish/subscribe (xuất bản/đăng ký), nơi các
thiết bị IoT giao tiếp thông qua một máy chủ trung gian gọi là broker.
Trong hệ thống MQTT, các thiết bị không giao tiếp trực tiếp với nhau mà thông qua
broker. Các thiết bị publish dữ liệu lên các chủ đề (topics) cụ thể, và những thiết bị quan
tâm sẽ subscribe để nhận thông tin từ các chủ đề đó. Điều này giúp giảm tải cho thiết bị
và tối ưu hóa hiệu suất hệ thống. MQTT hỗ trợ ba cấp độ chất lượng dịch vụ (QoS): gửi
tối thiểu một lần (at least once), gửi đúng một lần (exactly once), và gửi tối đa một lần
(at most once), phù hợp với các yêu cầu khác nhau về độ tin cậy.
MQTT được đánh giá cao bởi khả năng sử dụng ít tài nguyên và tính linh hoạt, làm
cho nó trở thành một lựa chọn lý tưởng trong các ứng dụng IoT như nhà thông minh,
giám sát công nghiệp, hoặc quản lý năng lượng. Tuy nhiên, giao thức này cũng có những
thách thức, đặc biệt là trong bảo mật, vì dữ liệu có thể bị đánh cắp nếu không được mã
hóa hoặc bảo vệ đúng cách. Để giải quyết vấn đề này, MQTT thường được triển khai với
các lớp bảo mật như SSL/TLS nhằm đảm bảo an toàn trong việc truyền dữ liệu.
CHƯƠNG 2 - PHÁT TRIỂN HỆ THỐNG
2.1. Thiết kế phần cứng:
Các phần cứng được sử dụng: - ESP32 DEVKITV1 - 4 đèn LED
- Cảm biến nhiệt độ, độ ẩm DHT11 - Cảm biến âm thanh
- Cảm biến phát hiện vật cản hồng ngoại
- Board và các dây kết nối lOMoAR cPSD| 58647650
Các chân GND và VCC của các cảm biến được nối với chân GND và 3V3 của ESP32.
Chân DATA của DHT11 được nối với chân D18 trên ESP32.
Chân OUT của cảm biến âm thanh được nối với chân D13 trên ESP32.
Chân OUT của cảm biến phát hiện vật cản được nối với chân D27 trên ESP32.
Đèn LED trắng, xanh lục, xanh lam, đỏ lần lượt nối với chân D26, D33, D32, D19.
Đèn LED trắng là đèn LED báo hiệu phát hiện vật cản từ cảm biến phát hiện vật cản,
đèn LED xanh dương mô phỏng quạt, đèn LED xanh lá bật/tắt theo tín hiệu phát hiện
âm thanh từ cảm biến âm thanh. 2.2. Code Arduino: - Link:
https://drive.google.com/file/d/112rIzNli4gwZdf50YwPFhe59WpW0pUFG/
view?usp=sharing - IDE: Arduino IDE 2.3.2
- Các thư viện được sử dụng:
WiFi.h: Kết nối WiFi.
DHTesp.h: Đọc dữ liệu từ cảm biến nhiệt độ và độ ẩm.
PubSubClient.h: Gửi/nhận dữ liệu qua giao thức MQTT.
WiFiClientSecure.h: Đảm bảo kết nối an toàn với máy chủ MQTT.
- MQTT broker được sử dụng: HiveMQ:
● URL: 2efecadacb8544af95a7cd4a873e2d87.s1.eu.hivemq.cloud ● Port: 8883 ● Username: klnq123 ● Password: KinhNg123 Code chi tiết:
- Khai báo thư viện và các chân I/O #include #include "DHTesp.h" #include #include ● Thêm các thư viện:
WiFi.h: Kết nối ESP32 với mạng WiFi.
DHTesp.h: Đọc dữ liệu từ cảm biến nhiệt độ và độ ẩm DHT11.
PubSubClient.h: Gửi và nhận dữ liệu qua MQTT.
WiFiClientSecure.h: Tạo kết nối an toàn qua SSL/TLS. #define DHTPIN 18 #define LED 19 #define FAN 32 lOMoAR cPSD| 58647650 #define IRPIN 27 #define IRLED 26 #define SOUND 13 #define SOUNDLED 33 DHTesp dht; ● Khai báo các chân:
DHTPIN: Chân cảm biến DHT11. ○ LED: Đèn LED. ○ FAN: Quạt.
IRPIN & IRLED: Cảm biến và đèn hồng ngoại (IR).
SOUND & SOUNDLED: Cảm biến âm thanh và đèn LED âm thanh.
- Thông tin WiFi và MQTT const
char* ssid = "Tâng_5"; const char*
password = "Tang5123456"; const char* mqtt_server =
"2efecadacb8544af95a7cd4a873e2d87.
s1.eu.hivemq.cloud"; const int mqtt_port = 8883; const char*
mqtt_username = "klnq123"; const
char* mqtt_password = "KinhNg123";
const char* topic = "Tempdata"; const
char* clientId = "ESP32_Client_1";
ssidpassword: Thông tin kết nối mạng WiFi.
mqtt_servermqtt_port: Địa chỉ và cổng của máy chủ MQTT.
mqtt_usernamemqtt_password: Tài khoản MQTT.
topic: Chủ đề MQTT mà ESP32 gửi dữ liệu. ● clientId: ID của thiết bị.
- Các biến toàn cục lOMoAR cPSD| 58647650 WiFiClientSecure espClient;
PubSubClient client(espClient); ●
espClient: Tạo kết nối an toàn. ●
client: Quản lý giao tiếp MQTT. int IROutputState; unsigned long
startMillisIR; unsigned long currentMillisIR; const unsigned long periodIR = 200;
const unsigned long ledOnDuration = 2000; unsigned long ledTurnOffMillis = 0; ●
Quản lý cảm biến hồng ngoại (IR):
startMillisIR, currentMillisIR: Thời gian kiểm tra cảm biến IR.
ledOnDuration: Thời gian bật LED hồng ngoại khi phát hiện vật cản.
unsigned long previousMillis = 0; const long interval = 5000; String msgStr = ""; float temp, hum; unsigned long lastEvent = 0; bool soundLed = false; ●
Quản lý thời gian và gửi dữ liệu:
interval: Chu kỳ gửi dữ liệu MQTT.
msgStr: Chuỗi dữ liệu để gửi qua MQTT.
soundLed: Trạng thái LED âm thanh.
- Hàm kết nối WiFi void setup_wifi() { delay(10); Serial.println();
Serial.print("Connecting to "); Serial.println(ssid); lOMoAR cPSD| 58647650
WiFi.begin(ssid, password); while
(WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print("."); } Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); }
● Kết nối ESP32 với mạng WiFi.
● In địa chỉ IP khi kết nối thành công.
- Hàm kết nối MQTT void reconnect() { while (!client.connected()) {
Serial.print("Attempting MQTT connection..."); if
(client.connect(clientId, mqtt_username, mqtt_password)) {
Serial.println("connected"); client.subscribe("lights"); client.subscribe("fan"); } else { Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds"); delay(5000); } } }
● Kết nối ESP32 với máy chủ MQTT.
● Đăng ký các topic lights và fan để nhận lệnh điều khiển.
- Hàm callback MQTT lOMoAR cPSD| 58647650
void callback(char* topic, byte* payload, unsigned int length)
{ String data = ""; for (int i = 0; i < length; i++) { data += (char)payload[i]; }
if (strcmp(topic, "fan") == 0) { if (data == "ON") { digitalWrite(FAN, HIGH); } else { digitalWrite(FAN, LOW); }
} else if (strcmp(topic, "lights") == 0) { if (data == "ON") { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } } ● Nhận lệnh từ MQTT:
lights: Bật/tắt đèn LED.
fan: Bật/tắt quạt. - Hàm setup()
void setup() { Serial.begin(115200);
dht.setup(DHTPIN, DHTesp::DHT11); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); pinMode(FAN, OUTPUT); digitalWrite(FAN, LOW); pinMode(IRLED, OUTPUT); lOMoAR cPSD| 58647650 pinMode(IRPIN, INPUT); digitalWrite(IRLED, LOW); startMillisIR = millis(); pinMode(SOUND, INPUT); pinMode(SOUNDLED, OUTPUT);
setup_wifi(); espClient.setInsecure();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback); } ● Cấu hình ban đầu:
○ Thiết lập cảm biến, các chân và kết nối WiFi/MQTT. - Hàm loop() void loop() { if (!client.connected()) { reconnect(); } client.loop();
● Kiểm tra kết nối MQTT, nếu mất thì kết nối lại.
- Xử lý cảm biến âm thanh int
sensorData = digitalRead(SOUND); if (sensorData == LOW) {
soundLed = !soundLed; if (millis() - lastEvent >= 200) {
Serial.println("Clap detected!"); if lOMoAR cPSD| 58647650 (soundLed) { digitalWrite(SOUNDLED, HIGH); } else { digitalWrite(SOUNDLED, LOW); } } lastEvent = millis(); }
● Phát hiện tiếng vỗ tay và bật/tắt đèn LED tương ứng.
- Xử lý cảm biến hồng ngoại currentMillisIR = millis();
if (currentMillisIR - startMillisIR >= periodIR) {
IROutputState = digitalRead(IRPIN); if (IROutputState == LOW) {
Serial.println("There is an obstacle !"); digitalWrite(IRLED, HIGH);
ledTurnOffMillis = millis() + ledOnDuration; } startMillisIR = millis(); } if (millis() > ledTurnOffMillis) { digitalWrite(IRLED, LOW); } ●
Phát hiện vật cản bằng cảm biến IR và bật LED hồng ngoại.- Gửi dữ liệu
nhiệt độ, độ ẩm qua MQTT unsigned long currentMillis = millis(); if (currentMillis
- previousMillis >= interval) { previousMillis = currentMillis; temp =
dht.getTemperature(); hum = dht.getHumidity(); Serial.print(temp); lOMoAR cPSD| 58647650 Serial.println(F("°C")); Serial.print(hum);
Serial.println(F("%")); msgStr =
String(temp) +","+String(hum); byte
arrSize = msgStr.length() + 1; char msg[arrSize];
Serial.print("PUBLISH DATA:"); Serial.println(msgStr);
msgStr.toCharArray(msg, arrSize);
client.publish(topic, msg); msgStr = ""; delay(50); } ●
Đọc nhiệt độ và độ ẩm từ DHT11. ●
Gửi dữ liệu qua MQTT với định dạng “temp,hum”. lOMoAR cPSD| 58647650
Chương 3: ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
3.1. Tổng quan về ứng dụng.
- Hệ điều hành: Android 5+.
- Nền tảng phát triển: MIT App Inventor. - Link file .aia:
https://drive.google.com/file/d/1Z-
L1W8KkQU0kh1kqvH8nTkzBHIZqINL/view?usp=sharing - Giao diện ứng dụng:
● Chưa kết nối với MQTT broker:
● Đã kết nối với MQTT broker và đèn tắt, quạt tắt: lOMoAR cPSD| 58647650
● Khi kết nối với MQTT broker và đèn bật, quạt bật: lOMoAR cPSD| 58647650
3.2. Các block logic của ứng dụng:
- Block quản lý việc thay đổi các label, button theo trạng thái kết nối tới MQTT broker: lOMoAR cPSD| 58647650
- Block quản lý button thực hiện kết nối, ngắt kết nối tới MQTT broker:
- Block khởi tạo biến toàn cục lưu trữ giá trị nhiệt độ, độ ẩm nhận được từ broker:
- Block nhận dữ liệu theo topic đã subcribe từ MQTT broker và thay đổi giá trị nhiệt
độ, độ ẩm tương ứng: lOMoAR cPSD| 58647650
- Block thực hiện thay đổi biểu tượng tương ứng bật/tắt đèn và gửi thông điệp điều
khiển đèn theo topic “lights” lên broker:
- Block thực hiện thay đổi biểu tượng tương ứng bật/tắt quạt và gửi thông điệp điều
khiển đèn theo topic “fan” lên broker: lOMoAR cPSD| 58647650 KẾT LUẬN
1. Kết quả đạt được
Dự án đã hoàn thành được mục tiêu thực hiện tạo một mạch mô phỏng nhà
thông minh với các chức năng đo các thông số môi trường, sử dụng cảm biến âm
thanh và vật cản để tự động hóa một số quá trình như bật tắt đèn. Xây dựng được
một ứng dụng di động cơ bản theo dõi được các thông số môi trường, bật/tắt các
thiết bị từ xa. Dự án đã giúp nhóm có cơ hội tìm hiểu thêm và ứng dụng được
giao thức MQTT vào truyền gửi dữ liệu giữa ESP32 và thiết bị di động. Ngoài ra
dự án cũng cho nhóm được tiếp cận và sử dụng công cụ MIT App Inventor để
phát triển ứng dụng di động tương tác với các thiết bị IoT. 2. Hạn chế
Dù đã đạt được một số mục tiêu, dự án vẫn còn những điểm hạn chế. Chưa có mô
hình mô phỏng hoàn thiện các chức năng của các cảm biến được sử dụng, chỉ có board
mạch, cảm biến chưa đủ đa dạng. Giao diện ứng dụng vẫn còn đơn giản, chưa có chức
năng thông báo, lược đồ và lưu trữ dữ liệu.
3. Định hướng phát triển trong tương lai
Trong tương lai ứng dụng có thể có những cải tiến như sau: thêm các cảm biến với
nhiều mục đích, dựng mô hình mô phỏng căn nhà, thêm các thiết bị mô phỏng như quạt,