You are on page 1of 121

CHƢƠNG 1.

TỔNG QUAN

CHƢƠNG 1. TỔNG QUAN


1.1 ĐẶT VẤN ĐỀ
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. Rất nhiều ngƣời
nói rằng nó có thể sẽ trở thành kẻ thay đổi toàn bộ cục diện của thị trƣờng, bằng
cách khiến cho mọi vật đều đƣợc kết nối với nhau. 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 liên quan tới IoT, để 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, nên nhóm quyết
định chọn đề tài “ Điều khiển thiết bị điện thông qua trợ lý ảo Google Assistant”.
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 3G hoặc WIFI. Kèm theo đó là các tính năng nhƣ: điều chỉnh độ sáng
của từng đèn, giúp ngƣời sử dụng có thể chỉnh độ sáng phù hợp theo nhu cầu sử
dụng, hẹn giờ để bật tắt các thiết bị, giám sát nhiệt độ, độ ẩm và cảnh báo khi có
ngƣời lạ đột nhập vào nhà.
Đề tài mà nhóm sinh viên trƣớc đó đã làm có tên “ Thiết kế và thi công hệ
thống điều khiển và giám sát thiết bị nhà có hỗ trợ Google Assistant”, đây là đề
tài tốt nghiệp của nhóm sinh viên trƣờng đại học Sƣ Phạm Kỹ Thuật thành phố Hồ
Chí Minh. Nhóm đề tài này đã thực hiện đƣợc việc thiết kế phần cứng mạch điện
trên thiết bị có sẵn, thiết kế website và phần mềm điều khiển chạy trên hệ điều hành
Android để điều khiển và giám sát trạng thái của các thiết bị. Nhóm chúng em sẽ cải
tiến và phát triển đề tài này thông qua việc điều khiển độ sáng của các đèn bằng
giọng nói, hẹn giờ bật tắt các thiết bị. Ngoài ra hệ thống còn có chức năng cảnh báo
có ngƣời đột nhập vào nhà và hiển thị nhiệt độ, độ ẩm trên App Android. Dễ dàng

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 1


CHƢƠNG 1. TỔNG QUAN
cài đặt thông tin của wifi kết nối ( tên mạng và mật khẩu) cho các đèn sử dụng wifi
khi di chuyển tới một nơi khác.

1.2 MỤC TIÊU


Đối với phần cứng thì nhóm sẽ thi công lại khối công suất của các đèn chiếu
sáng nhằm mục đích phù hợp với yêu cầu điều khiển, thiết bị đèn có thể điều khiển
bằng điện thoại qua Wifi. Bên cạnh đó thiết kế mạch giám sát nhiệt độ, độ ẩm, và
chuyển động để ngƣời sử dụng có thể giám sát đƣợc nhiệt độ, độ ẩm và chuyển
động tại vị trí đặt thông qua app điện thoại.
Về phần mềm nhóm sẽ sự dụng Google Assistant (trợ lý ảo do Google phát
triển) để làm phƣơng tiện điều khiển các thiết bị đèn và bật tắt led và cảm biến
chuyển động trên thiết bị giám sát nhiệt độ, độ ẩm và chuyển động. Bên cạnh đó
nhóm 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. Phần mềm có thể nhận đƣợc phản hồi và hiển thị trạng thái của các
thiết bị đèn một cách trực quan, nhanh chóng lên ứng dụng, chỉ cần điện thoại và
các thiết bị đèn trong nhà đƣợc kết nối wifi hoặc 3G, nó giúp ngƣời sử dụng có thể
dễ dàng giám sát đƣợc tình trạng của các thiết bị khi không có ở nhà, đồng thời
phần mềm cũng có thể điều khiển đƣợc việc bật/tắt, hẹn giờ cũng nhƣ độ sáng của
các đèn. Giao diện phần mềm dễ dàng thao tác cho ngƣời sử dụng. Ứng dụng dễ
dàng cập nhật mà không ảnh hƣởng đến các dữ liệu đã cài đặt trƣớc đó.

1.3 NỘI DUNG NGHIÊN CỨU


- NỘI DUNG 1: Khảo sát lựa chọn các bóng đèn led trụ tròn (Led bulb)
chiếu sáng trên thị trƣờng, cảm biến đo nhiệt độ, độ ẩm và cảm biến phát
hiện chuyển động.
- NỘI DUNG 2: Các giải pháp thiết kế phần mềm và phần cứng.
- NỘI DUNG 3: Thiết kế khối công suất, khối điều khiển của đèn và mạch
giám sát nhiệt độ, độ ẩm và phát hiển chuyển động.
- NỘI DUNG 4: Thiết kế phần mềm điều khiển và hiển thị.
- NỘI DUNG 5: Thi công mô hình.
- NỘI DUNG 6: Đánh giá kết quả thực hiện.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 2


CHƢƠNG 1. TỔNG QUAN
1.4 GIỚI HẠN
- Đèn chiếu sáng có công suất 30W.
- Mỗi đèn chiếu sáng là một thiết bị độc lập có thể cài đặt kết nối.
- Sử dụng cảm biến DHT11 để đo nhiệt độ, độ ẩm và cảm biến PIR để phát
hiện chuyển động.
- Phần mềm điều khiển hỗ trợ điều khiển mô phỏng 2 bóng đèn.
- Khoảng cách điều khiển đèn và giám sát trạng thái của các thiết bị không
giới hạn, chỉ cần nơi đó có sóng 3G hoặc wifi.
- Kiểm soát đƣợc hoạt động của các thiết bị trên phần mềm điều khiển, biết
đƣợc đèn đang bật hay tắt, nhiệt độ, độ ẩm hiện tại là bao nhiêu, nhà có ai
đột nhập vào không. Tất cả đƣợc hiển thị lên phần mềm.

1.5 BỐ CỤC
Chƣơng 1: Tổng quan
Chƣơng 2: Cơ sở lý thyết
Chƣơng 3: Thiết kế và tính toán
Chƣơng 4: Thi công hệ thống
Chƣơng 5: Két quả, đánh giá và nhận xét
Chƣơng 6: Kết luận và hƣớng phát triển
- Chƣơng 1: Tổng quan
Chƣơng này đặt vấn đề, lý do chọn đề tài, mục tiêu nội dung nghiên cứu, các
giới hạn thông số và bố cục đồ án.
- Chƣơng 2: Cơ sở lý thuyết
Chƣơng này trình bày các lý thuyết nền tảng để dựa trên lý thuyết này thực
hiện đồ án.
- Chƣơng 3: Thiết kế và tính toán
Chƣơng này trình bày tính toán thiết kế phần cứng mạch điện và phần mềm
chạy trên điện thoại thông minh sử dụng hệ điều hành Android.
- Chƣơng 4: Thi công hệ thống
Chƣơng này trình bày về thi công hệ thống: thi công mô hình, lập trình hệ
thống, lập trình mô phỏng và viết tài liệu hƣớng dẫn lập trình thao tác.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 3


CHƢƠNG 1. TỔNG QUAN
- Chƣơng 5: Kết quả, nhận xét và đánh giá
Chƣơng này trình bày về những kết quả đồ án mà nhóm làm đƣợc, nhận xét và
đánh giá các kết quả làm đƣợc.
- Chƣơng 6: Kết luận và hƣớng phát triển
Chƣơng này trình bày những kết quả mà nhóm làm đƣợc so với mục tiêu đề ra
và hƣớng phát triển của đề tài.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 4


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU
Theo mong muốn đề tài là điều khiển thiết bị điện thông qua trƣ lý ảo Google
Assistant thì nhóm cần tìm hiểu các nội dung sau:
- Giới thiệu về trợ lý ảo Google Assistant.
- Khái niệm về cơ sở dữ liệu Firebase.
- Tổng quan vè hệ điều hành Android.
- Tổng quan về Wifi.

2.2 GIỚI THIỆU VỀ TRỢ LÝ ẢO GOOGLE ASSISTANT.


2.2.1 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…

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

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 5


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT

2.2.3 Ƣu điểm và nhƣợc điểm


a. Ưu điểm
- Khả năng nhận dạng Tiếng Việt trên Google Assistant rất tốt.
- Ngƣời dùng thao tác mà không cần chạm vào điện thoại nhƣ yêu
cầu gọi điện hoặc nhắn tin cho một ai đó, hẹn giờ, đặt nhắc nhở, lên
lịch hẹn…
- Trợ lý của Google có thể làm tính, chuyển đổi đại lƣợng, tính tỷ
giá... trả lời các câu hỏi liên quan đến thể thao, du lịch, tìm nhà hàng,
trạm xăng...
- Google Assistant cho phép ngƣời dùng điều khiển các thiết bị
thông minh trong nhà bằng Tiếng Việt.
b. Nhược điểm
- Nhiều câu hỏi trợ lý ảo không đƣa ra câu trả lời trực tiếp mà chỉ
gợi ý các kết quả từ Google Seach.
- Mặc dù đã hỗ trợ Tiếng Việt, nhƣng với các câu hỏi cho nhà thông
minh, Assistant lại trả lời bằng Tiếng Anh.

2.3 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU FIREBASE


2.3.1 Khái niệm
Firebase là một dịch vụ API (giao diện lập trình ứng dụng) để lƣu trữ và đồng
bộ dữ liệu giữa hai hay nhiều thiết bị với nhau. Firebase hoạt động dựa trên nền
tảng đám mây đƣợc cung cấp bởi Google nhằm giúp đỡ các lập trình viên phát triển
nhanh ứng dụng bằng cách đơn giản hóa các thao tác ứng dụng với cơ sở dữ liệu

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT

Hình 2.1. Trao đổi dữ liệu giữa FIREBASE với các thiết bị
2.3.2 Lịch sử phát triển
Firebase đƣợc thành lập bởi Tamplin và Lee . Hai nhà sáng lập này đã dựa vào
một dịch vụ API chat trực tuyến vào trang web đƣợc cung cấp bởi Envolve, các nhà
phát triển sử dụng Envolve để đồng bộ hóa dữ liệu các trạng thái trò chơi trong thời
gian thực lên trang web. Dựa vào yếu tố này Tamplin và Lee đã quyết định tách
riêng hệ thống chat và kiến trúc thời gian thực để thành lập một cơ sở dữ liệu
firebasse riêng biệt vào tháng 4 năm 2012. Vào ngày 21 tháng 10 năm 2014 Google
đã mua lại Firebase.

2.3.3 Các chức năng chính của Firebase [2]


- Realtime Database – Cơ sở dữ liệu thời gian thực
Fire ase lƣu trữ dữ liệu data ase dƣới dạng JSON và thực hiện đồng bộ
database tới tất cả các client theo thời gian thực. Chúng ta có thể xây dựng đƣợc
client đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng
chung 1 database đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong
data ase đƣợc thêm mới hoặc sửa đổi.
- Firebase Authentication – Hệ thống xác thực của Firebase
Với Firebase chúng ta có thể dễ dàng tích hợp các công nghệ xác thực của
Google, Facebook, Twitter, … hoặc một hệ thống xác thực mà chúng ta mình tạo ra
từ trong ứng dụng ở bất kì nền tảng nào nhƣ Android, iOS hoặc Web.
- Firebase Hosting
Chúng ta có thể triển khai một ứng dụng nền web chỉ với vài giây với hệ thống

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 7


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
Firebase, và các dữ liệu sẽ đƣợc lƣu trữ đám mây đồng thời đƣợc bảo mật thông qua
giao thức truy cập SSL.

2.3.4 Ƣu nhƣợc điểm của Firebase


a. Ưu điểm
- Triển khai ứng dụng cực nhanh.
- Tính bảo mật cao.
- Linh hoạt và mở rộng ứng dụng dễ dàng.
- Tình ổn định cao, ít khi gặp trƣờng hợp sập server.
- Ngƣời đăng ký đƣợc sử dụng miễn phí 1GB dung lƣợng lƣu trữ.
b. Nhược điểm
Đăng ký tài khoản miễn phí thì chỉ đƣợc tối đa 100 thiết bị hoặc
ngƣời truy cập trong khi có tính phí thì không giới hạn thiết bị hoặc ngƣời
truy cập.

2.4 GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID


2.4.1 Khái niệm về Android.
Android là một hệ điều hành có mã nguồn mở dựa trên nền tảng Linux đƣợc
thiết kết dành cho các thiết bị di động và máy tính bảng.

2.4.2 Lịch sử phát triển


Tổng công ty Android (Android, Inc.) đƣợc thành lập tại Palo Alto, California
vào tháng 10 năm 2003 bởi Andy Rubin. Vào năm 2005 Google mua lại công ty
này sau đó tới năm 2007 chính thức ra mắt hệ điều hành Android.
Từ năm 2008, hệ điều hành Android đã trải qua nhiều lần cập nhật để dần dần
cải tiến hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát
hành trƣớc. Mỗi bản nâng cấp đƣợc đặt tên lần lƣợt theo thứ tự bảng chữ cái, theo
tên của một món ăn tráng miệng.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT

Hình 2.2. Các phiên bản hệ điều hành Android qua các lần nâng cấp
2.4.3 Ƣu nhƣợc điểm của hệ điều hành Android [1]
a. Ưu điểm
- Thân thiện dễ sử dụng với ngƣời dùng.
- Khả năng đa nhiệm chạy cùng lúc nhiều ứng dụng.
- Đa dạng nhiều sản phẩm phù hợp hầu hết các thiết bị điện thoại và
máy tính bảng.
- Kho ứng dụng Google Play có rất nhiều ứng dụng hay mà ngƣời
dùng có thể lựa chọn tải về sử dụng.
- Là hệ điều hành có khả năng tùy biến cao ngƣời dùng có thể chỉnh
sữa mà không có sự cấm cản từ nhà sản xuất.
b. Nhược điểm
- Không tự động cập nhật hệ điều hành với tất cả thiết bị, khi một hệ
điều hành mới ra mắt ngƣời dùng có thể không cập nhật đƣợc mà
phải mua một thiết bị khác có hệ điều hành đó.
- Khó kiểm soát chất lƣợng ứng dụng khi quá nhiều ứng dụng đƣợc
tải lên.
- Dễ nhiễm mã độc gây hại thiết bị do tính chất nguồn mở nên không
có sự kiểm soát.
- Sự phân cấp chất lƣợng sản phẩm lớn khi nhiều sản phẩm nổi tiếng
chất lƣợng nhƣ: Galaxy S10, Galaxy Note 9…, vẫn còn rất nhiều
sản phẩm giá rẻ bình thƣờng khác.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 9


CHƢƠNG 2. CƠ SỞ LÝ THUYẾT
2.5 GIỚI THIỆU VỀ CÁC CHUẨN GIAO TIẾP WIFI
2.5.1 Khái niệm về wifi
Wi-Fi viết tắt từ Wireless Fidelity hay mạng 802.11( bắt nguồn từ viện IEEE
(Institute of Electrical and Electronics Engineers) của Hoa kỳ) là hệ thống mạng
không dây sử dụng sóng vô tuyến, giống nhƣ điện thoại di động, truyền hình và
radio. Sóng wifi truyền và phát tín hiệu ở tần số 2.4 GHz hoặc 5 GHz. Tần số này
cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và
truyền hình. Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu hơn.

2.5.2 Các chuẩn của wifi [3]


- Wifi hay mạng 802.11 có 6 chuẩn thông dụng nhất đó là 802.11a, 802.11 ,
802.11g, 802.11n, 802.11ac, 802.11ad.
- Chuẩn 802.11 : Đây là phiên bản đầu tiên trên thị trƣờng. Chuẩn này có tốc
độ truyền chậm và ít phổ biến hơn so với các chuẩn khác. Chuẩn 802.11
phát tín hiệu ở tần số 2.4 GHz, nó có thể xử lý đến 11 Mbit/s và sử dụng mã
CCK (complimentary code keying).
- Chuẩn 802.11g: Cũng phát ở tần số 2.4 GHz, nhƣng nhanh hơn so với chuẩn
802.11 , tốc độ xử lý đạt 54 Mbit/s. Chuẩn 802.11g nhanh hơn vì nó sử
dụng mã OFDM (orthogonal frequency-division multiplexing), một công
nghệ mã hóa hiệu quả hơn.
- Chuẩn 802.11a: Phát ở tần số 5 GHz và có thể đạt đến 54 Mbit/s. Nó cũng sử
dụng mã OFDM.
- Chuẩn 802.11n: Phát ở tần số 2.4 GHz, nhƣng nhanh hơn so với chuẩn
802.11a, tốc độ xử lý đạt 300 Mbit/s.
- Chuẩn 802.11ac: phát ở tần số 5 GHz
- Chuẩn 802.11ad: phát ở tần số 60 GHz.
WiFi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số
khác nhau một cách nhanh chóng. Việc nhảy qua lại giữa các tần số giúp giảm thiểu
sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 10


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
3.1 TỔNG QUAN CỦA ĐỀ TÀI
Trong đề tài này, nhóm chúng em thiết kế các bóng đèn có thể điều chỉnh đƣợc độ
sáng bằng giọng nói thông qua Google assistant hoặc thao tác trên app Android.
Ngoài ra còn thiết kế mạch giám sát nhiệt độ, độ ẩm và chuyển động để ngƣời dùng
có thể biết đƣợc nhiệt độ, độ ẩm và chuyển động tại vị trí đặt hiện tại thông qua app
trên điện thoại. Cụ thể nhƣ:

- Phần cứng

Phần cứng của đề tài đƣợc xây dựng gồm 2 phần: Phần cứng của mạch
giám sát nhiệt độ, độ ẩm và chuyển động và phần cứng mạch điều khiển độ
sáng đèn.

Đối với phần cứng của mạch giám sát nhiệt độ, độ ẩm và chuyển động thì
phải đo đƣợc nhiệt độ, độ ẩm và giám sát chuyển động khi đƣợc ngƣời dùng
kích hoạt. Báo động khi nhiệt độ vƣợt ngƣỡng cho phép hoặc phát hiện chuyển
động. Mạch có kích thƣớc nhỏ gọn.

Đối với phần cứng của mạch điều khiển độ sáng đèn thì có thể điều khiển
đƣợc độ sáng. Mạch điều khiển có kích thƣớc nhỏ gọn phù hợp với không gian
đèn.

- Phần mềm
Phần mềm đƣợc xây dựng chạy trên nền tảng Android phiên bản 5.1 trở lên,
kích thƣớc màn hình 5.1 inch, độ phân giải 1440 x 2560 pixel hoặc lớn hơn.
Phần mềm xây dựng gồm 3 Activity gồm: Giao diện điều khiển và hiển thị
trạng thái các thiết bị đèn, giao diện hiển thị giá trị nhiệt độ, độ ẩm, cảnh báo
trộm, giao diện điều khiển hẹn giờ bật, tắt các thiết bị.
- Cơ sở dữ liệu

Lƣu trữ dữ liệu mà các thiết bị thu thập và đƣa lên, từ đó các thiết bị có thể đọc
về hoặc điện thoại có thể lấy về để hiển thị lên app ngƣời dùng.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 11


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
3.2.1 Sơ đồ khối hoạt động của hệ thống
a. Sơ đồ khối

Hình 3.1 Sơ đồ khối tổng quan của hệ thống


b. Nguyên lý hoạt động
Để hệ thống hoạt động đƣợc trƣớc tiên các thiết bị phải kết nối đƣợc với sóng
sóng Wifi. Riêng Google assistant, phần mềm điện thoại là các ứng dụng trên điện
thoại nên yêu cầu điện thoại kết nối Wifi hoặc 3G.

Sau khi các thiết bị đã kết nối thành công với Wifi, việc điều khiển thiết bị sẽ
thông qua điện thoại bằng 2 cách.

- Cách 1: Ta sẽ sử dụng trợ lý ảo Google (Google Assistant) để ra lệnh điều khiển


thiết bị bằng giọng nói. Dữ liệu đó sẽ đƣợc các thiết bị đèn nhận xử lý để điều khiển
độ sáng đèn sau đó đƣa dữ liệu đó lên Firebase, riêng mạch giám sát nhiệt độ, độ
ẩm và chuyển động ta chỉ điều khiển bật tắt cảm biến chuyển động và đèn led ngủ.
- Cách 2: Ta sẽ sử dụng đã App Android để điều khiển bằng cách gửi dữ liệu
thông qua Firebase, bộ phận xử lý của đèn sẽ nhận dữ liệu đó và điều khiển đèn.
Ngoài tính năng điều khiển thì phần mềm còn có chức năng hiển thị các trạng
thái của đèn, giá trị nhiệt độ, độ ẩm, cánh báo cháy trộm thông qua việc đọc dữ liệu
trên Firebase do bộ phận xử lý của đèn và bộ phận xử lý nhiệt độ, độ ẩm gửi lên.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 12


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
3.2.2 Thiết kế sơ đồ khối phần cứng bóng đèn
a. Yêu cầu
- Đóng mở qua App Android hoặc Google Assistant thông qua Wifi hoặc 3G.
- Điều chình đƣợc độ sáng dùng App Android hoặc Google Assistant thông
qua Wifi hoặc 3G.
- Hẹn giờ đóng mở đèn bằng App Android thông qua Wifi hoặc 3G.
- Lắp đặt dựa vào cách đi dây hiện tại của ngôi nhà.
b. Phƣơng án thiết kế
- Chọn các bóng đèn led trụ tròn( đèn bulb ) 30W thông dụng trên thị trƣờng
để đảm bảo tính thẩm mỹ.
- Dùng ESP8266 ESP-12E làm vi điều khiển trung tâm để tạo xung PWM, và
kết nối Wifi để nhận lệnh điều khiển từ điện thoại.
- Dùng Mosfet để điều chỉnh điện áp từ nguồn công suất cấp cho tấm led của
đèn.

c. Sơ đồ khối mạch điều khiển độ sáng đèn bulb.


- Khối nguồn công suất
- Khối nguồn điều khiển
- Khối xử lý trung tâm
- Khối cống suất
- Khối cơ sở dữ liệu
- Khối thực thi điều khiển và hiển thị

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 13


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.2 Sơ đồ khối hệ thống điều khiển đèn bulb chiếu sáng
d. Chức năng từng khối
- Khối nguồn công suất
Đây là nguồn có sẵn của đèn nguồn này cung cấp điện áp cho khối công
suất và cho đèn hoạt động.
- Khối nguồn điều khiển
Đây là nguồn xung nhỏ gọn điện áp ngõ ra 5VDC dòng khoảng 700mA
cung cấp nguồn cho mạch xử lý trung tâm (ESP8266 ESP-12E NodeMCU)

- Khối xử lý trung tâm (ESP8266 ESP-12E NodeMCU)


Khối này cập nhật dữ liệu từ cơ sở dữ liệu sau đó xử lý điều khiển khối
công suất.
- Khối cơ sở dữ liệu
Đây là nơi lƣu trữ dữ liệu giữa khối xử lý trung tâm và khối thực thi điều
khiển.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 14


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

- Khối công suất


Nhiệm vụ khối này là điều khiển độ sáng của đèn hoặc tắt mở đèn thông
qua lệnh điều khiển của khối xử lý trung tâm.
- Khối thực thi điều khiển và hiển thị
Đây là ứng dụng đƣợc viết trên điện thoại hệ điều hành android dùng để
gửi dữ liệu lên cơ sở dữ liệu và lấy dữ liệu về để hiển thị.

3.2.3. Thiết kế sơ đồ khối mạch giám sát nhiệt độ, độ ẩm và chuyển động
a. Yêu cầu

- Đo chính xác nhiệt độ, độ ẩm với sai số nhỏ.


- Bật tắt đƣợc cảm biến chuyển động .
- Báo động khi nhiệt độ vƣợt ngƣỡng cho phép hoặc khi phát hiện chuyển
động.
- Đƣa các dữ liệu thu thập lên cơ sở dữ liệu.
- Board mạch nhỏ gọn.

b . Phƣơng án thiết kế
- Chọn ESP8266 ESP-12E làm vi điều khiển trung tâm để giao tiếp với các
cảm biến và xử lí tín hiệu. Kết nối Wifi để đƣa dữ liệu lên cơ sỏ dữ liệu.
- Dùng cảm biến DHT11 để đo nhiệt độ, độ ẩm và cảm biến PIR AM312 để
phát hiện chuyển động.
- Dùng Buzzer để báo động.

c. Sơ đồ khối mạch giám sát nhiệt độ, độ ẩm và chuyển động.


- Khối nguồn điều khiển
- Khối xử lý trung tâm
- Khối cảm biến
- Khối cơ sở dữ liệu
- Khối thực thi điều khiển và hiển thị
- Khối báo động

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 15


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.3 Sơ đồ khối mạch giám sát nhiệt độ, độ ẩm và chuyển động
d. Chức năng từng khối
- Khối nguồn điều khiển
Đây là nguồn xung nhỏ gọn điện áp ngõ ra 5VDC dòng khoảng 700mA cung
cấp nguồn cho toàn mạch.

- Khối xử lý trung tâm (ESP8266 ESP-12E NodeMCU)


Khối này đọc giá trị từ khối cảm biến, xử lý để đƣa ra khối báo động và cập
nhật dữ liệu lên cơ sở dữ liệu.

- Khối cơ sở dữ liệu
Đây là nơi lƣu trữ dữ liệu giữa khối xử lý trung tâm và khối thực thi điều
khiển và hiển thị.

- Khối cảm biến

Dùng cảm biến DHT11 đo nhiệt độ, độ ẩm và cảm biến PIR AM312 giám sát
chuyển động, sau đó gửi dữ liệu đến khối xử lí trung tâm.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 16


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

- Khối báo động

Dùng buzzer báo động khi phát hiện chuyển động hoặc nhiệt độ tăng cao vƣợt
ngƣỡng cho phép.
- Khối thực thi điều khiển và hiển thị
Đây là ứng dụng đƣợc viết trên điện thoại hệ điều hành android dùng để gửi
dữ liệu lên cơ sở dữ liệu và lấy dữ liệu về để hiển thị.

3.2.4 Tính toán và thiết kế mạch


a. Thiết kế khối xử lý trung tâm
Do khối xử lí trung tâm của 2 mạch : mạch điều khiển độ sáng đèn và mạch
giám sát nhiệt độ, độ ẩm và chuyển động tƣơng tự nhau nên các linh kiện lựa
chọn sẽ giống nhau. Nên chúng em tính toán và thiết kế nhƣ sau:

Bảng 3.1. Bảng tiêu thụ dòng ở các chế độ khác nhau của ESP8266 NodeMCU

Dựa vào bảng tiêu thụ dòng của ESP8266 ở các chế độ khác nhau, để
ESP8266 hoạt động tốt trong những chế độ đó thì dòng tiêu thụ phải lớn hơn
170mA cho nên nhóm chúng em chọn dòng tiêu thụ ESP8266 là 300mA để đảm
bảo ESP8266 hoạt động tốt ở mọi chế độ tránh trƣờng hợp thiếu dòng hay sụt áp sẽ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 17


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

làm ESP8266 khởi động lại chƣơng trình.


Nguồn cung cấp cho ESP8266 hoạt động là từ 3~3.6VDC xét về mức dòng và
áp thì IC ổn áp tuyển tính AMS1117 phù hợp với ESP8266. Vì AMS1117 tạo ra
điện áp 3.3VDC và dòng có thể tạo ra gần 800mA.

Để ngõ ra nguồn 3.3 VDC ổn định và phẳng hơn nhóm em sử dụng tụ phân
cực 100uF lọc nguồn bởi vì để ESP8266 hoạt động theo chế độ pwm khi không
truyền nhận dữ liệu nhƣng vẫn duy trì kết nối để tiết kiệm năng lƣợng thì ESP8266
sẽ chạy ở chế độ Modem-sleep với dòng tiêu thụ 15mA. Ta có thông số sau:

Độ gợn sóng nguồn vào r%=6%=0.06 (3.1)


Tần số f=2x f0=2 x 50 =100 (3.2)

= = = 220Ω (3.3)

Công thức tính điện dung của tụ sau:

C= = = 109 uF , vậy ta chọn 100uF (3.4)


√ √

Tụ không phân cực 104 để lọc cao tần.

Do các đƣờng truyền dữ liệu ở mạch nạp CP2102 có ngõ ra điện áp 5 VDC vì
vậy để an toàn cho ESP8266 phải chắn diode zener 3.3VDC. Để hạn chế dòng cao
chạy thẳng vào ESP8266 ở các đƣờng truyền dữ liệu phải đƣợc nối tiếp với trở
1.8K.
Sử dụng trở 1.8k bởi vì theo datasheet ở chế Standby dòng tiêu thụ khoảng
0.9mA để đảm bảo an toàn và tiết kiệm năng lƣợng trong quá trình nạp chƣơng
trình.

Ta có : R = = = 1.88k, chọn 1k8 Ω (3.5)

Theo datasheet mức điện áp để ESP8266 hiểu là mức cao là từ


0.75VCCVCC+0.3. để tiết kiệm năng lƣợng và ESP8266 hoạt động an toàn dòng
bé hơn 0.9mA và điện áp mức cao là 2V vậy ta có:

R= = = 4.333k, chọn R = 4k7Ω (3.6)

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 18


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
 Sơ đồ nguyên lý mạch xử lý trung tâm điều khiển đèn bulb chiếu sáng
(ESP8266 ESP-12E NodeMCU)

Hình 3.4 Sơ đồ nguyên lý mạch xử lí trung tâm điều khiển đèn bulb
chiếu sáng

Trong đó, chân xuất PWM của ESP để điều khiển là chân D1 (GPIO5).

Tƣơng tự, ta có sơ đồ nguyên lý mạch xử lí trung tâm của mạch giám


sát nhiệt độ, độ ẩm và chuyển động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 19


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
 Sơ đồ nguyên lý mạch xử lý trung tâm giám sát nhiệt độ, độ ẩm và chuyển
động (ESP8266 ESP-12E NodeMCU)

Hình 3.5 Sơ đồ nguyên lý mạch xử lí trung tâm giám sát nhiệt độ, độ
ẩm và chuyển động

Trong đó, chân D5 (GPIO14) kết nối đến chân 1 của opto trong khối
báo động, chân D7 ( GPIO13) kết nối đến chân 1 của opto trong mạch kết
nối cảm biến PIR AM312, chân D1 (GPIO5) kết nối đến jump kết nối led
ngủ, chân D2 ( GPIO4) kết nối với chân data trong mạch kết nối cảm biến
PIR, chân D4 (GPIO2) kết nối chân data của cảm biến DHT11.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
b. Thiết kế khối công suất

Do khối xử lí trung tâm xuất xung với tần số 1khz nên ta có chu kì xung T =
1ms, với chu kì này thì opto PC817 vẫn đáp ứng đƣợc.

Để có điện áp mở cổng Mosfet IRF830 với Vgs ≤ 20VDC và nguồn cấp


vào opto PC817 phải nhỏ hơn hoặc bằng 35VDC nên ta sử dụng điện áp 5V từ
module nguồn điều khiển để kích vào chân G của Mosfet IRF830.

Chúng em chọn opto PC817 vì để đảm bảo cách ly về điện giữa khối công suất
và khối xử lý trung tâm và opto vẫn hoạt động tốt với áp và dòng điện trong
mạch. Ta có: dòng lớn nhất mà ESP xuất ra là Imax = 12mA,điện áp mức cao do
ESP xuất ra là 0.8xVdd = 0.8x3.3= 2.64V, điện áp cho phép đặt vào diode
quang của opto VF từ 1.2-1.4V. Do đó ta chọn điện trở:

R= = = 103,33 Ω , chọn R=100Ω (3.7)

Chúng em chọn Mosfet IRF830 vì nó có điện áp đánh thủng là 500V, dòng tải
tối đa là 5.9A, công suất 125W. Trong khi đó điện áp đặt vào đèn tối đa là
109,7 VDC, dòng tiêu thụ tối đa của đèn là 266,6 mA, công suất 30W. Do đó
Mosfet này đáp ứng đƣợc, không bị nóng.

Hình 3.6 Sơ đồ khối công suất mạch đèn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
c. Khối nguồn công suất

Đây là nguồn sẵn có của bóng đèn. Sau khi đo điện áp ngõ ra khi không có
tải là 210VDC, với điện áp ngõ vào là 220VAC.

Hình 3.7 Mạch nguồn công suất

d. Khối nguồn điều khiển

Đối với mạch điều khiển độ sáng đèn bulb thì dòng tiêu thụ tối đa của mạch
xử lý trung tâm (ESP8266 ESP-12E NodeMCU) là: ESP8266 ESP-12E
NodeMCU là 170mA + led báo là 10mA + opto PC817 là 50mA và thêm một số
linh kiện điện tử khác (điện trở, tụ điện). Vậy dòng tổng của khối xử lý trung tâm
này khoảng 300mA.

Đối với mạch giám sát nhiệt độ, độ ẩm và chuyển động thì dòng tiêu thụ tối đa
của mạch xử lý trung tâm (ESP8266 ESP-12E NodeMCU) là: ESP8266 ESP-12E
NodeMCU là 170mA + led báo là 10mA + opto PC817 là 50mA + DHT11 là
2.5mA + PIR AM312 là 0.1mA và thêm một số linh kiện điện tử khác (điện trở, tụ
điện). Vậy dòng tổng của khối xử lý trung tâm này khoảng 300mA.
Dựa vào các thông số dòng tiêu thụ của hai mạch xử lý trung tâm trên thì ta cần
phải có nguồn với điện áp ngõ ra +5VDC và dòng phải lớn hơn 300mA. Xét các
yếu tố kết hợp với yêu cầu mạch nguồn phải nhỏ gọn mà dòng thì lớn hơn 300mA
thì nhóm chúng em thấy trên thị trƣờng có bán một mạch nguồn đáp ứng đƣợc các
yêu cầu trên giá thành lại hợp lý nên nhóm chúng em chọn mua mạch nguồn loại
này.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.8 Module nguồn điều khiển

 Thông số kỹ thuật
- Mạch rất thích hợp cho các hệ thống tiêu thụ điện năng thấp ,nhỏ gọn, an
toàn.
- Điện áp ngõ vào : 90VAC – 230VAC
- Dòng ngõ vào : 14mA ( 220VAC)
- Điện áp ngõ ra : 5VDC
- Dòng ngõ ra : 0 – 700mA, maximum lên đến 750mA.
- Hiệu suất : 80%.
- Độ gợn sóng ( răng cƣa) : 6%
e. Khối cảm biến

 Cảm biến DHT11

Dùng cảm biến DHT11 để đo nhiệt độ, độ ẩm môi trƣờng xung quanh , 2 chân
nguồn kết nối với 5V và GND của mạch, chân DATA kết nối với chân GPIO 2 của
ESP8266 ESP-12E NodeMCU.

Hình 3.9 Sơ đồ kết nối DHT11

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 23


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ
 Thiết kế mạch kết nối cảm biến PIR AM312

Mạch thiết kế để điều khiển nguồn vào cho cảm biến PIR, bật tắt nguồn khi
ngƣời dùng yêu cầu. Điện áp ra 1 chân GPIO của ESP8266 ESP-12E NodeMCU là
3.3V nên ta phải dùng thêm opto PC817 để cấp nguồn 5V cho PIR . Chân DATA
kết nối với GPIO 4 của ESP8266 ESP-12E NodeMCU.

Trên mạch có led báo nguồn khi bật với điện trở hạn dòng

R= = 200, chọn R=220Ω. (3.8)

Chúng em chọn opto PC817 vì để đảm bảo cách ly về điện giữa khối công suất
và khối xử lý trung tâm và opto vẫn hoạt động tốt với áp và dòng điện trong mạch.
Ta có: dòng lớn nhất mà ESP xuất ra là Imax = 12mA,điện áp mức cao do ESP xuất
ra là 0.8xVdd = 0.8x3.3= 2.64V, điện áp cho phép đặt vào diode quang của opto
VF từ 1.2-1.4V. Do đó ta chọn điện trở:

R= = = 103,33 Ω , chọn R=100Ω (3.9)

Hình 3.10 Sơ đồ kết nối cảm biến PIR

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 24


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

f. Thiết kế mạch báo động

Điện áp hoạt động của Buzzer là 5V, trong khi điện áp ra của ESP8266 ESP-12E
NodeMCU chỉ đƣợc 3.3V, do đó ta cần dùng thêm opto PC817 để cấp nguồn 5V
cho Buzzer. Chân xuất tín hiệu ra là GPIO14.

Chúng em chọn opto PC817 vì để đảm bảo cách ly về điện giữa khối công suất
và khối xử lý trung tâm và opto vẫn hoạt động tốt với áp và dòng điện trong mạch.
Ta có: dòng lớn nhất mà ESP xuất ra là Imax = 12mA,điện áp mức cao do ESP xuất
ra là 0.8xVdd = 0.8x3.3= 2.64V, điện áp cho phép đặt vào diode quang của opto
VF từ 1.2-1.4V. Do đó ta chọn điện trở:

R= = = 103,33 Ω , chọn R=100Ω (3.10)

Hinh 3.11 Sơ đồ kết nối mạch báo động

3.2.5 Sơ đồ nguyên lí toàn mạch


Đối với mạch điều khiển độ sáng đèn bulb sơ đồ nguyên lý toàn mạch bao gồm
hai khối chính: Khối xử lý trung tâm (ESP ESP8266 ESP-12E NodeMCU),
khối công suất.

Nhƣ sơ đồ bên dƣới IC AMS1117 tạo nguồn 3.3VDC cấp cho ESP8266
hoạt động. Mạch xử lý trung tâm ESP8266 cấp xung cho khối công suất để cấp mức
điện áp phù hợp vào chân G của Mosfet IRF830 cho phép mở cổng điều chỉnh độ
sáng đèn hoặc tắt mở đèn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 25


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.12 Sơ đồ nguyên lý toàn mạch điều khiển độ sáng đèn bulb

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 26


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Đối với mạch giám sát nhiệt độ, độ ẩm và chuyển động, sơ đồ nguyên lý toàn
mạch bao gồm các khối chính: Khối xử lý trung tâm (ESP ESP8266 ESP-12E
NodeMCU), khối cảm biến, khối báo động.

Nhƣ sơ đồ bên dƣới IC AMS1117 tạo nguồn 3.3VDC cấp cho ESP8266
hoạt động, các khối còn lại sử dụng nguồn 5V.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 27


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.13 Sơ đồ nguyên lí mạch giám sát nhiệt độ, độ ẩm và chuyển


động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 28


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

3.2.6 Thiết kề phần mềm chạy trên hệ điều hành android


a. Yêu cầu thiết kế
- Hiển thị đƣợc trạng thái bật/tắt các thiết bị, độ sáng hiện tại của đèn.
- Hiển thị đƣợc nhiệt độ, độ ẩm hiện tại.
- Cảnh báo cháy, trộm thông qua App Android.
- Điều khiển bật/ tắt thiết bị thông qua các switch.
- Điều khiển độ sáng đèn bằng thanh seekBar.
- Hẹn giờ bật tắt các thiết bị.

b. Thiết kế phần mềm

- Tổng quan về phần mềm

Phần mềm thiết kế gồm 3 giao diện, giao diện chính sẽ hiển thị trạng thái
của đèn, độ sáng hiện tại của đèn. Ở giao diện này có thể điều khiển đƣợc đóng
mở đèn bằng các Switch, điều khiển đƣợc độ sáng bằng hai thanh SeekBar.

Giao diện thứ 2 hiển thị giá trị nhiệt độ, độ ẩm, hiển thị cảnh báo cháy, trộm
thông qua các hình ảnh giúp ngƣời dùng dễ dàng quan sát.

Giao diện thứ 3 dùng cài cài đặt thời gian bật và tắt các thiết bị.

- Thiết kế phần mềm


Ban đầu khi khởi động phần mềm sẽ có giao diện chính nhƣ sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 29


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.14 Giao diện phần hiển thị và điều khiển độ sáng các đèn.
Giao diện phần mềm gồm 4 TextView hiển thị tên đèn, và độ sáng của đèn
giúp ngƣời dùng quản lý dễ dàng, 2 ImageView hiển thị trạng thái bật tắt của thiết
bị, 2 Switch điều khiển đóng mở thiết bị, 2 thanh seekBar dùng điều khiển độ sáng
của đèn. Ngoài ra bên trên góc phải của giao diện có sử dụng một Menu khởi tạo để
chuyển sang các giao diện khác. Khi ngƣời dùng nhấn vào Menu khởi tạo thì sẽ có
hai sự lựa chọn gồm: “Nhiệt độ” hoặc “ Hẹn giờ” nếu chọn vào Nhiệt độ thì sẽ xuất
hiện giao diện mới nhƣ sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 30


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.15 Giao diện hiển thị nhiêt độ, độ ẩm, cảnh báo cháy, trộm.
Giao diện phần hiển thị nhiệt độ, độ ẩm, cánh báo cháy, trộm gồm 4
ImageView trong đó có hai ImageView sẽ hiển thị cố định hai icon (nhiệt độ và độ
ẩm), hai ImageView còn lại sẽ hiển thị cảnh báo cháy/trộm. Nếu App nhận đƣợc
dữ liệu về là an toàn thì sẽ hiển thị ảnh báo an toàn. Ngƣợc lại nếu giá trị nhận về
là không an toàn thì sẽ hiển thị ảnh cảnh báo giúp ngƣời dùng nhận biết đƣợc.
Ngoài ra giao diện còn sử dụng 4 TextView gồm: 2 TextView để hiển thị giá trị
của nhiệt độ, độ ẩm, hai TextView còn lại sẽ hiển thị cố định báo cháy và báo
trộm. Phía trên góc phải màn hình sử dụng một Menu khời tạo để chuyển trang các
giao diện khác. Khi ngƣời dùng nhấn vào thì sẽ hiển thị 2 lựa chọn ( Trạng thái
đèn và Hẹn giờ) nếu ngƣời dùng chọn vào “Hiển thị đèn” thì sẽ hiển thị giao diện
chính đầu tiên. Ngƣợc lại nếu ngƣời dùng chọn vào Hẹn giờ thì sẽ xuất hiện một
giao diện mới nhƣ sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 31


CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.16 Giao diện phần hẹn giờ bật/tắt các thiết bị.
Giao diện hiển thị hẹn giờ gồm 2 TexView để hiển thị tên giao diện và cái
còn lại để hiển thị thời gian hiện tại. Giao diện còn sử dụng 4 EditText để nhập
thời gian cần hẹn, khi chọn vào thì sẽ xuất hiện biểu tƣợng của một cái đồng hồ
giúp ta chọn thời gian dễ dàng hơn. Sau khi đã chọn thời gian bật/tắt thiết bị xong
ta sẽ nhấn vào các Button hẹn giờ 1 ( bật tắt đèn 1) hoặc Button hẹn giờ 2 ( bật tắt
đèn 2) lúc này các giá trị đó sẽ đƣợc đem so sánh với giờ hiện tại để thực thi việc
bật/ tắt đèn. Ngoài ra giao diện còn sử dụng thêm một Menu khởi tạo ở góc phải
màn hình, khi ta nhấn vào thì sẽ hiển thị hai lựa chọn ( Trạng thái đèn và Nhiệt độ)
giúp ta thay đổi giữa các giao diện.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 32


CHƢƠNG 4. THI CÔNG HỆ THỐNG
CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.1 GIỚI THIỆU
Sau khi hoàn thành công đoạn thiết kế nhóm chúng em tiến hành việc thi
công lắp ráp bóng đèn, lắp ráp mạch giám sát nhiệt độ, độ ẩm và chuyển động và
phần mềm ứng dụng nhƣ sau:

- Thi công hệ thống:

Thi công phần cứng.

Lắp ráp và kiểm tra.

- Thi công mô hình.

- Lập trình mạch điều khiển độ sáng đèn bulb.

- Lập trình mạch giám sát nhiệt độ,độ ẩm và chuyển động.

- Lập trình ứng dụng Android.

- Viết tài liệu hƣớng dẫn, thao tác.

4.2 THI CÔNG HỆ THỐNG


4.2.1 Thi công phần cứng:
a. Sơ đồ mạch in của mạch điều khiển độ sáng đèn bulb

Đối với mạch điều khiển độ sáng đèn bulb nhóm em vẽ mạch in 2 lớp PCB.

Hình 4.1 Sơ đồ mạch in lớp trên và dưới mạch điện điều khiển độ sáng đèn
bulb

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 33


CHƢƠNG 4. THI CÔNG HỆ THỐNG
b. Sơ đồ bố trí linh kiện trong mạch điều khiển độ sáng đèn bulb

Hình 4.2 Sơ đồ bố trí linh kiện mạch điều khiển độ sáng đèn bulb
c. Sơ đồ mạch in của mạch giám sát nhiệt độ, độ ẩm và chuyển động
Đối với mạch giám sát nhiệt độ, độ ẩm và chuyển động nhóm em vẽ mạch in 2
lớp PCB.

Hình 4.3 Sơ đồ mạch in lớp trên và dưới mạch giám sát nhiệt độ, độ ẩm và chuyển
động

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 34


CHƢƠNG 4. THI CÔNG HỆ THỐNG
d. . Sơ đồ bố trí linh kiện trong mạch giám sát nhiệt độ, độ ẩm và chuyển động

Hình 4.4 Sơ đồ bố trí linh kiện mạch giám sát nhiệt độ, độ ẩm và chuyển động.
Bảng 4.1 Danh sách các linh kiện sử dụng

STT Tên linh kiện Giá trị Số Chú thích


lƣợng
1 IC ổn áp Điện áp vào tối đa 3 Linh kiện dán kích
AMS 1117 15V, dòng ra tối thƣớc 6.71mm x .79mm
đa 1A x 1.8mm
2 Tụ 100uF Điện dung 100uF, 6 Linh kiện dán, kích
điện áp 25V thƣớc 6.3mmx7.7mm
3 Tụ 104 Điện dung 104pF, 3 Linh kiện xuyên lỗ
điện áp 25V kích thƣớc 2mm x
1.25mm
4 Điện trở 1k8 Ω Giá trị điện trở 9 Linh kiện dán kích
1k8 Ω, công suất thƣớc 2mm x 1.25mm
1/8W
5 Diode zener Diode zener 3V3, 9 Linh kiện xuyên lỗ,
công suất 1W
kích thƣớc 4.10mm x
2.6 mm

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 35


CHƢƠNG 4. THI CÔNG HỆ THỐNG

6 Điện trở 10k Ω Giá trị điện trở 11 Linh kiện dán,
10k Ω, công suất kích thƣớc 2mm x
1/8W 1.25mm
7 Điện trở 4k7 Ω Giá trị điện trở 9 Linh kiện dán, kích
4k7 Ω, công suất thƣớc 2mmx1.25mm
1/8W
8 ESP8266 ESP- Điện áp 3.0V – 3 Linh kiện dán 16mm x
12E NodeMCU 3.6 V 24mm x 3mm
Dòng tiệu thụ
trung bình 80mA
9 Opto PC817 Điện áp vào chân 4 Linh kiện xuyên lỗ,
1 không quá 6V, kích thƣớc 7.62mm x
điện áp qua chân 4 4.58mm x 3.5mm
không quá 35V,
dòng tiêu thụ
trung bình 50mA
10 Mosfet irf 830 Điện áp chịu đựng 2 Linh kiện xuyên lỗ
không quá 500V,
điện áp kích
không quá
20V,công suất
125W
11 Điện trở 220Ω Giá trị điện trở 4 Linh kiện dán
220, công suất kích thƣớc 2mm x
1/8W 1.25mm
12 Điện trở 100Ω Giá trị điện trở 4 Linh kiện dán
100, công suất kích thƣớc 2mm x
1/8W 1.25mm
13 Led xanh lá Điện áp hoạt 4 Linh kiện dán
kích thƣớc 2mm x
động từ 3.0V – 1.25mm
3.4 V, dòng
tiêu thụ 10mA

14 Cảm biến 1 Linh kiện xuyên lỗ


Điện áp hoạt động
DHT11
3V – 5V (DC),
dòng tiêu thụ
2.5mA

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 36


CHƢƠNG 4. THI CÔNG HỆ THỐNG

15 Điện áp chịu đựng 3


Nút nhấn 2 chân Linh kiện dán,
12VDC,dòng chịu Kích thƣớc
đựng 50mA 6.0x3.6x2.5mm
16 Buzzer Điện áp hoạt động 1 Linh kiện xuyên lỗ
5V
17 Đế cắm bus 2 10 Linh kiện xuyên lỗ
chân
18 Đế cắm bus 3 1 Linh kiện xuyên lỗ
chân
19 Đế cắm bus 4 1 Linh kiện xuyên lỗ
chân
20 Đế cắm bus 6 3 Linh kiện xuyên lỗ
chân

4.2.2 Lắp ráp và kiểm tra


a. Mạch nguồn

- Mạch nguồn công suất


Mạch nguồn công suất thiết của bị đèn có điện áp ngõ ra 210VDC, ở đây do
nhóm chúng em cải tiến từ thiết bị đèn có sẵn trên thị trƣờng nên nhóm chúng em
sẽ sử dụng mạch nguồn công suất có sẵn của đèn, nếu xét về tính thƣơng mại thì sẽ
giúp giảm đi thời gian và chi phí sản xuất.

Hình 4.5 mạch nguồn công suất

- Mạch nguồn điều khiển

Mạch nguồn nguồn này cung cấp điện áp 5VDC và dòng điện ngõ ra tối đa là
700mA cho mạch điều khiển độ sáng đèn bulb và mạch giám sát nhiệt độ, độ ẩm và
chuyển động. Do mạch nguồn có ngõ ra 5VDC và mức dòng điện 700mA nên phù
hợp với các mạch này và kèm theo đó là tính ổn định có bảo vệ ngắn mạch, kích
thƣớc nhỏ phù hợp khoản không gian nhỏ bên trong vỏ đèn nên nhóm em đã chọn

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 37


CHƢƠNG 4. THI CÔNG HỆ THỐNG
mua mạch nguồn này.

Hình 4.6 Module nguồn điều khiển 5V-700mA


b. Lắp ráp mạch điều khiển độ sáng đèn bulb
- Bƣớc 1: Hàn vi điều khiển ESP8266-ESP 12E lên mạch
- Bƣớc 2: Hàn điện trở, led, tụ, nút nhấn, ASM1117 lên mạch.
- Bƣớc 3: Hàn các jump kết nối, opto PC817,diode zener, irf830.
- Bƣớc 4: Dùng đồng hồ đo kiểm tra thông mạch.

Hình 4.7 Mặt trên và dưới của mạch điều khiển độ sáng đèn bulb sau khi hàn.
c. Lắp ráp mạch giám sát nhiệt độ, độ ẩm và chuyển động

- Bƣớc 1: Hàn vi điều khiển ESP8266-ESP 12E lên mạch


- Bƣớc 2: Hàn điện trở, led, tụ, nút nhấn, ASM1117 lên mạch.
- Bƣớc 3: Hàn các jump kết nối, opto PC817,diode zener,buzzer, DHT11.
- Bƣớc 4: Dùng đồng hồ đo kiểm tra thông mạch.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 38


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.8 Mặt trên và dưới mạch giám sát nhiệt độ, độ ẩm và chuyển động sau
khi hàn.
d. Kiểm tra toàn bộ mạch đã thi công

 Mạch điều khiển độ sáng đèn bulb


- Bƣớc 1: Kiểm tra mối hàn chì ở những chân linh kiện với đƣờng mạch .

- Bƣớc 2: Kiểm tra đƣờng dây mạch liên kết các kinh kiện với nhau.

- Bƣớc 3: Cấp nguồn vào kiểm tra nguồn ở chân vào, chân ra của ic tạo nguồn,
nguồn vào ở các chân nguồn của vi điều khiển.
- Bƣớc 4: Nạp chƣơng trình cơ bản vào vi điều khiển và kiểm tra xem có hoạt
động tốt không.
- Bƣớc 5: Dùng vi điều khiển xuất xung cấp nguồn kiểm tra kích Mosfet để tắt
bật và chỉnh độ sáng tối đèn.
 Mạch giám sát nhiệt độ, độ ẩm và chuyển động

- Bƣớc 1: Kiểm tra mối hàn chì ở những chân linh kiện với đƣờng mạch .

- Bƣớc 2: Kiểm tra đƣờng dây mạch liên kết các kinh kiện với nhau.

- Bƣớc 3: Cấp nguồn vào kiểm tra nguồn ở chân vào, chân ra của ic tạo nguồn,
nguồn vào ở các chân nguồn của vi điều khiển.
- Bƣớc 4: Nạp chƣơng trình cơ bản vào vi điều khiển và kiểm tra xem có hoạt
động tốt không.
- Bƣớc 5: Dùng vi điều khiển đọc nhiệt độ, độ ẩm và chuyển động từ cảm biến
-

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 39


CHƢƠNG 4. THI CÔNG HỆ THỐNG
 Kết quả thu đƣợc:

 Sau khi thực hiện các ƣớc kiểm tra trên thu đƣợc bảng kết quả sau:

Bảng 4.2. Bảng kết quả sau quá trình kiểm tra mạch điều khiển độ sáng đèn bulb.

Đối tƣợng kiểm tra Kết quả


Các mối hàn Tiếp xúc tốt
Các đƣờng mạch Không xảy ra chạm đƣờng mạch
Nguồn Nguồn vào 5VDC, nguồn ra ở ic AMS1117
đúng 3.3V, nguồn vào ESP8266 đúng 3.3VDC
Hoạt động ESP8266 - Khi viết 1 chƣơng trình cho ESP8266
phát wifi và ESP8266 đã hoạt động
tốt.
- Khi viết 1 chƣơng trình nhỏ cho
ESP8266 ở mạch đèn tạo xung PWM
và ESP8266 đã hoạt động tốt.

Mạch công suất Sau khi cấp nguồn 210VDC cho mạch
công suất và cấp xung pwm cho mạch
nhận thấy rằng Mosfet đƣợc mở cổng đèn
sáng ổn định Mosfet không nóng.

Bảng 4.3. Bảng kết quả sau quá trình kiểm tra mạch giám sát nhiệt độ,độ ẩm và
chuyển động.
Đối tƣợng kiểm tra Kết quả
Các mối hàn Tiếp xúc tốt
Các đƣờng mạch Không xảy ra chạm đƣờng mạch
Nguồn Nguồn vào 5VDC, nguồn ra ở ic AMS1117
đúng 3.3V, nguồn vào ESP8266 đúng
3.3VDC.
Nguồn cấp cho các cảm biến đúng 5VDC.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 40


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Hoạt động ESP8266 - Khi viết 1 chƣơng trình cho ESP8266
phát wifi và ESP8266 đã hoạt động
tốt.
- Khi viết 1 chƣơng trình cho ESP8266
đọc nhiệt độ,độ ẩm và chuyển động
từ cảm biến và ESP8266 giao tiếp
đƣợc.

4.3 THI CÔNG MÔ HÌNH


 Mô hình mạch điều khiển độ sáng đèn bulb

Nhóm chúng em lắp ráp các mạch điện vào bên trong đèn thực hiện các
bƣớc sau:
- Bƣớc 1: Ghép khối nguồn công suất và khối nguồn điều khiển lại với nhau,
sau đó hàn ngõ vào 220VAC vào hai khối nguồn và hàn ngõ ra 5VDC của
khối nguồn điều khiển và ngõ ra 210VDC của khối nguồn công suất vào 2
đầu dây bus 2 tƣơng ứng để thuận tiện kết nối với mạch điều khiển.

Hình 4.9 Công đoạn lắp ráp bước 1.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 41


CHƢƠNG 4. THI CÔNG HỆ THỐNG
- Bƣớc 2: Cắt tấm form đặt vào và cho các dây bus nguồn đi qua, kết nối với
mạch điều khiển và đặt mạch điều khiển lên.

Hình 4.10 Công đoạn lắp ráp bước 2.


- Bƣớc 3: Kết nối jump đèn với mạch điều khiển và đậy nắp chụp nhôm lên

Hình 4.11 Công đoạn lắp ráp bước 3.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 42


CHƢƠNG 4. THI CÔNG HỆ THỐNG
- Bƣớc 4: Cuối cùng ta lấy nắp đèn đậy lại.

Hình 4.12 Kết quả sau khi lắp ráp.


 Mô hình mạch giám sát nhiệt độ, độ ẩm và chuyển động
Nhóm em lắp ráp mạch giám sát nhiệt độ, độ ẩm và chuyển động vào hộp đựng
gồm các bƣớc sau:

- Bƣớc 1: Đục lỗ nắp hộp và gắn các led và cảm biến PIR lên.

Hình 4.13 Công đoạn lắp ráp bước 1.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 43


CHƢƠNG 4. THI CÔNG HỆ THỐNG
- Bƣớc 2: Đặt mạch giám sát nhiệt độ, độ ẩm và chuyển động, gắn module
nguồn điều khiển vào bên trong đế hộp.

Hình 4.14 Công đoạn lắp ráp bước 2.


- Bƣớc 3: Kết nối đèn led và cảm biến PIR trên nắp với mạch giám sát nhiệt
độ, độ ẩm và chuyển động và đậy nắp lại.

Hình 4.15 Kết quả sau khi lắp ráp bước 3.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 44


CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.4 LẬP TRÌNH MẠCH ĐIỀU KHIỂN ĐỘ SÁNG ĐÈN BULB.

4.4.1 Lƣu đồ giải thuật

Bắt đầu

Khởi tạo Serial, khởi


tạo Wifi Manager

Tiến hành kết nối với mạng


Wifi

S
Mạng wifi đã
được kết nối ?

Chuyển sang chế


độ Access point
S

Đ
Mạng wifi đã
được kết nối ?

Đăng kí MQTT,khởi tạo kết nối với cơ sở dữ liệu


thời gian thực Firebase

Kết nối với MQTT

Đọc dữ liệu từ Adafruit_MQTT, xử lí


bật tắt đèn hoặc tăng giảm biến độ
sáng, gửi giá trị độ sáng lên
Firebase

S
Kết nối
Firebase lỗi ?

Giữ nguyên giá trị


pwm hiện tại

Đọc giá trị độ sáng từ Firebase, so


sánh với các giá trị từ 1 đến 10 để
xuát pwm tương ứng.

Kết thúc

Hình 4.16 Lưu đồ mạch điều khiển đèn bulb.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 45


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Khi có nguồn cung cấp cho mạch vi điều khiển ESP8266 ESP-12E NodeMCU
sẽ hoạt động khởi tạo Serial, Wifi Manager. Tiếp theo nó sẽ tiến hành kết nối với
Wifi, nếu kết nối đƣợc thì tiến hành đăng kí MQTT và khởi tạo kết nối Firebase,
trƣờng hợp không kết nối đƣợc thì nó sẽ chuyển sang chế độ Access point ( điểm
truy cập) và đợi ngƣời dùng kết nối với Wifi do nó phát ra và thiết lập Wifi cho nó
tại địa chỉ 192.168.4.1. Sau khi ngƣời dùng thiết lập xong ESP sẽ chuyển sang chế
độ Station ( thu Wifi ) và kết nối Wifi, nếu vẫn chƣa kết nối đƣợc thì nó vẫn ở chế
độ Access point.

Trong vòng lặp tuần hoàn:

Thực hiện chƣơng trình kết nối MQTT, sau đó đọc dữ liệu từ Adafruit_MQTT
và so sánh với các địa chỉ đăng kí MQTT, nếu đúng địa chỉ thì sẽ xử lí dữ liệu nhận
đƣợc để bật tắt thiết bị đèn, hoặc tăng giảm biến độ sáng và gửi lại giá trị độ sáng
lên Firebase.

Nếu kết nối với Firebase bị lỗi sẽ giữ nguyên giá trị PWM hiện tại. Sau đó đọc
giá trị độ sáng trên Firebase và so sánh với các giá trị từ 1 đến 10 để xuất ra PWM
tƣơng ứng.

Chƣơng trình cứ thế lặp lại.

4.4.2 Chƣơng trình cho mạch điều khiển độ sáng đèn bulb

Chƣơng trình nhóm chúng em viết cho mạch điều khiển độ sáng đèn bulb
gồm các tính năng nhƣ sau:

- Thứ 1: Các thiết bị đèn hoạt động độc lập với nhau, ngƣời dùng có thể tùy
chỉnh riêng biệt từng đèn trên app hoặc thông qua Google assistant.

- Thứ 2: Các thiết bị đèn có thể kết nối với mạng wifi bất kì, khi chƣa kết nối
đƣợc thì thiết bị đèn chuyển sang chế độ Access point (với tên wifi không
trùng lặp) để ngƣời dùng dùng điện thoại kết nối với đèn và truy cập địa
chỉ “192.168.4.1” để thiết lập wifi cho nó, sau khi thiết lập xong đèn sẽ
chuyển sang chế độ station để kết nối wifi mà ngƣời đã dùng thiết lập.

- Thứ 3: Khi đèn đang hoạt động mà wifi bị lỗi hoặc mất kết nối thì đèn vẫn

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 46


CHƢƠNG 4. THI CÔNG HỆ THỐNG
giữ nguyên ( sáng hoặc không sáng), thiết bị đèn sẽ chờ kết nối,khi kết nối
đƣợc sẽ hoạt động lại bình thƣờng.

- Thứ 4: Các trạng thái của đèn ( sáng hoặc không sáng) sẽ đƣợc cập nhật lên
cơ sở dữ liệu và phần mềm điện thoại sẽ cập nhật đƣợc trạng thái thực tế để
giúp ngƣời dùng nhận biết.
- Thứ 5: Khi đèn hoạt động thì dữ liệu sẽ đƣợc cập nhật lên cơ sở dữ liệu và
khi không hoạt động thì sẽ không cập nhật dữ liệu lên cơ sở dữ liệu nhờ dữ
liệu này mà ứng dụng trên điện thoại sẽ phân tích và báo cho ngƣời dùng
biết thiết bị thực tế có đang hoạt động hay không.

- Thứ 6: Độ sáng đèn có thể thay đổi đƣợc dựa trên sự điều khiển của ngƣời
dùng thao tác trên phần mềm điều khiển trên điện thoại thông minh. Độ
sáng sẽ thay đổi tăng độ sáng tuyến tính hoặc giảm độ sáng tuyến tính để
mắt ngƣời sử dụng dễ thích nghi.

- Thứ 7: Đèn có thể bật tắt và thay đổi độ sáng bằng giọng nói thông qua trợ
lý ảo Google assistant mà không cần bật ứng dụng.

Do phần chƣơng trình bao gồm một số tính năng nên chƣơng trình nhiều dòng
lệnh và nhóm chúng em sẽ giải thích chƣơng trình chính của chƣơng trình lập trình
cho vi điều khiển ESP8266 ESP-12E NodeMCU trong mạch điều khiển độ sáng đèn
bulb.

Để tiến hành lập trình thì cần thêm các bộ thƣ viện để sử dụng các tính năng.

Thêm thƣ viện để thực hiện đƣợc các tính năng wifi của mạch vi điều khiển
ESP8266 ESP-12E NodeMCU.
#include <ESP8266WiFi.h>
Thêm thƣ viện để thực hiện viêc đọc ghi dữ liệu lên cơ sở dữ liệu thời gian thực
FIREBASE.
#include <FirebaseArduino.h>
Thêm thƣ viện để thực hiện viêc kết nối Adafruit_Mqtt để nhận dữ liệu điều
khiển bằng Google asstant .
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 47


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Thêm thƣ viện để thực hiện viêc kết nối wifi tự động.

#include <WiFiManager.h>

Để tạo kết nối với cơ sở dữ liệu thời gian thực cần có địa chỉ và mã cho ngƣời
phát triển , 2 thông tin này sẽ đƣợc gán vào 2 biến tƣơng ứng là FIREBASE_HOST,
FIREBASE_AUTH thông qua định nghĩa:

#define FIREBASE_HOST "testdatn-12cd4.firebaseio.com"

#define FIREBASE_AUTH
“HszRBsnMPCl1Yc05DeHtErXk7IhNoVk8KJ10swB1"

Để kết nối với Adfruit thì cần có các thông số sau: dịa chỉ sever kết nối, port
kết nối, tên tài khoản, mật khẩu với định nghĩa:

#define MQTT_SERV "io.adafruit.com"

#define MQTT_PORT 1883

#define MQTT_NAME "masterpoke"

#define MQTT_PASS "7b5c65d02b14449f945c55acfd4d20fe"

Để thực hiện việc điều khiển ta cần liên kết với các feed đƣợc tạo từ trƣớc trên
Adfruit.
WiFiClient client;

Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT,


MQTT_NAME, MQTT_PASS);

Adafruit_MQTT_Subscribe ds1 = Adafruit_MQTT_Subscribe(&mqtt,


MQTT_NAME "/f/dosang1");

Adafruit_MQTT_Subscribe dsmax = Adafruit_MQTT_Subscribe(&mqtt,


MQTT_NAME "/f/max");

Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe(&mqtt,


MQTT_NAME "/f/light1");

Định nghĩa chân tạo PWM và khởi tạo các biến lƣu giá trị

#define LEDpin D1

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 48


CHƢƠNG 4. THI CÔNG HỆ THỐNG
uint16_t a=0;

int8_t dosang1;

 Trong chƣơng trình khởi tạo:

WiFiManager w;

w.autoConnect("light 1");

Serial.println("connected...");
Khởi tạo wifimanager, thực hiện tự động kết nối wifi, khi chƣa kết nối đƣợc
wifi thì tự chuyển sang chế Access point với tên wifi “light 1”, sau khi kết nối đƣợc
thì in ra “connected”.

Với các câu lệnh:

mqtt.subscribe(&ds1);

mqtt.subscribe(&dsmax);

mqtt.subscribe(&light);
Thực hiện đăng kí Mqtt cho các địa chỉ trên.
Thực hiện kết nối Firebase và gửi giá trị „1‟ theo đƣờng dẫn “/den1” qua 2
dòng lệnh:

Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);

Firebase.setInt("/den1", 1);

 Trong vòng lặp chƣơng trình:

Gọi hàm MQTT_connect (); để kết nối với MQTT của Adafruit.

dosang1= Firebase.getInt("/light 1"); biến dosang1 đọc dữ liệu từ Firebase và lƣu


vào.

Adafruit_MQTT_Subscribe * subscription;

while ((subscription = mqtt.readSubscription(1000)))

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 49


CHƢƠNG 4. THI CÔNG HỆ THỐNG
if (subscription == &ds1)

Serial.print("den 1 muc: ");

Serial.println((char*) ds1.lastread);

if (!strcmp((char*) ds1.lastread, "0"))

{ dosang1--;

if( dosang1 < 1) dosang1=1;

Firebase.setInt("/light 1",dosang1);

else

{ dosang1++;

if( dosang1 > 10) dosang1=10;

Firebase.setInt("/light 1",dosang1);

if (subscription == &dsmax)

{ Serial.print("do sang max: ");

Serial.println((char*) dsmax.lastread);

if (!strcmp((char*) dsmax.lastread, "1"))

dosang1=10;

Firebase.setInt("/light 1",dosang1);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 50


CHƢƠNG 4. THI CÔNG HỆ THỐNG
}

Serial.print("muc sang den 1: ");

Serial.println(dosang1);

if (subscription == &light)

{ Serial.print("do sang: ");

Serial.println((char*) light.lastread);

if (!strcmp((char*) light.lastread, "0"))

Firebase.setInt("/den1", 1);

else

Firebase.setInt("/den1", 0);

Tạo 1 con trỏ *subscription cho Adafruit với câu lệnh:

Adafruit_MQTT_Subscribe * subscription;

Trong vòng lặp while ((subscription = mqtt.readSubscription(1000))) thì


subscription đọc dữ liệu từ Adafruit và lƣu kết quả vào sau đó đôi chiếu với các địa
chỉ ds1,dsmax,light.

 Nếu bằng ds1, dữ liệu đọc đƣợc là „0‟ thì giảm biến dosang1 còn dữ liệu đọc
đƣợc thì tăng biến dosang1 và gửi biến dosang1 lên Firebase bằng câu lệnh :

Firebase.setInt("/light 1",dosang1);

 Nếu bằng dsmax, dữ liệu đọc về là „1‟ thì gán dosang1 = 10 và gửi giá trị
dosang1 lên Firebase.
 Nếu bằng light , dữ liệu đọc về là „0‟ thì gửi dữ liệu lên Firebase với câu lệnh:
Firebase.setInt("/den1", 1); , còn trƣờng hợp khác gửi Firebase.setInt("/den1",
0);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 51


CHƢƠNG 4. THI CÔNG HỆ THỐNG
if (Firebase.failed()) {
analogWrite(LEDpin, a);
}
Trƣờng hợp mất kết nối Firebase thì vẫn giữ nguyên độ sáng.
if (Firebase.getInt("/den1")==0)
{
int b = Firebase.getInt("/light 1");
switch (b){
case 1: a=102; break;
case 2: a=204; break;
case 3: a=307; break;
case 4: a=410; break;
case 5: a=512; break;
case 6: a=614; break;
case 7: a=716; break;
case 8: a=818; break;
case 9: a=921; break;
case 10 : a=1023;break;
}
analogWrite(LEDpin, a);
}
else { a=0;
analogWrite(LEDpin, 0); }
Nếu dữ liệu đọc tại đƣờng dẫn “/den1” bằng 1 thì tiếp tục đọc giá trị tại đƣờng dẫn
“/light1” gán cho b và đem b đi đối chiếu các giá trị từ 1 đến 10 và gán giá trị tƣơng
ứng cho a, và xuất PWM giá trị tƣơng ứng, trƣờng hợp khác xuất PWM là 0.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 52


CHƢƠNG 4. THI CÔNG HỆ THỐNG
4.5 LẬP TRÌNH CHO MẠCH GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM VÀ CHUYỂN ĐỘNG.
4.5.1 Lƣu đồ giải thuật.

Bắt đầu

Khởi tạo các cổng vào ra,


Serial, khởi tạo Wifi Manager

Tiến hành kết nối với mạng


Wifi

S
Mạng wifi đã
được kết nối ?

Chuyển sang chế


độ Access point
S

Đ
Mạng wifi đã
được kết nối ?

Đăng kí MQTT,khởi tạo kết nối với cơ sở dữ liệu


thời gian thực Firebase

Khởi tạo DHT

Kết nối với MQTT

Đọc dữ liệu từ Adafruit_MQTT, xử lí


bật tắt led, bật tắt cảm biến PIR
Đọc tín hiệu cảm biến PIR tại chân D2

Đọc nhiệt độ, độ ẩm từ cảm biến và


S
gửi lên Firebase Tín hiệu mức
cao ?

Đ
S
Nhiệt độ >= 40 ?
Bật báo động, gửi số 1 Tắt báo động, gửi số 0
lên Firebase tại đường lên Firebase tại đường
dẫn “/bao trom” dẫn “/bao trom”
Đ

Bật báo động, gửi số 1 Tắt báo động, gửi số 0


lên Firebase tại đường lên Firebase tại đường
dẫn “/bao chay” dẫn “/bao chay”

Kết thúc

Hình 4.17 Lưu đồ mạch giám sát nhiệt độ, độ ẩm và chuyển động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 53


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Khi có nguồn cung cấp cho mạch vi điều khiển ESP8266 ESP-12E NodeMCU
sẽ hoạt động khởi tạo Serial, Wifi Manager, các cổng vào ra. Tiếp theo nó sẽ tiến
hành kết nối với Wifi, nếu kết nối đƣợc thì tiến hành đăng kí MQTT và khởi tạo kết
nối Firebase, trƣờng hợp không kết nối đƣợc thì nó sẽ chuyển sang chế độ Access
point ( điểm truy cập) và đợi ngƣời dùng kết nối với Wifi do nó phát ra và thiết lập
Wifi cho nó tại địa chỉ 192.168.4.1. Sau khi ngƣời dùng thiết lập xong ESP sẽ
chuyển sang chế độ Station ( thu Wifi ) và kết nối Wifi, nếu vẫn chƣa kết nối đƣợc
thì nó vẫn ở chế độ Access point. Tiếp theo ESP khởi tạo DHT.

Trong vòng lặp tuần hoàn:

Thực hiện chƣơng trình kết nối MQTT, sau đó đọc dữ liệu từ Adafruit_MQTT
và so sánh với các địa chỉ đăng kí MQTT, nếu đúng địa chỉ thì sẽ xử lí dữ liệu nhận
đƣợc để bật tắt cảm biến PIR hoặc led.

Sau đó đọc giá trị nhiệt độ, độ ẩm từ cảm biến và gửi các giá trị đó lên
Firebase. Nếu nhiệt độ lớn hơn hoặc bằng 40 thì bật Buzzer báo động và gửi số 1
lên Firebase tại đƣờng dẫn “/bao chay”, ngƣợc lại tắt Buzer và gửi số 0 lên.

Tiếp theo đọc tín hiệu PIR tại chân D2, nếu tín hiệu mức cao thì bật Buzzer báo
động và gửi số 1 lên Firebase tại đƣờng dẫn “/bao trom”, ngƣợc lại tắt Buzzer báo
động và gửi số 0.

Chƣơng trình cứ thế lặp lại .

4.5.2 Chƣơng trình cho mạch giám sát nhiệt độ, độ ẩm và chuyển động
Chƣơng trình nhóm chúng em viết cho mạch giám sát nhiệt độ, độ ẩm và chuyển
động gồm các tính năng nhƣ sau:

- Thứ 1: Thiết bị có thể kết nối với mạng wifi bất kì, khi chƣa kết nối đƣợc
thì thiết bị chuyển sang chế độ Access point (với tên wifi không trùng lặp)
để ngƣời dùng dùng điện thoại kết nối với đèn và truy cập địa chỉ
“192.168.4.1” để thiết lập wifi cho nó, sau khi thiết lập xong đèn sẽ chuyển
sang chế độ station để kết nối wifi mà ngƣời đã dùng thiết lập.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 54


CHƢƠNG 4. THI CÔNG HỆ THỐNG
- Thứ 2: Thiết bị có thể đo nhiệt độ, độ ẩm và kích hoạt cảm biến PIR khi
đƣợc yêu cầu, cảnh báo khi vƣợt mức ngƣỡng nhiệt độ đặt trƣớc hoặc phát
hiện chuyển động.
- Thứ 3: Các dữ liệu đƣợc đƣa lên Firebase để điện thoại đọc về và báo lên
app ngƣời dùng.
- Thứ 4: Có thể bật tắt led trên vỏ hộp ( tác dụng nhƣ đèn ngủ) bằng Google
assistant.

Sau đây nhóm em xin trình bày chƣơng trình của hệ thống:

Thêm thƣ viện để thực hiện đƣợc các tính năng wifi của mạch vi điều khiển
ESP8266 ESP-12E NodeMCU.
#include <ESP8266WiFi.h>
Thêm thƣ viện để thực hiện viêc đọc ghi dữ liệu lên cơ sở dữ liệu thời gian thực
FIREBASE.
#include <FirebaseArduino.h>
Thêm thƣ viện để thực hiện viêc kết nối Adafruit_Mqtt để nhận dữ liệu điều
khiển bằng Google asstant .
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
Thêm thƣ viện để thực hiện viêc kết nối wifi tự động.

#include <WiFiManager.h>
Thêm thƣ viện của cảm biến DHT11: #include <DHT.h>

Để tạo kết nối với cơ sở dữ liệu thời gian thực cần có địa chỉ và mã cho ngƣời
phát triển , 2 thông tin này sẽ đƣợc gán vào 2 biến tƣơng ứng là FIREBASE_HOST,
FIREBASE_AUTH thông qua định nghĩa:

#define FIREBASE_HOST "testdatn-12cd4.firebaseio.com"

#define FIREBASE_AUTH
"HszRBsnMPCl1Yc05DeHtErXk7IhNoVk8KJ10swB1"

Để kết nối với Adfruit thì cần có các thông số sau: dịa chỉ sever kết nối, port kết
nối, tên tài khoản, mật khẩu với định nghĩa:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 55


CHƢƠNG 4. THI CÔNG HỆ THỐNG
#define MQTT_SERV "io.adafruit.com"

#define MQTT_PORT 1883

#define MQTT_NAME "masterpoke"

#define MQTT_PASS "7b5c65d02b14449f945c55acfd4d20fe"

Để thực hiện việc điều khiển ta cần liên kết với các feed đƣợc tạo từ trƣớc trên
Adfruit.
WiFiClient client;

Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT,


MQTT_NAME, MQTT_PASS);

Adafruit_MQTT_Subscribe goout = Adafruit_MQTT_Subscribe(&mqtt,


MQTT_NAME "/f/goout ");

Adafruit_MQTT_Subscribe denngu = Adafruit_MQTT_Subscribe(&mqtt,


MQTT_NAME "/f/denngu");
Định nghĩa loại cảm biến và chân giao tiếp với cảm biến:

#define DHTTYPE DHT11

#define DHTPIN D4

Gán các chân giao tiếp và gán val = 0, pirState = LOW.


int powerPin = D7; // chọn chân 3 NGUON
int inputPin = D2; // chọn ngõ tín hiệu vào cho PIR
int pirState = LOW; // Bắt đầu với không có báo động
int pinSpeaker = D5; //chọn chân cho chuông khi có đột nhập
int val = 0;

Gán các tham số vào hàm DHT dht(DHTPIN, DHTTYPE);


 Trong chƣơng trình khởi tạo
Khai báo vào ra cho các chân:
pinMode(powerPin, OUTPUT);
pinMode(inputPin, INPUT);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 56


CHƢƠNG 4. THI CÔNG HỆ THỐNG
pinMode(pinSpeaker, OUTPUT);
pinMode(D0,OUTPUT);
Khởi tạo wifimanager, thực hiện tự động kết nối wifi, khi chƣa kết nối đƣợc wifi
thì tự chuyển sang chế Access point với tên wifi “light 1”, sau khi kết nối đƣợc thì
in ra “connected”.

WiFiManager w;

w.autoConnect("light 1");

Serial.println("connected...");

Thực hiện đăng kí Mqtt cho các địa chỉ.

mqtt.subscribe(&goout );

mqtt.subscribe(&denngu);

Thực hiện kết nối Firebase


Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);

Khởi tạo chƣơng trình DHT: dht.begin();


 Trong vòng lặp chƣơng trình:

Gọi hàm MQTT_connect (); để kết nối với MQTT của Adafruit.

Adafruit_MQTT_Subscribe * subscription;

while ((subscription = mqtt.readSubscription(1000)))

if (subscription == &goout)

Serial.print("bat pir: ");

Serial.println((char*) goout.lastread);

if (!strcmp((char*) goout.lastread, "0"))

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 57


CHƢƠNG 4. THI CÔNG HỆ THỐNG
digitalWrite(powerPin, LOW);

else

{ digitalWrite(powerPin, HIGH);

Firebase.setInt("/den1", 1);

Firebase.setInt("/den2", 1);

Firebase.setInt("/denngu", 1);

} }

if (subscription == &denngu)

Serial.print("den ngu: ");

Serial.println((char*) denngu.lastread);

if (!strcmp((char*) denngu.lastread, "0"))

{ digitalWrite(D0, LOW);

Firebase.setInt("/denngu", 1);

else { digitalWrite(D0, HIGH);

Firebase.setInt("/denngu", 0);

} } }

Tạo 1 con trỏ *subscription cho Adafruit với câu lệnh:

Adafruit_MQTT_Subscribe * subscription;

Trong vòng lặp while ((subscription = mqtt.readSubscription(1000))) thì


subscription đọc dữ liệu từ Adafruit và lƣu kết quả vào sau đó đôi chiếu với các địa
chỉ goout,denngu.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 58


CHƢƠNG 4. THI CÔNG HỆ THỐNG
 Nếu bằng goout, dữ liệu đọc đƣợc là „0‟ thì tắt cảm biến PIR bằng câu lệnh
digitalWrite(powerPin, LOW); còn dữ liệu đọc đƣợc là „1‟ thì bật cảm biến
PIR và gửi biến các giá trị 1 lên Firebase theo các đƣờng dẫn tƣơng ứng bằng
các câu lệnh :

Firebase.setInt("/den1", 1);

Firebase.setInt("/den2", 1);

Firebase.setInt("/denngu", 1);

 Nếu bằng denngu, dữ liệu đọc về là „0‟ thì tắt đèn ngủ bằng câu lệnh
digitalWrite(D0, LOW); và gửi giá trị 1 lên Firebase theo lệnh
Firebase.setInt("/denngu", 1); , ngƣợc lại bật đèn ngủ và gửi giá trị 0 lên
Firebase theo lệnh digitalWrite(D0, HIGH); Firebase.setInt("/denngu", 0);

Tiếp theo là chƣơng trình đọc cảm biến DHT11 và cảm biến PIR.

 Trong chƣơng trình đọc cảm biến DHT11

float h = dht.readHumidity(); //Đọc độ ẩm

float t = dht.readTemperature(); //Đọc nhiệt độ

if (isnan(h) || isnan(t)) {

Serial.println(F("loi doc cam bien!"));

return;

Serial.println("nhiet do:");

Serial.println(t);

Serial.println("do am:");

Serial.println(h);

Firebase.setFloat ("/Temp", t);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 59


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Firebase.setFloat ("/Humidity", h);

if (t>=40)

{ digitalWrite(pinSpeaker, HIGH);

Firebase.setInt ("/bao chay", 1);

else

{ digitalWrite(pinSpeaker, LOW);

Firebase.setInt ("/bao chay", 0);

Đầu tiên đọc nhiệt độ, độ ẩm, nếu đọc không đƣợc thì in ra màn hình “loi doc
cam bien”, nêú đọc đƣợc thì in ra màn hình nhiệt độ, độ ẩm và gửi 2 giá trị đó lên
Firebase bằng câu lệnh Firebase.setFloat ("/Temp", t); Firebase.setFloat
("/Humidity", h); sau đó đem giá trị nhiệt độ so sánh với giá trị đặt trƣớc nếu lớn
hơn hoặc bằng thì bật buzzer và gửi lên Firebase giá trị 1 theo lệnh Firebase.setInt
("/bao chay", 1); ngƣợc lại tắt buzzer và gửi giá trị 0.

 Trong chƣơng trình đọc cảm biến PIR.


val = digitalRead(inputPin); // đọc giá trị đầu vào.
if (val == HIGH) // nếu giá trị ở mức cao.(1)
{ digitalWrite(pinSpeaker, HIGH);
if (pirState == LOW)
{ Serial.println("phat hien chuyen dong!");
Firebase.setInt ("/bao trom", 1);
pirState = HIGH;
} }
else
{ digitalWrite(pinSpeaker, LOW);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 60


CHƢƠNG 4. THI CÔNG HỆ THỐNG
if (pirState == HIGH)
{
Serial.println("ket thuc chuyen dong");
Firebase.setInt ("/bao trom", 0);
pirState = LOW;
}
}
Nếu val = HIGH thì bật Buzzer và pirState = LOW thì gửi lên Firebase giá trị
1theo lệnh Firebase.setInt ("/bao trom", 1); và gán pirState =HIGH.

Ngƣợc lại val = LOW thì tắt Buzzer và pirState = HIGH thì gửi lên Firebase giá trị
0 theo lệnh Firebase.setInt ("/bao trom", 0); và gán pirState =LOW.

4.6 LẬP TRÌNH ỨNG DỤNG ANDROID.


a. Cách kết nối giữa project và firebase
Để project của Android Studio truyền nhận đƣợc dữ liệu với firebase ta
thực hiện các bƣớc nhƣ sau:
Đầu tiên ta tiến hành tạo một project mới ta đƣợc giao diện nhƣ sau:

Hình 4.18 Giao diện ứng dụng android studio


Tiếp theo ta vào giao diện android vào file → Settings → Geneal → Auto Import
chọn vào hai ô Add unambiguous import on the fly và Optimize import on the fly
→ Apply → OK. Sau đó truy cập firebase.google.com để tạo một vùng cơ sở dữ
liệu mới ( cách tạo đã đƣợc trình bày ở mục 4.5/b) ta đƣợc giao diện nhƣ sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 61


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.19 Giao diện cơ sở dữ liệu sau khi tạo


Tiếp đến ta chọn vào testdatn ta đƣợc giao diện nhƣ hình:

Hình 4.20 Chọn hệ điều hành lập trình


Ta chọn vào biểu tƣợng mũi tên nhƣ trên hình và đƣợc giao diện mới [Hình
4.21], tại giao diện ta sẽ điền vào tên của Android Package sau đó chọn vào “ Lƣu
ứng dụng” . Tiếp đến ta sẽ tiến hành tải file “ google- services.json” [ Hình 4.23]
chọn tiếp theo.
Ta copy file vừa tải, vào ứng dụng android [Hình 4.24] nhấn chuột phải vào
app chọn Show in Explorer, xuất hiện giao diện [Hình 4.25] ta sẽ lƣu file
google-services.json vào đó. Sau đó ta sẽ thêm SDK Firebase nhƣ hình [4.26]
chọn tiếp theo.
Bƣớc cuối cùng trên giao diện ta chọn tool → Firebase → Realtime Database →
Connect your app to firebase → Add the realtime database to your app nếu hiển thị
nhƣ hình 4.27 là ta đã kết nối thành công.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 62


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.21 Giao diện điền tên Android Package

Hình 4.22 Giao diện tải file google- services.json

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 63


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.23 Chọn vị trí lưu google- services.json

Hình 4.24 Vị trí lưu google- services.json

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 64


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.25 Thêm SDK Firebase

Hình 4.26 Giao diện sau khi kết nối thành công app android và firebase
b. Viết chƣơng trình hệ thống.
Phần mềm sẽ liên tục cập nhật các giá trị nhận đƣợc từ firebase và cho ra kết quả
hiển thị lên giao diện phần mềm một cách trực quan giúp ngƣời sử dụng quản lý các
thiết bị trong nhà cũng nhƣ tình trạng của ngôi nhà một cách dễ dàng nhất. Ngoài ra

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 65


CHƢƠNG 4. THI CÔNG HỆ THỐNG
phần mềm cũng có thể điều khiển đƣợc việc bật/tắt thiết bị cũng nhƣ điều khiển
đƣợc độ sáng của các đèn một cách dễ dàng.

Do chƣơng trình thiết kế bao gồm nhiều tính năng nên chƣơng trình viết lập
trình sẽ dài nên nhóm chúng em xin phép sẽ trình bày một số phần chính trong
chƣơng trình .

 Giao diện điều khiển và hiển thị.

Giao diện hiển thị bao gồm việc hiển thị trạng thái bật/tắt của hai đèn, trạng thái
của hai switch, hai thanh seekBar (Hình 4.28) ngoài ra còn hiển thị nhiệt độ, độ ẩm,
cảnh báo cháy, cảnh báo trộm (Hình 4.29).

Giao diện điều khiển gồm việc điều khiển bật tắt đèn bằng các switch, điều khiển
độ sáng đèn bằng hai thanh seekBar (Hình 4.28). Ngoài ra còn tính năng điều khiển
bật tắt đèn thông qua việc hẹn giờ (Hình 4.30).

Hình 4.27 Giao diện hiển thị và điều khiển đèn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 66


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.28 Giao diện hiển thị nhiệt Hình 4.29 Giao diện hẹn giờ tắt/bật đèn
độ, độ ẩm, cảnh báo cháy, trộm.

Hình 4.30 Cơ sở dữ liệu Realtime Database


Khi mở ứng dụng phần mềm, điện thoại cho phép truy cập wifi hoặc 3g phần
mềm sẽ đọc dữ liệu từ cơ sở dữ liệu thời gian thực FIREBASE và sẽ cập nhật toàn
bộ trạng thái của các đèn, kèm theo đó là độ sáng hiện tại, nhiệt độ, độ ẩm, cảnh báo
cháy, trộm. Khi ngƣời dùng thao tác điều khiển thì dữ liệu sẽ đƣợc ghi lên cơ sở dữ
liệu thời gian thực FIREBASE, từ đây thiết bị đèn sẽ đọc dữ liệu này về và xử lý.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 67


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Ví dụ ta muốn đọc nhiệt độ trên cơ sở dữ liệu firebase[ Hình 4.31] đầu tiên ta phải chỉ
dẫn tới đúng vùng dữ liệu cần thao tác.
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Nhiệt độ");

Sau khi đã chỉ dẫn tới đúng vùng dữ liệu cần thao tác ta tiến hành cập nhật giá trị nhiệt
độ bằng cách sử dụng lệnh sau.
myRef.addValueEventListener(new ValueEventListener() {
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
nhietdo = dataSnapshot.getValue(float.class);
}
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

Muốn hiển thị nhiệt độ lên app android bằng cách: textViewnd.setText(nhietdo +
"°C");
Đối với các giá trị còn lại trên cơ sở dữ liệu firebase ta muốn lấy dữ liệu về và hiển
thị thì ta làm tƣơng tự nhƣ nhiệt độ.

Ví dụ để điều khiển độ sáng của đèn 1 “ ánh sáng 1” [Hình 4.28] thông qua ứng dụng
thì ta cần điều khiển các giá trị của “ ánh sáng 1” thông qua việc thay đổi cơ sở dữ liệu
của nó bằng cách:
DatabaseReference mData = FirebaseDatabase.getInstance().getReference();
seekBar.setOnSeekBarChangeListener(new
SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean
fromUser) {
if(progress < 10){
mData.child("ánh sáng 1").setValue(0);
dosang = 0;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 68


CHƢƠNG 4. THI CÔNG HỆ THỐNG
}
else if ( 10 <= progress && progress < 20){
mData.child("ánh sáng 1").setValue(1);
dosang = 10;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 20 <= progress && progress < 30){
mData.child("ánh sáng 1").setValue(2);
dosang = 20;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 30 <= progress && progress < 40){
mData.child("ánh sáng 1").setValue(3);
dosang = 30;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 40 <= progress && progress < 50){
mData.child("ánh sáng 1").setValue(4);
dosang = 40;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");

}
else if ( 50 <= progress && progress < 60){
mData.child("ánh sáng 1").setValue(5);
dosang = 50;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 60 <= progress && progress < 70){
mData.child("ánh sáng 1").setValue(6);
dosang = 60;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 70 <= progress && progress < 80){
mData.child("ánh sáng 1").setValue(7);
dosang = 70;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 80 <= progress && progress < 90){

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 69


CHƢƠNG 4. THI CÔNG HỆ THỐNG
mData.child("ánh sáng 1").setValue(8);
dosang = 80;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if ( 90 <= progress && progress < 100){
mData.child("ánh sáng 1").setValue(9);
dosang = 90;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}
else if(progress == 100) {
mData.child("ánh sáng 1").setValue(10);
dosang = 100;
textView_dosang1.setText("ĐỘ SÁNG ĐÈN 1 LÀ :" + dosang +
"%");
}

}
public void onStartTrackingTouch(SeekBar seekBar) {

}
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Đối với việc điều khiển độ sáng của thiết bị đèn muốn hiển thị độ sáng hiện tại là
bao nhiêu ra giao diện phần mềm thì ta sử dụng lệnh:
seekBar.setProgress(seekBar.getProgress()*0 + ds_den1*10);

Muốn hiển thị trạng thái sáng/ tắt của thiết bị đèn bằng cách:

den1.setImageResource(R.drawable.den1_sang); // đèn sáng


den1.setImageResource(R.drawable.den1_tat); đèn tắt
Để hẹn giờ bật tắt thiết bị điện ta làm nhƣ sau:

Timer timer;
MyTimeTask myTimeTask;
if(timer != null) timer.cancel();
timer = new Timer();
myTimeTask = new MyTimeTask();
if(optSingleshot.isChecked()){
timer.schedule(myTimeTask, 1000);
}
else {
timer.schedule(myTimeTask, 1000, 100);
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 70


CHƢƠNG 4. THI CÔNG HỆ THỐNG
}
class MyTimeTask extends TimerTask {
public void run() {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat simpleDateFormat = new
SimpleDateFormat("HH:mm");
SimpleDateFormat simpleDateFormat5 = new
SimpleDateFormat("HH:mm:ss");
final String strData1 = simpleDateFormat5.format(calendar.getTime());
final String strData = simpleDateFormat.format(calendar.getTime());
final String laychuoi = strData;
final String s1 = edt_hengio.getText().toString();
final String s2 = edt_tatden.getText().toString();
final String s3 = editText_moden2.getText().toString();
final String s4 = editText_tatden2.getText().toString();
runOnUiThread(new Runnable() {
public void run() {
hhmmss.setText("THỜI GIAN: " + strData1);

if(s1.equals(laychuoi)){
mData.child("den1").setValue(1);
}
if (s2.equals(laychuoi)){
mData.child("den1").setValue(0);
}
if(s3.equals(laychuoi)){
mData.child("den2").setValue(1);
}
if(s4.equals(laychuoi)){
mData.child("den2").setValue(0);
}
}
});
}
}
4.7 VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG
Bƣớc 1: Cấp nguồn cho thiết bị đèn, thiết bị đèn sử dụng nguồn 220V AC, thiết
bị đèn sẽ có một đèn màu đỏ sáng báo hiệu đã có nguồn, sau đó thiết bị đèn wifi
sẽ phát ra một mạng wifi tƣơng ứng với tên thiết bị đèn.

Bƣớc 2: Cấp nguồn cho thiết bị giám sát nhiệt độ, đô ẩm và chuyển động, khi có
nguồn đèn led sẽ nhấp nháy 1 lần để báo có nguồn, và mạch sẽ phát Wifi tƣơng
ứng với tên thiết bị.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 71


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Bƣớc 3: Dùng điện thoại kết nối với kết nối với wifi do thiết bị phát ra. Sau đó
vào trang 192.168.4.1 tiến hành cài đặt wifi cho thiết bị.

Bƣớc 4: Kích hoạt Google Assistant trên thiết bị Android.

- Truy cập CH Play trên thiết bị android và cập nhật google phiên bản mới
nhất.
- Truy cập vào ứng dụng Google, chọn vào mục "thêm" ở góc phải màn hình
> chọn Cài đặt > Trợ lý Google.
- Tại danh mục này, ngƣời dùng chọn tab "Trợ lý" > Ngôn ngữ > và lựa chọn
tiếng Việt trong danh sách các ngôn ngữ đƣợc hỗ trợ. Google sẽ yêu cầu
ngƣời dùng đọc 4 lần cụm từ "Ok Google" để nhận dạng giọng nói.
Sau khi đã thực hiện các bƣớc trên, cô trợ lý ảo Google đã chính thức đƣợc kích
hoạt sử dụng. Sau này ngƣời dùng chỉ cần ấn giữ nút home để mở tính năng
hoặc một số mẫu máy khác dùng nút nguồn để mở tính năng, trình hỏi đáp bằng
giọng nói sẽ đƣợc kích hoạt sử dụng ngay lập tức.
Bƣớc 5: Mở ứng dụng để quan sát và điều khiển:
- Sau khi đã kích hoạt Google Assistant để điều khiển thiết bị bằng giọng nói
ta sử dụng các lệnh nhƣ sau:
• Đèn 1: Bật đèn 1, tắt đèn 1, tăng độ sáng đèn 1, giảm độ sáng đèn 1,
đèn 1 sáng tối đa.
 Đèn 2: Bật đèn 2, tắt đèn 2, tăng độ sáng đèn 2, giảm độ sáng đèn 2,
đèn 2 sáng tối đa.
 Đèn ngủ: Bật đèn ngủ, tắt đèn ngủ.
 Bật/ tắt cảm biến chuyển động: coi nhà giúp tôi, tôi đã quay lại nhà.
- Đối với việc điều khiển thông qua ứng dụng thì ta làm nhƣ sau:
Ban đầu khi mở ứng dụng ta sẽ có giao diện nhƣ sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 72


CHƢƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.31 Giao diện điều khiển đèn thông qua ứng dụng

Để điều khiển bật tắt đèn ta sử dụng tay thao tác lên ứng dụng bằng việc thay đổi
trạng thái của hai switch. Đối với việc điều khiển độ sáng đèn ta chỉ việc giữ và di
chuyển dấm chấm đỏ trên hai thanh seekBar.

Hình 4.32 Giao diện chuyển đổi sang hẹn giờ và xem nhiệt độ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 73


CHƢƠNG 4. THI CÔNG HỆ THỐNG
Để hẹn giờ bật/ tắt đèn 1, đèn 2 ta chọn vào dấu 3 chấm trên giao diện chính và
chọn hẹn giờ, xuất hiện giao diện mới nhƣ sau:

Hình 4.33 Giao diện hẹn giờ bật tắt đèn

Để hẹn giờ ta làm nhƣ sau: Trên giao diện sẽ có 4 khung để nhập giá trị giờ cài
đặt, 2 khung đầu sẽ là bật tắt đèn 1, hai khung sau sẽ bật tắt đèn 2. Sau khi nhập giá
trị cài đặt ta tiến hành chọn vào “HẸN GIỜ ĐÈN 1” và “ HẸN GIỜ ĐÈN 2”. Cuối
cùng để quan sát đƣợc nhiệt độ , độ ẩm, báo cháy, báo trộm trên giao diện bất kỳ ta
chọn vào dấu 3 chấm, chọn nhiệt độ [Hình 4.35].

Hình 4.34 Giao diện hiển thị nhiệt độ, độ ẩm, báo cháy và báo trộm.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 74


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.1 KẾT QUẢ ĐẠT ĐƢỢC
Sau khoảng 20 tuần nghiên cứu và thực thi đề tài nhóm chúng em đã đƣợc
học hỏi rất nhiều kiến thức liên quan đến đề tài.

5.1.1 Phần cứng


- Đã biết đƣợc phần cứng mạch điện bên trong đèn bulb bán trên thị trƣờng.
- Biết cách kết nối mạch điện để điều khiển độ sáng đèn bulb.
- Biết cách kết nối ESP giao tiếp các cảm biến DHT11 và PIR.
- Biết vẽ mạch nguyên lý và PCB trên phần mềm Altium.
- Biết thêm kỹ năng bố trí linh kiện trên PCB.
- Nâng cao kỹ năng hàn linh kiện dán.
- Biết cách sử dụng ESP8266 ESP-12E ( cách nạp chƣơng trình và ứng
dụng).

5.1.2 Phần mềm


- Đã biết tạo các dự án trên Adafruit.
- Biết cách tạo liên kết giữa Google assistant với Adafruit và các câu thoại
trên IFTTT.
- Đã biết cách tạo và sử dụng cơ sở dữ liệu thời gian thực trên Firebase.
- Nâng cao kỹ năng lập trình trên phần mềm lập trình ứng dụng cho các thiết
bị chạy hệ điều hành Android.
- Đã biết lập trình ứng dụng sử dụng cơ sở dữ liệu thời gian thực FIREBASE
chạy trên điện thoại thông minh sử dụng hệ điều hành Android.
- Biết cách sử dụng Google assistant để điều khiển thiết bị cho đề tài.
- Nâng cao kỹ năng lập trình trên phần mềm Arduino IDE.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 75


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.1.3 Một số hình ảnh kết quả đạt đƣợc của đề tài
a. Về phần cứng
Mạch điều khiển các thiết bị đèn đã đƣợc thi công 2 lớp và đƣợc hàn nhiều linh
kiện dán để đảm bảo kích thƣớc và thẩm mỹ của mạch.

Hình 5.1 Mặt trước và sau của mạch điều khiển thiết bị đèn.
Mạch giám sát nhiệt độ, độ ẩm, cảm biến PIR đƣợc thi công 2 lớp và sử dụng
nhiều linh kiện dán để giảm kích thƣớc và đảm bảo tính thẩm mỹ của mạch.

Hình 5.2 Mặt trước và sau của mạch giám sát nhiệt độ, độ ẩm và chuyển động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 76


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Các mạch điện đƣợc lắp ráp đầy đủ vào thiết bị đèn

Hình 5.3 Các mạch điện được láp ráp đầy đủ vào đèn.
Mạch giám sát nhiệt độ, độ ẩm, cảm biến PIR đƣợc lắp vào khung.

Hình 5.4 Mạch giám sát nhiệt độ, độ ẩm chuyển động được gắn vào khung.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 77


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
Các thiết bị đèn, và mạch giám sát nhiệt độ, độ ẩm, cám biến PIR đƣợc lắp ráp
hoàn chỉnh.

Hình 5.5 Đèn được láp ráp hoàn chỉnh

Hình 5.6 Hộp đo nhiệt độ, độ ẩm và chuyển động hoàn chỉnh.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 78


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
b. Về phần mềm
Đối với trợ lý ảo Google Assistant ta sẽ dùng lệnh “ Ok Google” để kích hoạt
ứng dụng và ra các câu lệnh đã đƣợc cài đặt sẵn. Lƣu ý mỗi lần thực hiện ra lệnh
chúng ta phải sử dụng từ khóa “ Ok Google”.

Hình 5.7 Giao diện Google Assistant sau khi ra lệnh điều khiển.

Phần mềm android sẽ chia thành 3 giao diện gồm giao diện hiển thị, điều khiển
đèn, giao diện hiển thị nhiệt độ, độ ẩm, cảnh báo cháy, trộm và giao diện hẹn giờ
điều khiển tắt, mở đèn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 79


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Hình 5.8 Giao diện hiển thị và điều Hình 5.9 Giao diện hiển thị nhiệt độ,
khiển đèn. độ ẩm, cảnh báo cháy, trộm.

Hình 5.10 Giao diện hẹn giờ điều khiển bật tắt đèn

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 80


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

5.2 NHẬN XÉT_ĐÁNH GIÁ


5.2.1 Phần cứng
 Mạch điều khiển độ sáng đèn:
Thiết bị đèn hoạt động ổn định nhƣ yêu cầu thiết kế.
- Thử nghiệm 2 thiết bị đèn hoạt động 5 tiếng thì 2 thiết bị đèn này vẫn
hoạt động ổn định. Nhóm chúng em chƣa thử nghiệm trên thời gian lâu
hơn nên chƣa có kết luận chính xác về độ bền lâu của thiết bị đèn.
- Các mạch điện đƣợc gắn vào bên trong thiết bị đèn nên rất an toàn cho
ngƣời sử dụng khi chạm vào vỏ đèn trong quá trình sử dụng.
- Tính thẩm mỹ đƣợc đảm bảo do nhóm chúng em không có thay đổi
nhiều trên bề mặt ngoài của thiết bị đèn.
- Đối với thiết bị đèn sử dụng sóng wifi thì không giới hạn điện thoại
thông minh chạy ứng dụng điều khiển điều khiển thiết bị đèn.
- Đèn có kích thƣớc hơi lớn.
- Mạch bắt Wifi với khoảng cách không đƣợc xa.

Bảng 5.1 Kết quả thực tế về điện áp và dòng tiêu thụ ở các mức PWM

Phần trăm PWM (%) Điện áp (V) Dòng điện tiêu thụ (mA)
10 64.8 49.7
20 69.7 74.6
30 73.4 94.8
40 77.7 114.5
50 81.4 134.2
60 84.4 154.1
70 87.1 173.2
80 89.3 192.4
90 92.6 220.1
100 95.2 243.8

Từ bảng kết quả thực tế, ta tính đƣợc công suất đèn ở chế độ 100% PWM

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 81


CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
P = UI = 95.2 x 0.2438 = 23.2 W. (5.1)
Nhƣ vậy chỉ đạt hiệu suất khoảng 80% so với ban đầu.
Bảng 5.2 Kết quả thực nghiệp khoảng cách bắt Wifi của thiết bị đèn
Khoảng cách Tình trạng
1m Bắt đƣợc tín hiệu
2m Bắt đƣợc tín hiệu
3m Tín hiệu yếu
3.5m Mất kết nối

 Thiết bị giám sát nhiệt độ, độ ẩm và chuyển động


- Thiết bị giám sát nhiệt độ độ ẩm và chuyển động hoạt động khá ổn định
và chính xác.
- Dữ liệu thu thập đƣợc chuyển lên Firebase nhanh chóng để hiển thị lên
app điện thoại.
- Board mạch đặt trong hộp nhỏ gọn, đảm bảo tính thẩm mỹ.
- Tầm bắt Wifi của mạch không đƣợc xa.

Bảng 5.3 Kết quả thực nghiệp khoảng cách bắt Wifi của thiết bị giám sát nhiệt
độ, độ ẩm và chuyển động.

Khoảng cách Tình trạng


1m Bắt đƣợc tín hiệu
2m Bắt đƣợc tín hiệu
2.5m Mất kết nối

5.2.2 Phần mềm


- Phần mềm có thể hoạt động đƣợc trên các điện thoại thông minh phiên
bản hệ điều hành Android 5.1 trở lên.
- Phần mềm có thể hiển thị đầy đủ các tính năng điều khiển hoặc các
thông tin nếu phần mềm hoạt động trên điện thoại có kích thƣớc màn
hình 5.1 inch với độ phân giải 720 x 1280 pixel hoặc các điện thoại có
kích thƣớc màn hình và độ phân giải lớn hơn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 82


CHƢƠNG 4. THI CÔNG HỆ THỐNG
- Ứng dụng chiếm 10.6 MB bộ nhớ sau khi cài đặt. Khi hoạt động thì ứng
dụng chiếm 51 MB tới 57 MB RAM của điện thoại.
- Khảo sát mức tiêu thụ pin của ứng dụng trên điện thoại SAMSUNG
GALAXY S6 với cấu hình RAM 3G, pin 2550mAh. Nhóm sử dụng
phần mềm AccuBattery để kiểm tra mức độ tiêu thụ pin của ứng dụng và
cho ra kết quả nhƣ sau:

Bảng 5.2 Kết quả khảo sát mức độ tiêu thụ pin của ứng dụng khi chạy trên điện thoại.

Thời gian khảo sát ( phút) Dung lƣợng pin sử dụng (mAh)
5 17.3
10 25.6
15 36.1
20 48.3
25 62.4

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 83


CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
6.1 KẾT LUẬN
Sau khi thực hiện xong đề tài, nhóm chúng em đã đạt đƣợc kết quả phù hợp với
mục tiêu mà nhóm đề ra ( đề tài đã đƣợc đƣợc 90 % so với mục tiêu đề ra). Nhóm
đã điều khiển đƣợc các thiết bị điện thông qua trợ lý ảo Google Assistant, đặc biệt
nhóm đã nghiên cứu cải tiến phần cứng mạch điện của các đèn chiếu sáng để phù
hợp với mục đích điều khiển đề ra ( thiết kế thi công mạch điều khiển và mạch công
suất phù hợp để bố trí vào khoảng không gian bên trong thiết bị đèn) và điều khiển
đƣợc việc tăng giảm độ sáng của các đèn này bằng Google Assistant. Bên cạnh việc
điều khiển đèn nhóm cũng đã thiết kế thêm mạch giám sát giá trị nhiệt độ, độ ẩm,
cảnh báo khi có sự cố cháy, trộm phù hợp với nhu cầu sử dụng của con ngƣời.

Thiết kế lập trình phần mềm điều khiển và hiển thị trên điện thoại thông minh sử
dụng hệ điều hành android điều điều khiển các thiết bị điện, giám sát nhiệt độ, độ
ẩm, báo cháy, báo trộm.

Phần mềm có điều điều khiển tắt mở, độ sáng của từng thiết bị đèn, có thể cài đặt
hẹn giờ bật tắt thiết bị cũng nhƣ phát ra chuông cảnh báo khi có sự cố xảy ra.

Thiết bị đèn sử dụng điện áp 220 VAC, chạy ổn định,dễ lắp đặt, tuổi thọ cao
không có bức xạ hồng ngoại. Phần mềm điều khiển hiển thị dễ cài đặt, dễ sử dụng.
Mức độ tiêu thụ pin của điện thoại thấp.

Bên cạnh những ƣu điểm thì cũng có những khuyết điểm nhƣ: kích thƣớc của
thiết bị đèn tƣớng đối lớn, thời gian thực thi các thiết bị còn phụ thuộc vào tốc độ
mạng. Phần mềm chỉ hoạt động với điện thoại android phiên bản 5.1 trờ lên. Thiết
bị không có nút điều khiển bên ngoài nên khi không có điện thoại thì ngƣời sử dụng
chỉ có thể tắt bằng cách ngắt nguồn điện cung cấp.

6.2 HƢỚNG PHÁT TRIỂN


- Tạo ra phần mềm có thể chạy trên hệ điều hành IOS.
- Có thể điều khiển bằng trợ lí ảo Siri .
- Có thể kết hợp với Google home để tiện lợi cho ngƣời dùng trong việc điều
khiển

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 84


CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
- Thiết kế thiết bị đèn nhỏ gọn hơn
- Thiết kế mạch bắt Wifi tốt hơn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 85


TÀI LIỆU THAM KHẢO

TÀI LIỆU THAM KHẢO


Tiếng việt
[1] Huỳnh Đoàn Bảo Duy, chủ đề “tìm hiểu về hệ điều hành android” trong mục
“kinh nghiệm hay” từ trang web , “dienmayxanh.com” năm 2015.
[2] Trang web , “vtcacademy.edu.vn” trong mục “tin tức”với chủ đề “nhận diện 5
lợi ích của của Firebase”.
[3] Trang web , “smartshop.vn” trong mục “tin tức công nghệ” với chủ đề “ tìm
hiểu công nghệ thu phát sóng wifi” ngày 28 tháng 7 năm 2015.
Sách tham khảo
[4] Trần Thị Hà,Trƣơng Thị Bích Ngà, Nguyễn Thị Lƣỡng,…Giáo trình: Điện tử
cơ bản, Xuất bản: Đại học Quốc gia Tp. HCM, 2013.
[5] Nguyễn Văn Hiệp – Đinh Quang Hiệp, “Lập trình android cơ bản ”, Nhà xuất
bản ĐH Quốc Gia, Tp.HCM, 2015.
Tiếng anh
[6] Datasheet ESP8266 12EX
[7] Datasheet OptoPC817
[8] Datasheet IRF830
[9] Datasheet DHT11
[10] Datasheet PIR AM312

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 86


PHỤ LỤC

PHỤ LỤC
 GIỚI THIỆU TỔNG QUAN VỀ PHẦN CỨNG
 Thiết bị đầu vào
a. Cảm biến DHT11 [9]

DHT11 Là cảm biến nhiệt độ, độ ẩm 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-wire truyền
dữ liệu duy nhất). Cảm biến đƣợc tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận
về đƣợc chính xác mà không cần phải qua bất kỳ tính toán nào.

 Đặc điểm:
o Điện áp hoạt động : 3V - 5V (DC)
o Dải độ ẩm hoạt động : 20% - 90% RH, sai số ±5%RH
o Dải nhiệt độ hoạt động : 0°C ~ 50°C, sai số ±2°C
o Tần số lấy mẫu tối đa: 1 Hz
o Khoảng cách truyền tối đa: 20m
 Sơ đồ chân Cảm biến DHT11 gồm 2 chân cấp nguồn, và 1 chân tín hiệu. Hiện nay,
thông dụng ngoài thị trƣờng có hai loại đóng gói cho DHT11: 3 chân và 4 chân.
Xem các hình dƣới.

Hình 7.1 Sơ đồ chân của DHT11

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 87


PHỤ LỤC
b. Module cảm biến chuyển động PIR AM312 [10]

Cảm biến thân nhiệt chuyển động PIR (Passive infrared sensor) PIR
AM312 đƣợc sử dụng để phát hiện chuyển động của các vật thể phát ra bức xạ
hồng ngoại (con ngƣời, con vật, các vật phát nhiệt).

Hình 7.2 Module cảm biến PIR AM312


o Thông số kỹ thuật:
- Điện áp làm việc: DC 2.7-12V
- Tiêu thụ điện : <0,1mA
- Thời gian trễ: 2 giây
- Thời gian chặn: 2 giây
- Kích hoạt: có thể đƣợc lặp đi lặp lại
- Phạm vi cảm biến: 3 mét, góc hình nón ≤100 độ
- Nhiệt độ làm việc: -20 - + 60oC

 Thiết bị điều khiển trung tâm


o Mạch wifi ESP8266 ESP- 12 E NodeMCU [6]
ESP8266 ESP - 12E NodeMCU là module truyền nhận WiFi sử dụng
chip ESP8266EX SoC (System on Chip), với lõi vi xử lý 32 bit hoạt động
với tần số 80MHz và có thể đạt tới tốc độ tối đa 160MHz, 64KB RAM và 512KB
Flash.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 88


PHỤ LỤC
Chúng ta có thể dùng nó để đƣa những dự án kết nối đến Internet. Đơn giản nó sử
dụng ngõ giao thức nối tiếp với tốc độ Baud 9600(mặc định). Kết nối mạng
không dây, giống nhƣ một máy chủ hoặc một cầu nối trung gian.

Hình 7.3. Chip ESP8266EX


o Tính năng của Chip ESP8266EX
 Hổ trợ 3 chuẩn 802.11 b /g/n.
 Tích hợp MCU 32 it có công suất thấp.
 Tích hợp10-bit ADC.
 Tích hợp chuẩn giao thức TCP/IP.
 Tích hợp TR switch, alun, LNA, khuếch đại công suất và mạng lƣới.
 Hỗ trợ anten thu sóng.
 WiFi 2.4 GHz, hổ trợ chuẩn ảo mật WPA/WPA2.
 Hỗ trợ các chế độ STA/AP/STA+AP.
 SDIO 2.0, (H) SPI, UART, I2C, I2S, IR Remote Control, PWM, GPIO.
 STBC, 1x1 MIMO, 2x1 MIMO.
 Chế độ tiết kiệm năng lƣợng <10uA, Dòng rò khi ở chế độ nghỉ < 5uA.
 Thời gian đánh thức đến khi truyền gói tin là < 2ms.
 Công suất tiêu thụ ở chế độ (DTIM3)< 1.0mW.
 Ở chế độ 802.11 POUT +20dBm.
 Nhiệt độ hoạt động -40C ~ 125C.
o Ứng dụng chính
 Những ứng dụng IoT chính bao gồm:
 Thiết bị điện trong nhà.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 89


PHỤ LỤC
 Nhà tự động.
 Ổ cắm thông minh và đèn thông minh.
 Mạng lƣới mạng internet.
 Điều khiển không dây trong công nghiệp.
o Chức năng từng chân chip ESP8266 ESP - 12E NodeMCU

Hình 7.4. Sơ đồ chân mạch ESP8266 ESP – 12E NodeMCU

Bảng 7.1. Bảng chức năng từng chân mạch ESP8266 ESP – 12E NodeMCU

Chân Tên chân Thể loại Chức năng


1 EXT –RSTB I Thiết lập lại tín hiệu ( khi điện áp xuống mức thấp)
2 ADC I Đọc điện áp ngõ vào
3 EN I Cho phép chip hoạt động khi mức cao
4 GPIO15 I/O GPIO15, HSPI_CS, UART0_RTS
5 GPIO14 I/O GPIO14, HSPI_CLK
6 GPIO12 I/O GPIO12, HSPI_MISO
7 GPIO13 I/O GPIO13; HSPI_MOSI; UART0_CTS
8 VCC P Cấp nguồn 3V3 cho chip
9 CS0 I/O Kết nối tới SD_CMD (Series R: 200Ω); SPI_CS0;
GPIO11
10 MISO I/O Kết nối tới SD_D0 (Series R: 200Ω); SPI_MSIO;
GPIO7
11 GPIO9 I/O Kết nối tới SD_D2 (Series R: 200Ω); SPIHD;
HSPIHD; GPIO9

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 90


PHỤ LỤC
12 GPIO10 I/O Kết nối tới SD_D3 (Series R: 200Ω); SPIWP;
HSPIWP; GPIO10
13 GPIO8 I/O Kết nối tới SD_D1 (Series R: 200Ω); SPI_MOSI;
GPIO8
14 GPIO6 I/O Kết nối tới SD_CLK (Series R: 200Ω); SPI_CLK;
GPIO6
15 GND P Nối GND cho chip
16 GPIO15 I/O GPIO15; HSPI_CS; UART0_RTS
17 GPIO2 I/O Kết nối UART Tx trong quá trình nạp chƣơng trình
; GPIO2
18 GPIO0 I/O GPIO0; SPI_CS2
19 GPIO4 I/O GPIO4
20 GPIO5 I/O GPIO5
21 GPIO3 I/O Kết nối UART Rx trong quá trình nạp chƣơng trình
; GPIO3
22 GPIO1 I/O Kết nối UART Tx trong quá trình nạp chƣơng
GPIO1; SPI_CS1

Bảng 7.2. Bảng thông số của chip ESP8266EX


Danh mục Tiêu chí Giá trị
Chứng chỉ FCC/CE/TELEC/SRRC
Thông số wifi
Giao thức Wifi 802.11 b/g/n
2.4G-2.5G (2400M-2483.5M)
Tần số
802.11 b: + 20 dBm
Tx
802.11 g: +17 dBm
802.11 n: +14 dBm
802.11 b: -91 dbm (11 Mbps)

802.11 g: -75 dbm (54 Mbps)


Rx
802.11 n: -72 dbm (MCS7)
PCB Trace, External, IPEX Connector,
Loại Anten Ceramic Chip
UART/SDIO/SPI/I2C/I2S

Bus Ngoại vi
GPIO/PWM

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 91


PHỤ LỤC
3.0~3.6V
Điện áp hoat động
Trung bình 80mA
Dòng điện tiêu thụ
station/softAP/SoftAP+station
WiFi mode
WPA/WPA2
Bảo mật
WEP/TKIP/AES
Mã hóa
Supports Cloud Server Development /
Software Development SDK for custom firmware developmen
IPv4, TCP/UDP/HTTP/FTP
Giao thức mạng hổ trợ

o Tổ chức bộ nhớ trong chip ESP8266EX


ESP8266EX WiFi SoC đƣợc nhúng vào một bộ điều khiển bộ nhớ, bao gồm
SRAM và ROM. MCU có thể truy cập vào bộ nhớ thông qua đƣờng iBUS, dBUS,
và AHB. Tất cả các thành phần trong bộ nhớ đã đƣợc truy cập thì sẽ đƣợc quyết
định bởi bộ nhớ trung tâm, bộ nhớ này sẽ cho phép trình tự hoạt động của bộ nhớ
theo thời gian khi nhận đƣợc yêu cầu từ bộ vi xử lý.
Phiên bản này cung cấp dung lƣợng SRAM nhƣ sau:

Kích thƣớc RAM <36kB, có nghĩa rằng khi ESP8266EX đang làm việc theo
chế độ kết nối với router, không gian lập trình truy cập cho ngƣời dùng là khoảng
36kB.)

Không có ROM chƣơng trình trong SoC, do đó chƣơng trình sử dụng trong
ROM phải đƣợc lƣu trữ trong SPI flash (trong SPI flash này cho phép ta lƣu trữ
đƣợc 16MB).
o Bộ điều chế xung PWM
Chip ESP8266EX hổ trợ cho chúng ta 4 ngõ ra PWM theo mạch ESP8266
ESP – 12E NodeMCU nhƣ sau:
Bảng 7.3. Bảng các chân pwm của mạch ESP8266 ESP-12E NodeMCU

Số chân Tên chân Ngõ I/O Tên chức năng


6 GPIO12 I/O PWM0
4 GPIO15 I/O PWM1

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 92


PHỤ LỤC
5 GPIO14 I/O PWM2
19 GPIO4 I/O PWM3

PWM đƣợc tạo ra bởi chƣơng trình do chúng ta viết trong chip
ESP8266EX. Ví dụ, điều khiển ánh sáng đèn LED, thì PWM đƣợc thực hiện
bởi sự đóng ngắt ngõ ra điện áp theo thời gian, thời gian tối thiểu tới 44 ns.
dải tần số PWM có thể điều chỉnh từ 1000 us cho tới 10000 us hay giữa
100Hz và 1KHz.

 Thiết bị đầu ra
a. Opto PC817 [7]
Opto PC817 là cách ly quang (hay còn gọi là OPTO) là một linh kiện bán dẫn cấu
tạo gồm 1 bộ phát quang và một cảm biến quang tích hợp trong 1 khối bán
dẫn, bộ phát quang là 1 diode phát quang dùng để phát ra ánh sáng kích
cho các cảm biến quang dẫn, còn cảm biến quang là phototran.

Hình 7.5 Opto PC817


Opto PC817 đƣợc dùng để cách ly giữa các khối chênh lệch nhau về
điện hay công suất nhƣ khối có công suất nhỏ với khối điện áp lớn. Hoặc
có thể dùng để chống nhiễu cho các mạch cầu H, ngỏ ra PLC, chống nhiểu
cho các thiết bị đo lƣờng
Thông số kỹ thuật
 IF = 50mA
 V R = 6V

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 93


PHỤ LỤC
 P = 70mW
 P C = 150mW
 IC = 50mA
 V CEO = 35V
 V ECO = 6V
 Nhiệt độ: -30 ~ 100 độ C
b. Mosfet IRF830 [8]

Mosfet IRF830 là Transistor hiệu ứng trƣờng là một Transistor đặc biệt có
cấu tạo và hoạt động khác với Transistor thông thƣờng. Mosfet thƣờng có công
suất lớn hơn rất nhiều so với BJT, Mosfet IRF830 có công suất là 125W.

Hình 7.6 Mosfet IRF830

 G: Gate gọi là cực cổng


 D: Drain gọi là cực máng
 S: Source gọi là cực nguồn

Mosfet IRF830 có nguyên tắc hoạt động dựa trên hiệu ứng từ trƣờng để tạo ra
dòng điện, là linh kiện có trở kháng đầu vào rất lớn, khi điện áp chân kích cực
VGS > 0 thì giá trị điện trở giảm xuống cho dòng điện ID thoát xuống S, dòng
điện chạy từ D xuống S.

o Thông số kỹ thuật
 Điện áp đánh thủng là 500V.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 94


PHỤ LỤC
 Điện áp VGS = +/-20V.
 Dòng chịu đựng trung bình là 5.9A.
 Nhiệt độ hoạt động: -55oC ~ 175oC.
 Công suất: 125W.

c. Led bulb 30W

Là loại led có nguồn sáng chất rắn, hiệu suất cao, có độ bền cao, không chứa thủy
ngân và hóa chất độc hại, không phát ra tia tử ngoại, an toàn cho ngƣời sử
dụng và thân thiện môi trƣờng.

 PHẦN MỀM VIẾT CHƢƠNG TRÌNH


 Giới thiệu phần mềm lập trình
Nhóm chúng em sử dụng phần mềm lập trình Arduino IDE để lập trình cho
mạch vi điều khiển ESP8266 ESP-12E NodeMCU.

Phần mềm Arduino IDE đang đƣợc sử dụng rất rộng rãi trên thế giới để lập
trình cho các mạch Arduino, phần mềm đƣợc thiết kế rất dễ dàng cho ngƣời sử dụng
kể cả những ngƣời không chuyên về lập trình về các vi điều khiển cũng dễ dàng tiếp
cận và lập trình đƣợc, dựa trên thƣ viện nguồn mở nên rất dễ trong việc tìm kiếm tài
liệu và các chƣơng trình liên quan, giúp ngƣời sử dụng có thể dễ dàng tạo ra các dự
án của riêng mình mà cũng không cần quá am hiểu về phần cứng của vi điều khiển.
Ngôn ngữ sử dụng để lập trình là ngôn ngữ C và ngôn ngữ C++.

 Các ƣớc sử dụng phần mềm lập trình Arduino IDE để lập trình:
 Tải phần mềm và mở phần mềm.

Để sử dụng đƣợc chƣơng trình lập trình chúng ta tiến hành tải phần mềm từ
trang web: arduino.cc

Nhóm chúng em sử dụng phần mềm để lập trình cho mạch vi điều khiển
ESP8266 ESP-12E NodeMCU nên nhóm em lựa chọn phiên bản Arduino IDE
1.8.8 hoặc cao hơn và cụ thể là phiên bản Arduino IDE 1.8.8.

Sau khi tải phần mềm về thành công, mở phần mềm và phần mềm sẽ xuất
hiện giao diện nhƣ hình và chúng ta có thể tiến hành lập trình.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 95


PHỤ LỤC

Hình 7.7. Giao diện phần mềm Arduino IDE


 Tạo project, viết chƣơng trình và biên dịch cho vi điều khiển ESP8266 ESP-
12E NodeMCU:

Để có thể lập trình cho mạch vi điều khiển ESP8266 ESP-12E NodeMCU
trên phần mềm Arduino IDE thì chúng ta cần cài bộ thƣ viện hỗ trợ.
Để cài thƣ viện cần mở phần mềm Arduino IDE sau đó lựa chọn vào “File”
sau đó lựa chọn “Preferences” và thêm đƣờng dẫn để cài đặt bộ thƣ viện tại
“ManagerURLs”:
http://arduino.esp8266.com/stable/package_esp8266com_index.json”.

Hình 7.8. Đường dẫn để cài gói thư viện lập trình cho ESP8266
NodeMCU
Sau đó nhóm chúng em tiến hành vào mục “Tools” và lựa chọn vào “Board”
tiếp sau đó là “Boards Manager” để cài đặt thêm thƣ viện cho mạch vi điều khiển
ESP8266 ESP-12E NodeMCU.Sau đó chọn phiên bản và chọn “Install” nhƣ hình.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 96


PHỤ LỤC

Hình 7.9. Tiến hành cài đặt gói thư viện cho ESP8266 NodeMCU
Tiếp sau đó nhóm chúng em sẽ cài đặt các thông số để có thể lập trình, biên
dịch và nạp chƣơng trình cho ESP8266 ESP-12E NodeMCU, nhóm chúng em tiến
hành chọn vào “Tools” sau đó chọn “Board” và tiếp tục chọn “NodeMCU 1.0 (ESP-
12E Module).

Sau đó thiết lập các thông số nhƣ tốc độ xử lý của CPU (CPU Frequency) lựa
chọn tùy theo mục đích sử dụng, bộ nhớ Flash, tốc độ nạp chƣơng trình 115200
(Upload Speed) là tốc độ nạp chƣơng trình cao, tốc độ càng cao nạp càng nhanh.
Thông tin thông số nhƣ hình 7.10.

Hình 7.10. Thiết lập thông số cho ESP8266 NodeMCU trên IDE

Tiến hành kết nối mạch nạp cho mạch vi điều khiển ESP8266 ESP-12E
NodeMCU.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 97


PHỤ LỤC
Sau khi đã cài đặt xong nhóm chúng em tiến hành lập trình cho mạch vi điều
khiển ESP8266 ESP-12E NodeMCU, chƣơng trình sáng tắt led đổi trạng thái sau
1s, sáng tắt một đèn led đƣợc kết nối vào chân D0 và trên phần cứng của mạch có
thiết kế một đèn led kết nối vào chân D0 này. Sau khi lập trình xong tiến hành biên
dịch và nạp chƣơng trình chọn vào biểu tƣợng theo nhƣ khung tô đỏ nhƣ hình 7.11.

Hình 7.11 Nạp chương trình nhấp nháy led cho ESP.

Sau khi chọn nạp chƣơng trình thì quá trình iên dịch và nạp sẽ tiến hành nhƣ
hình ên dƣới, sẽ có thông báo hiện lên số % chƣơng trình đƣợc nạp. Khi đủ 100%
thì chƣơng trình đã nạp hoàn thành và mạch vi điều khiển ESP8266 ESP-12E
NodeMCU sẽ hoạt động theo chƣơng trình đã lập trình.
Để điều khiển thiết bị từ xa chúng ta có nhiều cách nhƣ tạo Webserver, sử dụng
trang Web io.adafruit.com, cơ dở dữ liệu thời gian thực Firebase,… Trong đề tài
này nhóm chúng em sử dụng 2 sử dụng 2 server đó là Adafruit và Firebase, dùng
Adafruit để điểu khiển thiết bị bằng giọng nói với sự trợ giúp của Google assistant
và Firebase để gửi dữ liệu lên và đọc dữ liệu về cho ESP và điện thoại.

Do nhóm em sử dụng 2 trang Web trên nên trong phần mềm Arduino IDE cần
cài các thƣ viện của Adafruit và thƣ viện của Firebase.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 98


PHỤ LỤC

Hình 7.12 Thư viên Adafruit_Mqtt.


Để tiến hành tải bộ thƣ viện Firebase nhóm chúng em tiến hành truy cập vào
đƣờng dẫn web: https://github.com/firebase/firebase-arduino sau đó nhóm chúng
em tiến hành lựa chọn “Clone or download”, sau đó lựa chọn “Download ZIP”. Sau
đó nhóm em tiến hành thêm bộ thƣ viện này vào phần mềm Arduino IDE.

 TẠO DỰ ÁN TRÊN WEB :


Sau khi cài đặt các thƣ viện xong, nhóm em chuyển sang tạo các dự án trên 2
trang Web trên, tuy nhiên để Google assistant liên kết đƣợc với Adafruit ta cần 1
trang Web trung gian là ifttt.com, trang web này cho phép ngƣời phát triển đặt các
câu thoại giữa ngƣời dùng với Google assistant và Google assistant phản hồi lại các
câu lệnh đã đặt trƣớc.

Đầu tiên tạo dự án trên Adafruit : tại trang địa chỉ : io.adafruit.com

Sau khi tạo tài khoản trên Adafruit thì nhóm em bắt đầu tạo 1 Dashboard tên
“datn” bằng cách bấm vào Action – creat a new dashboard.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 99


PHỤ LỤC

Hình 7.13 Tạo Dashboard trên Adafruit.

Sau khi có Dashboard, chúng em vào Dashboard add thêm Block. Và block
chúng em cần add đó làToggle (nhƣ hình)

Hình 7.14 Tạo Block trong Dashboard.


Sau đó chúng em cần tạo các Feed mới bằng cách điền tên feed vào vị trí 1 bấm
creat ở vị trí 2 và bấm next ở vị trí 3.

Hình 7.15 Tạo các Feed cho Dashboard.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 100


PHỤ LỤC
Chúng ta đặt tên cho Block và điền 1 ở block on và 0 ở block off, và bấm creat
block.

Hình 7.16 Tạo trạng thái cho Button.


Tƣơng tự nhƣ vậy chúng em cứ tạo các block khác và có kết quả nhƣ hình 7.17.

Hình 7.17 Các block sau khi tạo.


Tiếp theo ta sẽ tạo lời thoại và liên kết từng feed với Google Assistant trên
ifttt.com.

Đầu tiên chúng em truy cập ifttt.com và tạo 1 tài khoản, sau đó bấm vào my
applets, chọn new applet.

Tiến hành tạo các Applets theo trình tự:

Với mục THIS thì chúng em chọn Google Assistant nhƣ hình dƣới

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 101


PHỤ LỤC

Hình 7.18 Giao diện khi tạo new applet

Gõ Google assistant vào ô tìm kiếm

Hình 7.19 Gõ Google assistant vào ô tìm kiếm và chọn.

Chọn “Say a simple phrase”

Hình 7.20 Chọn “Say a simple phrase” để đến giao diện tạo lời thoại.

Điền câu lệnh muốn nói vào các ô, sau đó bấm Create Trigger.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 102


PHỤ LỤC

Hình 7.21 Điền câu lệnh muốn nói vào các ô tương ứng.

Với mục THAT thì chúng em chọn “Adafruit” .

Hình 7.22 Giao diện sau khi hoàn thành mục this.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 103


PHỤ LỤC

Hình 7.23 Gõ vào ô tìm kiếm Adafruit và chọn.

Chọn “Send data to Adafruit IO”

Hình 7.24 Chọn vào Send data to Adafruit IO

Lúc này chúng em chọn Feed “light1” (Cái đã tạo ở dashboard Adafruit), còn
mục Data to save thì nhập “1” (Do đang làm lệnh ON thiết bị). Sau đó bấm “Creat
action”
Tƣơng tự, chúng ta tạo Applet mới cho lệnh OFF, thay vì “turn on the light” thì
giờ sẽ là “turn off the light”.
Cứ thế chúng em tạo applet liên kết với các feed còn lại.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 104


PHỤ LỤC

Hình 7.25 Liên kết đến các feed ở Adafruit và điền dữ liệu sẽ gửi.

Sau khi tạo hết các lời thoại liên kết đến các feed ở Adafruit thì chúng em có kết
quả nhƣ hình 7.26

Hình 7.26 Kết quả sau khi tạo các lời thoại liên kết với các feed ở Adafruit.
Tiếp theo ta truy cập firebase.google.com để tạo các dự án.
Nhóm chúng em sẽ tiến hành tạo một vùng cơ sở dữ liệu mới bằng cách chọn vào
“CREATE NEW PROJECT” nhƣ hình 7.27.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 105


PHỤ LỤC

Hình 7.27. Tạo vùng cơ sở dữ liệu mới


Tiếp sau đó sẽ nhập thông tin tên của vùng dữ liệu, tên này đặt tùy thuộc vào
ngƣời sử dụng, tên này rất quan trọng trong quá trình ghi và đọc dữ liệu từ cơ sở dữ
liệu, sau đó chọn “CREATE PROJECT” để vùng cơ sở dữ liệu đƣợc tạo ra.

Hình 7.28. Nhập thông tin để tạo ra vùng dữ liệu mới


Khi đã tạo thành công vùng cơ sở dữ liệu thì giao diện sẽ hiện ra các tùy chọn,
nhóm chúng em sẽ lựa chọn vào “Database” thì vùng dữ liệu này hiện ra và ngƣời
dùng có thể thao tác để tạo ra dữ liệu ở trong này, hoặc các thiết bị và điện thoại có
thể ghi đọc dữ liệu từ đây.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 106


PHỤ LỤC

Hình 7.29. Vùng cơ sở dữ liệu để sử dụng


Sau đó để có thể đọc ghi đƣợc dữ liệu từ ứng dụng chạy thiết bị điện thoại
thông minh và ESP thì nhóm chúng em cần phải cấp quyền đọc và ghi dữ liệu cho
thiết bị, để cấp quyền thì nhóm chúng em sẽ chọn “RULES” và sau đó sẽ đổi “read :
true” và “write : true” nhƣ hình 7.30.

Hình 7.30. Thay đổi cấp quyền đọc ghi dữ liệu


Và dựa theo địa chỉ tên vùng dữ liệu đã tạo thì các thiết bị điện thoại thông
minh đã đƣợc lập trình ứng dụng truy cập vào thông qua hàm ghi đọc dữ liệu thì
hoàn toàn có thể đọc ghi dữ liệu lên vùng dữ liệu này. Địa chỉ dựa theo tên vùng dữ
liệu mới tạo: https://testdatn-12cd4.firebaseio.com/

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 107


PHỤ LỤC
 Chƣơng trình mạch điều khiển độ sáng đèn bulb
#include <FirebaseArduino.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#define FIREBASE_HOST "testdatn-12cd4.firebaseio.com"
#define FIREBASE_AUTH
"HszRBsnMPCl1Yc05DeHtErXk7IhNoVk8KJ10swB1"
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "masterpoke"
#define MQTT_PASS "7b5c65d02b14449f945c55acfd4d20fe"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT,
MQTT_NAME, MQTT_PASS);
Adafruit_MQTT_Subscribe ds1 = Adafruit_MQTT_Subscribe(&mqtt,
MQTT_NAME "/f/dosang1");
Adafruit_MQTT_Subscribe dsmax = Adafruit_MQTT_Subscribe(&mqtt,
MQTT_NAME "/f/max");
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe(&mqtt,
MQTT_NAME "/f/light1");
#define LEDpin D1
uint16_t a=0;
int8_t dosang1;
void setup(){
Serial.begin(115200);
WiFiManager w;
w.autoConnect("light 1");
Serial.println("connected...");

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 108


PHỤ LỤC
mqtt.subscribe(&ds1);
mqtt.subscribe(&dsmax);
mqtt.subscribe(&light);
Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);
}
void loop(){
MQTT_connect();
dosang1= Firebase.getInt("/light 1");
Adafruit_MQTT_Subscribe * subscription;
while ((subscription = mqtt.readSubscription(1000)))
{
if (subscription == &ds1)
{
Serial.print("den 1 muc: ");
Serial.println((char*) ds1.lastread);
if (!strcmp((char*) ds1.lastread, "0"))
{
dosang1--;
if( dosang1 < 1) dosang1=1;
Firebase.setInt("/light 1",dosang1);
}
else
{
dosang1++;
if( dosang1 > 10) dosang1=10;
Firebase.setInt("/light 1",dosang1);
}
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 109


PHỤ LỤC
if (subscription == &dsmax)
{
Serial.print("do sang max: ");
Serial.println((char*) dsmax.lastread);
if (!strcmp((char*) dsmax.lastread, "1"))
{
dosang1=10;
Firebase.setInt("/light 1",dosang1);
}
}
Serial.print("muc sang den 1: ");
Serial.println(dosang1);
///////////////////////////////////////////
if (subscription == &light)
{
Serial.print("do sang: ");
Serial.println((char*) light.lastread);
if (!strcmp((char*) light.lastread, "0"))
Firebase.setInt("/den1", 1);
else
Firebase.setInt("/den1", 0);
}
}
//////////////////////////////////////////////
if (Firebase.failed()) {

analogWrite(LEDpin, a);
}
if (Firebase.getInt("/den1")==0)

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 110


PHỤ LỤC
{
int b = Firebase.getInt("/light 1");
switch (b){
case 1:
a=102;
break;
case 2:
a=204;
break;
case 3:
a=307;
break;
case 4:
a=410;
break;
case 5:
a=512;
break;
case 6:
a=614;
break;
case 7:
a=716;
break;
case 8:
a=818;
break;
case 9:
a=921;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 111


PHỤ LỤC
break;
case 10 : a=1023;break;
}
analogWrite(LEDpin, a);
Firebase.setInt("/ttden1", 0);
//
}

else
{ a=0;
analogWrite(LEDpin, 0);
Firebase.setInt("/ttden1", 1);
}
}
void MQTT_connect()
{
int8_t ret;
if (mqtt.connected())
{
return;
}
Serial.print("Connecting to MQTT... ");
while ((ret = mqtt.connect()) != 0)
{
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Retrying MQTT connection in 1 seconds...");
mqtt.disconnect();
delay(1000); // cho 1s
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 112


PHỤ LỤC
Serial.println("MQTT Connected!");
}
 Chƣơng trình mạch giám sát nhiệt độ,độ ẩm và chuyển động
#include <FirebaseArduino.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#define DHTTYPE DHT11
#define DHTPIN D4
#define FIREBASE_HOST "testdatn-12cd4.firebaseio.com"
#define FIREBASE_AUTH "HszRBsnMPCl1Yc05DeHtErXk7IhNoVk8KJ10swB1"
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "masterpoke"
#define MQTT_PASS "7b5c65d02b14449f945c55acfd4d20fe"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT,
MQTT_NAME, MQTT_PASS);
Adafruit_MQTT_Subscribe goout = Adafruit_MQTT_Subscribe(&mqtt,
MQTT_NAME "/f/goout");
Adafruit_MQTT_Subscribe denngu = Adafruit_MQTT_Subscribe(&mqtt,
MQTT_NAME "/f/denngu");
int powerPin = D7; // chọn chân 3 NGUON
int inputPin = D2; // chọn ngõ tín hiệu vào cho PIR
int pirState = LOW; // Bắt đầu với không có báo động
int pinSpeaker = D5; //chọn chân cho chuông khi có đột nhập
int val=0;
DHT dht(DHTPIN, DHTTYPE);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 113


PHỤ LỤC
void setup() {
pinMode(powerPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(pinSpeaker, OUTPUT);
pinMode(D0,OUTPUT);
Serial.begin(115200);
WiFiManager w;
w.autoConnect("dht esp");
Serial.println("connected...");
mqtt.subscribe(&goout);
mqtt.subscribe(&denngu);
Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);
dht.begin();
}
void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe * subscription;
while ((subscription = mqtt.readSubscription(1000)))
{
if (subscription == &goout)
{
Serial.print("bat pir: ");
Serial.println((char*) goout.lastread);
if (!strcmp((char*) goout.lastread, "0"))
{
digitalWrite(powerPin, LOW);
Firebase.setInt("/ttpir", 1);
}
else

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 114


PHỤ LỤC
{
digitalWrite(powerPin, HIGH);
Firebase.setInt("/ttpir", 0);

Firebase.setInt("/den1", 1);
Firebase.setInt("/den2", 1);
Firebase.setInt("/denngu", 1);
}
}
if (subscription == &denngu)
{
Serial.print("den ngu: ");
Serial.println((char*) denngu.lastread);
if (!strcmp((char*) denngu.lastread, "0"))
{
digitalWrite(D0, LOW);
Firebase.setInt("/denngu", 1);
}
else
{ digitalWrite(D0, HIGH);
Firebase.setInt("/denngu", 0);
}
}
}
if ( Firebase.getInt("/denngu")==0)
digitalWrite(D0, HIGH);
else digitalWrite(D0, LOW);
float h = dht.readHumidity(); //Đọc độ ẩm
float t = dht.readTemperature(); //Đọc nhiệt độ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 115


PHỤ LỤC
if (isnan(h) || isnan(t)) {
Serial.println(F("loi doc cam bien!"));
return;
}
Serial.println("nhiet do:");
Serial.println(t);
Serial.println("do am:");
Serial.println(h);
Firebase.setFloat ("/Temp", t);
Firebase.setFloat ("/Humidity", h);
if (t>=40)
{
digitalWrite(pinSpeaker, HIGH);
Firebase.setInt ("/bao chay", 1);
}

else
{
digitalWrite(pinSpeaker, LOW);
Firebase.setInt ("/bao chay", 0);
}
val = digitalRead(inputPin); // đọc giá trị đầu vào.
if (val == HIGH) // nếu giá trị ở mức cao.(1)
{
digitalWrite(pinSpeaker, HIGH);
if (pirState == LOW)
{
Serial.println("phat hien chuyen dong!");
Firebase.setInt ("/bao trom", 1);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 116


PHỤ LỤC
pirState = HIGH;
}
}
else
{
digitalWrite(pinSpeaker, LOW);
if (pirState == HIGH)
{
Serial.println("ket thuc chuyen dong");
Firebase.setInt ("/bao trom", 0);
pirState = LOW;
}
}
}
void MQTT_connect()
{
int8_t ret;
if (mqtt.connected())
{
return;
}
Serial.print("Connecting to MQTT... ");
while ((ret = mqtt.connect()) != 0)
{
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Retrying MQTT connection in 1 seconds...");
mqtt.disconnect();
delay(1000); // cho 1s
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 117


PHỤ LỤC
Serial.println("MQTT Connected!");
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 118


MỤC LỤC

Trang bìa……………………………………………………………………………..i
Nhiệm vụ đồ án……………………………………………………………………...ii
Lịch trình……………………………………………………………………….......iii
Cam đoan……………………………………………………………………….......iv
Lời cảm ơn…………………………………………………………………………..v
Mục lục……………………………………………………………………………..vi
Danh mục hình……………………………………………………………………..vii
Danh mục bảng……………………………………………………………………viii
Tóm tắt………………………………………………………………………….......ix
CHƢƠNG 1. TỔNG QUAN .................................................................................. 1
1.1 ĐẶT VẤN ĐỀ .................................................................................................. 1
1.2 MỤC TIÊU ...................................................................................................... 2
1.3 NỘI DUNG NGHIÊN CỨU ............................................................................ 2
1.4 GIỚI HẠN....................................................................................................... 3
1.5 BỐ CỤC ........................................................................................................... 3
CHƢƠNG 2. CƠ SỞ LÝ THUYẾT ...................................................................... 5
2.1 GIỚI THIỆU .................................................................................................... 5
2.2 GIỚI THIỆU VỀ TRỢ LÝ ẢO GOOGLE ASSISTANT. ................................. 5
2.2.1 Khái niệm ................................................................................................... 5
2.2.2 Lịch sử phát triển ........................................................................................ 5
2.2.3 Ƣu điểm và nhƣợc điểm............................................................................. 6
2.3 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU FIREBASE .............................................. 6
2.3.1 Khái niệm ................................................................................................... 6
2.3.2 Lịch sử phát triển ....................................................................................... 7
2.3.3 Các chức năng chính của Firebase............................................................... 7
2.3.4 Ƣu nhƣợc điểm của Firebase ...................................................................... 8
2.4 GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID ............................................. 8
2.4.1 Khái niệm về Android................................................................................. 8
2.4.2 Lịch sử phát triển ...................................................................................... 8
2.4.3 Ƣu nhƣợc điểm của hệ điều hành Android ................................................. 9

vi
2.5 GIỚI THIỆU VỀ CÁC CHUẨN GIAO TIẾP WIFI ....................................... 10
2.5.1 Khái niệm về wifi ..................................................................................... 10
2.5.2 Các chuẩn của wifi ................................................................................... 10
CHƢƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ ........................................................ 11
3.1 TỔNG QUAN CỦA ĐỀ TÀI ......................................................................... 11
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG ..................................................... 12
3.2.1 Sơ đồ khối hoạt động của hệ thống ........................................................... 12
3.2.2 Thiết kế sơ đồ khối phần cứng bóng đèn ................................................... 13
3.2.3. Thiết kế sơ đồ khối mạch giám sát nhiệt độ, độ ẩm và chuyển động ........ 15
3.2.4 Tính toán và thiết kế mạch ........................................................................ 17
3.2.5 Sơ đồ nguyên lí toàn mạch ........................................................................ 25
3.2.6 Thiết kề phần mềm chạy trên hệ điều hành android .................................. 29
CHƢƠNG 4. THI CÔNG HỆ THỐNG............................................................... 33
4.1 GIỚI THIỆU ................................................................................................. 33
4.2 THI CÔNG HỆ THỐNG ................................................................................ 33
4.2.1 Thi công phần cứng: ................................................................................. 33
4.2.2 Lắp ráp và kiểm tra ................................................................................... 37
4.3 THI CÔNG MÔ HÌNH ................................................................................... 41
4.4 LẬP TRÌNH MẠCH ĐIỀU KHIỂN ĐỘ SÁNG ĐÈN BULB. ........................ 45
4.4.1 Lƣu đồ giải thuật....................................................................................... 45
4.4.2 Chƣơng trình cho mạch điều khiển độ sáng đèn bulb ................................ 46
4.5 LẬP TRÌNH CHO MẠCH GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM VÀ CHUYỂN
ĐỘNG.................................................................................................................... 53
4.5.1 Lƣu đồ giải thuật....................................................................................... 53
4.5.2 Chƣơng trình cho mạch giám sát nhiệt độ, độ ẩm và chuyển động ............ 54
4.6 LẬP TRÌNH ỨNG DỤNG ANDROID. ......................................................... 61
4.7 VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG .................................................. 71
CHƢƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ .......................................... 75
5.1 KẾT QUẢ ĐẠT ĐƢỢC ................................................................................. 75
5.1.1 Phần cứng ................................................................................................. 75
5.1.2 Phần mềm ................................................................................................. 75
5.1.3 Một số hình ảnh kết quả đạt đƣợc của đề tài ............................................. 76
5.2 NHẬN XÉT_ĐÁNH GIÁ .............................................................................. 81
5.2.1 Phần cứng ................................................................................................. 81
5.2.2 Phần mềm ................................................................................................. 82
CHƢƠNG 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ..................................... 84
6.1 KẾT LUẬN .................................................................................................... 84
6.2 HƢỚNG PHÁT TRIỂN ................................................................................. 84
TÀI LIỆU THAM KHẢO ...................................................................................... 86
PHỤ LỤC .............................................................................................................. 87

You might also like