You are on page 1of 33

ĐẠI HỌC QUỐC GIA TP.

HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------

BÁO CÁO BÀI TẬP LỚN


ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ ĐIỆN THÔNG QUA TRỢ LÝ ẢO
GOOGLE ASSISTANT

GVHD: ThS. Trần Hoàng Quân

SVTH: Phạm Xuân Thi - 1814120

Phạm Minh Uy - 1810258

Đặng Xuân Khu - 1915857

TP. HỒ CHÍ MINH, THÁNG 11 NĂM 2021


Đồ án môn học GVHD: ThS. Trần Hoàng Quân

LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng xem xin chân thành cảm ơn thầy Trần Hoàng
Quân đã giảng dạy tận tình và có những góp ý bổ ích cho chúng em hoàn thành
đồ án môn học này.
Sự bùng nổ về cuộc cách mạng 4.0 đã khiến cụm từ Interner of Things hay
vạn vật kết nối internet trở nên không còn quá xa lạ với nhiều người. Từ đó ta dễ
dàng kiểm soát và điều khiển mọi thứ xung quanh ta hơn, đặc biệt là những thiết
bị trong ngôi nhà của chúng ta. “SMART HOME” sẽ là giải pháp cụ thể để chúng
ta nâng cấp và bảo vệ ngôi nhà mình một cách thuận lợi và an toàn nhất. Đề tài
này hiện nay đã có nhiều người đã làm, nhưng chúng em sẽ làm lại dựa trên kiến
thức và kinh nghiệm của mình. Nó giúp chúng em có những kiến thức mới cũng
như có thêm nhiều kinh nghiệm hơn cho sau này
Dù rất nổ lực trong quá trình thực hiện, nhưng giới hạn kiến thức cũng như
thời gian làm gấp rút nên không tránh khỏi những sai sót. Chúng em mong nhận
được sự đóng góp, bổ sung của Thầy và các bạn để nội dung nghiên cứu có thể
hoàn thiện hơn.

Tp. Hồ Chí Minh, ngày 25 tháng 11 năm 2021.

i
Đồ án môn học GVHD: Trần Hoàng Quân

TÓM TẮT ĐỒ ÁN
Đồ án này trình bày về một hệ thống Smart Home cơ bản cho một
ngôi nhà.
Bao gồm trong đồ án này gồm có một số chức năng cở bản như sau:
1. Mở và khóa cửa điện từ bằng Passwords, Passwords có thể được thay đổi một
cách dễ dàng không cần thông qua code.
2. Điều khiển đèn, hiển thị nhiệt độ và độ ẩm thông qua ứng dụng Blynk, bằng
nút nhấn và bằng giọng nói.

ii
Đồ án môn học GVHD: Trần Hoàng Quân

MỤC LỤC

1. GIỚI THIỆU ................................................................................................................................... 1

1.1 Tổng quan........................................................................................................................................ 1

1.2 Nhiệm vụ đề tài ............................................................................................................................... 1

1.3 Phân chia công việc trong nhóm ..................................................................................................... 2

2. LÝ THUYẾT................................................................................................................................... 2

2.1 Google Assistant..................................................................................................................2

2.2 NODE MCU ESP8266.........................................................................................................3

2.3 IFTTT...................................................................................................................................4

2.4 ATmega328P.........................................................................................................................4

2.5 Blynk............ .......................................................................................................................6

2.6 Cảm Biến Nhiệt Độ Độ Ẩm.................................................................................................7

2.7 Module I2C giao tiếp với LCD............................................................................................8

2.8 Keypad 4x4 .........................................................................................................................9

3 THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG ............................................................................... 10

4 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM..................................................................................14

4.1 Yêu cầu thiết kế: ...............................................................................................................14

4.2 Lưu đồ giải thuật................................................................................................................15

5 KẾT QUẢ THỰC HIỆN................................................................................................................17

5.1 Kết quả tạo app bằng Blynk...............................................................................................17

5.2 Kết quả..........................................................................................…………………….…18

6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................................................... 21

6.1 Kết luận ......................................................................................................................................... 21

iii
Đồ án môn học GVHD: Trần Hoàng Quân

6.2 Hướng phát triển ........................................................................................................................... 21

7. TÀI LIỆU THAM KHẢO ............................................................................................................. 21

8. PHỤ LỤC ...................................................................................................................................... 22

iv
Đồ án môn học GVHD: Trần Hoàng Quân

DANH SÁCH HÌNH MINH HỌA

Hình 5-1 Giao diện trên app và web của ứng dụng Blynk........................................................................ 17

Hình 5-2 Giao tiếp LCD với Keypad ...................................................................................................... 18

Hình 5-3 Giao tiếp với đèn Led .............................................................................................................. 20

v
Đồ án môn học GVHD: Trần Hoàng Quân

1. GIỚI THIỆU:

1.1 Tổng quan:

• Sự bùng nổ về cuộc cách mạng 4.0 đã khiến cụm từ Interner of Things hay vạn
vật kết nối internet trở nên không còn quá xa lạ với nhiều người.Ngày nay chúng
ta thấy có rất nhiều thành quả từ chính IoT mang lại. Rất nhiều công ty hiện nay
đã và đang dốc hết sức lực để phát triển thật mạnh IoT. Chính vì tầm quan trọng
đó nên nhóm chúng em quyết định chọn đề tài này, để từ đồ án này mà nhóm có
thêm kinh nghiệm cho công việc trong tương lai. Cụ thể hơn nhóm nhận thấy
được tầm quan trọng của việc điều khiển các thiết bị điện trong gia đình, cùng
với sự tiện lợi mà Google Assistant (trợ lý ảo do Google phát triển) mang lại.
Nhóm sẽ sử dụng trợ lý ảo Google Assistant làm phương tiện để điều khiển các
thiết bị điện bằng giọng nói. Đồng thời sẽ thiết kế một phần mềm chạy trên điện
thoại thông minh sử dụng hệ điều hành Android, giúp người sử dụng có thể thao
tác điều khiển và quản lý trạng thái của các thiết bị một cách dễ dàng ở bất cứ
nơi đâu có phủ sóng WIFI.
• Hệ thống này có vô số lợi ích chẳng hạn như việc tắt quạt, đèn điện.... khi người
chủ nhà quên chưa tắt thiết bị điện khi ra khỏi nhà. Hay có thể bật máy điều hòa
để làm mát phòng trước khi về nhà trong một khoảng thời gian nhất định. Phát
triển lên có thể tùy chỉnh nhiệt độ máy điều hòa theo yêu cầu.

1.2 Nhiệm vụ đề tài:

• Nội dung 1:
o Tìm hiểu nguyên lý, lý thuyết về hệ thống giao tiếp bằng Internet, WIFI,
module NodeMCU ESP8266
o Tìm hiểu cách thức hoạt động của ESP8266, điện áp hoạt động, cách đổ
code, ...
• Nội dung 2: Tìm hiểu về cảm biến, vi xử lý, bo mạch phát triển, …
o Tìm hiểu giao tiếp UART của Atmega328p, code. Đọc Datasheet của các
cảm biến, cách thức giao tiếp giữa vi xử lý và cảm biến. Nắm vững các thao
tác trên phần mềm mô phỏng Proteus
1
Đồ án môn học GVHD: Trần Hoàng Quân

• Nội dung 3: Thiết kế bộ điều khiển đèn, cửa.

1.3 Phân chia công việc trong nhóm:

• Đặng Xuân Khu: Mua thiết bị phần cứng, hàn mạch, đổ và sửa code.
• Phạm Xuân Thi: Code phần khóa cửa điện tử trên Atmega328p, hiển thị LCD.
• Phạm Minh Uy: Code giao tiếp UART giữa Atmega328p và NodeMCU
ESP8266.

Mỗi sinh viên tìm hiểu lý thuyết về phần mình làm. Tham gia thảo luận trên
Google Meet vào cuối tuần hoặc khi nào có thắc mắc muốn trao đổi.

2. LÝ THUYẾT:

2.1 Google Assistant:

• Khái niệm: Google Assistant là một trợ lý ảo thông minh tương tự như Siri của
Apple, Bixby của Samsung hay Cortana của Microsoft trên Windows. Google
Assistant hỗ trợ nhiều tính năng thông minh như tìm kiếm thông tin hay thực
hiện yêu cầu mà người dùng đưa ra như mở danh bạ, gọi điện cho người có tên
trong danh bạ, đọc tin nhắn, mở nhạc…
• Lịch sử phát triển:Google Assistant là một trợ lý cá nhân ảo được phát triển bởi
Google và được giới thiệu tại hội nghị nhà phát triển của hãng vào tháng 5 năm
2016. Google Assistant ban đầu được đưa vào ứng dụng nhắn tin Google Allo,
và loa thông minh Google Home. Sau một thời gian chỉ có mặt trên hai chiếc
điện thoại thông minh Pixel và Pixel XL của hãng, Google bắt đầu triển khai
Assistant trên các thiết bị Android khác vào tháng 2 năm 2017, bao gồm cả các
điện thoại thông minh bên thứ ba và các thiết bị Android Wear, và được phát
hành dưới dạng ứng dụng riêng biệt trên iOS vào tháng 5. Cùng với sự ra mắt
một bộ phát triển phần mềm vào tháng 4 năm 2017, Assistant đã và đang được
tiếp tục mở rộng hỗ trợ cho một lượng lớn thiết bị, bao gồm cả xe hơi và các thiết
bị nhà thông minh. Các chức năng của Assistant cũng có thể được bổ sung bởi
các nhà phát triển bên thứ ba.

2
Đồ án môn học GVHD: Trần Hoàng Quân

2.2 NodeMCU ESP8266:

Sơ đồ chân Node MCU ESP8266

• NodeMCU là một phần mềm nguồn mở dựa trên Lua và bảng phát triển được
nhắm mục tiêu đặc biệt cho các Ứng dụng dựa trên IoT. Nó bao gồm phần sụn
chạy trên ESP8266 Wi-Fi SoC của Espressif Systems và phần cứng dựa trên mô-
đun ESP-12.
• Thông số cơ bản:
o Bộ vi điều khiển: CPU RISC 32-bit Tensilica Xtensa LX106.
o Điện áp hoạt động: 3.3V.
o Điện áp đầu vào: 7-12V.
o Chân I / O kỹ thuật số (DIO): 16.
o Chân đầu vào tương tự (ADC): 1.
o UARTs: 1.
o SPI: 1.
o I2Cs: 1.
o Bộ nhớ Flash: 4 MB.

3
Đồ án môn học GVHD: Trần Hoàng Quân

o SRAM: 64 KB.
o Tốc độ đồng hồ: 80 MHz.
o USB-TTL dựa trên CP2102 được bao gồm trên bo mạch, cho phép Plug n
Play.
o Ăng-ten PCB.

2.3 IFTTT:

• IFTTT là một dịch vụ web trung gian đứng giữa hai dịch vụ để thực hiện tác vụ
khi có điều kiện xảy ra, IFTTT là viết tắt của If This Then That. Trong đó, If
This (nếu việc này xảy ra) sẽ dẫn đến Then That (thì làm việc kia), đây được xem
là nguyên lý hoạt động của câu lệnh. Tức khi có bất kỳ 1 sự thay đổi nào trên
ứng dụng này, thì thông qua IFTTT ứng dụng kia cũng sẽ hoạt động và thay đổi
tương tự.
• IFTTT có thể sử dụng để kết nối với rất nhiều nền tảng khác nhau như: Google
Assistant, Facebook, Twitter, ... Ứng dụng rất hữu ích vào nhiều lĩnh vực như
Marketing,Tự động hoá,.. trong đó dùng để tuỳ chỉnh Google Assistant là một
ứng dụng rất được yêu thích.

2.4 ATmega328P:

ATmega328P

• ATmega328P là một bộ vi điều khiển tiên tiến và nhiều tính năng. Nó là một
trong những vi điều khiển nổi tiếng của Atmel vì nó được sử dụng trong bo mạch

4
Đồ án môn học GVHD: Trần Hoàng Quân

arduino UNO. Nó là một bộ vi điều khiển thuộc họ vi điều khiển megaMVR của
Atmel (Cuối năm 2016, Atmel được Microchip Technology Inc mua lại). Các vi
điều khiển được sản xuất trong họ megaMVR được thiết kế để xử lý các bộ nhớ
chương trình lớn và mỗi vi điều khiển trong họ này chứa lượng ROM, RAM, các
chân I / O và các tính năng khác nhau và được sản xuất với các chân đầu ra khác
nhau, từ 8 chân đến hàng trăm chân.
• Mạch bên trong của ATmega328P được thiết kế với tính năng tiêu thụ dòng điện
thấp. Con chip này chứa 32 kilobyte bộ nhớ flash trong, 1 kilobyte EEPROM và
2 kilobyte SRAM. EEPROM và bộ nhớ flash là bộ nhớ lưu thông tin và thông
tin đó vẫn thoát ra mỗi khi nguồn điện bị ngắt nhưng SRAM là bộ nhớ chỉ lưu
thông tin cho đến khi có điện và khi ngắt nguồn điện tất cả thông tin được lưu
trong SRAM sẽ bị xóa.
• Đặc tính / Thông số kỹ thuật của ATmega328P:
o Thiết kế hiệu suất cao.
o Tiêu thụ ít điện năng.
o Tổng số chân ngõ vào Analog là 6.
o Chứa 32 KB bộ nhớ flash.
o Chứa 2 KB SRAM.
o Chứa 1 KB EEPROM.
o Tốc độ xung nhịp 16MHz.
o Nhiệt độ tối thiểu và tối đa -40 độ C đến 105 độ C.
o Tổng số chân I / O kỹ thuật số là 14 chân.
o RISC tiên tiến.
o Khóa chức năng chương trình để bảo mật mã lập trình.
o Chứa tổng cộng ba bộ định thời, hai 8 bit và một 16 bit.
o Tổng số chân I / O là 23 chân.
o Tổng số kênh PWM là 6.
o Điện áp hoạt động tối thiểu và tối đa từ 1.8V DC đến 5.5V DC.

5
Đồ án môn học GVHD: Trần Hoàng Quân

Sơ đồ chân ATmega328P

2.5 Blynk:

• Blynk được thiết kế cho Internet of Things. Nó có thể: điều khiển các thiết bị
phần cứng từ xa, hiển thị dữ liệu cảm biến, lưu trữ dữ liệu, ...

Cách thức giao tiếp Blynk

• Có ba thành phần chính trong nền tảng:


o 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.

6
Đồ án môn học GVHD: Trần Hoàng Quân

o 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.
o 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.

2.6 Cảm Biến Nhiệt Độ Độ Ẩm DHT11:

• Cảm biến độ ẩm và nhiệt độ DHT11 Temperature Humidity Sensor là cảm biến


rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1
wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích
hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất
kỳ tính toán nào. So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng
đo và độ chính xác kém hơn.

Cảm Biến Nhiệt Độ Độ Ẩm DHT11

• DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 dây.
• Thông số kỹ thuật:
o Đo độ ẩm: 20%-95%.
o Nhiệt độ: 0-50ºC.
7
Đồ án môn học GVHD: Trần Hoàng Quân

o Sai số độ ẩm ±5%.
o Sai số nhiệt độ: ±2ºC.

2.7 Module I2C giao tiếp với LCD:

Module I2C PCF8574

• Module I2C LCD: là module chuyển đổi từ giao tiếp song song sang giao tiếp
I2C cho LCD 1602, LCD 2004.
o Thông thường giao tiếp LCD 1602, LCD 2004 với Arduino cần tới 7 pin IO.
Với việc gắn thêm Module I2C vào sẽ giúp tiết kiệm Pin kết nối (chỉ 4 pin)
khi giao tiếp LCD với Arduino, Raspberry. Đồng thời đem lại sự tiện dụng
khi thực hành giao tiếp LCD.
• Thông số kỹ thuật Module I2C LCD:
o Tương thích với màn hình: LCD 1602, LCD2004.
o Nguồn cung cấp: +5V DC.
o Hỗ trợ giao thức: I2C.
o Điều chỉnh độ sáng đèn nền và độ tương phản qua biến trở.
o Chân kết nối: SDA, SCL, VCC, GND.
o Kích thước: 41.5mm x 19mm x 16mm.

8
Đồ án môn học GVHD: Trần Hoàng Quân

2.8 Keypad 4x4:

• Gồm 8 pin out trong đó 4 pin đầu


là hàng (R1 R2 R3 R4) và 4 pin
sau là cột (C1 C2 C3 C4).
• Nguồn đi qua tối đa là 24V và
dòng tối đa là 30mA.
• Nhiệt độ hoạt động từ 0 đến 50 độ
C.

Keypad 4 × 4

Cách đọc giá trị:

• Bước 1: Đặt pin tất cả hàng thành output và đặt điện áp dương vào đó. Tiếp theo,
đặt pin ở tất cả cột làm input. Khi đó nếu một nút ở cột x được bấm thì giá trị tại
Cx sẽ sẽ mang mức logic cao (do thông mạch), khi đó ta xác định được cột được
bấm.
• Bước 2: Đặt pin tất cả cột thành output và đặt điện áp dương vào đó. Tiếp theo,
đặt pin ở tất cả hàng làm input. Khi đó nếu một nút ở hàng x được bấm thì giá trị
tại Rx sẽ sẽ mang mức logic cao (do thông mạch), khi đó ta xác định được hàng
được bấm.

9
Đồ án môn học GVHD: Trần Hoàng Quân

Mạch nguyên lý của keypad

3. THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG

• Yêu cầu thiết kế:


o Liệt kê các yêu cầu đặt ra.
o Mở và khóa cửa điện từ bằng Passwords, Passwords có thể được thay đổi một
cách dễ dàng không cần thông qua code. Passwords gồm tối đa 8 kí tự số và
có sử dụng các nút để chọn chế độ.
o Điều khiển đèn thông qua ứng dụng Blynk, bằng nút nhấn và bằng giọng nói.
o Tốc độ nhanh, hiệu quả, không dưới 2 giây để cập nhật các thay đổi.
o Hệ thống hoạt động chính xác và ổn định.
o Điện áp hoạt động của hệ thống không gây nguy hiểm đến người sử dụng.
• Phân tích thiết kế
❖ Lựa chọn giải pháp: Dựa vào các yêu cầu trên thì ta cần chọn sơ đồ thiết kế
cũng như linh kiện phù hợp
o Thứ nhất: Linh kiện để nhập Passwords và hiển thị Passwords, do
Passwords gồm tối đa 8 số nên ta cần chọn bàn phím có ít nhất 8 loại nút,
ngoài ra còn phải có thêm các nút để chọn chế độ sử dụng. Do đó linh
kiện phù hợp nhất để nhập là Keypad 4x4: gồm các số từ 0-9, hai kí tự *
và #, và 4 phím A, B, C, D. Keypad 4x4 có loại cảm ứng và loại bấm. Tuy
nhiên sau khi thử qua bàn phím cảm ứng điện dung để đạt được yêu cầu

10
Đồ án môn học GVHD: Trần Hoàng Quân

thẩm mĩ thì kết quả cho thực sự rất nhiễu và em chưa có phương pháp giải
quyết điều đó, do đó chọn loại bấm sẽ là tốt hơn.
o Thứ hai: Để bảo vệ nhà cửa khỏi cháy nổ, thường thấy các hệ thống khác
sử dụng cảm biến khí Gas để xác định, tuy nhiên em đặt ra câu hỏi, cảnh
báo cháy nổ là việc quan trọng, nếu trước lúc cháy cảm biến khí gas không
nhận ra được thì như thế nào. Do đó để có thể đảm bảo hơn nên có một
cảm biến nhiệt độ nằm ngoài phòng khách, cảm biến này chẳng những có
thể đo nhiệt độ để phòng ngừa cháy nổ ngoài ra còn có thể cho ta biết
được tính chất của môi trường ngôi nhà lúc này, qua đó ta có thể phát triển
thực hiện hành động là mở máy lạnh từ xa để khi về nhà có được môi
trường tốt nhất (tuy nhiên chức năng này không được thể hiện qua đồ án
này). Cảm biến nhiệt độ thường thấy là DHT 11 và DHT 22 hoặc AM2302
về sơ lược thì DHT 22 có khoảng đo rộng hơn so với DHT 11 và khoảng
chênh lệch này không cần tới vì chẳng bao giờ đạt được điều đó và DHT
22 lại mắc hơn DHT 11 nhiều. Tuy nhiên do nguyên vật liệu có sẵn, đồ
án này sử dụng DHT 11.
o Thứ ba, là điều khiển đèn bằng điện thoại và giọng nói. Để bật tắt thì ta
cần đầu vào gồm tín hiệu từ vi xử lí và đầu ra là một “công tắc” để đóng
cắt dựa theo tín hiệu đó, ngoài ra nguồn cấp cho thiết bị cần dùng một
đường dây riêng chứ không lấy từ vi xử lí. Vì thời gian và kinh phí hạn
hẹp nên bọn em chỉ dùng LED đơn sử dụng điện áp 5V để thực hiện đồ
án này.
o Thứ tư, là về các linh kiện cơ bản cần tương tác: bao gồm LCD, đèn, nút
bấm, thì cần lựa chọn những linh kiện phù hợp với đồ án. Sau khi chọn
các linh kiện thì cần chọn bộ nguồn để cấp cho toàn bộ hệ thống.
• LCD do chỉ hiển thị hai dòng là đủ (một dòng là đề mục và một dòng
hiển thị Passwords nhập vào). Do đó có thể sử dụng LCD 16x02, tuy
nhiên cần ít nhất 8 chân để điều khiển nó, vì vậy để giảm thiểu số chân
ít hơn nữa đồ án quyết định sử dụng một module I2C dành riêng cho
LCD để điều khiển.

11
Đồ án môn học GVHD: Trần Hoàng Quân

• Đèn để hiển thị có thể sử dụng đèn 3.3V chỉ để giả lập, thực tế sử dụng
sẽ là đèn có nguồn vào là 220V. Để dễ dàng thấy thì nên sử dụng đèn
siêu sáng.
• Nút bấm nên dùng loại công tắc (SWITCH) để có thể giống với thực
tế nhất. Tuy nhiên do linh kiện có sẵn nên đồ án dùng loại bình thường
(PUSH).
o Thứ năm là chọn vi xử lí phù hợp, từ các linh kiện trên ta thấy sẽ có các
loại kết nối sau:
• 1 linh kiện sử dụng I2C là module I2C cho LCD.
• 1 chân Digital cảm biến nhiệt độ, độ ẩm.
• 3 Digital Output là đèn, khóa mở cổng tự động
• Kết nối được internet
Do đó vi xử lí có thể chọn là ESP 8266 hoặc ESP 32, tuy nhiên do để tiết
kiệm chi phí và phù hợp với yêu cầu của đồ án, chúng em chọn ESP8266.
o Thứ sáu là về vấn đề cấp nguồn. Từ các linh kiện trên ta thấy:
• Cảm biến nhiệt độ, độ ẩm và đèn led siêu sáng được cấp điện 3.3 VDC
• I2C, LCD, nút nhấn, được cấp nguồn 5VDC.
Từ đó ta xác các nguồn sử dụng gồm loại 3.3V, 5V. Do đó vấn đề về nguồn
trong đồ án này khá đơn giản.
• Sơ đồ khối chi tiết:

12
Đồ án môn học GVHD: Trần Hoàng Quân

IFTTT BLYNK ESP8266


APP

KEYPAD

CẢM BIẾN NHIỆT ĐỘ, ATMEGA328P MODULE


ĐỘ ẨM (DHT11)
I2C LCD

ĐÈN LED CỬA


ĐIỆN TỬ

NÚT NHẤN

NGUỒN 5V NGUỒN 3V3

o Khối nguồn: điện áp 5V, 3.3V.


o Kit NodeMCU-32s ESP32: Xử lí và tiếp nhận dữ liệu từ app Blynk từ điện
thoại thông qua giao tiếp WIFI. Làm trung gian cho ATmega328P và mạng
WIFI.
o Cảm biến nhiệt độ, độ ẩm: Đọc giá trị nhiệt độ, độ ẩm đưa vào MCU.
o MCU ATmega328P: tiếp nhận, xử lí các giá trị của cảm biến, giao tiếp với
ESP8266 thông qua chuẩn UART.
o Nút nhấn: Điều khiển bật tắt đèn phòng khách.
o Keypad: Nhập Passwords.
o Cửa điện tử dùng động cơ servo.
o Đèn Led siêu sáng: Dùng để chiếu sáng giả lập đèn cho đèn ngoài thực tế.
o LCD 16x2: Hiển thị hướng dẫn nhập mật khẩu, nhiệt độ, độ ẩm.
o I2C module: Giảm số chân dùng cho việc giao tiếp với vi xử lí.
• Mô phỏng trên Proteus:

13
Đồ án môn học GVHD: Trần Hoàng Quân

4. THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM:

4.1. Yêu cầu thiết kế:

• Phải có app để điều khiển thiết bị, và có app để điều khiển bằng giọng nói
• Các cảm biến không cần đọc giá trị một cách liên tục nên cần có thời gian giãn
cách giữa giữa các lần đọc.
• Password khi nhập được hiển thị giá trị lên màn hình vì nếu có người lạ ở đó
nhìn thấy được thì sẽ vào nhà được.
• Trạng thái đèn được điều khiển bằng nút nhấn hoặc giọng nói phải đồng bộ với
Blynk.
• Phải có 2 chế độ cài đặt cho việc đóng mở cửa:
o Chế độ mở khóa cửa: Khi nhập đúng Passwords thì sẽ mở khóa cửa.
o Chế độ thay đổi Passwords: Sau khi nhập Passwords cũ thì sẽ có thể đổi
Passwords.

14
Đồ án môn học GVHD: Trần Hoàng Quân

4.2. Phân tích thiết kế:

• Thứ nhất là về vấn đề điều khiển thông qua app. Việc viết một ứng dụng cho
điện thoại thật sự rất khó, do đó để dễ dàng nên lựa chọn các ứng dụng được tạo
ra để tạo giao diện. Qua khoảng thời gian nghiên cứu thì đồ án quyết định sử
dụng app Blynk để tạo giao diện vì đây là một nguồn mở có cộng đồng hỗ trợ
rộng rãi và rất dễ dàng để tạo giao diện.
• Thứ hai là vấn đề về điều khiển bằng giọng nói, các yêu cầu đặt ra là nó phải dễ
sử dụng và có thể liên kết dược với hệ thống. Do đó đồ án quyết định sử dụng
google assistant để điều khiển, việc liên kết với Blynk sẽ được thông qua một
bên thứ 3 nữa là IFTTT. Đây là một cầu nối giúp xem xét những câu nói được
cài đặt sẵn qua đó sẽ gán lệnh xuống Blynk nếu câu nói đúng cấu trúc đã cài.
• Thứ ba là về vấn đề đồng bộ đèn, đồng bộ bằng cách nếu nút nhấn được nhấn thì
thay đổi trạng thái blynk và trạng thái đèn và khi Blynk được nhấn thì thay đổi
trạng thái đèn tương ứng trạng thái thiết bị trên Blynk
• Thứ ba là các chế độ đóng mở cửa cần giải quyết vấn đề là nhập Passwords. Để
nhập Passwords thì cần một phím để xác nhận bắt đầu nhập, và 3 phím để kết
thúc quá trình nhập. Đồ án sử dụng phím A để bắt đầu nhập và ba phím B, C, D
dùng để kết thúc quá trình nhập cũng là ba phím chọn chế độ hoạt động.
• Thứ tư là giải quyết việc đọc nút nhấn, cần phải có thủ thuật chống rung nút
nhấn. Đồ án sử dụng chống rung nút nhấn bằng phần mềm.

• Lưu đồ giải thuật:

15
Đồ án môn học GVHD: Trần Hoàng Quân

16
Đồ án môn học GVHD: Trần Hoàng Quân

5. KẾT QUẢ THỰC HIỆN

5.1. Kết quả tạo app bằng Blynk:

Hình 5.1: Giao diện trên app và web của ứng dụng Blynk.

17
Đồ án môn học GVHD: Trần Hoàng Quân

5.2. Kết quả:

Hình 5.2: Giảo tiếp LCD với Keypad.

18
Đồ án môn học GVHD: Trần Hoàng Quân

19
Đồ án môn học GVHD: Trần Hoàng Quân

Hình 5.3: Giao tiếp với đèn Led.

• Đánh giá về kết quả làm việc nhóm:


o 3 thành viên trong nhóm đã cố gắng hoàn thành bài tập lớn.
o Mục tiêu chung của nhóm là cố gắng kết nối với google assistant với module
esp8266, nhưng khi kết nối với app IFTTT thì app báo lỗi, không cài đặt được.

20
Đồ án môn học GVHD: Trần Hoàng Quân

6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1 Kết luận:

• Xây dựng được mô hình để ứng dụng điều khiển các thiết bị điện trong nhà bằng công
tắc cảm ứng
• Hệ thống có thể điều khiển được thiết bị điện từ xa thông qua wifi bằng phần mềm
Blynk, bằng giọng nói với Google Assistant.
• Đã đồng bộ được giữa điều khiển thiết bị điện trong nhà bằng công tắc cảm ứngvới app
Blynk cũng như Google Assistant giúp ta có thể giám sát các thiết bị trong nhà thông
qua giao diện của Blynk.
• Khuyết điểm:
o Chưa liên kết phần cứng lại với nhau, tốn nhiều chân khi kết nối keypad hay
ngoại vi đơn giản.
o Thời gian phản hồi hơi chậm vì thông qua UART.
o Thay đổi password trên phần cứng, chưa thể đồng bộ trên Blynk.
o Phụ thuộc vào Wifi nên khi cúp điện thì thiết bị không hoạt động được,
khoảng cách kết nối còn hạn chế.

6.2 Hướng phát triển

• Tự phát triển app Android, IOS để điều khiển thiết bị qua wifi.
• Sử dụng mạng ZIGBEE để có thể truyền xa, đỡ hao tốn năng lượng và không
nhiễu.
• Phát triển thêm các hệ thống khác cho phòng ngủ, nhà bếp, sân vườn, ... được
hoạt động điều khiển qua lại với nhau.
• Phát triển thêm các thiết bị có thể điều khiển trong nông nghiệp.
• Áp dụng trí thông minh nhân tạo vào hệ thống.

7. TÀI LIỆU THAM KHẢO

[1] Thông tin về NodeMCU ESP8266: https://components101.com/development-


boards/nodemcu-esp8266-pinout-features-and-datasheet

21
Đồ án môn học GVHD: Trần Hoàng Quân

[2] Atmega328P datasheet: https://datasheet.octopart.com/ATMEGA328P-MU-


Microchip-datasheet-65729177.pdf
[3] Blynk: https://tapit.vn/huong-dan-cai-dat-server-blynk-tren-windows-khong-
gioi-han-energy/
[4] Arduino for ESP8266: https://arduino.esp8266.vn/

8. PHỤ LỤC:

Code:

• SERVO:

#define LED 3
#define button 4
#include <Servo.h>
Servo myservo;
int pos = 0;
boolean buttonstate = 1;
boolean ledstate = 0;

void setup() {
Serial.begin(9600);
pinMode(button,INPUT_PULLUP);
pinMode(LED,OUTPUT);
myservo.attach(13);
}

void loop() {
if(digitalRead(button) == 0) {
if(buttonstate != 0) {
if(ledstate == 0) {
digitalWrite(LED,LOW);
Serial.print("ledon");
}
else {
digitalWrite(LED,HIGH);
Serial.print("ledoff");
}
ledstate = !ledstate;
}
buttonstate = 0;
}
else {
buttonstate = 1;

22
Đồ án môn học GVHD: Trần Hoàng Quân

}
if(Serial.available()) {
String RxBuffer = "";
while(Serial.available()) {
RxBuffer = Serial.readString();
}
if(RxBuffer == "ledon"){
digitalWrite(LED,HIGH);
Serial.println("Led đã on!");
}
else if(RxBuffer == "ledoff"){
digitalWrite(LED,LOW);
Serial.println("Led đã off!");
}
if(RxBuffer == "closed") {
for(pos = 90; pos >= 1; pos -= 1) {
myservo.write(pos);
delay(15);
}
}
else if(RxBuffer=="opened"){
for(pos = 0; pos < 90; pos += 1) {
myservo.write(pos);
delay(15);
}
}
}
}

• KEYPAD_LCD:

#include <Keypad.h>
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27,20,4);

Servo myservo;
char password[4];
char initial_password[4], new_password[4];
int pos = 90;
int i = 0;
char key_pressed = 0;
const byte rows = 4;
const byte columns = 4;
char keys[rows][columns] = { {'1','2','3','A'},

23
Đồ án môn học GVHD: Trần Hoàng Quân

{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'} ;

byte rowPins[rows] = {5,6,7,8};


byte columnPins[columns] = {9,10,11,12};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, columnPins, rows, columns);

void setup() {
Serial.begin(9600);
myservo.attach(13);
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Enter Password");
lcd.setCursor(0,1);
initialpassword();
}

void loop()
{
key_pressed = keypad.getKey();
if(key_pressed == '#')
change();
if(key_pressed) {
password[i++]=key_pressed;
lcd.print(key_pressed);
}
if(i == 4) {
delay(200);
for(int j = 0; j < 4; j++)
initial_password[j] = EEPROM.read(j);
if(!(strncmp(password, initial_password,4))) {
lcd.clear();
lcd.print("Pass Accepted");
for(pos = 90; pos >= 1; pos -= 1) {
myservo.write(pos);
delay(15);
}
delay(2000);
lcd.setCursor(0,1);
lcd.print("Pres # to change");
delay(2000);
lcd.clear();
lcd.print("Enter Password:");
lcd.setCursor(0,1);
i = 0;

24
Đồ án môn học GVHD: Trần Hoàng Quân

}
else {
lcd.clear();
lcd.print("Wrong Password");
lcd.setCursor(0,1);
lcd.print("Pres # to Change");
delay(2000);
lcd.clear();
lcd.print("Enter Password");
lcd.setCursor(0,1);
i = 0;
}
}
}

void change() {
int j = 0;
lcd.clear();
lcd.print("Current Password");
lcd.setCursor(0,1);
while(j < 4) {
char key = keypad.getKey();
if(key) {
new_password[j++] = key;
lcd.print(key);
}
key = 0;
}
delay(500);
if((strncmp(new_password, initial_password, 4))) {
lcd.clear();
lcd.print("Wrong Password");
lcd.setCursor(0,1);
lcd.print("Try Again");
delay(1000);
}
else {
j = 0;
lcd.clear();
lcd.print("New Password:");
lcd.setCursor(0,1);
while(j < 4) {
char key = keypad.getKey();
if(key) {
initial_password[j] = key;
lcd.print(key);
EEPROM.write(j,key);
j++;

25
Đồ án môn học GVHD: Trần Hoàng Quân

}
}
lcd.print("Pass Changed");
delay(1000);
}
lcd.clear();
lcd.print("Enter Password");
lcd.setCursor(0,1);
key_pressed = 0;
}

void initialpassword() {
for(int j = 0; j < 4; j++)
EEPROM.write(j, j+49);
for(int j = 0; j < 4; j++)
initial_password[j] = EEPROM.read(j);
}
• ESP8266_BLYNK:

#define BLYNK_TEMPLATE_ID "TMPL0RFDbHm3"


#define BLYNK_DEVICE_NAME "Tester"
#define BLYNK_AUTH_TOKEN "h7pZlOXJOCkUfmFKs81nwgqJQiKURQ59"

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

boolean led = 0;
boolean door = 0;
char auth[] = BLYNK_AUTH_TOKEN;
WidgetLED led_connect(V0);
char ssid[] = "PHONGTRO 30.42 L6-3";
char pass[] = "dinhthong@123";

void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}

void loop()
{
Blynk.run();
if(Serial.available()){
String RxBuffer="";
while(Serial.available()) {
RxBuffer = Serial.readString();

26
Đồ án môn học GVHD: Trần Hoàng Quân

}
if(RxBuffer == "ledon"){
led = 1;
Blynk.virtualWrite(V1,digitalRead(led));
}else if(RxBuffer == "ledoff"){
led = 0;
Blynk.virtualWrite(V1,digitalRead(led));
}
}
}

BLYNK_WRITE(V1){
int p = param.asInt();
digitalWrite(led, p);
if (p == 1) {
Serial.print("ledon");
}
else {
Serial.print("ledoff");
}
}

BLYNK_WRITE(V2){
int q = param.asInt();
digitalWrite(door, q);
if (q == 1) {
Serial.print("opened");
}
else {
Serial.print("closed");
}
}

27

You might also like