You are on page 1of 81

TRƯỜNG ĐẠI HỌC ĐÔNG Á CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA ĐIỆN-ĐIỆN TỬ Độc lập - Tự do - Hạnh phúc


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

Họ và tên sinh viên: Nguyễn Tiến Hưng Lớp: TD15A2.1


GVHD: ThS. Đỗ Hoàng Ngân Mi
I. Đề tài: "HỆ THỐNG GIÁM SÁT NGÔI NHÀ THÔNG MINH"
II. Các tham số ban đầu:
- Nguồn cấp cho mạch động lực: 12V DC hoặc 220V AC
- Nguồn cấp cho mạch điều khiển: 3.3V DC hoặc 5V DC
- Để phát hiện đối tượng và điều khiển các thiết bị sử dụng các bộ cảm
biến, phần mềm blynk.
III. Nội dung cần khảo sát và thiết kế:
- Tổng quan về các hệ thống thông minh có trong thực tế.
- Tìm hiều một hệ thống điều khiển thông minh trong thực tế, từ đó tìm hiều quy
trình công nghệ của một hệ thống điều khiển một đối tượng nào đó.
- Phân tích, đánh giá các mô hình của SV đã làm
- Thiết kế và chế tạo mô hình hệ thống giám sát ngôi nhà thông minh (điều khiển
tối thiểu 5 đối tượng khác nhau, theo nhiệt độ, độ ẩm của đối tượng hoặc phạm vi
giám sát)
- Phân tích, tính toán các bộ phận cơ khí và truyền động
- Tính chọn các phần tử và các thiết bị điều khiển, cảm biến …
- Lập trình điều khiển hệ thống dùng arduino, esp8266
- Kết luận.
IV. Các phần cần phải làm và nộp:
- Tập đồ án
- Bản vẽ sơ đồ nguyên lý A0.
- Đĩa CD gồm file Word đề tài và file Powerpoint
- Mô hình chế tạo
V. Thời gian hoàn thành đồ án: 20 tháng 3 năm 2017
Kiểm tra tiến độ đồ án Đà Nẵng, ngày tháng 4 năm 2017
(Giáo viên HD ký mỗi lần SV đến Giáo viên hướng dẫn
gặp thông qua đồ án)
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG
DẪN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
Đồ án tốt Trang 1 Hệ Thống Giám Sát Ngôi Nhà Thông

LỜI NÓI ĐẦU

Ngày nay cùng với sự phát triển mạnh mẽ của các ngành khoa học kỹ thuật,
công nghệ kỹ thuật điện tử mà trong đó là kỹ thuật tự động điều khiển đóng vai trò
quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp, cung cấp
thông tin ... Do đó là một sinh viên chuyên ngành Điện tự động chúng ta phải biết
nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự phát triển nền
khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật điện tử nói
riêng. Bên cạnh đó còn là sự thúc đẩy sự phát triển của nền kinh tế nước nhà.
Như chúng ta đã biết,nhu cầu về cuộc sống ngày càng được nâng cao,nên nhu
câu về sự tiện nghi trong ngôi nhà ở cũng không nằm ngoài xu thế đó. Ngoài ra các
vụ việc đột nhập nhà ở không những gây thiệt hại lớn về tài sản của các gia đình mà
còn tạo sự lo lắng cho nhiều người, ảnh hưởng đến an toàn trật tự của toàn xã
hội.Theo khảo sát thì phần lớn các vụ trộm cắp tài sản của các gia đình chủ yếu xảy
ra khi tất cả mọi người trong gia đình đều đã đi làm hoặc ngủ say. Nên có một hệ
thống cảnh báo sẽ giảm được phần lớn thiệt hại. Các thiết bị trong nhà ở được điều
khiển một cách tự động cũng như giám sát từ xa sẽ đem lại một cuộc sống thoải mái
cho mọi thành viên trong gia đình.
Để giám sát được ngôi nhà và tài sản một cách 24/24 chúng ta cần phải có một
phương tiện giám sát hiệu quả hơn, thông minh hơn.
Do đó, tôi chọn để tài “ Hệ thống giám sát ngôi nhà thông minh” làm đề tài tốt
nghiệp của mình.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 2 Hệ Thống Giám Sát Ngôi Nhà Thông

MỤC LỤC

LỜI NÓI ĐẦU.........................................................................................................1


MỤC LỤC................................................................................................................2
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI......................................6
1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY................................6
1.1.1 Giới thiệu về arduino........................................................................................6
1.1.2 Ứng dụng arduino trong thực tế........................................................................6
1.2 LÝ DO CHỌN ĐỀ TÀI.......................................................................................8
1.3 MỤC ĐÍCH CỦA ĐỀ TÀI..................................................................................9
1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU........................................................9
1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU..............................................................9
CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG WIFI, GIỚI THIỆU CHIP
ESP8622 VÀ BOARD ARDUINO UNO..............................................................10
2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI..............................................................10
2.1.1 Nguyên tắc hoạt động.....................................................................................10
2.1.2 Các chuẩn kết nối...........................................................................................11
2.2 GIỚI THIỆU VỀ MODULE ESP8622..............................................................14
2.2.1 Tổng quan về module esp8622.......................................................................14
2.2.2 Tính năng của chip esp8622...........................................................................14
2.2.3 Sơ đồ chân......................................................................................................15
2.2.4 Tập lệnh AT giao tiếp với Module ESP8266..................................................15
2.2.5 Các phương pháp kết nối thiết bị với esp8266................................................17
2.3 GIỚI THIỆU VỀ BOARD ARDUINO.............................................................22
2.3.1 Cấu tạo phần cứng..........................................................................................22
2.3.2 Môi trường lập trình board mạch Arduino......................................................23
2.3.3 Các loại Board mạch Arduino........................................................................23
2.3.5 Sơ đồ chân board arduino uno.......................................................................26
2.3.6. Các thông số của board arduino uno..............................................................27
2.4 TỔNG QUAN VỀ PHẦN MỀM BLYNK........................................................47
2.4.1 Giới thiệu phần mềm blynk............................................................................47
2.4.2 Thao tác đối với phần mềm blynk..................................................................48

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 3 Hệ Thống Giám Sát Ngôi Nhà Thông
CHƯƠNG 3: THIẾT KẾ VÀ LẮP RÁP MÔ HÌNH NGÔI NHÀ THÔNG
MINH.....................................................................................................................51
3.1 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG..............................................51
3.2 KHỐI GIAO TIẾP MẠNG WIFI.....................................................................52
3.3 KHỐI XỬ LÝ TRUNG TÂM...........................................................................53
3.4 KHỐI CẢM BIẾN.............................................................................................54
3.4.2 Cảm biến nhiệt độ độ ẩm DHT22...................................................................56
3.5 KHỐI CƠ CẤU CHẤP HÀNH.........................................................................57
3.5.1 Rơ le...............................................................................................................57
3.5.2 Động cơ servo.................................................................................................58
3.5.3 Còi báo động..................................................................................................60
3.5.4 Động cơ một chiều..........................................................................................61
3.6. KHỐI HIỂN THỊ LCD.....................................................................................62
3.6.1 Chức năng........................................................................................................62
3.6.2 Thiết kế...........................................................................................................63
3.7 KHỐI NGUỒN..................................................................................................65
CHƯƠNG 4. LẬP TRÌNH TRƯỜNG TRÌNH ĐIỀU KHIỂN..........................67
4.1 TRƯƠNG TRÌNH ĐIỀU KHIỂN ARDUINO..................................................67
4.1.1 lưu đồ thuật toán ardiuno................................................................................67
4.1.2 Chi tiết trương trình điều khiển arduino..........................................................68
4.2 TRƯƠNG TRÌNH ĐIỀU KHIỂN ESP8266......................................................71
4.2.1 Lưu đồ thuật toán esp8266..............................................................................71
4.2.2 Chi tiết trương trình điều khiển esp8266........................................................72
CHƯƠNG 5. KIỂM TRA ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN................76
5.1. KIỂM TRA HỆ THỐNG..................................................................................76
5.2. KẾT QUẢ.........................................................................................................76
5.3 KẾT LUẬN.......................................................................................................77
TÀI LIỆU THAM KHẢO.......................................................................................78

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 4 Hệ Thống Giám Sát Ngôi Nhà Thông

DANH MỤC CÁC HÌNH

Số hiệu
Tên hình Trang
hình
1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560 7
1.2 Thiết bị UAV 7
Arduino Điều khiển nhà thông minh với Máy tính bảng và
1.3 8
smartphone
2.1 Nguyên tắc hoạt động của wifi 10
2.2 Các chuẩn kết nối wifi 11
2.3 Sơ đồ chân esp8622 15
2.4 Hình ảnh thực tế module esp8622 15
2.5 Kết nối Arduino Due và ESP-01 17
2.6 Kết nối với smartphone 18
2.7 Kết nối hai module esp8266 20
2.8 Lệnh AT kết nối hai esp8266 21
2.9 Sơ chân board Arduino Uno R3 26
2.10 Hình dạng thực tế board Arduino Uno R3 27
2.11 Sơ đồ chân của Atmega328 28
2.12 Arduino 31
2.13 Driver Software Installation. 31
2.14 Device Manager. 32
2.15 Right click và chọn ”Update Driver Software” 32
2.16 Click chọn “Browse my computer for driver software” 32
2.17 Driver 33
2.18 Arduino IDE. 33
2.19 Arduino Toolbar 34
2.20 IDE Menu 34
2.21 File menu. 34
2.22 Click Examples. 35
2.23 Edit menu 35
2.24 Sketch menu 36
2.25 Tool menu. 36

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 5 Hệ Thống Giám Sát Ngôi Nhà Thông

Số hiệu
Tên hình Trang
hình
2.26 Chọn Board 37
2.27 Sơ đồ mạch ví dụ 1 38
2.28 Sơ đồ ví dụ 2 40
2.29. Led sáng dần từ led 1 đến led 10 và ngược lại. 42
2.30 Điều khiển tốc độ động cơ. 44
2.31 PWM 50%. 45
2.32 PWM 25%. 46
2.33 PWM 90%. 46
2.34 Giao diện điều khiển blynk 48
3.1 Sơ đồ tổng quát hệ thống 51
3.2 Hình ảnh thực tế esp8266 v12 52
3.3 Sơ đồ nối chân esp8266 52
3.4 Sơ đồ nối chân arduino 53
3.5 Cảm biến hồng ngoại 54
3.6: Sơ đồ nguyên lý khối thu phát hồng ngoại 56
3.7 Cảm biến DHT22 56
3.8 Module relay thực tế 57
3.9. Động cơ servo ngoài thực tế 59
3.10. Cấu tạo động cơ Servo 59
3.11 Cấu tạo chân vào ra động cơ servo 60
3.12 Đèn còi báo động 60
3.13 Động cơ một chiều 61
3.14 Cấu tạo động cơ một chiều 61
3.14 Nguyên lý hoạt động của động cơ DC 62
3.16 Khối hiển thị LCD 63
3.17 Sơ đồ mạch nguyên lý khối nguồn 65
5.1. Mô hình phần cứng 76

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 6 Hệ Thống Giám Sát Ngôi Nhà Thông

CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI

1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY


1.1.1 Giới thiệu về arduino
Arduino: là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng
dụng điện tử. Arduino gồm có board mạch có thể lập trình được ( thường gọi là vi
điều khiển và các phần mềm hỗi trợ IDE (Integrated Development Environment)
dùng để soạn thảo, biên dịch code và nạp chương cho board.
Arduino ngày nay rất phổ biến cho những người mới bắt đầu tìm hiểu về điện
tử vì nó đơn giản, hiệu quả và dễ tiếp cận. Không giống như các loại vi điều khiển
khác, Arduino không cần phải có các công cụ chuyên biệt để phục vụ việc nạp code,
ví dụ để nạp code cho PIC cần phải có Pic Kit. Đối với Arduino rất đơn giản, ta có
thể kết nối với máy tính bằng cáp USB.
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những
người tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần
giống với những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng
người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại
học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về m Arduino
ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua
vào thế kỷ thứ 9 là King Arduin. Arduino chính thức được đưa ra giới thiệu vào
năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư
Massimo Banzi, là một trong những người phát triển Arduino, tại trường Interaction
Design Instistute Ivrea (IDII). Mặc dù hầu như không được tiếp thị gì cả, tin tức về
Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp
của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi có người tìm
đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.
1.1.2 Ứng dụng arduino trong thực tế
Máy in 3d
Một cuộc cách mạng khác cũng đang âm thầm định hình nhờ vào Arduino, đó
là sự phát triển máy in 3D nguồn mở Reprap. Máy in 3D là công cụ giúp tạo ra các
vật thể thực trực tiếp từ các file CAD 3D. Công nghệ này hứa hẹn nhiều ứng dụng
rất thú vị trong đó có cách mạng hóa việc sản xuất cá nhân.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 7 Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560


Thiết bị bay không người lái (UAV)
UAV là một ứng dụng đặc biệt thíchhợp với Arduino do chúng có khả năng xử
lý nhiều loại cảm biến như Gyro, accelerometer, GPS…; điều khiển động cơ servo
và cả khả năng truyền tín hiệu từ xa.

Hình 1.2 thiết bị UAV

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 8 Hệ Thống Giám Sát Ngôi Nhà Thông

Điều khiển nhà thông minh (Smart Home)


Kết hợp với các module chức năng bluetooth hoặc wifi..., với các ứng dụng
cài đặt trên máy tính bảng, smartphone hay trình duyệt web người dùng có thể thiết
kế hệ thống điều khiển giám sát thông minh các thiết bị điện trong ngôi nhà của
mình khi ở trong nhà hoặc từ bất cứ nới nào (được kết nối internet).

Hình 1.3 Arduino Điều khiển nhà thông minh với Máy tính bảng và smartphone
1.2 LÝ DO CHỌN ĐỀ TÀI
Kỹ thuật điều khiển và tự động hóa là ngành công nghệ liên quan đến việc ứng
dụng các kỹ thuật cơ khí hiện đại, kỹ thuật điều khiển và kỹ thuật máy tính vào việc
vận hành và điều khiển quá trình sản xuất.
Ngày nay, khi nhu cầu và thị hiếu con người ngày càng cao, yêu cầu về số
lượng và chất lượng của các sản phẩm xã hội cũng không ngừng tăng, điều đó đòi
hỏi các dây chuyền sản xuất trong công nghiệp ngày càng hiện đại, có mức độ tự
động hóa ngày càng cao với việc sử dụng các kỹ thuật điều khiển hiện đại có trợ
giúp của máy tính. Hệ thống điều khiển và tự động hóa có mặt trong mọi dây
chuyền sản xuất của các ngành kinh tế khác nhau như: công nghiệp, nông nghiệp,

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang 9 Hệ Thống Giám Sát Ngôi Nhà Thông

giao thông vận tải,…


Vì vậy một hệ thống điều khiển thông minh và hoàn toàn tự động là một xu
thế tất yếu. Ưng dụng hệ thống thông minh vào điều khiển cac thiết bị nhà ở và sân
vườn vẫn còn khá mới mẻ ở Việt Nam. Nhóm đã quyết ddingj chộn đề tài ngôi nhà
thông minh để làm đề trài nguyên cứu của mình để đón đầu xu thế đó.
1.3 MỤC ĐÍCH CỦA ĐỀ TÀI
Nhóm xây dựng đề tài đã chọn theo hướng xây dựng hệ thống sử dụng arduino
và esp8266 để quản lý ở nơi mà con người phải bỏ sức ra để thực hiện một công
việc lặp đi lặp lại hằng ngày. Nhằm bỏ qua sự tác động của con người, con người
sẽ không phải bận tâm quá nhiều đến việc quản lý ngôi nhà. Mang lại một cuộc
sống thoải mái.
1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU
Nhóm thực hiện đề tài đã đặt ra mục tiêu nghiên cứu cụ thể như sau: tìm hiểu
về nguyên tắc hoạt động của công nghệ số trên module Arduino và ESP8266. Biết
cách ứng dụng trên ardunio IDE. Tìm hiểu hoạt động của cảm biến quang, cũng như
cảm biến nhiệt độ và độ ẩm.
Do giới hạn về thời gian nghiên cứu cũng như kiến thức chuyên ngành nên
nhóm thực hiện đề tài chỉ tập trung nghiên cứu một số vấn đề chính xoay quanh đề
tài như: Tìm hiểu và cài đặt các công cụ hỗ trợ lập trình arduinon IDE. Tìm hiểu
hoạt động của các thiết bị trong hệ thống.
1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU
Chúng em khi thực hiện đề tài đã sử dụng các phương pháp nghiên cứu đề tài
sau:
+ Phương pháp phân tích tổng hợp lý thuyết.
+ Phương pháp tham khảo tài liệu.
+ Phương pháp thực nghiệm.
 Cụ thể:
+ Tìm hiểu Arduino phần cứng và tập lệnh
+ Viết chương trình điều khiển bằng phần mềm Arduino IDE
+ Thiết kế các bộ phận của mô hình
+ Lắp ráp hoàn thiện mô hình ngôi nhà thông minh

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

CHƯƠNG II: TỔNG QUAN VỀ HỆ THỐNG WIFI,


GIỚI THIỆU CHIP ESP8622 VÀ BOARD ARDUINO UNO

2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI


Wifi là viết tắt của từ Wireless Fidelity trong tiếng Anh, được gọi chung là
mạng không dây sử dụng sóng vô tuyến. Wifi là loại sóng vô tuyến tương tự như
sóng điện thoại, sóng truyền hình và radio. Hầu hết các thiết bị sử dụng điện tử hiện
nay như : Smartphone, Máy tính bảng, Tivi, Laptop… đều có thể kết nối được Wi-
Fi. Và Wifi là thứ gắn liền và không thể thiếu với đời sống của người dân trong hầu
hết công việc cũng như giải trí hàng ngày
Kết nối Wifi dựa trên các loại chuẩn kết nối IEEE 802.11, và chủ yếu hiện nay
Wifi hoạt động trên băng tần 54 Mbps và có tín hiệu mạnh nhất trong khoảng cách
100 feet gần 31 mét.
2.1.1 Nguyên tắc hoạt động

Hình 2.1 Nguyên tắc hoạt động của wifi


Truyền thông qua mạng không dây là truyền thông vô tuyến hai chiều.Cụ thể:
Thiết bị adapter không dây (hay bộ chuyển tín hiệu không dây) của máy
tính chuyển đổi dữ liệu sang tín hiệu vô tuyến và phát những tín hiệu này đi bằng
một ăng-ten.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Thiết bị router không dây nhận những tín hiệu này và giải mã chúng. Nó gởi
thông tin tới Internet thông qua kết nối hữu tuyến Ethernet.
Qui trình này vẫn hoạt động với chiều ngược lại, router nhận thông tin từ
Internet, chuyển chúng thành tín hiệu vô tuyến và gởi đến adapter không dây của
máy tính.
Sóng WIFI: Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô
tuyến sử dụng cho thiết bị cầm tay, điện thoại di động và các thiết bị khác. Nó có
thể chuyển và nhận sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô
tuyến và ngược lại.
Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở
chỗ:
Chúng truyền và phát tín hiệu ở tần số 2.5 GHz hoặc 5GHz. 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
2.1.2 Các chuẩn kết nối

Hình 2.2 Các chuẩn kết nối wifi


Chúng 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.
Chuẩn 802.11
IEEE 802.11 là một tập các chuẩn của tổ chức IEEE (tiếng Anh: Institute of
Electrical and Electronic Engineers) bao gồm các đặc tả kỹ thuật liên quan đến hệ

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

thống mạng không dây. Chuẩn IEEE 802.11 mô tả một giao tiếp “truyền qua không
khí” (tiếng Anh: over-the-air) sử dụng sóng vô tuyến để truyền nhận tín hiệu giữa
một thiết bị không dây và tổng đài hoặc điểm truy cập (tiếng Anh: access point),
hoặc giữa 2 hay nhiều thiết bị không dây với nhau.
Năm 1997, IEEE giới thiệu chuẩn mạng không dây đầu tiên và đặt tên nó là
802.11. Khi đó, tốc độ hỗ trợ tối đa của mạng này chỉ là 2 Mbps với bang tầng
2.4GHz.
Chuẩn 802.11b
IEEE đã mở rộng trên chuẩn 802.11 gốc vào tháng Bảy năm 1999, đó chính là
chuẩn802.11b. Chuẩn này hỗ trợ băng thông lên đến 11Mbps, tương quan với
Ethernet truyền thống.
802.11b sử dụng tần số vô tuyến (2.4 GHz) giống như chuẩn ban đầu 802.11.
Các hãng thích sử dụng các tần số này để chi phí trong sản xuất của họ được giảm.
Các thiết bị 802.11b có thể bị xuyên nhiễu từ các thiết bị điện thoại không dây (kéo
dài), lò vi sóng hoặc các thiết bị khác sử dụng cùng dải tần 2.4 GHz. Mặc dù vậy,
bằng cách cài đặt các thiết bị 802.11b cách xa các thiết bị như vậy có thể giảm được
hiện tượng xuyên nhiễu này.
 Ưu điểm của 802.11b – giá thành thấp nhất; phạm vi tín hiệu tốt và không dễ
bị cản trở.
 Nhược điểm của 802.11b – tốc độ tối đa thấp nhất; các ứng dụng gia đình có
thể xuyên nhiễu.
Chuẩn 802.11a
Được phát triển song song cùng với chuẩn 802.11b, chuẩn 802.11a hỗ trợ tốc
độ tối đa gần gấp 5 lần lên đến 54 Mpbs và sử dụng bằng tầng 5Ghz nhằm tránh bị
nhiễu từ các thiết bị khác. Tuy nhiên, đây cũng là nhược điểm của chuẩn này vì
phạm vi phát sẽ hẹp hơn (40-100m) và khó xuyên qua các vật cản như vách tường.
Chuẩn này thường được sử dụng trong các mạng doanh nghiệp thay vì gia
đình vì giá thành của nó khá cao.
Chuẩn 802.11g
Năm 2003, chuẩn Wifi thế hệ thứ 3 ra đời và mang tên 802.11g. Chuẩn này
được kết hợp từ chuẩn a và b. Được hỗ trợ tốc độ 54Mpbs như chuẩn a và sử dụng
băng tầng 2.4GHz của chuẩn b vì vậy chuẩn này có phạm vi tín hiệu khá tốt (80-
200m) và vẫn dễ bị nhiễu từ các thiết bị điện tử khác. Ngày nay, một số hộ gia đình
vẫn còn sử dụng chuẩn này .

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

 Ưu điểm của 802.11g – tốc độ cao; phạm vi tín hiệu tốt và ít bị che khuất.
 Nhược điểm của 802.11g – giá thành đắt hơn 802.11b; các thiết bị có thể bị
xuyên nhiễu từ nhiều thiết bị khác sử dụng cùng băng tần.
Chuẩn 802.11n (hay 802.11 b/g/n)
Đây là chuẩn được sử dụng phổ biến nhất hiện nay và tương đối mới. Chuẩn
WiFi 802.11n được đưa ra nhằm cải thiện chuẩn 802.11g bằng cách sử dụng công
nghệ MIMO (Multiple-Input Multiple-Output) tận dụng nhiều anten hơn.
Chuẩn kết nối 802.11n hỗ trợ tốc độ tối đa lên đến 600 Mpbs, có thể hoạt động
trên cả băng tần 2,4 GHz và 5 GHz, nếu router hỗ trợ thì hai băng tần này có thể
cùng phát sóng song song. Chuẩn kết nối này đã và đang dần thay thế chuẩn
802.11g với tốc độ cao, phạm vi tín hiệu rất tốt (từ 100-250m) và giá thành đang
ngày càng phù hợp với túi tiền người tiêu dùng.
 Ưu điểm của 802.11n – tốc độ nhanh và phạm vi tín hiệu tốt nhất; khả năng
chịu đựng tốt hơn từ việc xuyên nhiễu từ các nguồn bên ngoài.
 Nhược điểm của 802.11n – chuẩn vẫn chưa được ban bố, giá thành đắt hơn
802.11g; sử dụng nhiều tín hiệu có thể gây nhiễu với các mạng 802.11b/g ở gần.
Chuẩn 802.11ac (hay chuẩn 802.11 a/b/g/n/ac)
Trong khoảng một năm trở lại đây chúng ta được nghe nhắc nhiều đến chuẩn
Wi-Fi 802.11ac, hay còn gọi là Wi-Fi thế hệ thứ năm. Nó là chuẩn mạng không dây
đang ngày càng xuất hiện nhiều hơn trên các router, máy tính và tất nhiên là cả các
thiết bị di động như smartphone. So với Wi-Fi 802.11n đang được dùng phổ biến
hiện nay, chuẩn 802.11ac mang lại tốc độ nhanh hơn.
Là chuẩn Wifi mới nhất được IEEE giới thiệu. Chuẩn ac có hoạt động ở băng
tầng 5 GHz và tốc độ tối đa lên đến 1730 Mpbs khi sử dụng lại công nghệ đa anten
trên chuẩn 802.11n cho người dùng trải nghiệm tốc độ cao nhất.
Hiện tại, chuẩn này được sử dụng trên một số thiết bị cao cấp của các hang
điện thoại như Apple, Samsung, Sony,… Tuy nhiên, do giá thành khá cao nên các
thiết bị phát tín hiệu cho chuẩn này chưa được phổ biến trên thị trường nên mặc dù
các thiết bị này không hoạt động tối ưu khi sử dụng bởi sự hạn chế của các thiết bị
phát.
Wifi Hotspot
Đây là tính năng mà thiết bị của bạn có thể phát sóng Wifi cho các thiết bị điện
thoại, laptop, máy tính bảng khác. Nói cách khác tính năng này biến chiếc
Smartphone thành một chiếc Modem wifi.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

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.
2.2 GIỚI THIỆU VỀ MODULE ESP8622
2.2.1 Tổng quan về module esp8622
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ửa 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 sử lý vì thế bạn có thể trực tiếp lập trình cho
ESP8266 mà không cần thêm bất kì con vi sử 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
Module ESP8266 là module wifi giá rẻ và được đánh giá rất cao cho các ứng
dụng liên quan đến Internet và Wifi cũng như các ứng dụng truyền nhận sử dụng
thay thế cho các module RF khác.
ESP8266 là một chip tích hợp cao, được thiết kế cho nhu cầu của một thế giới
kết nối mới, thế giới Internet of thing (IOT). Nó cung cấp một giải pháp kết nối
mạng Wi-Fi đầy đủ và khép kín, cho phép nó có thể lưu trữ các ứng dụng hoặc để
giảm tải tất cả các chức năng kết nối mạng Wi-Fi từ một bộ xử lý ứng dụng.
ESP8266 có xử lý và khả năng lưu trữ mạnh mẽ cho phép nó được tích hợp
với các bộ cảm biến, vi điều khiển và các thiết bị ứng dụng cụ thể khác thông qua
GPIOs với một chi phí tối thiểu và một PCB tối thiểu.
2.2.2 Tính năng của chip esp8622
 SDIO 2.0, SPI, UART
 32-pin QFN ( Chip esp8266)
 Tích hợp RF switch, balun, 24dBm PA, DCXO, and PMU
 Tích hợp bộ xử lý RISC, trên chip bộ nhớ và giao diện bộ nhớ bên ngoài
 Tích hợp bộ vi xử lý MAC / baseband
 Chất lượng quản lý dịch vụ
 Giao diện I2S cho độ trung thực cao ứng dụng âm thanh
 On-chip thấp học sinh bỏ học điều chỉnh tuyến tính cho tất cả các nguồn
cung cấp nội bộ
 Kiến trúc giả miễn phí thế hệ đồng hồ độc quyền
 Tích hợp WEP, TKIP, AES, và các công cụ WAPI

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.2.3 Sơ đồ chân

Hình 2.3 Sơ đồ chân esp8622


UTXD (TX) – chân truyền tín hiệu của module nối với chân RX của vi điều
khiển URXD(RX) – chân truyền tín hiệu của module nối với chân RX của vi điều
khiển RST – chân reset cứng của module. Reset xảy ra khi tín hiệu xuống mức
thấp GPIO0, GPIO2, CH_PD nối với mức cao.
VCC: Nối với 3.3V
GND: Nối với 0V

Hình 2.4 Hình ảnh thực tế module esp8622


2.2.4 Tập lệnh AT giao tiếp với Module ESP8266.
Khi sử dụng giao tiếp UART để gửi lệnh AT đến Module ESP 8266, chúng ta
phải gửi kềm kí tư <CR><LF> để báo kết thúc lệnh.
Lệnh Kiểm tra kết nối: AT.
Kết quả trả về: OK nếu kết nối không bị lỗi.
Lệnh Reset module: AT + RST.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Trả về: Ready sau khi reset thành công module.


Lệnh kiểm tra phiên bản module: AT+GMR.
Trả về môt dãy số là mã phiên bản module.
Lệnh cài đặt module hoạt động ở chế độ trạm phát wifi, điểm truy cập wifi:
AT+CWMODE=3.
Trả về: Ok sau khi cài đặt thành công.
Lệnh tìm các mạng wifi đang có: AT+CWLAP.
Kết quả trả về là danh sách các mạng wifi mà module có thể bắt được.
Lệnh truy cập vào mạng wifi khác.
AT+CWJAP=”<access_point_name>”,”<password>”
Sau khi truy cập thành công, trả về : Ok.
Lệnh lấy đỉa chỉ IP của module. AT+CIFSR.
Trả về một dãy số là địa chỉ IP của module.
Lệnh đặt tên và mật khẩu cho mạng wifi do module ESP8266 phát ra:
AT+CIFSR=”tên_mang”,”mật_khẩu”,3,0.
Có thể sử dụng module ESP8266 ở hai chế độ: TCP Client hoặc TCP sever.
Cài đặt module hoạt động ở chế độ TCP Client.
Cho phép module hoạt động ở chế độ đa kết nối, bằng cách gửi lệnh:
AT+CIPMUX=1.
Sử dụng lệnh CIPSTART để chọn kênh kết nối (0-4), phương thức
truyền(TCP/UDP), địa chỉ IP của website (or domain) và cổng kết nối.
ví dụ: AT+CIPSTART=4,”TCP”,”google.com”,80
nếu thành công, module trả về: ok
Linked.
Sử dụng lệnh AT + CIPSEND để báo kênh truyền và số byte của địa chỉ
websever mình cần lấy dữ liệu
ví dụ: địa chỉ: “ GET / HTTP/1.0\r\n\r\n” có 18 byte. sẽ phải gửi lệnh:
AT + CIPSEND=4,18.
Sau khi gửi lệnh này, module sẽ trả về dấu “>”.
Đến đây chúng ta sẽ gửi địa chỉ của websever mà chúng ta cần lấy dữ liệu.
GET / HTTP/1.0
Module sẽ trả về SEND OK.
Và sau đó module sẽ trả về một loạt dữ liệu module nhận được từ web sever. (Chuỗi
json: JavaScript Object Notation) , phân tích chuỗi json này để lấy được dữ liệu cần

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

thiết.
2.2.5 Các phương pháp kết nối thiết bị với esp8266
2.2.5.1Truyền dữ liệu với wed server
Với demo này, chúng ta sẽ lập trình Arduino gửi AT commands để module
ESP-01 thành 1 thiết bị Wifi, kết nối vào mạng Wifi xung quanh, gửi lệnh PING lên
1 web server và nhận response từ web server đó.
Về phần cứng, chúng ta sẽ kết nối Arduino Due và ESP-01 như hình sau:

Hình 2.5 kết nối Arduino Due và ESP-01


Công việc còn lại là lập trình board Due trên Arduino IDE để gửi các lệnh AT
command cần thiết.
Flow chương trình trên Arduino sẽ như sau:
 Gửi lệnh “AT” để kiểm tra kết nối module với ESP-01 và đợi nhận “OK” từ
ESP8266
 Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị
Wifi
 Gửi lệnh “AT+CWJAP=\”<tên mạng wifi>\”,\”<password>\” ” để chọn
mạng Wifi và password để kết nối
Các bạn có thể thay thế <tên mạng wifi> và <password> tương ứng với mạng Wifi
của mình nha
Sau khi lệnh này, chúng ta cần đợi vài giây để module ESP-01 tìm và kết nối vào
mạng Wifi đã chọn, trong code chúng ta có thể đợi đến khi nhận được “OK” từ
ESP8266
 Gửi lệnh “AT+PING=\”google.com\” ” để ping server của Google

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

 Nhận PING response từ module ESP-01


2.2.5.2 Giao tiếp smarphone dùng esp8266
Trong demo này, chúng ta sẽ tạo 1 ứng dụng trong đó smartphone sẽ trao đổi
dữ liệu với thiết bị có ESP8266. Chúng ta có thể sử dụng 1 wifi router trung gian
giữa 2 thiết bị Wifi là ESP8266 và smartphone. Cách khác đơn giản và hiệu quả hơn
là sử dụng ESP8266 như là 1 rounter để kết nối với smartphone, do đó sẽ không cần
router trung gian nữa. Chúng ta sẽ chọn cách đơn giản bằng cách sử dụng module
ESP-01 như 1 Access Point để smartphone có thể kết nối vào mạng Wifi tạo bởi
module ESP-01. Đồng thời chúng ta cũng tạo TCP server và UDP server trên
ESP8266 để truyền nhận dữ liệu với smartphone thông qua các port TCP, UDP
Về phần cứng chúng ta sẽ sử dụng board Arduino ATmega2560, module ESP-
01 và iPhone như hình bên dưới:

Hình 2.6 kết nối với smartphone


2.2.5.3 Truyền dữ liệu TCP với smartphone
Các lệnh AT commands được sử dụng theo thứ tự như sau:
 Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
 Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access
Point
Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi

tên là “ESP_HTelectronics”, không security và không password
 Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
 Gửi lệnh “AT+CIPSERVER=1,1234” để tạo 1 TCP server, port 1234 trên
module ESP-01

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

 Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
 Sau khi nạp code vào board ATmega2560, chúng ta sẽ dùng smartphone kết
nối với module ESP-01 trong Wifi setting, sau đó mở app WIFI TCP Test Tool để
truyền/nhận dữ liệu với board Arduino
Trên phone, chúng ta sẽ connect vào TCP port 1234 đã được mở trong
ESP8266 và gửi dòng text “Who are you”, khi ESP-01 nhận được sẽ trả lời “I’m
ESP_HTelectronics” lên smartphone và chúng ta thấy hiện trong phần Received
data của app. Với nguyên lý này, chúng ta có thể tạo thiết bị IoT sử dụng ESP8266
để giao tiếp trực tiếp với Smartphone.
2.2.5.4 Truyền dữ liệu UDP với smartphone
Tương tự như demo trên, nhưng chúng ta sẽ thử truyền dữ liệu thông qua UDP
server trên ESP8266
Các lệnh AT commands được sử dụng theo thứ tự như sau:
 Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
 Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access
Point
 Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi
tên là “ESP_HTelectronics”, không security và không password
 Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
 Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để
tạo 1 UDP server, port 1234 trên module ESP-01
 Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
Tương tự như demo trên, chúng ta sẽ mở app WIFI UDP Test Tool để truyền
nhận dữ liệu với board ATmega2560 thông qua ESP-01
2.2.5.5 Giao tiếp giữa hai module ESP8266
Chúng ta đã đi qua 2 demo sử dụng 2 chế độ hoạt động của ESP8266 là chế độ
thiết bị Wifi và chế độ Access Point. Trong phần demo này chúng ta sẽ tạo 1 ứng
dụng trong đó 2 board arduino sẽ giao tiếp trực tiếp với nhau qua mạng Wifi được
tạo bởi ESP8266. Chúng ta có thể ứng dụng demo này trong các mạng wireless
sensor trong đó các thiết bị IoT là các node và nói chuyện trực tiếp với nhau mà
không cần smartphone hay router hay web server ở trung gian.
Về kết nối phần cứng thì chúng ta sẽ giả lập 2 node trong 1 network dùng 2

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

board ATmega2560 và board Due cùng với 2 module ESP-01 như hình bên dưới:

Hình 2.7 kết nối hai module esp8266


Chúng ta sẽ lập trình board Due truyền AT commands để xác lập module ESP-
01 thành 1 Access Point và 1 UDP server; và lập trình board ATmega truyền AT
commands để xác lập module ESP-01 thành 1 thiết bị Wifi. Hai module ESP8266 sẽ
kết nối trực tiếp với nhau và truyền/nhận dữ liệu thông qua UDP server/client.
Các lệnh AT commands truyền từ board Due như sau:
 Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
 Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access
Point
 Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi
tên là “ESP_HTelectronics”, không security và không password
 Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
 Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để
tạo 1 UDP server, port 1234 trên module ESP-01
 Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
Các lệnh AT commands truyền từ board ATmega2560 như sau:

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

 Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
 Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị Wifi
 Gửi lệnh “AT+CWJAP=\”ESP_HTelectronics\”,\”\”” để kết nối vào mạng
Wifi “ESP_HTelectronics” được tạo bởi thiết bị bên board Due. Sau lệnh này chúng
ta cần đợi vài giây để module ESP-01 kết nối vào mạng Wifi. Chúng ta sẽ liên tục
nhận dữ liệu từ ESP8266 đến khi nhận được “OK”
 Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
 Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”192.168.4.1\”,1234,1234,2″ để kết
nối vào UDP server, port 1234 trên server có địa chỉ IP là 192.168.4.1
Lưu ý địa chỉ IP mặc định của ESP8266 là 192.168.4.1, do đó chúng ta có thể
hardcode trong code của UDP client. Nếu ESP8266 bên UDP Server thay đổi địa
chỉ IP thì chúng ta cần thay đổi bên UDP client để 2 module ESP-01 có thể kết nối
UDP với nhau
 Gửi dữ liệu là text “Who are you” vào UDP port đã kết nối
 Nhận dữ liệu truyền lại từ UDP server bên board Due
Dưới đây là cửa sổ COM của board Due và board ATmega2560 khi hoạt
động:

Hình 2.8 Lệnh AT kết nối hai esp8266


Done! Chúng ta đã demo quá trình nạp firmware cung cấp sẵn cho ESP8266
để hoạt động như 1 wifi độc lập và thực hiện 3 demo cho việc sử dụng AT
commands để điều khiển module ESP-01 trong các ứng dụng giao tiếp qua mạng
Wifi. Thông qua các demo, chúng ta có thể dùng ESP8266 để kết nối web server

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

trên internet thông qua 1 wireless router trong nhà, hoặc giao tiếp trực tiếp với
smartphone, hoặc giao tiếp lẫn nhau trong 1 mạng wireless network. Tất cả chức
năng trên có thể được thực hiện bằng cách gửi các lệnh AT commands đơn giản, dễ
hiểu. Nếu chúng ta muốn thêm tính năng giao tiếp wifi cho 1 thiết bị có sẵn thì sử
dụng firmware có sẵn của ESP8266 là tối ưu và tiết kiệm thời gian nhất; nhưng nếu
chúng ta muốn sử dụng ESP8266 vừa giao tiếp wifi, vừa điều khiển thiết bị thì cần
phải lập trình 1 firmware mới dùng bộ thư viện SDK của Espressif.
2.3 GIỚI THIỆU VỀ BOARD ARDUINO
2.3.1 Cấu tạo phần cứng
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ
sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh
quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết
nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được
gọi là shield. Vài shield truyền thông với board Arduino trực tiếp thông qua các
chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²C-
nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song. Arduino chính
thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168,
ATmega328, ATmega1280, và ATmega2560. Một vài các bộ vi xử lý khác cũng
được sử dụng bởi các mạch Aquino tương thích. Hầu hết các mạch gồm một bộ điều
chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng
ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8
MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị. Một vi
điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép
đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác
thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử dụng Arduino
được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp
chương trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board
được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy
thuộc vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi
giữa RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng
USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài
biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board
adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

phương thức khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống
thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng
cho những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân
I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6
chân input analog, có thể được sử dụng như là 6 chân I/O số. Những chân này được
thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm).
Nhiều shield ứng dụng plug-in cũng được thương mại hóa. Các board Arduino
Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các
chân header đực ở mặt trên của board dùng để cắm vào các breadboard.
Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài trong
số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại.
Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra,
thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp'
và các robot nhỏ. Những board khác thường tương đương về điện nhưng có thay đổi
về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không. Vài
biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác
nhau.
2.3.2 Môi trường lập trình board mạch Arduino
Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại
nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần
mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu
và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là
số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ
lớn.
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất
hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi
trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có
kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do
ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng
hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
2.3.3 Các loại Board mạch Arduino
Arduino Uno.Nó có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

vào hoặc xuất tín hiệu ra là tùy bạn. 6 chân tương tự đầu vào 5V, độ phân giải 1024
mức. Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và
1A, nếu bạn điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng.Kích thước
broad5,5x7cm.
Arduino Micro Board này có thiết kế nhỏ, dành cho các không gian lắp đặt
nhỏ, nhẹ. kích thước khoảng 5x2cm. Board này giống với Arduino Uno. Có 20
chân số, trong đó có 7 chân có thể phát xung PWM. 12 chân tương tự.
Arduino Pro/Pro Micro Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại,
3.3V và 5V. Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực
tiếp nhằm tiết kiệm không gian.
Arduino Nano Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân
PWM) và 8 chân tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ
đâu.
Sau đây là các Board có thiết kế cao cấp hơn:
Arduino Mega Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số
lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng
truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước
5x10cm.
Arduino Leonardo Đây là board có thiết kế giống Arduino Micro, sự khác
biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập
trình. Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng
COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng. Không
giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối
cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup().
Arduino Due Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board,
nó hoạt động ở điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp
bạn cần phải nâng áp để có thể giao tiếp bình thường. Gồm 54 chân số ( 12 chân
tương tự). 4 cổng nối tiếp tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz.
nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác. Xử lý chương trình
nhanh hơn 10 lần. Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn.
Arduino Ethernet Như tên của nó, nó là 1 Arduino giống chức năng với
UNO tuy nhiên nó được tích hợp Module Ethernet trong nó. có tích hợp thẻ SD.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.3.4 Khả năng ghép nối của Arduino.


2.3.4.1 Ghép nối với các cảm biến.
Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được
với Arduino. Các cảm biến phổ biến gồm:
Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng,
cảm biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí,
cảm biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng
điện, cảm biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang
điện......
2.3.4.2 Ghép nối với các module chức năng.
Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự
thiết kế các module chức năng ghép nối với Arduino. Tuy nhiên việc này đòi hỏi tốn
thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây
lãng phí.
Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn
để kết nối với các Board mạch Arduino. Điều này giúp cho người thiết kế phần
cứng "nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người
sử dụng không phải bận tâm về các sai sót trong thiết kế phần cứng. Hiện nay có
các module phổ biến sau:
- Module LED, LCD.
- Module đo thông số điện.
- Module nguồn.
- Module RF.
- Module Bluetooth.
- Module wifi.
- Module Xbee.
- Module GSM/ GPRS/ 3G/ GPS.
- Module Finger Printer.
- Module Driver.
- Module Keypad.
- Module Relay.
- Module Thời gian....

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.3.5 Sơ đồ chân board arduino uno

Hình 2.9 Sơ chân board Arduino Uno R3

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 2.10 Hình dạng thực tế board Arduino Uno R3


2.3.6. Các thông số của board arduino uno
2.3.6.1. Thông số kỹ thuật
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
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
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.3.6.2 I/O Pins


Sơ đồ chân của vi điều khiển ATmega328P

Hình 2.11 Sơ đồ chân của Atmega328


 Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập,
xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead().
Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là
20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển.
 Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10
bit (0 – 1023 ). Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương
ứng với 1024 giá trị, sử dụng hàm analogRead().
 PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung
PWM (8 bit) thông qua hàm analogWrite().
 UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và
chân 1 (TX).

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.3.6.3 Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này
đâu.
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai
báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ
nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ
mà bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình
vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
2.3.6.4 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à 40mA. Ở 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:
 2 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, bạn 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, bạn 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.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thô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 bạn cấp điện áp 2.5V vào chân này thì bạn 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.3.6.5 Nguồn
Có hai cách cấp nguồn chính cho bo mạch Uno: cổng USB và jack DC.
Giới hạn điện áp cấp cho Uno là 6 – 20V. Tuy nhiên, dải điện áp khuyên dùng
là 7 – 12 V (tốt nhất là 9V). Lý do là nếu nguồn cấp dưới 7V thì điện áp ở ‘chân 5V’
có thể thấp hơn 5V và mạch có thể hoạt động không ổn định; nếu nguồn cấp lớn
hơn 12V có thể gấy nóng bo mạch hoặc phá hỏng.
Các chân nguồn trên Uno:
- Vin : chúng ta có thể cấp nguồn cho Uno thông qua chân này. Cách cấp
nguồn này ít được sử dụng.
- 5V : Chân này có thể cho nguồn 5V từ bo mạch Uno. Việc cấp nguồn vào
chân này hay chân 3.3 V đều có thể phá hỏng bo mạch.
- 3.3V : Chân này cho nguồn 3.3 V và dòng điện maximum là 50mA.
- GND: chân đất.
2.3.6.6 Trương trình arduino IDE
2.3.6.6.1 Cài đặt chương trình Arduino IDE
Các bạn truy cập vào trang web http://arduino.cc/en/Main/Software và tải về
chương trình Arduino IDE phù hợp với hệ điều hành của máy mình bao gồm
Windown, Mac OS hay Linux. Đối với Windown có bản cài đặt (.exe) và bản Zip,
đối với Zip thì chỉ cần giải nén và chạy chương trình không cần cài đặt.
Sau khi cài đặt xong thì giao diện chương trình như sau:

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 2.12 Arduino


2.3.6.6.2. Cài đặt Driver
Sử dụng cáp USB kết nối Arduino với máy tính, lúc này bạn sẽ thấy đèn led
power của bo sáng. Máy tính sẽ nhận dạng thiết bị và bạn sẽ nhận được thông báo:
“Device driver software was not successfully installed”

Hình 2.13 Driver Software Installation.


Bây giờ bạn click vào Start Menu chọn Control Panel kế đến chúng ta chọn
System and Security, click System và sau đó chọn Device Manager.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 2.14 Device Manager.


Chúng ta sẽ thấy cảnh báo màu vàng thiếu driver trên Arduino. Click chuột
phải trên Arduino Uno icon sau đó chọn “Update Driver Software”

Hình 2.15 Right click và chọn ”Update Driver Software”


Chọn “Browse my computer for driver software”.

Hình 2.16 Click chọn “Browse my computer for driver software”

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ.

Hình 2.17 Driver


Click “Next” Windown tự động cài đặt driver, qua trình cài đặt driver hoàn tất.
2.3.6.6.3. Arduino IDE
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino

Hình 2.18 Arduino IDE.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Arduino Toolbar: có một số button và chức năng của chúng như sau :

Hình 2.19 Arduino Toolbar


Verify : kiểm tra code có lỗi hay không

Upload: nạp code đang soạn thảo vào Arduino

New, Open, Save : Tạo mới, mở và Save sketch

Serial Monitor : Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy tính
Arduino IDE Menu:

Hình 2.20 IDE Menu


File menu:

Hình 2.21 File menu.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Trong file menu chúng ta quan tâm tới mục Examples đây là nơi chứa code
mẫu ví dụ như: cách sử dụng các chân digital, analog, sensor … Hình 11: Click
Examples.

Hình 2.22 Click Examples.


Edit menu:

Hình 2.23 Edit menu

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Sketch menu

Hình 2.24 Sketch menu


Trong Sketch menu :
Verify/ Compile : chức năng kiểm tra lỗi code.
Show Sketch Folder : hiển thị nơi code được lưu.

Add File : thêm vào một Tap code mới.


Import Library : thêm thư viện cho IDE

Tool memu:

Hình 2.25 Tool menu.


Trong Tool menu ta quan tâm các mục Board và Serial Port
Mục Board : các bạn cần phải lựa chọn bo mạch cho phù hợp với loại bo mà
bạn sử dụng nếu là Arduino Uno thì phải chọn như hình:

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 2.26 Chọn Board


Nếu các bạn sử dụng loại bo khác thì phải chọn đúng loại bo mà mình đang có
nếu sai thì code Upload vào chip sẽ bị lỗi.
Serial Port: đây là nơi lựa chọn cổng Com của Arduino. Khi chúng ta cài đặt
driver thì máy tính sẽ hiện thông báo tên cổng Com của Arduino là bao nhiêu, ta chỉ
việc vào Serial Port chọn đúng cổng Com để nạp code, nếu chọn sai thì không thể
nạp code cho Arduino được.
2.3.6.6.1 Các nhóm hàm cơ bản
Một chương trình hiển thị trên cửa sổ giao diện được gọi là sketch.Sketch được
tạo từ hai hàm cơ bản là setup () và loop () :
- Setup() : Hàm này được gọi khi một sketch khởi động, được sử dụng để khởi tạo biến, đặt các
tín hiệu ), khởi động một thư viện … Hàm setup() chỉ chạy một lần, sau khi cấp nguồn hoặc res

- Loop(): Sau khi khởi tạo hàm setup(), hàm loop() sẽ được khởi tạo và thiết lập các giá trị ban
hàm loop tạo các vòng lặp liên tục, có cho phép sự thay đổi và đáp ứng. Chức năng tương tự nh
hàm loop() sẽ điều khiển toàn bộ mạch.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Ví dụ1 : Cấu trúc cơ bản một chương trình:

// Ví dụ nhấp nháy led 1s Hình 2.27 sơ đồ mạch ví dụ 1


// các hàm sử dụng : setup(); loop(); pinMode(); digitalWrite(); delay();
// hàm setup() : quy định chức năng các chân sử dụng
void setup() {
// đặt chân số 13 là chân xuất tín
hiệu. pinMode(13, OUTPUT);
}
// hàm loop : các câu lệnh trong hàm sẽ được chạy liên tục theo chu
kỳ. void loop() {
digitalWrite(13, HIGH); // bật LED bằng cách đưa tín hiệu điện áp
// chân 13 lên mức cao (HIGH)
delay(1000); // tạo trễ 1000 ms = 1s
digitalWrite(13, LOW); // tắt LED bằng cách đưa tín hiệu điện áp chân
// 13 xuống mức thấp (LOW).
delay(1000); // trễ 1s
}
// kết thúc chương trình.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Ví dụ 2: Bật tắt led bằng nút bấm


// bật tắt led bằng nút bấm
// thêm phần khai báo biến
// gán tên cho các chân sử dụng :

const int buttonPin = 2; const int số


// chân ledPin = 13;
2 : buttonPin
// khai báo các biến int buttonState
// chân số=130;: ledPin
void setup() {

// biến đọc trạng thái của nút nhấn

// khởi tạo chân ledPin là OUTPUT pinMode(ledPin, OUTPUT);


// khởi tạo chân button là INPUT pinMode(buttonPin, INPUT);
}
void loop()
// đọc trạng thái nút nhấn và gán giá trị cho biến buttonState buttonState = digitalRead(buttonPi
// dùng hàm if kiểm tra trạng thái nút nhấn
// nếu nhấn nút : buttonState = HIGH if (buttonState == HIGH) {
// bật LED digitalWrite(ledPin, HIGH);
}
else {
// tắt LED digitalWrite(ledPin, LOW);
}
}

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 2.28 Sơ đồ ví dụ 2
2.3.6.6.2 Các nhóm cấu trúc lệnh cơ bản
Các chương trình Arduino có thể được chia thành : nhóm cấu trúc, nhóm biến
và hằng , nhóm hàm.
Trên trang Arduino.cc có đầy đủ và chi tiết các hàm, lệnh, phép toán cùng cách
thức sử dụng cũng như các ví dụ đi kèm. Chúng ta sẽ tìm hiểu các hàm cơ bản trước :
setup() ; loop () ; pinMode() ; digitalRead(); digitalWrite(); analogWrite() ; …
Một vài ví dụ:
Mỗi hàm, lệnh hay thuật ngữ trong phần này đều được giải thích rất ngắn gọn,
rõ ràng, dễ dàng áp dụng.
- Hàm pinMode(pin, mode):thiết lập một chân cụ thể là chân nhận hay xuất
tín hiệu.
Trong đó: pin là chân sẽ được thiết lập; mode là một trong các chế độ INPUT.
OUTPUT hoặc INPUT_PULLUP (Arduino 1.0.1)
Giá trị trả về : Không có

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Ví dụ :
int ledPin = 13 ; // Led được nối với chân số 13
void setup () {
pinMode ( ledPin, OUTPUT);// thiết lập cho chân ledPin là chân
//xuất tín hiệu
}
void loop () {

}

Hàm digitalRead(pin): đọc giá trị từ một chân digital.


Trong đó: pin là chân digital mà chúng ta muốn đọc
Giá trị trả về : HIGH hoặc LOW
Ví dụ :
int ledPin = 13; int inPin// =nối
7;Led
int val
với=chân
0; số 13
void setup(){ // nối nút nhấn với chân số 7
// biến để ‘lưu tạm ’ giá trị đọc được

pinMode(ledPin, OUTPUT); // thiết lập chân số 13 là chân xuất


` // tín hiệu. pinMode(inPin, INPUT);
// hiệu
// thiết lập chân số 7 là chân nhận tín

}
void loop(){

val = digitalRead(inPin);// đọc giá trị từ chân inPin và gán cho


// biến val digitalWrite(ledPin, val);//

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.3.6.7 Giao tiếp Arduino với một số linh kiện điện tử.
2.3.6.7.1 Led sáng dần từ led 1 đến led 10 và ngược lại.

Hình 2.29. Led sáng dần từ led 1 đến led 10 và ngược lại.
Code chương trình.
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int direction = 1;
int currentLED = 0;
void setup() {
for (int x=0; x<10; x++)
{ pinMode(ledPin[x], OUTPUT);}
} void loop() {
for (int x=0; x<10; x++)
{ digitalWrite(ledPin[x],
LOW);

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

}
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
delay(500);
}
Giải thích chương trình.
Trong Project này chúng ta sử dụng 10 chân digital để điều khiển 10 led, để
cho chương trình ngắn gọn thì ở đây tôi sử dụng mảng 1 chiều gồm 10 phần tử trong
đó chứa 10 vị trí chân led mà ta sử dụng trong project
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
Tiếp tục khai báo 2 biến integer là :
int direction = 1;
int currentLED = 0;
Trong hàm setup() tôi sử dụng một vòng lặp để định nghĩa mode cho các chân
led. Tôi nghĩ là không khó để hiểu được các câu lệnh này.
Tiếp theo là hàm loop(), đầu tiên tôi tắt tất cả các led bằng các câu lệnh:
for (int x=0; x<10; x++)
{ digitalWrite(ledPin[x],
LOW);}
Sau đó cho sáng led đầu tiên bằng câu lệnh :
digitalWrite(ledPin[currentLED], HIGH);
Vì ta đã khai báo currentLED = 0 nên mãng sẽ truy xuất phần tử đầu tiên
trong mãng có giá trị là 4 vì thế led ở vị trí chân digital số 4 sẽ sáng.
currentLED += direction;
Tăng currentLED lên 1 đơn vị ( direction =1 ). Vòng lặp tiếp theo sẽ là led ở
chân digital 5 sáng và cứ như thế cho đến led ở chân số 13 sáng, thì lúc này
currentLED == 9, câu lệnh “ if (currentLED == 9) {direction = -1;}” sẽ thực hiện
và led sẽ sáng ngược lại từ led 10 xuống led thứ 1.
Hai câu lệnh :
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
dùng để quy định chiều sáng của led là tăng dần hay giảm dần. Nếu là Led thứ
10 sang thì tiếp theo sẽ giảm xuống led thứ 9 và ngược lại nếu led thứ 0 sang thì chu

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

kỳ tiếp theo led 1 sẽ sáng.


2.3.6.7.2 Điều khiển tốc độ động cơ bằng PWM.

Hình 2.30 Điều khiển tốc độ động cơ.


Code chương trình.
int potPin = 0;
int transistorPin = 9;
int potValue = 0;
void setup() {
pinMode(transistorPin, OUTPUT);}
void loop() {
potValue = analogRead(potPin) / 4;
analogWrite(transistorPin, potValue);
}

Giải thích chương trình.


Như trong sơ đồ mạch ta thấy biến trở được nối với chân A0, transistor được
nối với chân số 9 thông qua điện trở 1k. Như vậy ta khai báo 2 biến chứa vị trí chân

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

cho biến trở và transistor.


int potPin = 0;
int transistorPin = 9;
Biến integer potValue chứa giá trị đọc được từ chân A0.
int potValue = 0
Một câu hỏi đặt ra ở đây là nếu chúng ta không kết nối transistor điều khiển
động cơ vào chân số 9 mà thay vào đó là chân số 1 hoặc 2 để điều khiển tốc độ
động cơ thì có được không ?.
Câu trả lời là Không. Vậy tại sao Không ?
Tôi sẽ trả lời câu hỏi này sau. Nhưng trước hết tôi nói về PWM. PWM (pulse
width modulation) là phương pháp điều chế dựa trên sự thay đổi độ rộng của chuổi
xung dẫn đến sự thay đổi điện áp ra.
Để tạo ra được PWM trên Arduino thì chúng ta sử dụng lệnh analogWrite(Pin,
Value);
Trong đó:
Pin: là vị trí chân, đối với Arduino Uno thì chỉ có các chân 3, 5, 6, 9, 10 & 11
mới có chức năng tạo PWM. Vậy chúng ta có thể trả lời được câu hỏi bên trên, các
chân digital còn lại của có thể đọc hoặc xuất 2 giá trị là 0 và 1 mà thôi.
Value: Giá trị nằm trong khoảng 0 đến 255.
Để hiểu rõ hơn về PWM tôi sẽ minh hoạ qua ví dụ sau.
Nếu tôi sử dụng lệnh analogWrite(transistorPin, 127); thì dạng xung ở chân 9
( transistorPin = 9) sẽ như hình dưới và giá trị trung bình ngõ ra sẽ là 2,5V (50% ).

Hình 2.31 PWM 50%.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Nếu Value = 64 (hay 25%) thì dạng xung như sau:

Hình 2.32 PWM 25%.


Value = 229 (hay 90%) thì dạng xung sẽ là :

Hình 2.33 PWM 90%.


Từ ví dụ trên ta thấy sự thay đổi độ rộng của chuổi xung dẫn đến sự thay đổi
điện áp ra. Ta cũng thấy rằng điện áp trên motor cũng thay đổi tuyến tính theo sự
thay đổi điện áp ngõ ra trên chân 9. Tức là nếu điện áp trung bình trên chân 9 là 2,5
volt (50% ) thì điện áp trên hai đầu motor là 6 volt ( nguồn motor là 12 volt ).
Quay lại chương trình ta cần quan tâm tới một câu lệnh đó là:
potValue = analogRead(potPin) / 4;
Chúng ta cần phải chia giá trị đọc được cho 4 vì giá trị analog sẽ nằm trong
khoảng 0 (0 volt ) đến 1023 (5 volt ), nhưng giá trị cần xuất ra ngoài chân 9 lại nằm
trong khoảng 0 đến 255 đó chính là lý do tại sao có chia 4 ở đây.
Và câu lệnh cuối cùng là tạo PWM trên chân 9 để điều khiển tốc đố động cơ.
analogWrite(transistorPin, potValue);
Nếu như đã điều kiển được tốc độ động cơ bằng PWM rồi thì việc điều khiển
độ sáng của Led hay đèn đối với các bạn bay giờ là chuyện quá đơn giản. Các bạn
chỉ cần nối chân số 9 với một Led có điện trở hạn dòng là 220 ohm và code chương
trình hoàn toàn giống như điều khiển động cơ. Lưu ý là khi mô phỏng các bạn sẽ
không thấy được led thay đổi độ sáng mà chỉ thấy nhấp nháy nguyên nhân là do
phần mềm proteus không đáp ứng kịp sự thay đổi của các xung PWM. Nhưng khi
làm thực tế các bạn sẽ thấy được sự thay đổi độ sáng của Led rõ rệt.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

2.4 TỔNG QUAN VỀ PHẦN MỀM BLYNK


2.4.1 Giới thiệu phần mềm blynk
Blynk thực ra là app trên điện thoại, cho phép người dùng có thể tạo ra giao
diện và điều khiển thiết bị theo ý thích của cá nhân. Mình lựa chọn Blynk vì một số
lý do sau:
Dễ sử dụng: Quá đơn giản, chỉ việc vào store, cài đặt, sau đó đăng ký tài khoản
và mất không quá 5 phút để làm quen.
Đẹp và đầy đủ: Giao diện của Blynk quá tuyệt vời, sử dụng bằng cách kéo thả,
bạn cần nút bấm, kéo thả nút bấm, bạn cần đồ thị, kéo thả đồ thị, bạn cần LCD, kéo
thả LCD, tóm lại là bạn cần gì thì kéo thả cái đó.
Không phải lập trình android hay ios: Nếu như không có kiên thức về làm app
trên điện thoại thì việc điều khiển thiết bị từ chính smartphone của mình quả là điều
vô cùng khó khăn và phức tạp. Nhờ blynk thì chúng ta có thể bỏ qua bước lập trình
tạo app. Có thể thử nhanh chóng và ứng dụng được dự án của mình vào thực tế.
Thử nghiệm nhanh chóng, có thể điều khiển giám sát ở bất kỳ nơi nào có
internet.
Tất nhiên ngoài những điểm lợi từ blynk thì còn có những cái hạn chế như
phải mua energy để tạo được nhiều giao diện và chia sẻ giao diện cho người khác.
Phần mềm Blynk là một phần mềm được thiết kế cho Android, iOS cho chúng
ta khả năng tự tạo ứng dụng kết nối với các board Arduino, Raspberry và các bo
mạch khác để điểu khiển chúng.
Blynk giúp bạn điều khiển thiết bị từ xa qua internet, thu thập dữ liệu của cảm
biến, ảo hóa việc giao tiếp và thực hiện nhiều việc khác
Nguyên lý làm việc là khi nhấn nút điều khiển, lệnh sẽ được truyền về server
của Blynk, sau đó Blynk gửi lệnh về module điều khiển, module sau khi chạy lệnh
sẽ gửi lại kết quả theo quy trình ngược lại nghĩa là từ thiết bị gửi về server rồi từ
server gửi về điện thoại của bạn.
Sử dụng Blynk bạn không cần phải biết viết app cho Android, chỉ với thao tác
rê và thả các đối tượng trong giao diện và vài thiết lập là xong.
Trước khi biết Blynk, để điều khiển được thiết bị qua Internet, tôi phải làm rất
nhiều việc như mở port modem trong nhà, đăng ký dịch vụ tên miền như DynDNS,
No-IP để tự cập nhật địa chỉ IP modem, viết code cho phần cứng, viết ứng dụng cho
phần cứng biến phần cứng đó thành một webserver để điều khiển từ trình duyệt
web, viết app android hay iOS, tất cả những điều trên rất dễ làm nản lòng nếu một

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

trong các giai đoạn đó chưa được thực hiện rốt ráo.
Bây giờ với Blynk, bạn cần các module phần cứng được hỗ trợ và app này vậy
là xong.Có thể điều khiển thiết bị dựa trên Internet qua mạng LAN, mạng Internet
bất kỳ chổ nào và thậm chí 3G, rồi cả 4G nữa. Tất cả đều không còn là vấn đề, vấn
đề còn lại là bạn làm ra thiết bị để sử dụng vào việc gì.
Blynk hiện hỗ trợ tốt cho 2 hệ phần cứng là Arduino và Raspberry. Các bạn
lần đầu tiên nghiên cứu về Internet Of Things (IOT) hay điều khiển từ Internet nên
bắt đầu với phần cứng Arduino vì giá cả phù hợp

Hình 2.34 Giao diện điều khiển blynk


2.4.2 Thao tác đối với phần mềm blynk
Tải app cho điện thoại của bạn từ web chính của phần mềm
là http://www.blynk.cc/
Hoặc vào chợ ứng dụng trên điện thoại cài app Blynk vào.
Sau khi cài xong, chúng ta tải về thư viện cho Arduino từ địa chỉ

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

http://www.blynk.cc/getting-started/
Vào đây chọn “DOWNLOAD BLYNK LIBRARY” .
Sau khi tải xong, bạn mở phần mềm viết code cho Arduino để bổ sung gói thư
viện vừa tải về. Vào menu Sketch > Import Library > Add Library, chọn thư viện đã
nén dạng zip vừa tải về để bổ sung thư viện và các ví dụ.
Mở app Blynk trên điện thoại, đăng ký tài khoản và bắt đầu sử dụng. Mỗi tài
khoản miễn phí được 2000 điểm để tạo ứng dụng. Khi sử dụng hết, có thể mua
thêm.
Mỗi dự án tạo ra, app sẽ cho một mã Auth Token, cần gửi email về email của
mình khi đăng ký tài khoản bằng chức năng gửi mail trong app để lấy mã Auth
Token. Dùng mã này để nạp vào chương trình trên Arduino.
Bây giờ tới phần viết code. Ví dụ viết 1 đoạn code điều khiển tắt mở relay.
Relay thường được kích hoạt ở mức thấp (LOW), nếu sử dụng Button trong Blynk
điều khiển trực tiếp nó điều khiển theo hướng từ thấp lên cao và không thể thay đổi
cách điều khiển này. Giải pháp là bạn sử dụng chân ảo (Virtual Pin) để gửi dữ liệu
về module và xử lý nó.
Ví dụ
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
char auth[] = "auth_token_code";
void setup()
{
Serial.begin(9600);
Blynk.begin(auth);
pinMode(22, OUTPUT);
digitalWrite(22,HIGH);
}

BLYNK_WRITE(22)
{ if (param.asInt())
{ digitalWrite(22,LO
W);
} else {

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

digitalWrite(22,HIGH);
}
}

void loop()
{
Blynk.run();
}

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

CHƯƠNG 3: THIẾT KẾ VÀ LẮP RÁP MÔ HÌNH NGÔI NHÀ


THÔNG MINH

3.1 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG

Hình 3.1 Sơ đồ tổng quát hệ thống

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

3.2 KHỐI GIAO TIẾP MẠNG WIFI

Hình 3.2 hình ảnh thực tế esp8266 v12

Hình 3.3 Sơ đồ nối chân esp8266

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Có chức năng gửi/nhận thông tin, nhận/thực hiện gửi các thông tin lên sever
Module ESP8622 : Module wifi ESP8266 v12 cung cấp khả năng kết nối
mạng wifi đầy đủ và khép kín, có thể sử dụng nó để tạo một web server đơn giản
hoặc sử dụng như một access point. Giao tiếp với esp8266
Phần cứng: Sử dụng modul esp8266 v12 làm khối xử lý chính trong đề tài,
với các chức năng đã được giới thiệu ở chương trước, modul esp8266 v12 hoàn toàn
có thể đáp ứng được các yêu cầu của đề tài đặt ra.
Sử dụng chân D2,D3 làm ngõ ra role đóng cắt thiết bị.
Sử dụng chân D4 làm ngõ nhận tín hiệu từ cảm biến độ ẩm nhiệt đọ DHT22
Sử dụng chân D6 để truyền tín hiệu với arduino
Sử dụng chân D5 nhận tín hiệu với arduino
3.3 KHỐI XỬ LÝ TRUNG TÂM
Có chức năng thực hiện xử lý khi có tín hiệu qua các cảm biến, khối xử lý
chính thực hiện gửi khi có tín hiệu yêu cầu module esp8622, thực hiện điều khiển
các thiết bị trong nhà.

Hình 3.4 sơ đồ nối chân arduino


Chức năng: Khối có chức năng nhận các tín hiệu từ các cảm biến, xử lý tín
hiệu nhận được, gửi dữ liệu đến LCD để hiển thị, giao tiếp với module esp8622 để
thực hiện gửi/nhận thông tin và điều khiển các thiết bị thông qua việc điều khiển
đóng mở các relay của khối output.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Phần cứng: Sử dụng arduino nano làm khối xử lý chính trong đề tài, với các
chức năng đã được giới thiệu ở chương trước, arduino nano hoàn toàn có thể đáp
ứng được các yêu cầu của đề tài đặt ra.
Sử dụng các chân D6,D7,D12 cấu hình là các chân output để đưa tín hiệu điều
khiển đóng/ngắt các relay.
Sử dụng chân D9 cấu hình là chân input để nhận tín hiệu từ cảm biến hồng
ngoại
Sử dụng 2 chân D10 và D11 làm 2 chân giao tiếp UART với module sim900.
Sử dụng 2 chân A4 và A5 làm 2 chân giao tiếp I2C để giao tiếp với khối hiển
thị LCD.
Sử dụng chân A1 xuất tín hiệu đến động cơ serve
Phần mềm:
Sử dụng các lệnh cơ bản để cấu hình input hay output cho các chân:
pinMode(pin,mode) :
pin : thứ tự chân arduino
mode: INPUT (cấu hình chân là nhận tín hiệu vào), OUTPUT (cấu hình chân
là gửi tín hiệu ra)Có chức năng thực hiện xử lý khi có tín hiệu qua các cảm biến,
khối xử lý chính thực hiện gửi khi có tín hiệu yêu cầu module esp8622, thực hiện
điều khiển các thiết bị trong nhà.
3.4 KHỐI CẢM BIẾN
3.4.1 Giới thiệu về cảm biến hồng ngoại
Cảm biến là thiết bị dùng để cảm nhận và biến đổi các đại lượng vật lý và các
đại lượng không có tính chất điện cần đo thành các đại lượng có thể đo và xử lý
được.

Hình 3.5 Cảm biến hồng ngoại


Nguyên lý của cảm biến này như sau : mắt phát hồng ngoại sẽ phát ra sóng
ánh sáng có bước sóng hồng ngoại , ở mắt thu bình thường thì có nội trở rất lớn

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

(khoảng vài trăm kilo ôm ) , khi mắt thu bị tia hồng ngoại chiếu vào thì nội trở của
nó giảm xuống ( khoảng vài chục ôm). Lợi dụng nguyên lý này người ta chế tạo ra
các cảm biến IR. Hình sau biểu diễn nguyên lý hoạt động của cảm biến phát hiện
vật cản IR:
Các đại lượng đo (M) thường không có tính chất điện như (nhiệt độ, áp suất,
trọng lượng…) tác động lên cảm biến cho ta đại lượng đặc trưng (S) mang tính chất
điện như (điện tích, điện áp, dòng điện hay trở kháng) chứa đựng thông tin cho phép
xác định giá trị của đại lượng đó.
Đặc trưng (s) là hàm của đại lượng cần đo (M)
S = F(M)
Người ta gọi (S) là đại lượng đầu ra hoặc phản ứng của cảm biến. (M) là đại
lượng đầu vào hay kích thích (có nguồn gốc đại lượng cần đo). Thông qua đo đạc
(S) cho phép nhận biết giá trị (M).
 Một số loại cảm biến
Theo nguyên lý của cảm biến
 Cảm biến điện trợ
 Cảm biến điện từ
 Cảm biến điện tĩnh
 Cảm biến hóa điện
 Cảm biến nhiệt điện...
Theo tính chất của nguồn điện
 Cảm biến phát điện
 Cảm biến thông số...
Cảm biến phép đo
 Cảm biến biến đổi trục tiếp
 Cảm biến bù..
Ưu điểm:
Không tiếp xúc với vật thể cần phát hiện.
Có thể phát hiện vật từ khoảng cách xa.
Không bị hao mòn, có tuổi thọ cao.
Có thời gian đáp ứng nhanh, có thể phát hiện vật thể, vật chất.
Module thu phát hồng ngoại:
- Sử dụng 1 led phát hồng ngoại.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

- 1 led thu hồng ngoại.


- IC chính LM358 SMD.
- Led nguồn báo sáng.
- Biến trở điều chỉnh độ chỉnh VR vuông 10K.
- Chân AO - DO- GND - VCC.
- Điện áp hoạt động : 3.3 đến 5VDC.
- VCC= 3-5VDC.
- GND = 0V.
- D0 = tín hiệu ra 1, 0.
Dùng 1 con oppam như lm358p chẳng hạn để tạo các mức logic 0 và 1 bằng
cách so sánh 2 giá trị điện áp của cầu chia điện trở (ở đây ta dùng biến trở ) và điện
áp trên anot của mắt nhận hồng ngoại Nếu khi có tia hồng ngoại chiếu vào mắt nhận
thì nội trở mắt nhận giảm nên điện áp trên cực anot của mắt nhận sẽ tăng lên , khi
điện áp này lớn hơn điện áp của cầu phân áp bằng điện trở thì mức điện áp ra sẽ là
VCC ( mức logic 1) ngược lại là mức logic 0

Hình 3.6: Sơ đồ nguyên lý khối thu phát hồng ngoại


3.4.2 Cảm biến nhiệt độ độ ẩm DHT22

Hình 3.7 Cảm biến DHT22

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Các thông số phần cứng:


Điện áp hoạt động: 3.3-5v.
Chuẩn giao tiếp: 1wire.
Dải đo độ ẩm: 0-99.9%.
Dải đo nhiệt độ: -40-80 độ C.
Sai số độ ẩm: +-2%.
Sai số nhiệt độ: +-0.5 độ C.
Chức năng:
đo nhiệt độ, độ ẩm rồi gửi dữ liệu về khối xử lý trung tâm.
Phần mềm:
Các lệnh sử dụng khai báo và đọc dữ liệu từ DHT22:
#include <DHT.h> // khai báo thư viện DHT
h=dht.readHumidity(); // đọc dữ liệu độ ẩm từ DHT22
t=dht.readTemperature(); // đọc dữ liệu nhiệt độ từ DHT22
3.5 KHỐI CƠ CẤU CHẤP HÀNH
3.5.1 Rơ le

Hình 3.8 Module relay thực tế

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

- Module Relay 4 kênh 5V có điện áp hoạt động ở mức 5V DC, chịu được tải
đầu ra 30V/10A đối với điện áp DC và 250V/10A với điện áp AC
Module relay 4 kênh được thiết kế nhỏ gọn và đẹp mắt , khả năng chống nhiễu
tốt và khả năng cách điện tốt nhờ trong mạch sử dụng IC cách ly quang và transistor
giúp cách ly hoàn toàn mạch vi điều khiển với rơ le bảo đảm vi điều khiển hoạt
động ổn định.
Có sẵn header rất tiện dụng khi kết nối với các thiết bị đầu ra và vi điều khiển.
Có các lỗ bắt vít rất tiện lợi dễ lắp đặt trong hệ thống mạch.
– Trạng thái hoạt động:
+ 0 ( 0V): Bật Relay
+ 1 ( 5V): Ngắt Relay
Thông sô module relay 2 kênh 5V:
Kích thước: 76mm ( chiều dài )* 56mm ( chiều rông )* 18,5mm (chiều cao)
Trọng lượng: 61g
Màu sắc: xanh
Bốn lổ để bắt vít cố định có đường kính 3,1mm, dể dàng lắp đặt trong hệ
thống mạch
Có đèn báo đóng ngắt trên relay
Sử dụng điện áp nuôi DC 5v
Đầu ra điện thế đóng ngắt tối đa DC 30V/10A, AC 250V/10A
Thông số điện:
Điện áp cấp 5V DC
Dòng điện hoạt động lớn hơn 100mA
Tải max 250V/10A ( AC ) hoặc ( DC ) 30V/10A
Nối dây Vcc nguồn cung cấp 5V
GND: 0V
3.5.2 Động cơ servo
Động cơ servo là cơ cấu cơ khí làm việc chính trong hệ thống truyền động và
từ động dùng để đóng mở cổng ra vào.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 3.9. Động cơ servo ngoài thực tế

Hình 3.10. Cấu tạo động cơ Servo


Thông số kỹ thuật của động cơ Servo SG90-9G:
Khối lượng: 9g
Kích thước: 22.2x11.8.32mm
Momen xoắn: 1.8kg/cm
Tốc độ họạy động: 60 độ trong 0.1 giây
Điện áp hoạt động: 4.8V (~5V)
Nhiệt độ hoạt động: 0 ºC – 55 ºC
Điều khiển: Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

với chân phát xung của Arduino. Ở chân xung cấp một xung từ 1ms-2ms theo để
điều khiển góc quay theo ý muốn.

Hình 3.11 Cấu tạo chân vào ra động cơ servo


3.5.3 Còi báo động
Có chức năng báo động cho chủ nhà biết khi có trộm xâm nhập.
Điện áp định mức :12v
Dòng định mức :320/600/1000/1200MA
Công xuất ra 15/20W

Hình 3.12 Đèn còi báo động

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

3.5.4 Động cơ một chiều

Hình 3.13 Động cơ một chiều


Vì vậy loại động cơ công 1 chiều có công suất nhỏ, điện áp 5 VDC. Động cơ điện
1 chiều là động cơ hoạt động với dòng điện 1 chiều. Động cơ có chức năng đảo chiều.
Cấu tạo của động cơ điện 1 chiều.
Stato (phần cảm): của động cơ điện một chiều thường là 1 hay nhiều cặp nam
châm vĩnh cửu, hay nam châm điện.
Rotor (phần ứng): có các cuộn dây quấn quanh lỏi sắt và được nối với nguồn
điện một chiều.
Bộ phận chỉnh lưu: nó có nhiệm vụ là đổi chiều dòng điện trong khi chuyển
động quay của rotor là liên tục. Thông thường bộ phận này gồm có một bộ cổ góp
và một bộ chổi than tiếp xúc với cổ góp. (Cổ góp : gồm các phiến góp bằng đồng
được ghép cách điện, có dạng hình trụ gắn ở đầu trục rotor, Chổi than: làm bằng
than graphit. Các chổi tỳ chặt lên cổ góp nhờ lò xo và giá chổi điện gắn trên nắp
máy)

Hình 3.14 Cấu tạo động cơ một chiều

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Nguyên lý làm việc của động cơ điện một chiều


Pha 1: Từ trường của rotor cùng cực với stator, sẽ đẩy nhau tạo ra chuyển
động quay của rotor.
Pha 2: Rotor tiếp tục quay.
Pha 3: Bộ phận chỉnh điện sẽ đổi cực sao cho từ trường giữa stator và rotor
cùng dấu trở lại pha 1.

Hình 3.14 Nguyên lý hoạt động của động cơ DC


Cơ chế sinh lực quay của động cơ điện một chiều:
Khi có một dòng điện chạy qua cuộn dây quấn xung quanh một lõi sắt non,
cạnh phía bên cực dương sẽ bị tác động bởi một lực hướng lên, trong khi cạnh đối
diện lại bị tác động bằng một lực hướng xuống theo nguyên lý bàn tay trái. Các lực
này gây tác động quay lên cuộn dây, và làm cho rotor quay. Để làm cho rotor quay
liên tục và đúng chiều, một bộ cổ góp điện sẽ làm chuyển mạch dòng điện sau mỗi
vị trí ứng với 1/2 chu kỳ. Chỉ có vấn đề là khi mặt của cuộn dây song song với các
đường sức từ trường. Nghĩa là lực quay của động cơ bằng 0 khi cuộn dây lệch 90 0
so với phương ban đầu của nó, khi đó rotor sẽ quay theo quán tính.
Trong các máy điện một chiều lớn, người ta có nhiều cuộn dây nối ra nhiều
phiến góp khác nhau trên cổ góp. Nhờ vậy dòng điện và lực quay được liên tục và
hầu như không bị thay đổi theo các vị trí khác nhau của rotor.
3.6. KHỐI HIỂN THỊ LCD
3.6.1Chức năng
Hiển thị các thông số nhiệt độ, độ ẩm đọc được từ cảm biến, hiển thị các thông
tin setup, send sms hoặc hỗ trợ debug khi viết chương trình điều khiển.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Hình 3.16 Khối hiển thị LCD


3.6.2 Thiết kế:
Phần cứng: Chọn loại LCD kiểu 2x16 để sử dụng trong đề tài và sử dụng
thêm module chuyển đổi LCD I2C để tiết kiệm chân cho arduino và thuận tiện cho
việc điều khiển LCD.
Chân Ký Mô tả
hiệu
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND
của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

4 RS Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
5 R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
6 E Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low
transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở
bus đến khi nào chân E xuống mức thấp.
7- DB0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.
14 DB7 Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7
15 - Nguồn dương cho đèn nền

16 - GND cho đèn nền

*Module chuyển đổi LCD I2C:


GND, VCC: 2 chân cấp nguồn 5Vdc
SDA (Serial Data): chân truyền/nhận dữ liệu
SCL (Serial Clock): chân xung nhịp

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Phần mềm:
Các lệnh khai báo và điều khiển khối LCD:
#include <LiquidCrystal_I2C.h> // khai báo thư viện LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16
chars and 2 line display
lcd.init(); // thiết lập LCD
lcd.backlight(); // bật đèn nền
lcd.setCursor(x,y); //đặt con trỏ tại vị trí cột x, dòng y
lcd.print("Hello, world!"); // xuất chuỗi ra màn hình
lcd.clear(); //xóa màn hình
3.7 KHỐI NGUỒN
Chức năng:
Cấp nguồn cho toàn bộ hệ thống điều khiển bao gồm: khối xử lý trung tâm,
khối cảm biến, khối hiển thị LCD, khối GSM sim 900, khối relay output.
Thiết kế:
Phần cứng :
Thiết kế khối nguồn cung cấp cho hệ thống như hình 4.9.

Hình 3.17 Sơ đồ mạch nguyên lý khối nguồn


Để cấp nguồn cho khối xử lý trung tâm, khối hiển thị LCD, khối cảm biến ta
cần cung cấp nguồn có điện áp 5V DC. Ta chọn IC 7805 là IC chuyên dụng để tạo
điện áp 5V cho mạch, với thông số dòng ra max 1.5A ta hoàn toàn có thể đủ dùng

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

để cung cấp cho các khối vừa nêu.


Đối với module sim 900, đòi hỏi yêu cầu khắt khe về nguồn cấp phải ổn định,
điện áp cấp nằm trong khoảng từ 3.2 V đến 4.5 V và dòng cấp phải ít nhất từ 2A trở
lên.
Nên yêu cầu phải thiết kế một nguồn nuôi riêng để cung cấp cho module sim
900. Ta sử dụng IC có thể thay đổi điện áp đầu ra IC 2596 để tạo điện áp đầu ra ổn
định và có thể điều chỉnh phù hợp với module sim 900. Với dòng ra max của IC
2596 là 3A nên ta có thể hoàn toàn yên tâm sử dụng mà không sợ lỗi reset của
module sim 900 khi thiếu dòng cung cấp.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

CHƯƠNG 4. LẬP TRÌNH TRƯỜNG TRÌNH ĐIỀU KHIỂN

4.1 TRƯƠNG TRÌNH ĐIỀU KHIỂN ARDUINO


4.1.1 lưu đồ thuật toán ardiuno

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

4.1.2 Chi tiết trương trình điều khiển arduino


#include <Servo.h> //////thu vien cho dong co servo
#include <SoftwareSerial.h> //thu vien cho giao tiep serial
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
SoftwareSerial mySerial(10, 11); // RX, TX khai bao chan giao tiep serial voi esp
Servo myservo;
const int coi=12,M_cong=A1,S_cong=9,bt_reset=8,DH=7, den_san=6;
boolean alarm=0,auto1=0;
int pos = 0,temp=0,reset=0;
String chuoi="";

void setup()
{ myservo.attach(M_con
g); Serial.begin(9600);
mySerial.begin(4800);
lcd.begin(16,2);
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" DO AN ");
lcd.setCursor (1,1);
lcd.print("NHA THONG MINH");
lcd.backlight();
delay(100);
pinMode(S_cong,INPUT);

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

pinMode(coi,OUTPUT);
pinMode(DH,OUTPUT);
pinMode(bt_reset,INPUT_PULLUP);
pinMode(den_san,OUTPUT);
pinMode(DH,OUTPUT);
pos=90;
myservo.write(pos); // dong cong
delay(15);
digitalWrite(den_san, HIGH); //tat den san
digitalWrite(coi, HIGH); //tat coi
}

void loop() {
//
if (mySerial.available()>0)
{
char kt=char (mySerial.read());
Serial.println(kt);
if(kt=='A') {alarm=1;Serial.println("alarm=1");}
else if (kt=='B') {alarm=0;Serial.println("alarm=0");}
else if (kt=='C') {reset=1;Serial.println("reset=1");}
else if (kt=='D') {auto1=1;Serial.println("auto=1");}
else if (kt=='E') {auto1=0;Serial.println("auto=0");}
else if (kt=='F')
{
if (auto1==1)
{digitalWrite(DH,HIGH);Serial.println("Bat may phun suong"); }// Bat may
phun suong}
else
{digitalWrite(DH,LOW);Serial.println("Tat may phun suong");} // Tat may
phu
}
else if(kt=='G') // nhiet do duoi 30
{ digitalWrite(DH,LOW);Serial.println("Tat may phun suong");}

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

}
//
if (digitalRead(S_cong)==0) // co nguoi vao cong
{
if (alarm==1)
digitalWrite(coi,LOW); //bat coi
else
{
digitalWrite(coi,HIGH); //tat coi
pos=0;
myservo.write(pos); // mo cong
digitalWrite(den_san, LOW);
delay(4000);
digitalWrite(den_san, HIGH);
}
}
else
{
pos=90;
myservo.write(pos);
delay(15);
}
//
if (digitalRead(bt_reset)==0) {while(digitalRead(bt_reset)==0);reset=1;} //neu
nhan nut reset
if (reset==1)
{
digitalWrite(coi,HIGH); //Reset coi
delay(10);
reset=0;
}
//

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

4.2 TRƯƠNG TRÌNH ĐIỀU KHIỂN ESP8266


4.2.1 Lưu đồ thuật toán esp8266

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

4.2.2 Chi tiết trương trình điều khiển esp8266


#define BLYNK_PRINT Serial // Comment this out to disable prints and
save space
#include <ESP8266WiFi.h> // thu vien khai bao module wifi esp8266
#include <BlynkSimpleEsp8266.h> // thu vien giao tiep voi phan mem blynk
#include <SimpleTimer.h> // thu vien dinh thoi
#include <SoftwareSerial.h> // thu vien cho giao tiep serial
SoftwareSerial swSer(14, 12, false, 256); // cai dat chan giao tiep serial voi
arduino
#include <DHT.h> //thu vien cam bien DHT22
#define DHTPIN 2 //pin gpio 2 in sensor D4
#define DHTTYPE DHT22 // khai bao loai cam bien DHT 22
DHT dht(DHTPIN, DHTTYPE);
char auth[] = "8837fdd266f540a59a36bfd15e6926c4"; //ma xac thuc cua
blynk server
char ssid[] = "XINCAIGI"; //ten wifi ket noi
char pass[] = "LAMGICOPASS"; //pass wifi ket noi
WidgetTerminal terminal(V2); // virtuapl pin doi tuong terminal phan mem
blynk : do loi, tra nhiet do do am
SimpleTimer timer; // khai bao thu vien thoi gian lay mau nhiet do
float t,h;

void do_nhiet_do()
{
h = dht.readHumidity();
t = dht.readTemperature();
if (isnan(h) || isnan(t) ) {
Serial.println("Loi cam bien DHT22!");
return;
}
Blynk.virtualWrite(10, t); // gui gia tri nhiet do len virtuapl pin 10 cua blynk
Blynk.virtualWrite(11, h); // gui gia tri do am len virtuapl pin 11 cua blynk
if(t>40)

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

{
swSer.write("F"); // Gui chuoi "F" cho arduino
}
else if(t<40)
{
swSer.write("G"); // Gui chuoi "B" cho arduino
}

}
//
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V1
Serial.print("V1 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("A"); // Gui chuoi "A" cho arduino
if (pinValue==0)
swSer.write("B"); // Gui chuoi "B" cho arduino
}
//
BLYNK_WRITE(V2)
{
if (String("temp") == param.asStr())
{
if (isnan(h) || isnan(t) )
{
terminal.println("Loi cam bien");
terminal.flush();
}
else
{
terminal.print("Nhiet do: ");
terminal.println(t);

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

terminal.print("Do am: ");


terminal.println(h);
terminal.flush();
}
}
else
{
terminal.println("Lenh khong dung");
terminal.flush();
}

}
//
BLYNK_WRITE(V3)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V1
Serial.print("V3 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("C"); // Gui chuoi "C" cho arduino

}
//
BLYNK_WRITE(V4)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V4
Serial.print("V4 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("D"); // Gui chuoi "D" cho arduino
else if(pinValue==0)
swSer.write("E"); // Gui chuoi "E" cho arduino

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

//
void setup()
{
Serial.begin(9600);
swSer.begin(4800);
dht.begin();
Blynk.begin(auth, ssid, pass); //khoi dong thu vien blynk voi auth code, ssid,
pass wifi ket noi
timer.setInterval(1000L, do_nhiet_do);// goi ham do nhiet do sau moi giay
}

//
void loop()
{
Blynk.run();
timer.run();
}

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

CHƯƠNG 5. KIỂM TRA ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN

5.1. KIỂM TRA HỆ THỐNG


Xữ lý các trường hợp thực tế:
+ Nhiều khi mạng wifi không ổn định làm cho sự đáp ứng của thiết bị không
phản hồi nhanh.
+ Cảm biến hồng ngoại bị nhiễu với môi trường có hồng ngoại nhiều.
+ Khả năng cảm biến nhiệt độ và độ ẩm bị nhiễu bởi môi trường bên ngoài
nên đưa ra giá trị hk sát với thực tế.
5.2. KẾT QUẢ

Hình 5.1. Mô hình phần cứng


 Phần thiết kế mô hình.
Nhóm hoàn thành mô hình gồm có 1 động cơ để điều khiển hệ thống làm mát,
cảm biến nhiệt độ và đô ẩm DHT 22 và cảm biến hồng ngoại xác chuyển động của
vật để phát hiện có người trong khu vực quang sát, 1 động cơ secvo để điều khiển
đóng mở cổng,màn hình LCD 16x2 để hiển thị,và hệ thống đèn chiếu sáng
 Phần kiến thức:

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

Tìm hiểu về bộ điều khiển lập trình IDE


Vai trò arduino và esp8266 trong hệ thống tự động hóa
Tìm hiểu quy trình công nghệ một số phương phát điều khiển tự động và
giám sát các thiết bị từ xa.
Vai trò của cảm biến trong lĩnh vức điều khiển tự động hóa
5.3 KẾT LUẬN
Sau một thời gian dài tìm hiểu và nghiên cứu, xây dựng ý tưởng và bắt tay và
việc thi công. Nhóm chúng em đã hoàn thành đề tài “ Thiết kế hệ thống giám sát
ngôi nhà thông minh”. Chúng em đạt được kết quả sau:
Đề tài đã tìm hiểu cơ sở lý thuyết về arduino và esp 8266, hoạt động cảm
biến nhiệt độ và đọ ẩm trong quá trình thu thập thông tin
Tìm hiểu quy trình công nghệ tự động hóa trong điều khiển và điều khiển từ
xa
.
Đã xây dựng thành công hệ thống giám sát các hoạt động trong khuôn viên
ngôi nhà thông minh.
Qua quá trình nghiên cứu và xây dựng đề tài giúp chúng em hiểu được nhiều
thiết bị ứng dụng trong các hệ thống giám sát điều khiển tự động, thấy được xu thế
phát triển của ngành tự động hóa. Thấy được vai trò và úng dụng của arduini và esp
8266 trong đời sống xã hội. Giúp con người làm việc một cách hiệu quả, đạt được
kết quả tốt trong công việc. Cuộc sống chúng ta hướng tới những điều tốt đẹp hơn.
Qua đề tài, giúp chúng em biết được cấu trúc cách lập trình và vai trò của
Arduino và esp 8266 trong hệ thống tự động hóa. Giúp em củng cố lại kiến thức đã
học => Áp dụng vào thực tế.
Mặt hạn chế
Hệ thống cần có những thiết bị khách và lạp trình theo nhu cầu riêng trong
thực tế.
Kết cấu cơ khí ở các thiết bị mô phỏng chưa được đẹp mắt.
Hệ thống bị nhiễu nhiều với môi trường bên ngoài khi hoạt động.
Hướng phát triển
Trong tương lai, hệ thống có thể giám sát và điều khiển đcược nhiều thiết bị
với nhiều tiêu chí khác nhau trong nhiều trường hợp.
Mong rằng đề tài này sẽ được các bạn sinh viên khóa sau tiếp tục thực hiện và
khắc phục những hạn chế của đề tài này, cải thiện những mặt chưa được và phát huy
mặt được một cách tốt hôn để có thể tạo ra một hệ thống có chất lượng.

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân


Đồ án tốt Trang Hệ Thống Giám Sát Ngôi Nhà Thông

TÀI LIỆU THAM KHẢO

http://arduino.vn/bai-viet/273-arduino-nano-nho-tien-loi-mang-tren-minh-tinh-
hoa-cua-arduino-uno
https://www.arduino.cc/en/main/software
http://luanvan.net.vn/luan-van/dien-tu-vien-thong/#
http://automation.net.vn/The-gioi-cam-bien/blog.html
http://www.electroschematics.com/11276/esp8266-datasheet/

SVTH: Nguyễn Tiến GVHD: Đỗ Hoàng Ngân

You might also like