You are on page 1of 63

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

ĐỒ ÁN TỐT NGHIỆP

Thiết kế hệ thống điều khiển nhà thông


minh
NGUYỄN CAO VĂN
Van.nc174365@sis.hust.edu.vn

Ngành Kỹ thuật điện


Chuyên ngành Thiết bị điện – Điện tử

Giảng viên hướng dẫn: TS. Nguyễn Thanh Sơn


Chữ ký của GVHD

Bộ môn: Thiết bị điện – Điện tử


Viện: Điện

HÀ NỘI, 11/2021
BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐHBK HÀ NỘI Độc lập - Tự do - Hạnh phúc


************ ========0000=======
Hà nội, ngày 03 tháng 03 năm 2022

NHIỆM VỤ
ĐỒ ÁN TỐT NGHIỆP

Họ và tên SV: Nguyễn Cao Văn Khoá: K62 Viện Điện


Chuyên ngành: Thiết bị điện - Điện tử

1. Đề tài Đồ án tốt nghiệp:

Thiết kế hệ thống điều khiển nhà thông minh

2. Nhiệm vụ thiết kế:


− Thiết kế các hệ thống hoạt động tự động dựa theo cảm biến
− Thiết kế webserver điều khiển, giám sát thiết bị
− Thiết kế mô hình nhà thông minh thực nghiệm
3. Ngày nộp quyển: 03/03/2022

TRƯỞNG BỘ MÔN TBĐ - ĐT CÁN BỘ HƯỚNG DẪN

Phùng Anh Tuấn Nguyễn Thanh Sơn


Lời cảm ơn
Em xin chân thành cảm ơn các thầy cô trong bộ môn Thiết bị điện – Điện tử, đặc
biệt là giảng viên hướng dẫn TS. Nguyễn Thanh Sơn đã tận tình hướng dẫn, chỉ
bảo để em có thể hoàn thành đề tài nghiên cứu này.
Do thời gian và kiến thức còn nhiều hạn chế, đề tài của em sẽ không tránh khỏi
những sai sót, em mong thầy cô góp ý, chỉnh sửa để có thể hoàn thiện hơn.

Tóm tắt nội dung đồ án


Đồ án này trình bày thiết kế mô hình nhà thông minh với các thiết bị có khả năng
điều khiển tự động, tương tác với nhau và có thể giám sát, điều khiển từ xa thông
qua Internet. Để thực hiện, em đã tìm hiểu tổng thể về hệ thống nhà thông minh,
sau đó lựa chọn các thiết bị để xây dựng mô hình, tiếp đến tiến hành mô phỏng
và hoàn thiện mô hình. Nhờ các công cụ hỗ trợ bao gồm phần mềm “Arduino
IDE, Proteus” và phần cứng có các thiết bị như: Bo mạch Arduino Uno,
Esp8266… đồ án đã đạt được kết quả được đúng với mục tiêu đặt ra. Đồ án này
có tính thực tế cao dựa trên nhu cầu công nghệ, yêu cầu về tính năng an toàn và
khả năng giám sát tình trạng hoạt động thiết bị của người dùng. Sau khi hoàn
thành đồ án, em đã tiếp thu được nhiều kiến thức về cách xây dựng và quản lý
nhà thông minh, cách kết nối hệ thống, lập trình điều khiển thiết bị, bên cạnh đó
em cũng có thêm kĩ năng tự đọc hiểu tài liệu tiếng anh, kĩ năng làm việc nhóm và
kí năng sử dụng các phần mềm,… Từ đó giúp em có thêm nhiều hiểu biết và
nhận thức về chuyên ngành, tự tin hơn sau khi tốt nghiệp.

Sinh viên thực hiện

Nguyễn Cao Văn


MỤC LỤC

CHƯƠNG 1. TỔNG QUAN VỀ NHÀ THÔNG MINH ................................... 1


1.1 Tổng quan về nhà thông minh dựa trên IoT............................................... 1
1.2 Lợi ích của hệ thống nhà thông minh......................................................... 2
1.3 Hạn chế của các hệ thống nhà thông minh hiện nay .................................. 2
1.4 Xu hướng phát triển nhà thông minh ......................................................... 3
1.4.1 Xu hướng phát triển nhà thông minh trên thế giới...................... 3
1.4.2 Xu hướng phát triển nhà thông minh ở Việt Nam ...................... 4
CHƯƠNG 2. THIẾT KẾ TỔNG QUAN MÔ HÌNH NHÀ THÔNG MINH.. 6
2.1 Lựa chọn hướng thiết kế ............................................................................ 6
2.2 Kết cấu ngôi nhà và chức năng .................................................................. 6
2.2.1 Kết cấu ........................................................................................ 6
2.2.2 Chức năng ................................................................................... 7
2.3 Sơ đồ nguyên lý hoạt động......................................................................... 7
2.4 Giới thiệu vi điều khiển Arduino ............................................................... 7
2.4.1 Giới thiệu chung .......................................................................... 7
2.4.2 Arduino Uno R3 .......................................................................... 8
2.4.3 Arduino Mega 2560 .................................................................. 10
2.4.4 Arduino Ethernet Shield W5100 ............................................... 12
2.4.5 ESP8266 .................................................................................... 13
2.5 Giới thiệu về các loại cảm biến ................................................................ 14
2.5.1 Cảm biến nhiệt độ và độ ẩm DHT11 ........................................ 14
2.5.2 Cảm biến chuyển động HC-SR501 ........................................... 16
2.5.3 Cảm biến khí Gas MQ2 ............................................................ 17
2.5.4 Module cảm biến ánh sáng........................................................ 18
CHƯƠNG 3. THIẾT KẾ HỆ THỐNG CƠ CẤU CHẤP HÀNH CHO NHÀ
THÔNG MINH ................................................................................................... 19
3.1 Tổng quan về thiết bị sử dụng trong cơ cấu chấp hành ........................... 19
3.1.1 Quạt tản nhiệt DC brushless 8025 ............................................ 19
3.1.2 Còi chip 5V 9,5x12mm ............................................................. 19
3.1.3 Động cơ servo MG90S.............................................................. 20
3.2 Các module thiết bị sử dụng trong mô hình và chức năng ...................... 21
3.2.1 Hệ thống bật/tắt quạt dựa trên nhiệt độ, độ ẩm ......................... 21
3.2.2 Hệ thống cảnh báo khí gas ........................................................ 22
3.2.3 Hệ thống bật/tắt đèn dựa trên cảm biến ánh sáng ..................... 23
3.2.4 Hệ thống mở cửa theo cảm biến chuyển động .......................... 24
3.2.5 Hệ thống bật/tắt thiết bị bằng nút nhấn ..................................... 25
CHƯƠNG 4. HỆ THỐNG GIÁM SÁT, ĐIỀU KHIỂN NHÀ THÔNG MINH
BẰNG WEB SERVER THÔNG QUA INTERNET ....................................... 26
4.1 Mạng Internet ........................................................................................... 26
4.2 Địa chỉ IP.................................................................................................. 27
4.3 Thiết kế hệ thống giám sát và điều khiển bằng webserver qua internet .. 27
4.4 Nguyên lý điều khiển truyền nhận dữ liệu ............................................... 28
4.4.1 Nguyên lý điều khiển – Truyền nhận dữ liệu sử dụng ESP8266
28
4.4.2 Nguyên lý điều khiển – Truyền nhận dữ liệu sử dụng Ethernet
Shield 28
4.4.3 Ví dụ về điều khiển, giám sát thiết bị bằng Webserver ............ 29
CHƯƠNG 5. THIẾT KẾ, CHẾ TẠO MÔ HÌNH THỰC NGHIỆM ............ 35
5.1 Mô hình thực tế ........................................................................................ 35
5.2 Giao diện webserver giám sát và điều khiển............................................ 43
5.3 Kết quả điều khiển một số thiết bị ........................................................... 44
5.4 Kết quả đạt được ...................................................................................... 45
CHƯƠNG 6. NGHIÊN CỨU VÀ PHÁT TRIỂN MÔ HÌNH NHÀ THÔNG
MINH DỰA TRÊN TRÍ TUỆ NHÂN TẠO .................................................... 46
6.1 Giới thiệu chung ....................................................................................... 46
6.2 Nguyên lý xây dựng mô hình nhà thông minh......................................... 46
6.3 Các bước để xây dựng mô hình nhà thông minh dựa trên AI .................. 47
6.4 Nhận dạng hoạt động hằng ngày sử dụng mạng nơ ron BP ..................... 48
6.4.1 Thu thập dữ liệu ........................................................................ 48
6.4.2 Xác định lớp đầu vào và đầu ra................................................. 50
6.4.3 Xác định số lớp ẩn..................................................................... 50
6.4.4 Kết quả ...................................................................................... 51
CHƯƠNG 7. KẾT LUẬN .................................................................................. 52
7.1 Kết luận .................................................................................................... 52
7.2 Hướng phát triển của đồ án trong tương lai ............................................. 52
PHỤ LỤC ............................................................................................................ 55
DANH MỤC HÌNH VẼ
Hình 1.1 Một ví dụ cấu trúc nhà thông minh [1] ................................................... 1
Hình 1.2 Mô hình Smart home của công ty Compro Technology [2] ................... 4
Hình 1.3 Mô hình Smart home của công ty IEI Integration [2] ............................. 4
Hình 1.4 Mô hình Smart home Eco-Future-World [2] .......................................... 4
Hình 1.5 Mô hình Smart home của BKAV [2] ...................................................... 5
Hình 1.6 Mô hình Smart home của Lumi [2] ......................................................... 5
Hình 2.1 Các chức năng của nhà thông minh ........................................................ 7
Hình 2.2 Sơ đồ nguyên lý hệ thống nhà thông minh ............................................. 7
Hình 2.3 Hình ảnh vi điều khiển Arduino [3] ........................................................ 8
Hình 2.4 Hình ảnh Arduino Uno R3 [4] ................................................................ 9
Hình 2.5 Hình ảnh Arduino Mega 2560 [5] ......................................................... 11
Hình 2.6 Hình ảnh Arduino Ethernet Shield W5100 [6] ..................................... 13
Hình 2.7 Hình ảnh ESP8266 [7] .......................................................................... 13
Hình 2.8 Sơ đồ các chân ESP8266 [7] ................................................................. 14
Hình 2.9 Cảm biến nhiệt độ và độ ẩm DHT11 [8] ............................................... 14
Hình 2.10 Cảm biến nhiệt độ và độ ẩm trong DHT11 [8] ................................... 15
Hình 2.11 Cấu tạo cảm biến độ ẩm bên trong DHT11 [8] ................................... 15
Hình 2.12 Cảm biến chuyển động HC-SR501 [9] ............................................... 16
Hình 2.13 Cảm biến chuyển động HC-SR501 [9] ............................................... 16
Hình 2.14 Cảm biến khí gas MQ2 [10] ................................................................ 17
Hình 2.15 Sơ đồ chân cảm biến khí gas MQ2 [10] .............................................. 17
Hình 2.16 Module cảm biến ánh sáng [11] .......................................................... 18
Hình 3.1 Quạt tản nhiệt DC brushless 8025 [12] ................................................. 19
Hình 3.2 Còi chip 5V 9,5x12mm [13] ................................................................. 19
Hình 3.3 Động cơ servo MG90S [14] .................................................................. 20
Hình 3.4 Sơ đồ chân Servo MG90S [14] ............................................................. 21
Hình 3.5 Sơ đồ hệ thống bật/tắt quạt theo nhiệt độ, độ ẩm .................................. 21
Hình 3.6 Sơ đồ hệ thống cảnh báo khí gas ........................................................... 22
Hình 3.7 Sơ đồ hệ thống bật/tắt đèn theo cảm biến ánh sáng .............................. 23
Hình 3.8 Sơ đồ hệ thống mở cửa theo cảm biến chuyển động ............................ 24
Hình 3.9 Sơ đồ hệ thống bật/tắt thiết bị bằng nút nhấn........................................ 25
Hình 4.1 Sơ đồ khối hệ thống giám sát và điều khiển ......................................... 27
Hình 4.2 Sơ đồ truyền tín hiệu từ cơ cấu chấp hành đến Webserver sử dụng
ESP8266 ............................................................................................................... 28
Hình 4.3 Sơ đồ truyền tín hiệu từ Webserver đến cơ cấu chấp hành sử dụng
ESP8266 ............................................................................................................... 28
Hình 4.4 Sơ đồ truyền tín hiệu từ Webserver đến cơ cấu chấp hành sử dụng
Ethernet ................................................................................................................ 29
Hình 4.5 Sơ đồ truyền tín hiệu từ cơ cấp chấp hành đến Webserver sử dụng
Ethernet ................................................................................................................ 29
Hình 4.6 Sơ đồ kết nối thiết bị ............................................................................. 29
Hình 4.7 Giao diện Web điều khiển sử dụng ESP8266 ....................................... 34
Hình 4.8 Giao diện khi bật Relay 1 và Relay 2.................................................... 34
Hình 4.9 Relay 1 và Relay 2 đang được bật......................................................... 34
Hình 5.1 Mô hình nhà thực tế .............................................................................. 35
Hình 5.2 Mô hình nhà thực tế .............................................................................. 35
Hình 5.3 Sơ đồ mạch điện mô hình nhà thực tế ................................................... 36
Hình 5.4 Giao diện webserver ban đầu ................................................................ 44
Hình 5.5 Bật quạt khi độ ẩm cao .......................................................................... 44
Hình 5.6 Bật đèn khi trời tối ................................................................................ 44
Hình 5.7 Cửa mở khi có chuyển động ................................................................. 44
Hình 5.8 Còi báo động khi nồng độ khí Gas cao ................................................. 45
Hình 6.1 Mạng nơ ron BP 3 lớp [15] ................................................................... 48
Hình 6.2 Ví dụ về tập dữ liệu của hoạt động Night_wandering [15] ................... 50
Hình 6.3 Kết quả cho mỗi hoạt động [15]............................................................ 51
DANH MỤC HÌNH VẼ
Bảng 2.1 Thông số kĩ thuật Arduino Uno R3 [4]................................................... 9
Bảng 2.2 Thông số kĩ thuật Arduinno Mega 2560 [5] ......................................... 11
Bảng 2.3 Chân RX, TX ứng với cổng Serial tương ứng [5] ................................ 12
CHƯƠNG 1. TỔNG QUAN VỀ NHÀ THÔNG MINH

1.1 Tổng quan về nhà thông minh dựa trên IoT


Ngày nay, sự phổ biến rộng rãi của các thiết bị thông minh với cảm biến nhúng
và giao diện không dây đã tạo điều kiện cho sự phát triển nhanh chóng của
Internet of Things (IoT). IoT đóng một vai trò đáng kể trong việc cải thiện chất
lượng cuộc sống và phát triển nền kinh tế thế giới. Nó tạo điều kiện cho kết nối
toàn cầu qua các đối tượng vật lý trên toàn thế giới (ví dụ: cảm biến, điện thoại
thông minh, xe cộ, thiết bị) để phục vụ mọi người theo cách cộng tác tự động và
thông minh. IoT giúp nhiều thứ khác nhau sẽ được kết nối và sẽ được kiểm soát
trên Internet. Các lĩnh vực ứng dụng của IoT bao gồm nhà thông minh, chăm sóc
sức khỏe thông minh, lưới điện thông minh, giao thông thông minh, thành phố
thông minh, tự động hóa công nghiệp và giám sát. Trong số các ứng dụng IoT
khác nhau, thiết kế của Nhà thông minh (Smart Home) đã thu hút sự chú ý lớn
nhất vì nó liên quan nhiều hơn đến cuộc sống của con người.
Một ngôi nhà thông minh có thể được định nghĩa theo nhiều cách. Một định
nghĩa nhà thông minh là ngôi nhà có hệ thống tự động bao gồm các cảm biến và
bộ điều khiển thiết bị để cung cấp một hệ thống tiện nghi, thông minh và an toàn
nhằm cải thiện chất lượng cuộc sống và kiểm soát các thiết bị gia dụng một cách
dễ dàng, đặc biệt là đối với người già và người tàn tật. Hệ thống tự động hóa nhà
thông minh như thể hiện trong Hình 1.1 có thể cung cấp giao diện giữa điện thoại
thông minh hoặc máy tính cá nhân với thiết bị gia dụng, thông qua giao diện giao
tiếp không dây Bluetooth và Wi-Fi.

Hình 1.1 Một ví dụ cấu trúc nhà thông minh [1]

Nhà thông minh là một thành phần chính của "Internet of Things", trong đó mọi
thứ đều có địa chỉ IP được chỉ định, có thể được giám sát và truy cập từ xa, từ bất
kỳ đâu vào bất kỳ lúc nào. Đó là cách mà các thiết bị gia dụng và các thiết bị
khác được kết nối internet để kiểm soát tất cả các khía cạnh của ngôi nhà thông

1
minh. Trong nhiều thập kỷ, các hệ thống nhà thông minh chỉ là chiếu sáng và
điều khiển thiết bị đơn giản. Gần đây, công nghệ đang cho phép kiểm soát hoàn
toàn nhà thông minh từ bất kỳ đâu để ý tưởng về “thế giới kết nối” trở thành hiện
thực. Ngôi nhà thông minh có thể điều khiển một thiết bị hoạt động như thế nào,
tại sao và khi nào thiết bị sẽ hoạt động. Nó mang lại sự tiện lợi, dễ kiểm soát và
tiết kiệm tiền. Hơn nữa, hệ thống nhà thông minh có thể cảnh báo người dùng về
các sự việc có thể xảy ra khi họ đi vắng như rò rỉ nước, rò rỉ khí gas, hỏa hoạn và
đột nhập trái phép vào nhà của họ. Tại bất kỳ thời điểm nào, người dùng có thể
thực hiện bất kỳ thay đổi nào trong cài đặt của hệ thống tự động hóa dựa trên yêu
cầu và mong muốn của mình bằng cách sử dụng ứng dụng điện thoại Android
hoặc thiết bị điều khiển khác thông qua Internet.
1.2 Lợi ích của hệ thống nhà thông minh
Một trong những lợi ích của hệ thống nhà thông minh là hệ thống điều khiển ánh
sáng tiên tiến. Người sử dụng không phải bật hoặc tắt các thiết bị điện theo cách
thủ công nữa. Ví dụ, khi người dùng bước vào phòng ngủ, có hai lựa chọn, hoặc
đèn sẽ tự động bật và tắt sau khi người đó rời khỏi phòng hoặc người dùng có thể
điều khiển việc bật/tắt từ ứng dụng bằng điện thoại thông minh của mình. Độ
sáng của đèn cũng có thể được kiểm soát để giảm điện năng tiêu thụ. Bên cạnh
đó, người dùng có thể lựa chọn để điều chỉnh các điều kiện trong phòng dựa trên
các chỉ số cảm biến (nhiệt độ, độ ẩm, v.v.) như điều khiển tốc độ của quạt từ ứng
dụng di động hoặc tốc độ sẽ được tự động điều chỉnh dựa trên nhiệt độ phòng.
Bằng cách này, hiệu quả sử dụng năng lượng có thể được cải thiện vì khi các
thiết bị điện tự động bật hoặc dễ dàng tắt khi không sử dụng, điều này sẽ tiết
kiệm năng lượng hơn và giảm chi phí điện.
Ngoài ra, người dùng có thể điều khiển các thiết bị điện và theo dõi tình trạng
ngôi nhà từ bất kỳ đâu bằng cách sử dụng điện thoại thông minh, máy tính bảng
hoặc máy tính xách tay. Ví dụ, nếu người dùng quên tắt quạt hoặc các thiết bị
khác và đã rời khỏi nhà, người dùng có thể tắt bằng thiết bị thông minh của mình.
Các cảm biến khói, carbon monoxide và cảm biến mức nước cũng có thể được
lắp đặt để người dùng có thể biết được ngôi nhà của họ có bị ngập lụt hay không
khí xung quanh có nguy hiểm hay không.
Đối với hệ thống bảo mật, nếu có bất kỳ sự cố nào xảy ra, người dùng sẽ nhận
được cảnh báo tại điện thoại của họ. Người dùng sẽ không phải lo lắng nếu có kẻ
gian cố gắng lẻn vào nhà vì họ có thể giám sát từ điện thoại của mình bằng cách
sử dụng cảm biến chuyển động và nếu phát hiện bất kỳ chuyển động nào, báo
động sẽ được bật. Hệ thống an ninh là phần quan trọng nhất để giữ cho ngôi nhà
của chúng ta an toàn trước những kẻ xâm nhập. Tất cả các thành phần của ngôi
nhà thông minh như thông gió, sưởi ấm, điều hòa không khí, hệ thống chiếu sáng
tập trung, thiết bị tự động và hệ thống an ninh có thể mang lại sự thoải mái và an
toàn trong cuộc sống hàng ngày.
1.3 Hạn chế của các hệ thống nhà thông minh hiện nay
Một trong những vấn đề chính của hầu hết các hệ thống nhà thông minh hiện tại

2
là chi phí thực hiện và bảo trì của chúng không phù hợp với túi tiền của hầu hết
người dùng. Hơn nữa, một số hệ thống hiện tại cung cấp chế độ theo dõi ngôi nhà
từ trang web, điều này gây bất tiện cho người dùng, những người phải truy cập
Web mỗi lần họ muốn kiểm soát hoặc xem tình trạng ngôi nhà của mình. Ngoài
ra, một số hệ thống nhà thông minh thiếu giao diện thân thiện với người dùng để
giám sát và điều khiển các thiết bị. Bên cạnh đó, có một số hạn chế trong các
công nghệ truyền thông đã được sử dụng trong các hệ thống nhà thông minh hiện
có. Ví dụ, phạm vi giao tiếp của Bluetooth được giới hạn trong 10 mét. Nếu xa
hơn 10 mét, kết nối sẽ bị mất và người dùng không thể điều khiển các thiết bị
trong nhà. Hay ZigBee được thiết kế cho các khu vực mạng cá nhân không dây
tốc độ thấp với tốc độ dữ liệu 250Kb/s, không đủ tốc độ dữ liệu. Một công nghệ
truyền thông khác là “Global System for Mobile Communications” (hay còn gọi
là mạng 2G, 3G, 4G) có thể truy cập ở mọi nơi trên thế giới nhưng chi phí cao và
tốc độ truyền dữ liệu thấp và hạn chế về phạm vi phủ sóng đối với các vùng nông
thôn.
Do đó, một hệ thống mới được đề xuất để khắc phục những hạn chế của hệ thống
nhà thông minh hiện có là thiết kế và chế tạo hệ thống nhà thông minh dựa trên
Wi-Fi cùng vi điều khiển Arduino. Hệ thống này tiết kiệm chi phí và cho tốc độ
truyền dữ liệu cao. Hệ thống này phát triển để điều khiển tất cả các thiết bị điện
tại nhà một cách dễ dàng và hiệu quả và cho phép điều khiển từ xa bằng cách kết
hợp ứng dụng của IoT.
1.4 Xu hướng phát triển nhà thông minh
1.4.1 Xu hướng phát triển nhà thông minh trên thế giới
Đối với các ông lớn về công nghệ thì cuộc cánh mạng công nghệ 4.0 và công
nghệ IoT được xem là cơ hội tỉ USD trên thị trường đầy tiềm năng này.
Theo một thống kê của công ty nghiên cứu thị trường Statista thì vào năm 2020
giá trị thị trường của nhà thông minh (Smarthome) dự báo đạt tới 43 tỉ USD. Con
số này tăng gấp 3 lần so với năm 2014. Xu hướng nhà thông minh được dự báo
như một trong những ứng dụng công nghệ một cách toàn diện nhất vào cuộc
sống.
Hiện nay là thị trường Smarthome lớn nhất thế giới là Bắc Mỹ. Với quy mô cũng
như tính tiện nghi dành cho một ngôi nhà với 4 người, sẽ có thiết kế cơ bản với
khả năng như: Cảnh báo đột nhập, cảnh báo khí gas, hệ thống cửa tự động, hệ
thống camera an ninh, hệ thống giải trí…
Dưới đây là ví dụ về một ngôi nhà thông minh của một số nhà sản xuất tại Mỹ và
Châu Âu, với tiêu chuẩn từ cơ bản đến cao cấp dành cho một gia đình:

3
Hình 1.2 Mô hình Smart home của công ty Compro Technology [2]

Hình 1.3 Mô hình Smart home của công ty IEI Integration [2]

Hình 1.4 Mô hình Smart home Eco-Future-World [2]

1.4.2 Xu hướng phát triển nhà thông minh ở Việt Nam


Tại Việt Nam, theo dự báo của Statista (Đức), thị trường smart home sẽ đạt
doanh thu 225,3 triệu USD vào năm 2021 và 330,4 triệu USD vào năm 2022.
Tuy nhiên, trong báo cáo mới nhất, những số liệu này đã có sự thay đổi, vì những

4
ảnh hưởng trực tiếp của đại dịch Covid-19. Cụ thể, doanh thu smart home tại thị
trường Việt Nam được dự đoán đạt 183,9 triệu USD vào năm 2021 và 251 triệu
USD vào năm 2022. Với tốc độ tăng trưởng 25%/năm trong giai đoạn 2021-
2025, dự kiến đến năm 2025, tổng doanh thu thị trường smart home Việt Nam
đạt 449,1 triệu USD. Với khoảng 10,5% hộ gia đình trang bị smart home, Việt
Nam trở thành thị trường smart home đứng thứ 28 trên toàn cầu.
Tại Việt Nam, không đứng ngoài dòng chảy công nghệ về nhà thông minh, đã có
rất nhiều nhà sản xuất cũ và mới tham gia thị trường đầy tiềm năng này, dẫn đầu
là BKAV, Lumi Smarthome và WESMART. Với đầy đủ các chức năng như các
nhà sản xuất nước ngoài, lại thêm yếu tố phù hợp với riêng thị trường Việt Nam,
hiện nay họ đang có một lợi thế không nhỏ so với các nhà sản xuất nước ngoài tại
Việt Nam.

Hình 1.5 Mô hình Smart home của BKAV [2]

Hình 1.6 Mô hình Smart home của Lumi [2]

5
CHƯƠNG 2. THIẾT KẾ TỔNG QUAN MÔ HÌNH NHÀ THÔNG MINH

2.1 Lựa chọn hướng thiết kế


Nhà thông minh là một đề tài rộng và có nhiều vấn đề đặt ra. Tùy theo mục đích
sử dụng của chủ nhân để thiết kế, một phần quan trọng trong hệ thống nhà thông
minh là hệ thống điều khiển và giám sát. Trước đây, nhà thông minh chỉ hoàn
toàn nằm trong trí tưởng tượng cũng như trên phim ảnh. Nhờ sự phát triển không
ngừng của khoa học công nghệ, các giải pháp nhà thông minh ngày càng phong
phú và thuận tiện hơn cho người sử dụng. Từ ban đầu, nhà thông minh chỉ có các
thiết bị điều khiển từ xa ở trong phạm vi ngôi nhà phục vụ cho một số nhu cầu
của con người. Tiếp theo là sự tự động hóa các thiết bị trong ngôi nhà với khả
năng tự động điều chỉnh theo môi trường cũng như người sử dụng.
Sau đó, với sự phát triển và lan rộng của mạng internet, người ta đưa ra giải pháp
kết nối và điều khiển các thiết bị trong nhà thông qua mạng internet và thêm vào
các tiện ích như hệ thống đảm bảo an toàn, tính toán năng lượng sử dụng,… giúp
chủ nhân có thể điều khiển thiết bị ở khoảng cách xa chứ không bó hẹp trong
khuôn viên ngôi nhà nữa.
Khả năng bảo mật an ninh cũng được đặt lên hàng đầu, vì đi cùng với kết nối
internet là khả năng bị hack vào hệ thống nhằm chiếm quyền điều khiển cũng vì
thế mà gia tăng. Chủ nhân có thể sử dụng mật khẩu riêng để đăng nhập vào hệ
thống cũng như ngôi nhà qua các hình thức như Passcode, bảo mật vân tay, bảo
mật mống mắt… Đi kèm đó là khả năng cảnh báo đột nhập giúp gia chủ có thể
phát hiện ra tại bất kì nơi đâu với kết nối Wifi/GPRS. Và gần đây, xu thế điều
khiển thiết bị bằng giọng nói cũng được thêm vào giải pháp xây dựng nhà thông
minh, giúp cho việc sử dụng trở nên dễ dàng hơn mọi người trong
nhà. Trong tương lai, nhờ các thiết bị công nghệ mới kết hợp trí tuệ nhân tạo,
ngôi nhà có thể phân biệt giọng nói từng thành viên và ghi nhớ thói quen của mỗi
người trong gia đình.
Hiện nay, ở Việt Nam, giải pháp xây dựng nhà thông minh với hệ thống điều
khiển và giám sát thông qua internet vẫn phổ biến và phát triển hơn cả vì nó phù
hợp với khả năng công nghệ và điều kiện kinh tế hiện có. Do đó, em xin chọn
thiết kế ngôi nhà thông minh theo giải pháp sử dụng hệ thống điều khiển và giám
sát các thiết bị trong ngôi nhà thông qua mạng internet, mà cụ thể là mạng wifi
trên một mô hình nhà thông minh quy mô nhỏ với các chức năng cơ bản như: cửa
đóng/mở tự động, cảnh báo khí gas rò rỉ, đèn và quạt bật tự động theo người sử
dụng và nhiệt độ môi trường…
2.2 Kết cấu ngôi nhà và chức năng
2.2.1 Kết cấu
Mô hình được thiết kế đơn giản với một phòng khách và một phòng ngủ có các
thiết bị cơ bản như đèn, quạt, cửa và các cảm biến.

6
2.2.2 Chức năng
Với những tiêu chí về ngôi nhà thông minh tại Việt Nam, em lựa chọn các chức
năng tạo nên một ngôi nhà thông minh với các tiện ích như:
- Hệ thống theo dõi nhiệt độ, độ ẩm và bật/tắt quạt tự động theo nhiệt độ, độ
ẩm
- Hệ thống cảnh báo khí gas
- Hệ thống bật/tắt đèn tự động theo cảm biến ánh sáng
- Hệ thống đóng/mở cửa tự động theo cảm biến chuyển động
- Hệ thống điều khiển thiết bị từ xa qua giao diện Web

Hình 2.1 Các chức năng của nhà thông minh

2.3 Sơ đồ nguyên lý hoạt động

Hình 2.2 Sơ đồ nguyên lý hệ thống nhà thông minh

- Khối thiết bị giám sát, điều khiển: Máy tính bảng, Laptop, điện thoại thông
minh,…
- Khối mạng: Router Wifi, Arduino Ethernet Shield W5100, ESP8266
- Khối điều khiển: vi điều khiển Arduino Uno R3, Arduino Mega 2560
- Khối cảm biến: cảm biến nhiệt độ, độ ẩm, ánh sáng, chuyển động, khí gas
- Khối chấp hành: bóng đèn, quạt, điều hòa, cửa ra vào, còi báo động
2.4 Giới thiệu vi điều khiển Arduino
2.4.1 Giới thiệu chung
Arduino là nền tảng tạo mẫu điện tử mã nguồn mở, được sử dụng nhằm xây dựng
các ứng dụng điện tử tương tác với nhau hoặc với môi trường được thuận tiện, dễ

7
dàng hơn. Nền tảng mẫu này giống như một máy tính thu nhỏ, giúp người dùng
lập trình và thực hiện các dự án điện tử mà không cần phải đến các công cụ
chuyên dụng để phục vụ việc nạp code. Phần mềm này tương tác với thế giới bên
ngoài thông qua các cảm biến điện tử, đèn và động cơ.
Cấu tạo của Arduino:
- Phần cứng Arduino là bảng mạch nguồn mở, cùng bộ vi xử lý và chân đầu
vào/ đầu ra (I/ O) để liên lạc, điều khiển các đối tượng vật lý (LED, servo,
nút ấn, v.v.). Bảng mạch thường được cấp nguồn qua USB hoặc nguồn điện
bên ngoài, cho phép cung cấp tín hiệu cho các phần cứng, cảm biến khác.
- Là phần mềm nguồn mở tương tự như C ++. Môi trường phát triển tích hợp
Arduino (IDE – Integrated Development Environment) cho phép soạn thảo,
biên dịch code, nạp chương cho board.

Hình 2.3 Hình ảnh vi điều khiển Arduino [3]

Khả năng kết nối của Arduino:


- Arduino hoạt động độc lập.
- Kết nối với một máy tính, cho phép truy cập dữ liệu cảm biến từ thế giới
bên ngoài và cung cấp thông tin phản hồi.
- Các Arduino có thể liên kết với nhau.
- Mạch điều khiển Arduino có thể kết nối với các thiết bị điện tử khác.
- Arduino có khả năng kết nối với các chip điều khiển.
- Lập trình Arduino IDE có thể kết nối với nhiều nền tảng. Điều này đồng
nghĩa với việc có thể khởi động trên Windows, Macintosh OSX điều hành
Linux (các hệ thống vi điều khiển khác chỉ chạy Windows).
2.4.2 Arduino Uno R3

8
Hình 2.4 Hình ảnh Arduino Uno R3 [4]

Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển ATmega328 với giá
khoảng 90.000đ. Tuy nhiên nếu yêu cầu phần cứng không cao hoặc túi tiền
không cho phép, có thể sử dụng các loại vi điều khiển khác có chức năng tương
đương nhưng rẻ hơn như ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ
hoặc ATmega168 (bộ nhớ flash 16KB) với giá khoảng 65.000đ.
2.4.2.1. Một vài thông số của Arduino Uno R3:
Bảng 2.1 Thông số kĩ thuật Arduino Uno R3 [4]

Vi điều khiển ATmega328 họ 8bit


Điện áp hoạt động 5V DC
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
32 KB (ATmega328) với
Bộ nhớ flash
0.5KB dùng bởi bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)

2.4.2.2. Bộ nhớ Arduino Uno R3


Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

9
- 32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển.
- 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai
báo khi lập trình sẽ lưu ở đây. Khai báo càng nhiều biến thì càng cần nhiều
bộ nhớ RAM.
- 1KB cho EEPROM (Electrically Eraseble Programmable Read Only
Memory): đây giống như 1 chiếc ổ cắm mini – nơi có thể đọc và lưu giữ
liệu mà không lo bị mất khi mất điện như trên SRAM.
2.4.2.3. Các cổng vào, ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2
mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 30mA. Ở mỗi
chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
- Hai chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị
khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính
là kết nối Serial không dây. Nếu không cần giao tiếp Serial, không nên sử
dụng 2 chân này nếu không cần thiết.
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với
độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp
ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như
những chân khác.
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng
giao thức SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm
nút Reset, sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số
13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit
(0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên
board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog.
Tức là nếu cấp điện áp 2.5V vào chân này thì có thể dùng các chân analog để đo
điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.
2.4.3 Arduino Mega 2560
Arduino Mega2560 sử dụng một vi điều khiển ATmega2560. Arduino Mega2560
khác với tất cả các vi xử lý trước giờ vì không sử dụng chip điều khiển FTDI
chuyển tín hiệu từ USB để xử lý. Thay vào đó, nó sử dụng ATmega16U2 lập
trình như là một công cụ chuyển đổi tín hiệu từ USB. Ngoài ra, Arduino

10
Mega2560 cơ bản vẫn giống Arduino Uno R3, chỉ khác số lượng chân và nhiều
tính năng mạnh mẽ hơn, nên vẫn có thể lập trình cho con vi điều khiển này bằng
chương trình lập trình cho Arduino Uno R3.

Hình 2.5 Hình ảnh Arduino Mega 2560 [5]

2.4.3.1. Một vài thông số kĩ thuật Arduino Mega 2560


Bảng 2.2 Thông số kĩ thuật Arduinno Mega 2560 [5]

Chip xử lý ATmega2560

Điện áp hoạt động 5V

Điện áp vào (khuyên dùng) 7V-15V

Điện áp vào (giới hạn) 6V-20V

Dòng điện tối đa trên mỗi chân 3.3V 50 mA

Dòng điện tối đa trên mỗi chân 5V 500 mA

Dòng điện tối đa trên mỗi chân I/O 20 mA

Flash Memory 256 KB

SRAM 8 KB

EEPROM 4 KB

Tần số hoạt động 16 MHz

2.4.3.2. Các cổng vào ra


- 5 Chân GND
- 3 chân 5V
- 1 chân 3.3V

11
- 1 nút reset
- 54 chân digital (trong đó có 15 chân có thể được sủ dụng như những chân
PWM là từ chân số 2 → 13 và chân 44 45 46).
- 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5),
chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2).
- 16 chân vào analog (từ A0 đến A15).
- 4 cổng Serial giao tiếp với phần cứng (UART)
Bảng 2.3 Chân RX, TX ứng với cổng Serial tương ứng [5]

Cổng Serial Chân RX Chân TX


Cổng 1 0 1
Cổng 2 19 18
Cổng 3 17 16
Cổng 4 15 14

2.4.4 Arduino Ethernet Shield W5100


Ethernet shield là một mạch mở rộng cho arduino, giúp arduino có thể kết nối với
thế giới internet rộng lớn. Ứng dụng của shield này là truyền nhận thông tin giữa
arduino với thiết bị bên ngoài sử dụng internet, shield này đặc biệt hữu ích cho
các ứng dụng IoT, điều khiển và kiểm soát hệ thống vì internet luôn liên tục, dữ
liệu truyền đi nhanh, khoảng cách lớn, rẻ hơn với cách truyền từ xa bằng tin
nhắn.
Arduino Ethernet Shield W5100 sử dụng chip W5100 từ hãng Wiznet cho tốc độ
và khả năng kết nối ổn định nhất, bộ thư viện đi kèm và phần cứng với cách kết
nối dễ dàng khiến cho việc kết vối Arduino với Ethernet đơn giản hơn bao giờ
hết, thích hợp để làm các ứng dụng điều khiển thiết bị qua mạng, IoT,... Chip
Wiznet W5100 Ethernet cung cấp một địa chỉ mạng (IP) tương thích với cả 2
giao thức TCP và UDP. Nó hỗ trợ tối đa 4 thiết bị kết nối đồng thời. Ethernet
W5100 có thể tự động nhận IP từ router bằng giao thức DHCP.
Ethernet Shield hoàn toàn tương thích với Arduino Uno và Mega, giao tiếp với
Arduino qua giao thức SPI, chân digital 10 trên arduino được sử dụng để xác
định kết nối cho ethernet shield. Vì vậy, không thể sử dụng port 10 khi cắm
Ethernet Shield vào Arduino.
IC điều khiển W5100 trên Arduino Ethernet Shield có thể thực hiện truyền dữ
liệu thông qua 2 giao thức là TCP và UDP. Số đường truyền dữ liệu song song
tối đa là 4, khả năng truyền song song cùng lúc 4 luồng dữ liệu giúp board có khả
năng nhận dữ liệu từ internet với tỉ lệ lỗi thấp hơn (nguyên nhân thường là do
mất dữ liệu trên đường truyền hoặc do thời gian truyền vượt quá giới hạn - time
out).
Ngoài ra trên Ethernet Shield còn có Module đọc/ghi dữ liệu vào thẻ MicroSD sử
dụng chân digital 4 để xác định kết nối.

12
Hình 2.6 Hình ảnh Arduino Ethernet Shield W5100 [6]

Thông số kỹ thuật:
- Chip sử dụng: Wiznet W5100 Ethernet với bộ đệm 16K
- Điện áp hoạt động: 5VDC (Nguồn cấp từ Arduino)
- Tốc độ kết nối: 10 - 100 Mb
- Giao tiếp: SPI
- Sử dụng các trình điều khiển Ethernet chuẩn Arduino
- Hỗ trợ jack Ethernet chuẩn RJ45 kết nối mạng
- Kích thước: 7cm x 5.4cm x 2.4cm
2.4.5 ESP8266
Kít ESP8266 là kít phát triển dựa trên nền chíp Wifi SoC ESP8266 với thiết kế
dễ dàng sử dụng vì tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên borad. Bên
trong ESP8266 có sẵn một lõi vi xử lý vì thế có thể trực tiếp lập trình cho
ESP8266 mà không cần thêm bất kì con vi xử lý nào nữa. Hiện tại có hai ngôn
ngữ có thể lập trình cho ESP8266, sử dụng trực tiếp phần mềm IDE của Arduino
để lập trình với bộ thư viện riêng hoặc sử dụng phần mềm node MCU.

Hình 2.7 Hình ảnh ESP8266 [7]

Thông số kĩ thuật:
- IC chính ESP8266 Wifi SoC
- Chip nạp CP2102

13
- Nguồn cấp 5vdc
- GPIO giao tiếp mức logic 3.3v
- Tích hợp led báo trạng thái, nút Reset, Flash
Sơ đồ các chân ESP8266:

Hình 2.8 Sơ đồ các chân ESP8266 [7]

2.5 Giới thiệu về các loại cảm biến


2.5.1 Cảm biến nhiệt độ và độ ẩm DHT11
Cảm biến nhiệt độ và độ ẩm DHT11 có tính năng phức hợp đo cả nhiệt độ và độ
ẩm với đầu ra tín hiệu kỹ thuật số đã được hiệu chỉnh. Bằng cách sử dụng kỹ
thuật thu tín hiệu kỹ thuật số độc quyền và công nghệ cảm biến nhiệt độ và độ
ẩm, nó đảm bảo độ tin cậy cao và độ ổn định lâu dài tuyệt vời. Cảm biến này bao
gồm thành phần đo độ ẩm kiểu điện trở và thành phần đo nhiệt độ NTC (NTC là
điện trở nhiệt cũng giống như cảm biến đo nhiệt độ nhưng chỉ trong một khoảng
nhiệt độ nhất định), đồng thời kết nối với bộ vi điều khiển 8 bit hiệu suất cao,
mang lại chất lượng tuyệt vời, phản hồi nhanh, khả năng chống nhiễu và tiết
kiệm chi phí.
Cảm biến độ ẩm và nhiệt độ DHT11 Temperature Humidity Sensor là cảm biến
rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1
wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích
hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất
kỳ tính toán nào. So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng
đo và độ chính xác kém hơn rất nhiều.

Hình 2.9 Cảm biến nhiệt độ và độ ẩm DHT11 [8]


14
Cảm biến DHT11 bao gồm một linh kiện cảm biến độ ẩm, cảm biến nhiệt độ
NTC (hoặc nhiệt điện trở) và một IC ở phía sau của cảm biến.

Hình 2.10 Cảm biến nhiệt độ và độ ẩm trong DHT11 [8]

Hình 2.11 Cấu tạo cảm biến độ ẩm bên trong DHT11 [8]

Để đo độ ẩm, DHT11 sử dụng thành phần cảm biến độ ẩm có hai điện cực với
chất giữ ẩm giữa chúng. Vì vậy, khi độ ẩm thay đổi, độ dẫn của chất nền thay đổi
hoặc điện trở giữa các điện cực này thay đổi. Sự thay đổi điện trở này được đo và
xử lý bởi IC khiến cho vi điều khiển luôn sẵn sàng để đọc giá trị độ ẩm.
Mặt khác, để đo nhiệt độ, cảm biến DHT11 này sử dụng cảm biến nhiệt độ NTC
hoặc nhiệt điện trở.
Một nhiệt điện trở thực sự là một nhiệt điện trở thay đổi điện trở của nó tương
ứng với sự thay đổi của nhiệt độ. Những cảm biến này được chế tạo bằng cách
thiêu kết các vật liệu bán dẫn như gốm hoặc polyme để cung cấp những thay đổi
lớn hơn trong điện trở chỉ với những thay đổi nhỏ về nhiệt độ. Thuật ngữ có tên
là “NTC” có nghĩa là hệ số nhiệt độ âm, có nghĩa là điện trở giảm khi nhiệt độ
tăng.
Thông số kỹ thuật:
- Nguồn: 3 -> 5 VDC.
- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
- Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)
- Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)
- Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)
- Kích thước 15mm x 12mm x 5.5mm.

15
2.5.2 Cảm biến chuyển động HC-SR501
Cảm biến thân nhiệt chuyển động PIR (Passive infrared sensor) HC-SR501 đượ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,...), cảm biến có thể chỉnh được độ nhạy để giới
hạn khoảng cách bắt xa gần cũng như cường độ bức xạ của vật thể mong muốn,
ngoài ra cảm biến còn có thể điều chỉnh thời gian kích trễ (giữ tín hiệu bao lâu
sau khi kích hoạt) qua biến trở tích hợp sẵn.
Cảm biến HC-SR501 có 2 chế độ làm việc có thể lựa chọn qua jumper:
- L (không lặp lại kích hoạt): sau khi có tín hiệu đầu ra cao thì sau khoảng
thời gian trễ sẽ chuyển xuống tín hiệu mức thấp.
- H (lặp lại kích hoạt): sau khi có tín hiệu đầu ra cao, trong thời gian trễ mà
vẫn phát hiện chuyển động thì tín hiệu đầu ra vẫn ở mức cao cho đến khi
không phát hiện chuyển động và hết thời gian trễ.

Hình 2.12 Cảm biến chuyển động HC-SR501 [9]

Hình 2.13 Cảm biến chuyển động HC-SR501 [9]

Thông số kỹ thuật:
- Phạm vi phát hiện : góc 360 độ hình nón, độ xa tối đa 6m.
- Nhiệt độ hoạt động : 32-122 ° F ( 050 ° C)
- Điện áp hoạt động : DC 3.8V - 5V

16
- Mức tiêu thụ dòng: ≤ 50 uA
- Thời gian báo: 30 giây có thể tùy chỉnh bằng biến trở.
- Độ nhạy có thể điều chỉnh bằng biến trở.
- Kích thước: 1,27 x 0,96 x 1.0 ( 32,2 x 24,3 x 25,4 mm)
2.5.3 Cảm biến khí Gas MQ2
MQ2 là cảm biến khí gas được cấu tạo từ chất bán dẫn SnO2. Chất này có độ
nhạy cảm thấp với không khí sạch. Nhưng khi trong môi trường có chất gây
cháy, độ dẫn của nó thay đổi ngay. Chính nhờ đặc điểm này người ta thêm vào
mạch đơn giản để biến đổi từ độ nhạy này sang điện áp. Khi môi trường sạch
điện áp đầu ra của cảm biến thấp, giá trị điện áp đầu ra càng tăng khi nồng độ khí
gây cháy xung quang MQ2 càng cao. MQ2 hoạt động rất tốt trong môi trường
khí hóa lỏng LPG, H2, và các chất khí gây cháy khác. Nó được sử dụng rộng rãi
trong công nghiệp và dân dụng do mạch đơn giản và chi phí thấp.

Hình 2.14 Cảm biến khí gas MQ2 [10]

Hình 2.15 Sơ đồ chân cảm biến khí gas MQ2 [10]

Thông số kỹ thuật:
- Nguồn hoạt động: 5V
- Loại dữ liệu: Analog và Digital
Ưu điểm:
- Phạm vi phát hiện rộng
- Tốc độ phản hồi nhanh và độ nhạy cao

17
- Mạch đơn giản
- Ổn định khi sử dụng trong thời gian dài
2.5.4 Module cảm biến ánh sáng
Module cảm biến ánh sáng là một linh kiện điện tử có điện trở thay đổi giảm
theo ánh sáng chiếu vào. Quang trở làm bằng chất bán dẫn trở kháng cao, và
không có tiếp giáp nào. Trong bóng tối, quang trở có điện trở đến vài MΩ. Khi
có ánh sáng, điện trở giảm xuống mức một vài trăm Ω. Độ chính xác: ± 5%RH
và ± 2o.
Hoạt động của quang trở dựa trên hiệu ứng quang điện trong khối vật chất.
Khi photon có năng lượng đủ lớn đập vào, sẽ làm bật electron khỏi phân tử, trở
thành tự do trong khối chất và làm chất bán dẫn thành dẫn điện. Mức độ dẫn điện
tuỳ thuộc số photon được hấp thụ.

Hình 2.16 Module cảm biến ánh sáng [11]

Thông số kĩ thuật:
- Điện áp hoạt động: 3.3V-5V
- Kích thước PCB: 3cm * 1.6cm
- Led xanh báo nguồn và ánh sáng
- IC so sánh : LM393
Mô tả sơ đồ chân của module cảm biến ánh sáng:
- AO: Tín hiệu analog
- DO: Tín hiệu ra digital
- GND: Nối Mass- Cực âm
- VCC: Nối nguồn 3.3V đến 5V

18
CHƯƠNG 3. THIẾT KẾ HỆ THỐNG CƠ CẤU CHẤP HÀNH CHO NHÀ
THÔNG MINH

3.1 Tổng quan về thiết bị sử dụng trong cơ cấu chấp hành


3.1.1 Quạt tản nhiệt DC brushless 8025

Hình 3.1 Quạt tản nhiệt DC brushless 8025 [12]

Quạt tản nhiệt là một sản phẩm đang rất thông dụng hiện nay với chức năng làm
giảm nhiệt độ, đảm bảo tuổi thọ cho máy móc khi hoạt động. Quạt tản nhiệt DC
brushless với chất lượng tốt, kích thước nhỏ gọn và giá cả phải chăng đang được
sử dụng rất rộng rãi trên thị trường.
Thông số:
- Chất liệu: Cánh quạt nhựa
- Phạm vi sử dụng: Vỏ máy tính, bộ khuếch đại âm thanh USB
- Kích thước: 8x8x2,5cm
- Điện áp sử dụng: 5V
- Dòng điện: 0.25A
- Công suất: 3W
- Kích thước lưỡi: 80mm
- Tốc độ quạt: 3600 +- 5%
- Tiếng ồn sản phẩm: 37(db-A)
- 2 Cực: dây đỏ cực dương, dây đen cực âm
Ứng dụng trong nhà thông minh: quạt thông gió.
3.1.2 Còi chip 5V 9,5x12mm

Hình 3.2 Còi chip 5V 9,5x12mm [13]

19
Còi chip 5V là linh kiện sử dụng trong các mạch điện tử với với mục đích tạo ra
tín hiệu âm thanh. Loa, còi có kích thước nhỏ gọn và nhẹ giúp dễ dàng lắp đặt và
sử dụng.
Thông số kỹ thuật:
- Điện áp sử dụng: 5VDC
- Dòng tiêu thụ: <25mA
- Tần số âm thanh: 2300H z ± 500
- Âm thanh đầu ra: Bíp bíp
- Biên độ âm thanh: > 80dB
- Nhiệt độ hoạt động: -20 đến 70 độ C
- Màu sắc: Đen
- Kích thước của còi chip 9.5x12mm (độ dày nhân đướng kính)
- 2 cực: Cực âm, cực dương (Chân dài: cực dương, Chân ngắn: Cực âm)
Ứng dụng trong nhà thông minh: còi báo động khí gas
3.1.3 Động cơ servo MG90S
Động cơ RC Servo MG90S có các bánh răng được làm bằng kim loại và một ổ
trục nhỏ và nhẹ, cho lực kéo khỏe và độ bền cao. Động cơ có kích thước nhỏ
gọn, có thể xoay khoảng 180 độ (90 độ mỗi hướng) phù hợp cho nhiều ứng dụng
khác nhau: cánh tay robot, robot nhện, cơ cấu chuyển hướng, cơ cấu quay góc,
dùng nhiều trong các mạch điện tử, ứng dụng để làm các mô hình điện tử, được
dùng làm động cơ cho các mô hình đồ chơi, Robot...

Hình 3.3 Động cơ servo MG90S [14]

Thông số kỹ thuật:
- Điện áp hoạt động: 4.8 ~ 6VDC
- Kích thước: 22,5x12x35,5mm
- Mô men xoắn: 1.8kg/cm(4.8V ),2.2kg/cm(6V)
- Tốc độ vận hành: 0,1s/60độ(4.8V), 0,08s/60độ(6V)
- Bánh răng: Kim loại.
- Độ dài dây nối: 175mm.

20
- Trọng lượng: 13,4g.
- Góc quay 90 độ.
Sơ đồ chân:

Hình 3.4 Sơ đồ chân Servo MG90S [14]

Servo MG90S có 3 chân: Chân cam (cấp xung), chân đỏ (cấp nguồn 5V), chân
nâu (nối đất). Khi ta cấp xung từ 1ms-2ms ta sẽ điều khiển động cơ quay 1 góc
theo ý muốn (nhỏ hơn 90 độ).
Ứng dụng trong nhà thông minh: Đóng mở cửa
3.2 Các module thiết bị sử dụng trong mô hình và chức năng
3.2.1 Hệ thống bật/tắt quạt dựa trên nhiệt độ, độ ẩm

Hình 3.5 Sơ đồ hệ thống bật/tắt quạt theo nhiệt độ, độ ẩm

Nguyên lý hoạt động: Cảm biến DHT11 đo nhiệt độ, độ ẩm và gửi dữ liệu về
arduino qua chân D7 (tín hiệu digital). Arduino nhận dữ liệu và so sánh, nếu
nhiệt độ>=30 hoặc độ ẩm>=80% thì chân D19 sẽ chuyển trạng thái lên mức cao
(5V), quạt sẽ bật, ngược lại quạt sẽ tắt.
Code hoạt động:
#include <DHT.h>
#define DHTTYPE DHT11
const int CBND = 7;
const int Fan = 2;
DHT dht(CBND, DHTTYPE);

21
float Temperature, Humidity;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(CBND,INPUT);
pinMode(Fan,OUTPUT);
}
void loop() {
Humidity = dht.readHumidity();
Temperature = dht.readTemperature();
Serial.println(Temperature);
Serial.println(Humidity);
if((Temperature>=30)||(Humidity>=80)) {
digitalWrite(Fan,HIGH);
}
else {
digitalWrite(Fan,LOW);
}
}
3.2.2 Hệ thống cảnh báo khí gas

Hình 3.6 Sơ đồ hệ thống cảnh báo khí gas

Nguyên lý hoạt động: Cảm biến MQ2 đo nồng độ khí gây cháy xung quanh và
gửi tín hiệu về Arduino qua chân A7 (tín hiệu analog). Arduino nhận dữ liệu và
so sánh, nếu nồng độ khí gây cháy cao hơn 400 thì chân D17 sẽ chuyển trạng thái
lên mức cao (5V), do đó còi báo động bật, ngược lại thì còi báo động tắt.
Code hoạt động:
const int CBgas = A7;
const int Buzzer = 17;
float Gas;
void setup() {
Serial.begin(9600);
pinMode(CBgas,INPUT);
pinMode(Buzzer,OUTPUT);
}

22
void loop() {
Gas = analogRead(CBgas);
Serial.println(Gas);
if(Gas>=400) {
digitalWrite(Buzzer,HIGH);
}
else {
digitalWrite(Buzzer,LOW);
}
}
3.2.3 Hệ thống bật/tắt đèn dựa trên cảm biến ánh sáng

Hình 3.7 Sơ đồ hệ thống bật/tắt đèn theo cảm biến ánh sáng

Nguyên lý hoạt động: Cảm biến ánh sáng đo cường độ ánh sáng theo giá trị
quang trở của cảm biến và gửi dữ liệu về Arduino. Arduino nhận dữ liệu và thực
hiện so sánh, nếu giá trị điện trở lớn hơn 500ohm (do cường độ ánh sáng càng
lớn thì điện trở của cảm biến càng nhỏ và ngược lại) thì chân D36 sẽ chuyển
trạng thái lên mức cao (5V), do đó relay nhận được tín hiệu và chân NO của
relay đóng lại, đèn sẽ sáng. Ngược lại nếu giá trị điện trở đo được nhỏ hơn
500ohm thì đèn tắt.
Code hoạt động:
const int CBAS = A9;
const int Lamp = 36;
float Light;
void setup() {
Serial.begin(9600);
pinMode(CBAS,INPUT);
pinMode(Lamp,OUTPUT);
}
void loop() {
Light = analogRead(CBAS);
Serial.println(Light);
if(Light>=500) {
digitalWrite(Lamp,HIGH);
}

23
else {
digitalWrite(Lamp,LOW);
}
}
3.2.4 Hệ thống mở cửa theo cảm biến chuyển động

Hình 3.8 Sơ đồ hệ thống mở cửa theo cảm biến chuyển động

Nguyên lý hoạt động: Cảm biến chuyển động HC-SR501 dò chuyển động xung
quanh nó và gửi tín hiệu về arduino. Arduino nhận dữ liệu và xử lý, nếu tín hiệu
ở mức cao thì chuyển trạng thái chân D6 lên mức cao (5V), do đó servo nhận
được tín hiệu và quay 1 góc 90 độ tương ứng với cửa mở. Ngược lại nếu tín hiệu
từ cảm biến gửi về arduino ở mức thấp thì Servo không hoạt động tương ứng với
cửa vẫn đóng.
Code hoạt động:
#include <Servo.h>
const int CBCD = 9;
const int Door = 6;
Servo myServo;
float Motion;
void setup() {
Serial.begin(9600);
myServo.attach(Door);
pinMode(CBCD,INPUT);
pinMode(Door,OUTPUT);
}
void loop() {
Motion = digitalRead(9);
if(Motion==HIGH) {
myServo.write(90);
}
else {
myServo.write(0);
}

24
}
3.2.5 Hệ thống bật/tắt thiết bị bằng nút nhấn

Hình 3.9 Sơ đồ hệ thống bật/tắt thiết bị bằng nút nhấn

Nguyên lý hoạt động: Khi chưa nhấn Button thì chân D8 nhận tín hiệu mức thấp,
khi ta nhấn nút Button thì chân D8 sẽ nhận tín hiệu mức cao. Nếu Arduino nhận
được tín hiệu mức cao ở chân D8 thì sẽ chuyển trạng thái chân D11 từ mức thấp
thành mức cao, do đó thiết bị được bật, trạng thái thiết bị sẽ được thiết lập là mức
cao. Nếu ta nhấn Button lần nữa, trạng thái thiết bị sẽ đảo ngược và tín hiệu chân
D11 cũng sẽ chuyển từ cao thành thấp, thiết bị sẽ tắt.
Code hoạt động:
const int Thietbi = 11;
const int Button_thietbi = 8;
int state_thietbi=0;
void setup(){
Serial.begin(9600);
pinMode(Thietbi,OUTPUT);
pinMode(Button_thietbi,INPUT);
}
void loop() {
if(digitalRead(Button_thietbi)==HIGH) {
while(digitalRead(Button_thietbi)==HIGH);
state_thietbi=!state_thietbi;
digitalWrite(Thietbi,state_thietbi);
}
}

25
CHƯƠNG 4. HỆ THỐNG GIÁM SÁT, ĐIỀU KHIỂN NHÀ THÔNG MINH
BẰNG WEB SERVER THÔNG QUA INTERNET

4.1 Mạng Internet


Internet hay Mạng: là một hệ thống thông tin toàn cầu có thể được truy nhập
công cộng gồm các mạng máy tính được liên kết với nhau. Hệ thống này truyền
thông tin theo kiểu nối chuyển gói dữ liệu (packet switching) dựa trên một giao
thức liên mạng đã được chuẩn hóa (giao thức IP). Hệ thống này bao gồm hàng
ngàn mạng máy tính nhỏ hơn của các doanh nghiệp, của các viện nghiên cứu và
các trường đại học, của người dùng cá nhân và các chính phủ trên toàn cầu, được
liên kết bởi một loạt các công nghệ mạng điện tử, không dây và mạng quang.
Internet mang theo một loạt các tài nguyên và dịch vụ thông tin, chẳng hạn như
các tài liệu và ứng dụng siêu văn bản được liên kết với nhau của World Wide
Web (WWW), thư điện tử, điện thoại và chia sẻ file.
Internet là kiểu mạng cục bộ (LAN) được sử dụng rộng rãi nhất hiện nay. Thực
chất, internet chỉ là mạng cấp dưới (lớp vật lý và một phần lớp liên kết dữ liệu),
vì vậy có thể sử dụng các giao thức khác nhau ở phía trên, trong đó TCP/IP là tập
giao thức được sử dụng phổ biến nhất. Tuy vậy, mỗi nhà cung cấp sản phẩm có
thể thực hiện giao thức riêng hoặc theo một chuẩn quốc tế cho giải pháp của
mình trên cơ sở internet. High Speed Ethernet (HSE) của Fieldbus Foundation
chính là một trong tám hệ bus trường được chuẩn hóa quốc tế theo IEC 61158.
Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho người sử dụng, một trong
các tiện ích phổ thông của Internet là hệ thống thư điện tử (email), trò chuyện
trực tuyến (chat), máy truy tìm dữ liệu (search engine), các dịch vụ thương mãi
và chuyển ngân, và các dịch vụ về y tế giáo dục như là chữa bệnh từ xa hoặc tổ
chức các lớp học ảo. Chúng cung cấp một khối lượng thông tin và dịch vụ khổng
lồ trên internet.
Nguồn thông tin khổng lồ kèm theo các dịch vụ tương ứng chính là hệ thống các
trang Web liên kết với nhau và các tài liệu khác trong WWW (World Wide
Web). Trái với một số cách sử dụng thường ngày, Internet và WWW không đồng
nghĩa. Internet là một tập hợp các mạng máy tính kết nối với nhau bằng dây
đồng, cáp quang,.. còn WWW, hay Web, là một tập hợp các tài liệu liên kết với
nhau bằng các siêu liên kết (hyperlink) và các địa chỉ URL, và nó có thể được
truy nhập bằng cách sử dụng Internet.
Một số trình duyệt web phổ biến hiện nay:
- Internet Explorer có sẵn trong Microsoft Windows, của Microsoft.
- Mozilla và Mozilla Firefox của Tập đoàn Mozilla.
- Netscape Navigator của Netscape.
- Opera của Opera Software.
- Safari trong Mac OS X, của Apple Computer.
- Maxthon của MySoft Technology.
- Avant Browser của Avant Force (Ý).
- Google Chrome của Google.

26
Từ khi ra đời đến nay, internet đã chứng minh được vai trò không thể thay thế
không những đối với công nghệ mà còn ngay cả đời sống hằng ngày của con
người trên toàn thế giới. Internet kết nối toàn cầu và kết nối cả những giá trị công
nghệ, đưa khoa học gần hơn vào ứng dụng cuộc sống, đưa công nghệ lên những
tầm cao mới.
4.2 Địa chỉ IP
IP là một địa chỉ của một máy tính khi tham gia vào mạng nhằm giúp cho các
máy tính có thể chuyển thông tin cho nhau một cách chính xác, tránh thất lạc. Có
thể coi địa chỉ IP trong mạng máy tính giống như địa chỉ nhà của bạn để nhân
viên bưu điện có thể đưa thư đúng cho bạn chứ không phải một người nào khác.
Mỗi địa chỉ IP gồm có 2 thành phần:
- NET ID: dùng đề nhận dạng hệ thống trong cùng một môi trường vật lí còn
được gọi là Phân Đoạn (Segment). Mọi hệ thống trong cùng một phân đoạn
phải có cùng Địa Chỉ Mảng. Địa chỉ này phải là duy nhất trong số các mạng
hiện có.
- HOST ID: dùng để nhận dạng một trạm làm việc, một máy chủ, một Router
hoặc một trạm TCP/IP trong cùng một Phân Đoạn. Địa chỉ trạm cũng phải
là duy nhất trong một mạng.
IP sử dụng trong mô dùng là IP tĩnh: IP này là địa chỉ được cấu hình thủ công
cho các thiết bị kết nối mạng. Nó được gọi là IP tĩnh do tính chất cố định và
không thể thay đổi. Các thiết bị phải được cấu hình đúng với router để chúng có
thể giao tiếp.
4.3 Thiết kế hệ thống giám sát và điều khiển bằng webserver qua internet

Hình 4.1 Sơ đồ khối hệ thống giám sát và điều khiển

Yêu cầu của hệ thống giám sát và điều khiển:

27
- Hiển thị giá trị nhiệt độ, độ ẩm, khí gas, ánh sáng và cảnh báo khi có sự cố
như rò rì khí gas, nhiệt độ hoặc độ ẩm vượt quá mức cho phép.
- Điều khiển bật/tắt các thiết bị bằng webserver thông qua internet và hiển thị
trạng thái thiết bị lên webserver.
Vai trò của các thành phần trong hệ thống giám sát và điều khiển:
- Khối cảm biến: thu thập dữ liệu từ môi trường để gửi về khối vi xử lí.
- Khối vi xử lí: có trách nhiệm xử lý dữ liệu trước khi đưa lên webserver
hoặc nhận tín hiệu điều khiển từ webserver để điều khiển bật/tắt các thiết bị.
- Web server: có vai trò đọc các thông tin gửi từ khối vi xử lí sau đó hiển thị
lên giao diện web, đồng thời gửi lệnh điều khiển từ người dùng trở lại khối
vi xử lí.
- Khối chấp hành: bao gồm hệ thống đèn, quạt, cửa, còi báo động. Khối này
nhận lệnh trực tiếp từ khối vi xử lí từ đó đưa ra hành động phù hợp.
Trong đề tài này, hệ thống các cảm biến được sử dụng để thu thập dữ liệu từ môi
trường ngoài, sau đó thực hiện quá trình xử lí, gửi lệnh tới cơ cấu chấp hành và
gửi lên server. Trang web điều khiển được biết bằng ngôn ngữ HTML trong môi
trường của Arduino. Arduino đã phát triền một bộ thư viện Ethernet giúp cho
người dùng có thể trực tiếp viết code HTML ngay trong trình soạn thảo của
arduino.
4.4 Nguyên lý điều khiển truyền nhận dữ liệu
4.4.1 Nguyên lý điều khiển – Truyền nhận dữ liệu sử dụng ESP8266
Quá trình giao tiếp, điều khiển gồm 2 phần :
- Webserver nhận tín hiệu trạng thái từ cơ cấu chấp hành để quản lý, giám
sát:

Hình 4.2 Sơ đồ truyền tín hiệu từ cơ cấu chấp hành đến Webserver sử dụng ESP8266

Nguyên lý: Khi có thiết bị được bật/tắt thủ công, tín hiệu sẽ được gửi đến
ESP8266 bằng giao tiếp Serial, sau đó được gửi lên Webserver để hiển thị trạng
thái thiết bị.
- Tín hiệu điều khiển từ WEB truyền về điều khiển các cơ cấu chấp hành:

Hình 4.3 Sơ đồ truyền tín hiệu từ Webserver đến cơ cấu chấp hành sử dụng ESP8266

Nguyên lý: Khi có thao tác bật/tắt trên nút ảo của webserver thì tín hiệu sẽ truyền
về ESP8266, ESP sẽ xử lý và đưa ra tín hiệu điều khiển cơ cấu chấp hành.
4.4.2 Nguyên lý điều khiển – Truyền nhận dữ liệu sử dụng Ethernet Shield
Quá trình giao tiếp, điều khiển gồm 2 phần :

28
- Tín hiệu điều khiển từ WEB truyền về điều khiển các cơ cấu chấp hành:

Hình 4.4 Sơ đồ truyền tín hiệu từ Webserver đến cơ cấu chấp hành sử dụng Ethernet

Nguyên lý: Khi thực hiện các thao tác Bật/Tắt bằng các nút ảo trên giao diện
Webserver, tín hiệu được truyền về server tại Ethernet Shiled, do module
Ethernet Shiled được gắn trực tiếp với vi điều khiển Arduino và giao tiếp Serial
đưa tín hiệu tới vi điều khiển, tại đây dữ liệu được xử lý so sánh để biết tín hiệu
điều khiển là của thiết bị nào và cấp lệnh điều khiển cơ cấu chấp hành đó.
- Webserver nhận tín hiệu trạng thái từ cơ cấu chấp hành để quản lý, giám
sát:

Hình 4.5 Sơ đồ truyền tín hiệu từ cơ cấp chấp hành đến Webserver sử dụng Ethernet

Nguyên lý: Hoàn toàn tương tự như trên, nhưng chiều đi của tín hiệu ngược lại,
khi một cơ cấu chấp hành được bật/tắt thủ công, sẽ có tín hiệu truyền về vi điều
khiển và do Ethernet Shield gắn trực tiếp với vi điều khiển nên tín hiệu truyền
đến server của Ethernet bằng giao tiếp Serial, cuối cùng tín hiệu được truyền lên
Webserver để Webserver cập nhật hiển thị trạng thái các thiết bị.
4.4.3 Ví dụ về điều khiển, giám sát thiết bị bằng Webserver
Chức năng: bật/tắt thiết bị bằng webserver:
Phần cứng:
- ESP8266 NodeMCU CP2102
- Relay 4 kênh 5VDC
Sơ đồ kết nối:

Hình 4.6 Sơ đồ kết nối thiết bị

Code hoạt động:


#include <ESP8266WiFi.h>

29
#include <ESP8266WebServer.h>

const char* ssid = "P503"; // Enter SSID here


const char* password = "caovan99"; //Enter Password here

ESP8266WebServer server(80);

uint8_t LED1pin = D4;


bool LED1status = LOW;
uint8_t LED2pin = D2;
bool LED2status = LOW;
uint8_t LED3pin = D3;
bool LED3status = LOW;
uint8_t LED4pin = D1;
bool LED4status = LOW;

void setup() {
Serial.begin(115200);
delay(100);
pinMode(LED1pin, OUTPUT);
pinMode(LED2pin, OUTPUT);
pinMode(LED3pin, OUTPUT);
pinMode(LED4pin, OUTPUT);

Serial.println("Connecting to ");
Serial.println(ssid);

//connect to your local wi-fi network


WiFi.begin(ssid, password);

//check wi-fi is connected to wi-fi network


while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());

server.on("/", handle_OnConnect);// nút ảo được kết nối


server.on("/led1on", handle_led1on);//led bật -> nút ảo bật
server.on("/led1off", handle_led1off);
server.on("/led2on", handle_led2on);
server.on("/led2off", handle_led2off);
server.on("/led3on", handle_led3on);

30
server.on("/led3off", handle_led3off);
server.on("/led4on", handle_led4on);
server.on("/led4off", handle_led4off);
server.onNotFound(handle_NotFound);

server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();

if(LED1status==HIGH)
{digitalWrite(LED1pin, HIGH);}
else
{digitalWrite(LED1pin, LOW);}

if(LED2status==HIGH)
{digitalWrite(LED2pin, HIGH);}
else
{digitalWrite(LED2pin, LOW);}

if(LED3status==HIGH)
{digitalWrite(LED3pin, HIGH);}
else
{digitalWrite(LED3pin, LOW);}

if(LED4status==HIGH)
{digitalWrite(LED4pin, HIGH);}
else
{digitalWrite(LED4pin, LOW);}
}

void handle_OnConnect() {
LED1status = LOW;//ban đầu led 1 tắt
LED2status = LOW;
LED3status = LOW;
LED4status = LOW;
server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,LED4status));
}

void handle_led1on() {//nút ảo bật


LED1status = HIGH;
server.send(200, "text/html", SendHTML(true,LED2status,LED3status,LED4status));
}

void handle_led1off() {

31
LED1status = LOW;
server.send(200, "text/html", SendHTML(false,LED2status,LED3status,LED4status));
}

void handle_led2on() {
LED2status = HIGH;
server.send(200, "text/html", SendHTML(LED1status,true,LED3status,LED4status));
}

void handle_led2off() {
LED2status = LOW;
server.send(200, "text/html", SendHTML(LED1status,false,LED3status,LED4status));
}

void handle_led3on() {
LED3status = HIGH;
server.send(200, "text/html", SendHTML(LED1status,LED2status,true,LED4status));
}

void handle_led3off() {
LED3status = LOW;
server.send(200, "text/html", SendHTML(LED1status,LED2status,false,LED4status));
}

void handle_led4on() {
LED4status = HIGH;
server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,true));
}

void handle_led4off() {
LED4status = LOW;
server.send(200, "text/html", SendHTML(LED1status,LED2status,LED3status,false));
}

void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat,uint8_t led2stat,uint8_t led3stat,uint8_t led4stat){


String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,
user-scalable=no\">\n";
ptr +="<title>Remote Control Using Wi-Fi</title>\n";
ptr +="<style>html {font-family: Helvetica; display: inline-block; margin: 0px auto; text-
align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin-bottom: 10px;font-size:

32
20px}\n";
ptr +=".button {display: block;width: 100px;background-color: #1abc9c;border: none;color:
white;padding: 10px 20px;text-decoration: none;font-size: 20px;margin: 0px auto 35px;cursor:
pointer;border-radius: 4px;}\n";
ptr +=".button-on {background-color: #1abc9c;}\n";
ptr +=".button-on:active {background-color: #16a085;}\n";
ptr +=".button-off {background-color: #34495e;}\n";
ptr +=".button-off:active {background-color: #2c3e50;}\n";
ptr +="p {font-size: 20px;color: black;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<h1> &#272i&#7873u khi&#7875n kh&#244ng d&#226y s&#7917 d&#7909ng Wi-Fi
</h1>\n";
//ptr +="<h1> Smart Home By Son Nguyen</h1> \n";
ptr +="<h1> Thi&#7871t b&#7883 &#273i&#7879n</h1> \n";

if(led1stat)
{ptr +="<p>Thi&#7871t b&#7883 1: T&#7855t</p><a class=\"button button-off\"
href=\"/led1off\">B&#7853t</a>\n";}
else
{ptr +="<p>Thi&#7871t b&#7883 1: B&#7853t</p><a class=\"button button-on\"
href=\"/led1on\">T&#7855t</a>\n";}

if(led2stat)
{ptr +="<p>Thi&#7871t b&#7883 2: B&#7853t</p><a class=\"button button-off\"
href=\"/led2off\">B&#7853t</a>\n";}
else
{ptr +="<p>Thi&#7871t b&#7883 2: T&#7855t</p><a class=\"button button-on\"
href=\"/led2on\">T&#7855t</a>\n";}

if(led3stat)
{ptr +="<p>Thi&#7871t b&#7883 3: B&#7853t</p><a class=\"button button-off\"
href=\"/led3off\">B&#7853t</a>\n";}
else
{ptr +="<p>Thi&#7871t b&#7883 3: T&#7855t</p><a class=\"button button-on\"
href=\"/led3on\">T&#7855t</a>\n";}

if(led4stat)
{ptr +="<p>Thi&#7871t b&#7883 4: B&#7853t</p><a class=\"button button-off\"
href=\"/led4off\">B&#7853t</a>\n";}
else
{ptr +="<p>Thi&#7871t b&#7883 4: T&#7855t</p><a class=\"button button-on\"
href=\"/led4on\">T&#7855t</a>\n";}

ptr +="</body>\n";
ptr +="</html>\n";
return ptr;

33
}
Giao diện Webserver:
Đầu tiên ta truy cập vào mạng Lan đã cài đặt cho ESP, sau đó truy cập vào địa
chỉ IP hiện ra ở màn hình Serial Monitor trong phần mềm Arduino IDE, ta sẽ
truy cập vào giao diện web như Hình 4.7.

Hình 4.7 Giao diện Web điều khiển sử dụng ESP8266

Khi ta nhấn bật thiết bị thì thiết bị sẽ được bật và trạng thái trên Web cũng được
cập nhật.

Hình 4.8 Giao diện khi bật Relay 1 và Relay 2

Hình 4.9 Relay 1 và Relay 2 đang được bật

34
CHƯƠNG 5. THIẾT KẾ, CHẾ TẠO MÔ HÌNH THỰC NGHIỆM

5.1 Mô hình thực tế


Mô hình nhà thực tế gồm 2 phòng: 1 phòng khách và 1 phòng ngủ được thiết kế
với các thiết bị như sau:
- Cảm biến nhiệt độ và độ ẩm (phòng khách)
- Cảm biến khí Gas (phòng khách)
- Cảm biến ánh sáng (bên ngoài nhà)
- Cảm biến chuyển động (trước cửa phòng khách đi vào phòng ngủ)
- 3 đèn led: Lamp1 (bật/tắt online bằng Webserver – Phòng khách), Lamp2
(Bật/tắt dựa theo cảm biến ánh sáng – Phòng khách), Lamp3 (bật/tắt bằng
nút nhấn – Phòng ngủ)
- 3 quạt: Fan1 (bật/tắt online bằng Webserver – Phòng khách), Fan2 (Bật/tắt
dựa theo cảm biến nhiệt độ và độ ẩm – Phòng khách), Fan3 (bật/tắt bằng
nút nhấn – Phòng ngủ)
- 1 Còi báo động: Buzzer (báo động khi có rò rỉ khí Gas – Phòng khách)
- 1 Cửa tự động từ phòng khác vào phòng ngủ: Door (đóng/mở theo cảm biến
chuyển động)
Mô hình thực tế sử dụng 1 board Arduino Mega 2560 kết hợp 1 board Ethernet
Shield W5100 để cho khả năng kết nối ổn định và tốc độ truyền dữ liệu nhanh.
Bên cạnh đó là khả năng cung cấp đủ chân dữ liệu (cả digital và analog) để sử
dụng cho mô hình.

Hình 5.1 Mô hình nhà thực tế

Hình 5.2 Mô hình nhà thực tế

35
Sơ đồ mạch điện mô hình nhà thực tế:

Hình 5.3 Sơ đồ mạch điện mô hình nhà thực tế

Code hoạt động mô hình thực tế:


#include <SPI.h> // chuẩn giao tiếp ngoại vi nối tiếp
#include <Ethernet.h>
#include <DHT.h>
#include <Servo.h>

#define DHTTYPE DHT11

const int CBND = 7;


const int CBCD = 9;
const int CBgas = A7;
const int CBAS = A9;
const int Lamp3 = 11;//button - relay 1
const int Fan3 = 40; //button
const int Door = 3;
const int Buzzer = 17;//coi
const int Led = 30;
const int Fan2 = 19;//relay2_cbnd
const int Lamp1 = 5;//relay4_on off online
const int Lamp2 = 36;//relay3_lamp2_cbas
const int Fan1 = 48;
const int buttonLamp3 = 46;
const int buttonFan3 = 50;

int state_Lamp3=0,state_Fan3=0,state_Door=0,state_Buzzer=0,state_Fan2=0,state_Lamp1=0,
state_Lamp2=0,state_Fan1=0;

Servo myServo;
DHT dht(CBND, DHTTYPE);

36
float Humidity, Temperature, Motion;
float Gas;
float Light;

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // địa chỉ Mac vật lý cho ethernet
W5100
IPAddress ip(192, 168, 100, 10); // địa chỉ IP cho ethernet cài trong mạng Lan
EthernetServer server(80); //khởi tạo thư viện máy chủ ethernet với địa chỉ IP và
cổng máy chủ (cổng 80 là mặc định cho HTTP)
String readString; //chuỗi để tìm nạp dữ liệu từ địa chỉ

void setup() {
dht.begin();
Ethernet.begin(mac,ip); //bắt đầu kết nối ethernet và server
server.begin(); //bắt đầu kết nối ethernet và server
Serial.begin(9600); //bắt đầu giao tiếp nối tiếp (Serial) với tốc độ 9600bit/s
myServo.attach(Door);
pinMode(buttonLamp3, INPUT);
pinMode(buttonFan3, INPUT);
pinMode(CBND, INPUT);
pinMode(CBCD, INPUT);
pinMode(CBgas, INPUT);
pinMode(CBAS, INPUT);
pinMode(Fan3, OUTPUT);
pinMode(Door, OUTPUT);
pinMode(Lamp3, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(Led, OUTPUT);
pinMode(Fan2, OUTPUT);
pinMode(Lamp1, OUTPUT);
pinMode(Lamp2,OUTPUT);
pinMode(Fan1,OUTPUT);
}

void loop() {
EthernetClient client = server.available(); //nghe các yêu cầu
if (client) {
boolean currentLineIsBlank = true; //một yêu cầu http kết thúc bằng một dòng trống
while (client.connected()) {
if (client.available()) {
char c = client.read(); //đọc char theo yêu cầu kiểu char của http
if(readString.length()<100) {
readString+=c; //lưu các kí tự thành chuỗi
Serial.write(c);
if (c == '\n' && currentLineIsBlank) { //nếu yêu cầu kết thúc
Serial.println(readString);

37
if(readString.indexOf("Fan1on")>0) { //bấm bật quạt 1
state_Fan1=1;
digitalWrite(Fan1,HIGH);
}
if(readString.indexOf("Fan1off")>0) {
state_Fan1=0;
digitalWrite(Fan1,LOW);
}
if(readString.indexOf("Lamp1on")>0) {
state_Lamp1=1;
digitalWrite(Lamp1,HIGH);
}
if(readString.indexOf("Lamp1off")>0) {
state_Lamp1=0;
digitalWrite(Lamp1,LOW);
}
client.println("HTTP/1.1 200 OK"); //gửi trang web mới
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 1");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<h3 style = color:red;font-family:Garamond;text-
align:center;>************************************</h3>");
client.println("<h3 style = color:red;font-family:Garamond;text-align:center;>Smart
Home Based On IoT</h3>");
client.println("<h3 style = color:red;font-family:Garamond;text-
align:center;>************************************</h3>");
client.println("<body>");
client.println("<body style=\"background-color:cyan;\">");
Temperature = dht.readTemperature();
Humidity = dht.readHumidity();
Light = analogRead(A9);
Gas = analogRead(A7);
Motion = digitalRead(9);
client.println("<table border=\"2\" align \"center\" cellspacing=\"0\" cellpadding=\"4\">");
// viền giữa các ô, khoảng cách các ô, khoảng cách từ text đến ô
client.println("<th width=\"300 px \"bgcolor=\"violet\">EQUIPMENT</th>");
client.println("<th width=\"300 px \"bgcolor=\"violet\">PARAMETER</th>");
client.println("<th width=\"300 px \"bgcolor=\"violet\">STATE</th>");
client.println("<th width=\"300 px \"bgcolor=\"violet\">ACT</th>");
client.println("<tr>");
client.println("<th>Temperature Sensor</th>");
client.println("<th>");
client.println(Temperature);
client.println("deg(C)</th>");

38
if(Temperature>=30){
client.println("<th>WARNING</th>");}
else{
client.println("<th>OK</th>");}
client.println("<th></th>");
client.println("</tr>");
client.println("<tr>");
client.println("<th>Humidity Sensor</th>");
client.println("<th>");
client.println(Humidity);
client.println("(%)</th>");
if(Humidity>=80){
client.println("<th>WARNING</th>");}
else{
client.println("<th>OK</th>");}
client.println("<th></th>");
client.println("</tr>");
client.println("<tr>");
client.println("<th>Gas Sensor</th>");
client.println("<th>");
client.println(Gas);
client.println("ppm</th>");
if(Gas>=400){
client.println("<th>WARNING</th>");}
else{
client.println("<th>OK</th>");}
client.println("<th></th>");
client.println("</tr>");
client.println("<tr>");
client.println("<th> Light Sensor</th>");
client.println("<th>");
client.println(Light);
client.println("ohm</th>");
if(Light>=500){
client.println("<th>DARK</th>");}
else{
client.println("<th>SHINING</th>");}
client.println("<th></th>");
client.println("</tr>");
client.println("<tr>");
client.println("<th> Motion Sensor</th>");
client.println("<th>");
client.println("Motion Detection");
client.println("</th>");
if(Motion==HIGH){
client.println("<th>YES</th>");}

39
else{
client.println("<th>NO</th>");}
client.println("<th></th>");
client.println("</tr>");
client.println("<tr>");
client.println("<th>Lamp1</th>");
client.println("<th></th>");
if(state_Lamp1==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Lamp1off\"\"><button>ON</button></a>");
client.println("</th>"); }
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Lamp1on\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>Fan1</th>");
client.println("<th></th>");
if(state_Fan1==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan1off\"\"><button>ON</button></a>");
client.println("</th>");}
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan1on\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>Lamp3</th>");
client.println("<th></th>");
if(state_Lamp3==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/lamp3off\"\"><button>ON</button></a>");
client.println("</th>"); }
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Lamp3on\"\"><button>OFF</button></a>");}
client.println("</th>");
client.println("</tr>");

40
client.println("<tr>");
client.println("<th>Fan3</th>");
client.println("<th></th>");
if(state_Fan3==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan3off\"\"><button>ON</button></a>");
client.println("</th>");}
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan3on\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>Lamp2</th>");
client.println("<th></th>");
if(state_Lamp2==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Lamp2off\"\"><button>ON</button></a>");
client.println("</th>");}
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Lamp2on\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>Fan2</th>");
client.println("<th></th>");
if(state_Fan2==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan2off\"\"><button>ON</button></a>");
client.println("</th>"); }
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Fan2on\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>DOOR</th>");
client.println("<th></th>");
if(state_Door==HIGH) {

41
client.println("<th>OPEN</th>");
client.println("<th>");
client.println(" <a href=<\"/dongcua\"\"><button>ON</button></a>");
client.println("</th>"); }
else {
client.println("<th>CLOSE</th>");
client.println("<th>");
client.println(" <a href=<\"/mocua\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("<tr>");
client.println("<th>Buzzer</th>");
client.println("<th></th>");
if(state_Buzzer==HIGH) {
client.println("<th>ON</th>");
client.println("<th>");
client.println(" <a href=<\"/Buzzeroff\"\"><button>ON</button></a>");
client.println("</th>");}
else {
client.println("<th>OFF</th>");
client.println("<th>");
client.println(" <a href=<\"/Buzzeron\"\"><button>OFF</button></a>");
client.println("</th>");}
client.println("</tr>");
client.println("</table>");
client.println("<h3 style = color:black;font-family:Garamond;text-align:left;>GVHD:
Nguyen Thanh Son</h3>");
client.println("<h3 style = color:black;font-family:Garamond;text-align:left;>SV: Nguyen
Cao Van</h3>");
client.println("</body>");
client.println("</html>");
break;
}
}
}
}
delay(10); //cho trình duyệt web thời gian để nhận dữ liệu
readString=""; //xóa chuỗi cho lần đọc kế tiếp
client.stop(); //tắt kết nối
}
if ((Temperature >= 30)||(Humidity >= 80)){
state_Fan2=1;
digitalWrite(Fan2, HIGH);}
else {state_Fan2=0;
digitalWrite(Fan2, LOW);}
if (Motion==HIGH){

42
state_Door=1;
myServo.write(0);}
else{
state_Door=0;
myServo.write(90);}
if (Gas>=400){
state_Buzzer=1;
digitalWrite(Buzzer, HIGH);
digitalWrite(Led,HIGH);
}
else{
state_Buzzer=0;
digitalWrite(Buzzer, LOW);
digitalWrite(Led,LOW);
}
if(digitalRead(buttonFan3)==HIGH) {
while(digitalRead(buttonFan3)==HIGH);
state_Fan3 = !state_Fan3;
if(state_Fan3==1) digitalWrite(Fan3,HIGH);
else digitalWrite(Fan3,LOW);}
if(digitalRead(buttonLamp3)==HIGH) {
while(digitalRead(buttonLamp3)==HIGH);
state_Lamp3 = !state_Lamp3;
if(state_Lamp3==1) digitalWrite(Lamp3,HIGH);
else digitalWrite(Lamp3,LOW);}
if(Light>=500) {
state_Lamp2=1;
digitalWrite(Lamp2,HIGH);}
else {
state_Lamp2=0;
digitalWrite(Lamp2,LOW);
}
}

5.2 Giao diện webserver giám sát và điều khiển


Giao diện webserver được viết bằng ngôn ngữ HTML tích hợp trong Arduino.

43
Hình 5.4 Giao diện webserver ban đầu

5.3 Kết quả điều khiển một số thiết bị

Hình 5.5 Bật quạt khi độ ẩm cao

Hình 5.6 Bật đèn khi trời tối

Hình 5.7 Cửa mở khi có chuyển động

44
Hình 5.8 Còi báo động khi nồng độ khí Gas cao

5.4 Kết quả đạt được


Qua quá trình chạy thực nghiệm có được một số kết quả:
- Sử dụng máy tính, smart phone có kết nối internet truy cập vào trang web
giám sát và điều khiển, đồng thời đã thực hiện được thao tác điều khiển
thiết bị.
- Hệ thống chạy tương đối ổn định, nhưng thời gian đáp ứng của trang web
không ổn định. Nguyên nhân là do khả năng xử lí của khối vi điều khiển, hệ
thống mạng internet không ổn định hoặc có thể là do mức độ chính xác của
các cảm biến chưa cao.

45
CHƯƠNG 6. NGHIÊN CỨU VÀ PHÁT TRIỂN MÔ HÌNH NHÀ THÔNG
MINH DỰA TRÊN TRÍ TUỆ NHÂN TẠO

6.1 Giới thiệu chung


Khi dân số thế giới già đi, số lượng người cao tuổi sống một mình sẽ tăng lên rất
nhiều. Cùng với sự lão hóa, các vấn đề liên quan đến sức khỏe cũng tăng lên. Do
đó, số người cao tuổi cần được trợ giúp để có cuộc sống đàng hoàng sẽ tăng lên
nhanh chóng. Do đó, những ngôi nhà thông minh với tính năng giám sát và điều
khiển thiết bị cơ bản đã không còn đáp ứng đủ nhu cầu của người dùng. Vì thế,
công nghệ nhà thông minh với khả năng giả nhận thức đã được phát triển để giúp
những người bị suy giảm nhận thức có thể sống độc lập trong ngôi nhà của họ
trong thời gian dài hơn, bên cạnh đó cũng tăng tính tiện nghi tối đa cho ngôi nhà
và góp phần vào việc tiết kiệm năng lượng. Hơn nữa, các đánh giá sức khỏe nhận
thức được thực hiện trong các cơ sở lâm sàng không phải lúc nào cũng cung cấp
đại diện đầy đủ về hành vi của bệnh nhân. Đánh giá thực tế về Hoạt động sinh
hoạt hàng ngày (ADL) có thể cung cấp hiểu biết tốt hơn về đối tượng so với đánh
giá được thực hiện trong bối cảnh lâm sàng.
Tình trạng môi trường nhà thông minh ngày càng trở nên phổ biến là kết quả của
sự hội tụ của các công nghệ trong máy học (Machine Learning) và tính phổ biến
cũng như khả năng tiếp cận ngày càng tăng của các cảm biến và thiết bị trong
nhà. Cách tiếp cận là xem nhà thông minh như một tác nhân thông minh nhận
biết môi trường của nó thông qua việc sử dụng các cảm biến và có thể hoạt động
dựa trên môi trường thông qua việc điều khiển các thiết bị truyền động. Mục tiêu
chung của nhà thông minh là cải thiện và nâng cao chất lượng cuộc sống, kéo dài
thời gian ở nhà của người suy giảm nhận thức với sự hỗ trợ của công nghệ, giảm
thiểu chi phí bảo trì ngôi nhà và tối đa hóa sự thoải mái cho người ở. Để đáp ứng
những mục tiêu này, ngôi nhà thông minh phải có khả năng suy luận và thích ứng
để cung cấp thông tin.
Môi trường nhà thông minh có thể hỗ trợ người ở bằng cách hoạt động như một
bộ phận giả nhận thức, bằng cách nhận biết và xử lý các thiết bị khác. Một trong
những bước quan trọng nhất để theo dõi sức khỏe, tình trạng của cư dân trong
môi trường nhà thông minh là nhận biết hoạt động hằng ngày của cư dân. Vì vậy
cần có một thuật toán ghi nhận hoạt động của con người. Trong những năm qua,
đã có nhiều phương pháp tiếp cận mô hình và nhận biết hoạt động như mô hình
Markov, mô hình Markov ẩn, mô hình Naïve Bayes,… Tuy nhiên, các thuật toán
này cũng có những mặt hạn chế. Đối với một số hoạt động, độ chính xác không
cao lắm. Do đó, các thuật toán sử dụng mạng nơ ron nhân tạo ngày càng phát
triển trong việc nhận dạng hoạt động hằng ngày.
6.2 Nguyên lý xây dựng mô hình nhà thông minh
Để xây dựng các mô hình toán học nhận dạng hoạt động cần có các tập dữ liệu
mà trong đó ghi lại các hoạt động, các hành vi sử dụng các thiết bị của cư dân
theo thời gian thực và tập dữ liệu này được thu thập từ các cảm biến. Nhận dạng
hoạt động dựa trên cảm biến có thể được thực hiện bằng cách sử dụng hai loại

46
cảm biến: cảm biến đeo được (được đặt trên cơ thể người để ghi lại các chuyển
động thường xuyên, chẳng hạn như đi bộ và đứng) và cảm biến phân tán (được
đặt tại các vị trí trong nhà để nhận ra các hoạt động sống hàng ngày (ADLs)),
chẳng hạn như xem truyền hình, nấu ăn,... Sự khác biệt chính giữa hai loại cảm
biến này là hệ thống cảm biến phân tán có khả năng nhận ra các hành vi khác
nhau và các hoạt động phức tạp bằng cách giám sát sự tương tác giữa các đối
tượng và cư dân trong nhà thông minh, trong khi các cảm biến đeo được chỉ có
thể ghi lại các chuyển động vật lý của con người. Dữ liệu cảm biến để nhận dạng
hoạt động được thu thập bằng cách sử dụng mạng cảm biến tùy chỉnh và sau đó
được lưu trữ trong cơ sở dữ liệu SQL. Để duy trì quyền riêng tư, tên người tham
gia và thông tin nhận dạng sẽ bị xóa và phải mã hóa dữ liệu đã thu thập trước khi
truyền qua mạng.
Sau đó, tập dữ liệu thu thập được sẽ được đưa vào các mô hình toán học phù hợp
để xử lý và cho ra kết quả nhận dạng các hoạt động thường ngày của người sống
trong nhà theo các tính năng đã lựa chọn (điển hình là theo thời gian thực). Từ
các kết quả có được, các lệnh điều khiển đối với từng thiết bị sẽ được thực hiện
tự động dựa theo các hành vi và thói quen của người ở mà không cần sự can
thiệp của con người một cách thủ công.
6.3 Các bước để xây dựng mô hình nhà thông minh dựa trên AI
- Chuẩn bị dữ liệu: Ở bước này người phát triển cần phải chuẩn bị dữ liệu
có nhãn để huấn luyện, kiểm thử và kiểm tra. Cả ba tập này phải bao phủ
đầy đủ các tình huống trong thực tiễn sẽ triển khai. Tuy vậy, lượng dữ liệu
của tập huấn luyện thường rất nhiều so với hai tập còn lại. Quá trình làm
giàu dữ liệu có thể được tiến hành ở bước này và lưu lại, hoặc tiến hành
trực tuyến trước mỗi lần nạp dữ liệu huấn luyện vào mạng.
- Xây dựng kiến trúc: Người phát triển cần phải xây dựng một kiến trúc
mạng phù hợp cho bài toán.
- Huấn luyện, kiểm thử và kiểm tra: Huấn luyện mạng là công việc dùng tập
dữ liệu huấn luyện để tìm ra các thông số của mạng sao cho đáp ứng của
mạng với tập dữ liệu kiểm thử là đủ tốt; cách làm này được kỳ vọng rằng
mạng tìm được cho kết quả đánh giá tốt trên tập kiểm tra cũng như được
dùng trong thực tiễn. Đây là công việc tốn khá nhiều thời gian vì phải tinh
chỉnh các siêu tham số và phải đợi quá trình học cho ra kết quả chấp nhận
được. Khi huấn luyện, người phát triển thường phải làm các việc sau: (a)
xây dựng hàm tổn thất, (b) lựa chọn giải thuật huấn luyện, (c) lựa chọn các
siêu tham số, và (d) chạy, quan sát giá trị tổn thất, và tinh chỉnh siêu tham
số - thậm chí là tái kiến trúc mạng.
- Triển khai hệ thống: Nếu quá trình huấn luyện thành công, người phát
triển đã có mô hình mạng có thể triển khai trong thực tiễn. Ở bước này,
người phát triển cần lựa chọn phương pháp tính toán phù hợp – là tính
toán tập trung tại máy chủ hay tính toán phân tán tại các máy trạm. Mỗi sự
lựa chọn sẽ cho ra một dạng phần cứng khác nhau. Với công nghệ tính

47
toán đã chọn, người phát triển tiến hành thử nghiệm, đánh giá và nhân
rộng quy mô.
6.4 Nhận dạng hoạt động hằng ngày sử dụng mạng nơ ron BP
Mạng nơron BP (back propagation) là một loại mạng chuyển tiếp điển hình bao
gồm lớp đầu vào, lớp ẩn và lớp đầu ra. Nó có thể được sử dụng để mô hình hóa
mối quan hệ phức tạp giữa đầu vào và đầu ra hoặc để tìm các mẫu trong dữ liệu.
Trong mô hình được giám sát, thuật toán lan truyền ngược lỗi được sử dụng để
huấn luyện MLP (nhận thức nhiều lớp) là mạng chuyển tiếp dữ liệu đa lớp đơn
giản nhất của mạng nơ-ron. Dựa trên phương pháp này, mạng nơ-ron BP được
thiết lập. Hình 6.1 cho thấy kiến trúc của mạng nơ-ron BP ba lớp.

Hình 6.1 Mạng nơ ron BP 3 lớp [15]

Khi một mẫu được nhập vào, các đơn vị trên mỗi lớp sẽ thực hiện phép tính từ
trước đến sau (thuật toán chuyển tiếp):
𝑛𝑒𝑡𝑗 = ∑𝑗 𝑤𝑖𝑗 . 𝑂𝑖 , 𝑂𝑗 = 𝑓(𝑛𝑒𝑡𝑗 ) (1)
Bản chất của thuật toán BP là thu được vấn đề nhỏ nhất của hàm lỗi. Thuật toán
này sử dụng phương pháp suy giảm nhanh trong lập trình phi tuyến và điều chỉnh
hệ số trọng số theo hướng gradient âm của hàm lỗi. Để minh họa thuật toán BP,
Ep được ước lượng bởi hàm lỗi là bình phương của sự khác biệt giữa đầu ra mong
muốn và đầu ra thực tế. tpk đại diện cho giá trị đầu ra lý tưởng, Oopk là giá trị đầu
ra thực tế:
1 𝑜 2
𝐸𝑝 = ∑𝑘(𝑡𝑝𝑘 − 𝑂𝑝𝑘 ) (2)
2
Trong số đó, k biểu thị đơn vị của đầu ra, p biểu thị mẫu đầu vào thứ p.
Để tránh các giá trị cực tiểu cục bộ, phương pháp xung lượng bổ sung được đưa
vào mạng nơron BP. Phương pháp xung lượng bổ sung dựa trên phương pháp
BP, bản chất của nó là chuyển ảnh hưởng của sự thay đổi trọng lượng cuối cùng
qua một hệ số xung lượng. Nó sửa đổi từng biến thể trọng lượng bằng cách thêm
một giá trị phụ tỷ lệ với giá trị cũ để tạo ra biến thể trọng lượng mới theo phương
pháp BP.
6.4.1 Thu thập dữ liệu
Ví dụ, môi trường nhà thông minh được thử nghiệm bởi dự án thông minh
CASAS cũng sử dụng mạng nơ ron BP để nhận dạng hoạt động hằng ngày. Có

48
tổng cộng có 10 hoạt động được thực hiện trong căn hộ. Các hoạt động đó như
sau:
- Giường đến Toilet (hoạt động 0): Chuyển đổi giữa giường và toilet trong
đêm
- Bữa sáng (hoạt động 1): Người dân ăn sáng
- Giường (hoạt động 2): Hoạt động ngủ trên giường được đánh dấu bắt đầu
và kết thúc xác định
- Công việc máy tính (hoạt động 3): Hoạt động của cư dân làm việc trong
không gian văn phòng của ngôi nhà thông minh
- Bữa tối (hoạt động 4): Người dân ăn tối
- Giặt là (hoạt động 5): Cư dân giặt quần áo bằng máy giặt có sẵn trong
ngôi nhà thông minh
- Rời khỏi nhà (hoạt động 6): Hoạt động của cư dân rời khỏi ngôi nhà thông
minh
- Bữa trưa (hoạt động 7): Người dân ăn trưa
- Đi lang thang trong đêm (hoạt động 8): Hoạt động của người đi lang thang
trong đêm
- Thuốc (hoạt động 9): Hoạt động của người dân uống thuốc, được đánh
dấu bắt đầu và kết thúc.
Lựa chọn các tính năng thể hiện dữ liệu được thu thập:
(1) ID cảm biến
Đây là một giá trị số nguyên trong phạm vi từ 0 đến số giá trị cảm biến logic
(được xác định trong một tham số riêng biệt). Thay vì sử dụng tất cả các ID cảm
biến ban đầu, mang các ý nghĩa khác nhau trong từng cài đặt khác nhau, chúng ta
có thể ánh xạ chúng lên các nhãn tương ứng với căn phòng mà cảm biến cư trú:
Phòng tắm, Phòng ngủ, Nhà bếp, Sảnh khách, Phòng khách, Khu vực làm việc,…
(2) Thời gian trong ngày
Đây là thời gian đầu vào của sự kiện cảm biến tính bằng giây.
(3) Hoạt động trước đây
Đối tượng địa lý là một giá trị số nguyên đại diện cho hoạt động xảy ra trước
hoạt động hiện tại xảy ra trước hoạt động hiện tại. Các phạm vi không được sử
dụng theo mặc định.
(4) Thời lượng hoạt động
Tính năng này thể hiện độ dài của hoạt động hiện tại được đo bằng số sự kiện
cảm biến. Giá trị của đối tượng địa lý là tính toán giá trị của ngưỡng kích thước
chiều dài và giá trị mặc định là 15, có nghĩa là kích thước chiều dài của mỗi hoạt
động được phân biệt bằng 15 ngưỡng.
Cú pháp tổng quát của tập dữ liệu được đưa ra dưới đây:
Ngày; Thời gian; ID cảm biến; Giá trị cảm biến; <nhãn>
Ví dụ về tập dữ liệu của hoạt động Night_wandering được đưa ra trong Hình 6.2,
cho thấy một ví dụ rằng một chuỗi cảm biến tương ứng với hoạt động

49
Night_wandering với Ngày, Giờ, ID cảm biến, Giá trị cảm biến cũng như các
thông số nhãn hoạt động.

Hình 6.2 Ví dụ về tập dữ liệu của hoạt động Night_wandering [15]

6.4.2 Xác định lớp đầu vào và đầu ra


Số lượng tế bào thần kinh trong lớp đầu vào và lớp đầu ra hoàn toàn được xác
định theo yêu cầu của người sử dụng. Như đã lựa chọn ở trên, các tính năng được
thu thập thử nghiệm là ID cảm biến, thời gian trong ngày, hoạt động trước đó và
thời lượng hoạt động.
Trên thực tế, mỗi hoạt động được biểu thị bằng chuỗi cảm biến và độ dài của
chuỗi không phải là một giá trị cố định. Tuy nhiên, đối với mạng nơron BP, các
đầu vào là cố định. Vì vậy các tính năng cần được xử lý. Rõ ràng, ID cảm biến và
thời gian của cảm biến không thể được truyền trực tiếp đến mạng nơ-ron BP. ID
cảm biến được ánh xạ tới các nhãn tương ứng với phòng, giá trị trung bình của
giá trị ID cảm biến được chọn làm đối tượng địa lý. Nó đại diện cho nơi chủ yếu
diễn ra hoạt động. Đối với tính năng thời gian, thời gian bắt đầu và thời gian kết
thúc của chuỗi cảm biến được chọn. Cuối cùng số lượng tế bào thần kinh trong
lớp đầu vào là 5.
Số lượng tế bào thần kinh trong lớp đầu ra giống với số lượng phân loại, tức là
10. Nguyên tắc xây dựng của lớp đầu ra như sau: giá trị đầu ra của phân loại khác
nhau được quy định là 1 ở các vị trí tương ứng. Ví dụ, giá trị tương ứng của hoạt
động 1 là [0 1 0 0 0 0 0 0 0 0 0].
Như lớp ẩn mạng thần kinh BP với hàm truyền Sigmoid, để cải thiện tốc độ đào
tạo và sự nhanh nhẹn và hàm Sigmoid tránh vùng bão hòa một cách hiệu quả,
thường yêu cầu các giá trị dữ liệu đầu vào từ 0 đến 1. Do đó, giá trị của mỗi tính
năng được chuẩn hóa như:
𝑋
𝑋= (3)
𝑋𝑚𝑎𝑥

Trong đó X là giá trị thực của mẫu; Xmax là giá trị lớn nhất của mẫu cho mọi tính
năng.
6.4.3 Xác định số lớp ẩn
Ví dụ này chỉ sử dụng một lớp ẩn. Số lượng tế bào thần kinh trong lớp ẩn rất
quan trọng đối với độ chính xác. Số lượng tế bào thần kinh trong lớp ẩn càng
nhiều thì thời gian mạng BP học tập càng tăng mạnh. Số lượng tế bào thần kinh ít

50
hơn trong lớp ẩn, mạng có thể không giải quyết được các vấn đề phức tạp. Trong
ví dụ này, các nơ-ron ẩn được xác định theo công thức thực nghiệm chung theo
Kolmogorov. Công thức thực nghiệm của Kolmogorov là:
𝑛 = √𝑝 + 𝑞 + 𝑐 (4)
Trong đó n là số nơron ẩn; p là số lượng tế bào thần kinh lớp đầu vào; q là số
lượng tế bào thần kinh cho lớp đầu ra; c ứng với các giá trị của hằng số trong
khoảng từ 1 đến 10. Theo tình hình thực tế và thực nghiệm của mô hình thử
nghiệm nhà thông minh của dự án thông minh CASAS, số nơron ẩn được đặt là
11.
6.4.4 Kết quả
Số lượng tế bào thần kinh lớp đầu vào là 5, số nơron ẩn là 11 và số đầu ra là 10.
Tỷ lệ học η bằng 0,1. Hệ số xung lượng α được đặt là 0,95. Các mẫu đã được thu
thập trong thử nghiệm căn hộ thông minh CASAS trong 55 ngày, dẫn đến tổng số
600 trường hợp của 10 hoạt động này và 647.485 sự kiện cảm biến chuyển động
được thu thập. Kết quả được thể hiện trong Hình 6.3.

Hình 6.3 Kết quả cho mỗi hoạt động [15]

Lưu ý rằng độ chính xác của hoạt động là cao ngoại trừ hoạt động 5. Điều này là
do các mẫu cho hoạt động 5 quá ít. Tuy nhiên, mạng nơron BP đạt được độ chính
xác nhận dạng tốt.

51
CHƯƠNG 7. KẾT LUẬN

7.1 Kết luận


Do đây là một đề tài khá mới đối với em, nên trong quá trình tìm hiểu em đã gặp
phải một số khó khăn nhất định. Nhưng với sự hướng dẫn nhiệt tình của thầy
giáo cộng thêm nỗ lực tìm tòi, học hỏi khám phá cái mới đã giúp em đạt được
một số kết quả sau:
- Kĩ năng tìm tài liệu và đọc hiểu tài liệu.
- Kỹ năng viết báo cáo.
- Tổng quan về hệ thống giám sát và điều khiển nhà thông minh qua mạng
internet. Đồng thời em cũng biết được tình hình sử dụng, xu hướng phát
triển của Việt Nam và các nước khác trên thế giới.
- Thiết kế thành công mô hình ngôi nhà thông minh.
- Tìm hiểu được cơ sở, ý nghĩa của việc điều khiển thiết bị qua internet.
- Hiểu được nguyên lí làm việc của các module trong hệ thống và cách ghép
nối chúng như thế nào.
- Tiến hành chạy thực nghiệm, đánh giá kết quả.
Bên cạnh những kết quả đạt được thì mô hình vẫn tồn tại nhiều giới hạn về kĩ
thuật như xảy ra nhiễu, thời gian đáp ứng giao diện web dài.
Đồ án này có tính thực tế cao vì nó áp dụng cho cuộc sống hằng ngày của con
người. Vì thế hoàn toàn có thể tiếp tục nghiên cứu và phát triển đồ án theo các xu
hướng công nghệ mới hiện nay.
7.2 Hướng phát triển của đồ án trong tương lai
Nêu tóm tắt hướng mở rộng của đề tài trong tương lai nếu có. Đây là mục tùy
chọn vì phụ thuộc vào loại đề tài.
Hệ thống điều khiển và giám sát qua mạng internet có ý nghĩa rất lớn về nhiều
mặt trong cuộc sống như: an ninh, quốc phòng, chăn nuôi, y tế, gia đình, trồng
trọt….. Việc làm chủ được vấn đề này vẫn còn nhiều hạn chế nhất định, nhất là
đối với một đất nước đang phát triển khoa học công nghệ như chúng ta. Qua đề
tài này em mong muốn sử dụng kiến thức học được trong thời gian sinh viên để
thực hiện việc tiếp cận với công nghệ và xu hướng của thế giới.
Qua đồ án này, em xin đề xuất một số hướng phát triển cho hệ thống:
- Ứng dụng trí tuệ nhân tạo để điều khiển thiết bị bằng giọng nói, cài đặt
thêm hệ thống nhận diện khuôn mặt, nhận diện hành vi, hệ thống bảo mật
bằng vân tay,…
- Xây dựng một phần mềm quản lí trên các thiết bị di động, phần mềm đó có
khả năng tự động thông báo các điều kiện bất lợi cho người dùng mà không
cần truy cập vào trang web.

52
TÀI LIỆU THAM KHẢO
[1] Waheb A. Jabbar, Mohammed Hayyan Alsibai, Nur Syaira S. Amran, and
Samiah K. Mahayadin, Design and Implementation of IoT-Based, 2018.
[2] "Google hình ảnh," [Online].
[3] "dailymayvesinh," [Online]. Available: https://dailymayvesinh.com/arduino-
la-gi.html.
[4] "arduino.vn," [Online]. Available: http://arduino.vn/bai-viet/42-arduino-uno-
r3-la-gi.
[5] "Arduino.vn," [Online]. Available: http://arduino.vn/bai-viet/542-gioi-thieu-
arduino-mega2560.
[6] "linhkien888.vn," [Online]. Available: https://linhkien888.vn/module-
arduino-ethennet-shield-w5100.
[7] "Arduino.vn," [Online]. Available: http://arduino.vn/bai-viet/1141-gioi-
thieu-van-tat-kit-phat-trien-esp8266-chip-nap-cp2102.
[8] "hshop.vn," [Online]. Available: https://hshop.vn/products/cam-bien-do-am-
nhiet-do-dht11.
[9] "Hshop.vn," [Online]. Available: https://hshop.vn/products/cam-bien-
chuyen-dong-pir-5v-2.
[10] "Nshop.vn," [Online]. Available: https://nshopvn.com/product/cam-bien-
khi-gas-mq-2/.
[11] "trochoihn.vn," [Online]. Available: https://chotroihn.vn/module-cam-bien-
anh-sang-tai-linh-kien-dien-tu-3m.
[12] "Shopee.vn," [Online]. Available: https://shopee.vn/Qu%E1%BA%A1t-
T%E1%BA%A3n-Nhi%E1%BB%87t-Brushless-8025-8x8x2.5cm-
i.395600519.7494493909.
[13] "Mualinhkien.vn," [Online]. Available: https://mualinhkien.vn/coi-chip-5v-
loai-9-5x12mm.
[14] "Datasheetpdf.com," [Online]. Available:
https://datasheetspdf.com/pdf/1106582/ETC/MG90S/1.
[15] Hongqing Fang, Lei He, "BP Neural Network for Human Activity
Recognition," 2012.
[16] "hindawi.com," [Online]. Available:
https://www.hindawi.com/journals/misy/2021/6961343/.
[17] Sumaya Alghamdi1, Etimad Fadel2, Nahid Alowidi3, "Recognizing
Activities of Daily Living using 1D Convolutional Neural Networks for
Efficient Smart Homes," 2021.
[18] "vi.wikipedia," [Online]. Available: https://vi.wikipedia.org/wiki/Internet.

53
[19] "bkaii.com.vn," [Online]. Available: https://bkaii.com.vn/tin-nganh-2/139-
tong-quan-ve-giao-tiep-rs232.

54
PHỤ LỤC

55

You might also like