Các số liệu, tài liệu ban đầu: Kiến thức cơ bản về các môn: Mạch điện, Điện tử cơ bản, Hệ thống điều khiển tự động, Ngôn ngữ lập trình C, Vi xử lý, Lập trình android.. Ở Việt Nam những n
Trang 1HỆ THỐNG BẢO MẬT VÀ ĐIỀU KHIỂN
TỰ ĐỘNG CÁC THIẾT BỊ TRONG NHÀ
GVHD: PHẠM HỒNG LIÊN SVTH: NGUYỄN VĂN TỈNH MSSV: 15141070
SVTH: ĐẶNG HỮU QUANG MSSV: 15141053
SKL 0 0 6 7 6 3
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ, TRUYỀN THÔNG
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
ĐỒ ÁN TỐT NGHIỆP
Đề tài: HỆ THỐNG BẢO MẬT VÀ ĐIỀU KHIỂN
TỰ ĐỘNG CÁC THIẾT BỊ TRONG NHÀ
SVTH: NGUYỄN VĂN TỈNH MSSV: 15141070
SVTH: ĐẶNG HỮU QUANG MSSV: 15141053
Khoá: 2015 Ngành: Công nghệ kỹ thuật Điện tử, Truyền thông GVHD: PGS.TS PHẠM HỒNG LIÊN
Trang 3Họ và tên sinh viên: Nguyễn Văn Tỉnh
Đặng Hữu Quang
MSSV:15141070 MSSV:15141053
1 Tên đề tài: Nghiên cứu tích hợp hệ thống điều
khiển tự động nhà thông minh
2 Các số liệu, tài liệu ban đầu:
Kiến thức cơ bản về các môn: Mạch điện, Điện tử cơ
bản, Hệ thống điều khiển tự động, Ngôn ngữ lập trình
C, Vi xử lý, Lập trình android
3 Nội dung thực hiện đề tài:
Nghiên cứu lý thuyết có liên quan đến đề tài:
Vi điều khiển Aruino Mega 2560, ESP8266
NodeMCU…
Nghiên cứu thiết kế mô hình hệ thống
Thiết kế và thi công mạch
Thiết kế phần mềm cho hệ thống
Viết báo cáo
4 Sản phẩm:
Mô hình hệ thống nhà thông minh
Ngành:Công Nghệ Kỹ Thuật Điện tử, Truyền thông Lớp: 15141CLVT
Giảng viên hướng dẫn: PGS.TS Phạm Hồng Liên ĐT: 0988.202.124
Ngày nhận đề tài: 10/09/2019 Ngày nộp đề tài: 29/12/2019
Trang 4CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: Nguyễn Văn Tỉnh MSSV: 15141070
Họ và tên Sinh viên 2: Đặng Hữu Quang MSSV: 15141053 Ngành: Công nghệ kỹ thuật Điện tử - Truyền thông
Tên đề tài: Nghiên cứu tích hợp hệ thống điều khiển tự động nhà thông minh
Họ và tên Giáo viên hướng dẫn: PGS.TS Phạm Hồng Liên
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ: )
Trang 5
Ngành:
Tên đề tài:
Họ và tên Giáo viên phản biện:
NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2019
Giáo viên phản biện (Ký & ghi rõ họ tên)
Trang 6CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 2
Họ và tên Sinh viên: MSSV:
Ngành:
Tên đề tài:
Họ và tên Giáo viên phản biện:
NHẬN XÉT 7 Về nội dung đề tài & khối lượng thực hiện:
8 Ưu điểm:
9 Khuyết điểm:
10 Đề nghị cho bảo vệ hay không?
11 Đánh giá loại:
12 Điểm: (Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2019
Trang 7tốt nghiệp này Cuối cùng xin chúc gia đình, bạn bè, quý thầy cô nhiều sức khỏe và thành công trong công việc
Xin chân thành cảm ơn!
Nhóm thực hiện đề tài
Nguyễn Văn Tỉnh Đặng Hữu Quang
Trang 8MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP I PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN II PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 1 III PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 2 IV LỜI CẢM ƠN V MỤC LỤC VI DANH MỤC CÁC TỪ VIẾT TẮT IX DANH MỤC CÁC BẢNG BIỂU X DANH SÁCH CÁC HÌNH ẢNH, BIỂU ĐỒ XI
CHƯƠNG 1: TỔNG QUAN 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu đề tài 1
1.3 Nội dung nghiên cứu 1
1.4 Giới hạn 2
1.5 Bố cục 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN 4
2.1 Vi điều khiển 4
2.1.1 Giới thiệu giao thức UART 4
2.1.2 Arduino Mega 2560 9
2.1.3 ESP8266 NodeMCU 13
2.2 Giới thiệu về Wifi 16
2.3 Module LCD & I2C 17
2.3.1 Giới thiệu giao thức I2C 17
2.3.2 Màn hình LCD 18
2.3.3 Module I2C 20
CHƯƠNG 3: XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG 21
3.1 Sơ đồ khối của hệ thống 21
Trang 93.2.6 Khối hiển thị 38
3.2.7 Khối xử lý trung tâm 39
3.2.8 Khối nguồn 41
3.2.9 Sơ đồ nguyên lý toàn mạch 42
CHƯƠNG 4: THI CÔNG HỆ THỐNG 44
4.1 Thi công bảng mạch kết nối 44
4.1.1 Giới thiệu 44
4.1.2 Vẽ mạch in 45
4.1.3 Xuất file mạch in ra PDF tiến hành in 46
4.1.4 Kết quả sau khi thi công 48
4.2 Lập trình hệ thống 48
4.2.1 Lưu đồ giải thuật 48
4.2.2 Phần mềm lập trình vi điều khiển 58
4.3 Lập trình ứng dụng cho điện thoại 61
4.3.1 Giới thiệu về phần mềm Android Studio và Firebase 61
4.3.2 Lưu đồ giải thuật Android 66
4.3.3 Lập trình ứng dụng Android 69
4.3.4 Chạy ứng dụng trên điện thoại 73
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN 77
5.1 Kết quả 77
5.1.1 Kết quả mô hình 77
5.1.2 Ứng dụng điều khiển trên điện thoại Error! Bookmark not defined 5.2 Nhận xét 81
5.3 Đánh giá 81
Trang 10CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 82
6.1 Kết luận 82
6.2 Hướng phát triển 82
TÀI LIỆU THAM KHẢO 83
PHỤ LỤC 85
Trang 11USB: Universal Serial Bus
UART: Universal Synchronous & Asynchronous serial Reveiver and Transmitter SRAM: Static Random Access Memory
EEPROM: Electrically Erasable Programmable Read Only Memory
PWM: Pulse-width modulation
SPI: Serial Peripheral Interface
SDA: Serial Data
SCL, SCK: Serial Clock
MOSI: Master Output Slave Input
MISO: Master Input Slave Output
TWI: Two-Wire Serial Interface
TCP: Transmission Control Protocol
Wifi: Wireless Fidelity
IEEE: Institute of Electrical and Electronic Engineers
DMA: Direct Memory Access
WPA: Wi-Fi protected access
OFDM: Orthogonal frequency-division multiplexing
IDE: Integrated Development Environment
TTL: Transistor-transistor logic
Trang 12DANH MỤC CÁC BẢNG BIỂU
Bảng 2 1 Thông số cơ bản của Mạch Arduino Mega 2560 10
Bảng 2 2 Chức năng từng chân trong LCD 16x2 199
Bảng 3 1 Chức năng từng chân của cảm biến vân tay JM-101 37
Bảng 3 2 Dòng tiêu thụ của các khối trong hệ thống 411
Trang 13Hình 2 6 Vị trí Stop bit 9
Hình 2 7 Arduino Mega 2560 9
Hình 2 8 Sơ đồ chân Arduino Mega 2560 13
Hình 2 9 ESP8266 NodeMCU 14
Hình 2 10 Sơ đồ chân ESP8266 NodeMCU 16
Hình 2 11 Kết nối bus I2C và các thiết bị ngoại vi 18
Hình 2 12 Mô tả phương thức truyền I2C 18
Hình 2 13 LCD 16X2 19
Hình 2 14 Module I2C giao tiếp LCD16x2 20
Hình 3 1 Sơ đồ khối tổng quát của hệ thống 21
Hình 3 2 Module cảm biến ánh sáng 23
Hình 3 3 Sơ đồ kết nối chân cảm biến ánh sáng và Arduino Mega 2560 24
Hình 3 4 Cảm Biến Chuyển Động HC-SR501 25
Hình 3 5 Sơ đồ kết nối chân cảm biến chuyển động và Arduino Mega 2560 26
Hình 3 6 Cảm biến DHT11 27
Hình 3 7 Sơ đồ kết nối chân cảm biến DHT11 và ESP8266 NodeMCU 28
Hình 3 8 Module cảm biến lửa 29
Hình 3 9 Sơ đồ kết nối chân cảm biến lửa và Arduino Mega 2560 30
Hình 3 10 Động cơ servo MG90S 31
Hình 3 11 Sơ đồ kết nối động cơ Servo và Arduino Mega 2560 32
Hình 3 12 Sơ đồ chân và cấu tạo Opto PC817 33
Hình 3 13 Sơ đồ chân C1815 34
Hình 3 14 Diode 1N4007 34
Hình 3 15 Relay 5VDC/10A 35
Hình 3 16 Sơ đồ chân và cấu tạo Relay 35
Hình 3 17 Sơ đồ nguyên lí mạch relay 36
Hình 3 18 Module cảm biến vân tay JM-101 37
Hình 3 19 Sơ đồ kết nối bàn phím ma trận và Arduino Mega 2560 38
Hình 3 20 Sơ đồ kết nối LCD 16x2 và Arduino Mega 2560 39
Hình 3 21 Sơ đồ kết nối ESP8266 Node MCU, Arduino Mega 2560 và nguồn 41
Hình 3 22 Mạch nguồn xung 220v – 5v 2A 42
Hình 4 1 Sơ đồ kích thước Arduino mega 2560 44
Trang 14Hình 4 2 Sơ đồ kích thước ESP8266 NodeMCU 45
Hình 4 3 Mạch in hai lớp của bảng mạch kết nối 46
Hình 4 4 Mặt trên mạch in của bảng mạch kết nối 47
Hình 4 5 Mặt dưới mạch in của bảng mạch kết nối 47
Hình 4 6 Kết quả bảng mạch in 48
Hình 4 7 Lưu đồ chương trình chính Arduino mega 2560 49
Hình 4 8 Lưu đồ chương trình mở khóa cửa 50
Hình 4 9 Lưu đồ chương trình thêm dấu vân tay 50
Hình 4 10 Lưu đồ chương trình xóa dấu vân tay 51
Hình 4 11 Lưu đồ chương trình mở đèn cửa 52
Hình 4 12 Lưu đồ chương trình báo cháy 53
Hình 4 13 Lưu đồ chương trình chinh ESP8266 NodeMCU 54
Hình 4 14 Lưu đồ chương trình giao tiếp UART 55
Hình 4 15 Lưu đồ chương trình gửi dữ liệu nhiệt độ độ ẩm 56
Hình 4 16 Lưu đồ chương trình con hẹn giờ 57
Hình 4 17 Lưu đồ chương trình đọc dữ liệu Server 58
Hình 4 18 Icon chương trình Arduino 59
Hình 4 19 Giao diện của Arduino IDE 59
Hình 4 20 Icon phần mềm Andrroid Studio 62
Hình 4 21 Giao diện tạo Project 62
Hình 4 22 Giao diện thiết kế 63
Hình 4 23 Giao diện lập trình 63
Hình 4 24 Giao diện Firebase 65
Hình 4 25 Giao diện dịch vụ Database của Firebase 65
Hình 4 26 Lưu đồ chương trình 66
Hình 4 27 Lưu đồ điều khiển thiết bị 67
Hình 4 28 Lưu đồ các nút nhấn 68
Hình 4 29 Lưu đồ nút nhấn cài đặt 69
Hình 4 30 Icon app điều khiển 74
Hình 4 31 Giao diện màn hình chính 74
Hình 4 32 Giao diện cài đặt chế độ cho thiết bị 75
Hình 4 33 Giao diện màn hình hiển thị nhiệt độ, độ ẩm 76
Hình 4 34 Giao diện màn hình nút nhấn thông tin 76
Hình 5 1 Mô hình ngôi nhà 77
Hình 5 2 Ứng dụng trên điện thoại 78
Trang 15phóng sức lao động, tăng năng suất, mang lại hiệu quả kinh tế cao
Ở Việt Nam những năm gần dây việc ứng dụng các công nghệ của IOT vào điều khiển các thiết bị dân dụng trong nhà đang ngày càng được quan tâm, các đề tài nghiên cứu hay các dự án về ngồi nhà thông minh về điều khiển thiết bị điện trong nhà được tìm hiểu, nghiên cứu và xây dựng nhiều Ngôi nhà thông minh là ngôi nhà
có các điều kiện kỹ thuật để đảm bảo cuộc sống tốt nhất của con người Đó là quá trình tích hợp của các hệ thống như: hệ thống báo cháy, hệ thống nhiệt độ, độ ẩm, điều khiển của ra vào… thành một hệ thống thống nhất
Xuất phát từ những thực tiễn nói trên, nhóm em quyết định chọn đề tài “Nghiên cứu tích hợp hệ thống điều khiển tự động nhà thông minh” Đây là một đề tài khá quen thuộc với các bạn sinh viên như là việc nghiên cứu điều khiển các thiết bị qua internet, các hệ thống báo cháy hay phát hiện có người thì bật đèn, theo dõi nhiệt độ, độ ẩm…
Để làm mới cho đề tài nhóm chúng em đã nghiên cứu sử dụng dấu vân tay mở cửa để bảo mật an toàn cho ngôi nhà của mình
1.2 Mục tiêu đề tài
Khóa cửa bằng dấu vân tay hiển thị trên màn hình LCD
Điều khiển thiết bị bằng giọng nói
Điều khiển thiết bị qua điện thoại
Tự động bật tắt thiết bị theo thời gian đã thiết lập
Tự động bật tắt đèn khi trời tối và phát hiện có người
Theo dõi nhiệt độ, độ ẩm trong nhà
Cảnh báo cháy
1.3 Nội dung nghiên cứu
Nội dung 1: Tìm hiểu và tham khảo các tài liệu giáo trình, nghiên cứu các chủ
đề, các nội dung liên quan đến đề tài
Nội dung 2: Nghiên cứu và đưa ra các giải pháp hoạt động của mạch
Trang 16 Nội dung 5: Thiết kế và thi công khối điều khiển đóng mở các thiết bị
Nội dung 6: Chỉnh sửa lại các lỗi lập trình, tối ưu lại chương trình
Nội dung 7: Thi công mô hình hoàn chỉnh
Nội dung 9: Chạy thử nghiệm hệ thống
Nội dung 10: Viết báo cáo đồ án tốt nghiệp
Nội dung 11: Báo cáo đề án tốt nghiệp
1.4 Giới hạn
Sử dụng ở những nơi có Wifi
Sử dụng khóa cửa bằng dấu vân tay
Điều khiển 4 thiết bị
Sử dụng điện thoại để điều khiển thiết bị
Việc điều khiển có thể bị trễ tùy thuộc vào tốc độ mạng
Ứng dụng điều khiển hoạt động trên nền tảng Android
1.5 Bố cục
Chương 1: Tổng Quan
Trình bày các vấn đề bao gồm đặt vấn đề, mục tiêu, nội dung nghiên cứu, các giới hạn và bố cục đồ án
Chương 2: Cơ Sở Lý Thuyết
Giới thiệu các chuẩn giao tiếp sử dụng, vi điều điển, công nghệ WiFi
Chương 3: Xây dựng và thiết kế hệ thống
Trình bày sơ đồ khối của hệ thống, giải thích các khối, quy trình hoạt động Trình bày sơ đồ kết nối của các khối với vi điều khiển và đưa ra sơ đồ nguyên lý toàn mạch
Chương 4: Thi Công Hệ Thống
Thi công mô hình, chạy thử và nhận xét khi chạy thử hệ thống Trình bày các lưu
đồ giải thuật
Trang 18CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Chương 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
2.1 Vi điều khiển
2.1.1 Giới thiệu giao thức UART
Thuật ngữ UART trong tiếng anh là viết tắt của cụm tự Universal Synchronous
& Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ UART thường được dùng trong máy tính công nghiệp, truyền thông, vi điều khiển hay một số các thiết bị truyền tin khác Mục đích của UART sinh ra là để truyền tín hiệu qua lại lẫn nhau hay truyền từ vi điều khiển tới vi điều khiển hoặc truyền từ ngoại vi tới vi điều khiển[6]
Trong đó hai thiết bị giao tiếp với nhau thông qua giao thức UART bằng hai đường dẫn RX (read) và TX (transmit) Vì phương thức giao tiếp không đồng bộ nên hai thiết bị giao tiếp với nhau phải được thống nhất về khung truyền, tốc độ truyền
Hình 2 1 Cách kết nối hai thiết bị sử dụng giao thức UART
Sơ đồ khối UART:
- Bao gồm hai thành phần là máy phát và máy thu được hiển thị bên dưới Phần máy phát bao gồm ba khối là thanh ghi giữ truyền, thanh ghi dịch chuyển và logic điều khiển Tương tự, phần máy thu bao gồm một thanh ghi giữ, thanh ghi thay đổi
và logic điều khiển Hai phần này thường được cung cấp bởi một bộ tạo tốc độ baud Trình tạo này được sử dụng để tạo tốc độ khi phần máy phát và phần máy thu phải truyền hoặc nhận dữ liệu
- Thanh ghi giữ trong máy phát bao gồm byte dữ liệu được truyền Các thanh ghi thay đổi trong máy phát và máy thu di chuyển các bit sang phải hoặc trái cho đến
Trang 19Hình 2 2 Sơ đồ khối UART
Hình 2 3 Khung truyền dữ liệu của giao thức UART
Các khái niệm quan trọng trong chuẩn truyền thông UART:
- Baudrate: Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở các bên truyền và nhận phải thống nhất Baudrate Các thông số tốc độ Baudrate thường
Trang 20CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
hay sử dụng dể giao tiếp với máy tính là 600, 1200, 2400, 4800, 9600, 14400, 19200,
38400, 56000, 57600, 115200
- Frame: Ngoài việc giống nhau của tốc độ baud 2 thiết bị truyền nhận thì khung truyền của bên cũng được cấu hình giống nhau Khung truyền quy định số bit trong mỗi lần truyền, bit bắt đầu “Start bit”, các bit kết thúc (Stop bit), bit kiểm tra tính chẵn lẻ (Parity), ngoài ra số bit quy định trong một gói dữ liệu cũng được quy định bởi khung truyền Có thể thấy, khung truyền đóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu
Idle frame: Đường truyền UART ở mức “1”, để xác nhận hiện tại đường truyền dữ liệu trống, không có frame nào đang được truyền đi
Break frame: Đường truyền UART ở mức “0”, để xác nhận hiện tại trên đường truyền đang truyền dữ liệu, có frame đang được truyền đi
- Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng báo cho bên nhận rằng sắp có một gói dữ liệu truyền đến Đường truyền UART luôn ở trạng thái cao mức “1” cho đến khi chip muốn truyền dữ liệu đi thì nó gởi bit start bằng cách kéo xuống mức “0” Như vậy start bit giá trị điện áp 0V và phải bắt buộc
có bit start trong khung truyền
Trang 21Hình 2 4 Vị trí Start bit
- Data: Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá trình truyền và nhận Data trong STM32 có quy định khung truyền là 8bit hoặc 9bit Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB – least significant bit – bên phải) sẽ được truyền trước và cuối cùng là bit có ảnh hưởng cao nhất (MSB – most significant bit – bên trái)
- Parity bit: Parity dùng để kiểm tra dữ liệu truyền có đúng hay không Có 2 loại Parity đó là Parity chẵn (even parity) và parity lẽ (odd parity) Parity chẵn nghĩa
là số bit 1 trong trong data truyền cùng với bit Parity luôn là số chẵn, ngược lại nếu Parity lẽ nghĩa là số bit 1 trong data truyền cùng với bit Parity luôn là số lẽ Bit Parity không phải là bit bắt buộc và vì thế chúng ta có thể loại bỏ bit này ra khỏi khung truyền
Trang 22CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Trang 23Hình 2 6 Vị trí Stop bit 2.1.2 Arduino Mega 2560
Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng
tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng đồng nguồn mở (open-source) Dòng mạch Arduino có rất nhiều phiên bản, một trong những phiên bản phổ biến của mạch Arduino chính là Arduino Mega 2560
Hình 2 7 Arduino Mega 2560
Trang 24CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Arduino Mega 2560 là phiên bản nâng cấp của Arduino Mega hay còn gọi là Arduino Mega 1280
Sự khác biệt lớn nhất với Arduino Mega 1280 chính là chip nhân Ở Arduino Mega 1280 sử dụng chip ATmega1280 với flash memory 128KB, SRAM 8KB và EEPROM 4 KB
Còn Arduino Mega 2560 là phiên bản hiện đang được sử dụng rộng rãi và ứng dụng nhiều hơn Với chip ATmega2560 có bộ nhớ flash memory 256 KB, 8KB cho
bộ nhớ SRAM, 4 KB cho bộ nhớ EEPROM Giúp cho người dùng thêm khả năng viết những chương trình phức tạp và điều khiển các thiết bị lớn hơn như máy in 3D, điều khiển robot [7]
Bảng 2 1 Thông số cơ bản của Mạch Arduino Mega 2560
Vi điều khiển ATmega2560
Điện áp đầu vào (khuyên dùng) 7-12V
Điện áp đầu vào (giới hạn) 6-20V
Chân Digital I/O 54 (Với 15 chân PWM output)
Chân đầu vào Analog 16
Dòng ra trên chân digital Tối đa 40 mA
Trang 25Điện áp khuyến nghị là 7 – 12V
Các chân cấp nguồn
VIN: Điện áp vào mạch Arduino khi nó sử dụng nguồn ngoài (khác với nguồn 5V từ kết nối USB hoặc nguồn khác) Ta có thể cấp nguồn qua chân này hoặc cấp thông qua jack cắm nguồn
5V: Chân cấp điện áp ra 5V từ bộ điều chỉnh điện áp của bo mạch
3V3: Chân cấp điện áp ra 3,3V từ bộ điều chỉnh điện áp
GND: Chân nối đất
IOREF: Chân này cấp điện áp tham chiếu cho vi điều khiển hoạt động Một shield được cấu hình đúng có thể đọc điện áp chân IOREF và chọn nguồn điện phù hợp hoặc cho phép biến đổi điện áp để làm việc vơi 5,5V hoặc 3,3V
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
256KB 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
8KB 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 Khi mất điện, dữ liệu trên SRAM sẽ bị mất
4KB cho EEPROM (Electrically Erasable Programmable Read Only Memory): đây giống như một chiếc ổ cứng mini – nơi mà 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
Các chân vào ra của ARDUINO MEGA 2560:
Mỗi chân trong 54 chân digital trên bo Mega có thể sử dụng làm chân input hoặc output Chúng hoạt động ở 5V Mỗi chân có thể cấp hoặc nhận tối đa 40mA và
Trang 26CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
có một trở kéo nội (mặc định không nối) từ 20 – 50Kohm Ngoài ra, một số chân có các chức năng đặc biệt như sau:
8 chân Serial 0 (RX) và 1 (TX), Serial 19 (RX) và 18 (TX), Serial 17 (RX) và
16 (TX), Serial 15 (RX) và 14 (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 có thể nói là kết nối Serial không dây
Chân PWM (~): 2-13, 44-46: 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: 53 (SS), 51 (MOSI), 50 (MISO), 52 (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 MEGA 2560 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
RESET: Nối đường dây xuống LOW để reset vi xử lý
ARDUINO MEGA 2560 có 16 chân analog (A0 → A15) cung cấp độ phân giải tín hiệu 10bit để đọ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
6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3) và chân 21 (interrupt 2)
Đặc biệt, ARDUINO UNO có 2 chân 20 (SDA) và 21 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
Lập trình cho ARDUINO:
Các thiết bị dựa trên nền tảng ARDUINO được lập trình bằng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wirting được viết cho phần cứng nói Và Wirting lại là một biến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là
Trang 27Hình 2 8 Sơ đồ chân Arduino Mega 2560
2.1.3 ESP8266 NodeMCU [8]
Phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code
Là module Wifi đượ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 với khoảng cách truyền lên tới 100m ( Môi trường không có vật cản) Trên 400m với anten và router thích hợp
Cung cấp một giải pháp kết nối mạng Wi-Fi hoàn chỉnh 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
Khi ESP8266 NodeMCU là máy chủ các ứng dụng hay khi nó chỉ là bộ vi xử
lý ứng dụng có trong thiết bị, nó có thể khởi động trực tiếp từ một flash ngoài Nó có tích hợp bộ nhớ cache để cải thiện hiệu suất của hệ thống trong các ứng dụng này và
để giảm thiểu các yêu cầu bộ nhớ
Sử dụng chip nạp và giao tiếp UART mới và ổn định nhất là CP2102 có khả năng tự nhận driver trên tất cả các hệ điều hành Window và Linux
Trang 28CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Hình 2 9 ESP8266 NodeMCU
Quản lý năng lượng ESP8266
ESP8266 được thiết kế cho điện thoại di động, điện tử lắp ráp và ứng dụng Iot với mục đích đạt được mức tiêu thụ điện năng thấp nhất với sự kết hợp của nhiều kỹ thuật độc quyền Kiến trúc tiết kiệm năng lượng hoạt động trong 3 chế độ: chế độ hoạt động, chế độ ngủ và chế độ ngủ sâu
Bằng cách sử dụng các kỹ thuật quản lý nguồn điện và kiểm soát chuyển đổi giữa chế độ ngủ ESP8266 tiêu thụ chưa đầy 12uA ở chế độ ngủ nhỏ hơn 1.0mW so với (DTIM = 3) hoặc ít hơn 0.5mW (DTIM = 10) để giữ kết nối với các điểm truy cập
Khi ở chế độ ngủ, chỉ có bộ phận hiệu chỉnh đồng hồ thời gian thực và cơ quan giám sát vẫn hoạt động Đồng hồ thời gian thực có thể được lập trình để đánh thức ESP8266 ở bất kỳ khoảng thời gian cần thiết nào
ESP8266 có thể được lập trình để thức dậy khi một điều kiện chỉ định được phát hiện Tính năng tối thiểu thời gian báo thức này của ESP8266 có thể được sử dụng bởi thiết bị di động SOC Cho phép chúng vẫn ở chế độ chờ, điện năng thấp cho đến khi Wifi là cần thiết
Để đáp ứng nhu cầu điện năng của thiết bị di động và điện tử lắp ráp, ESP8266
có thể được lập trình để giảm công suất đầu ra của PA phù hợp với các ứng dụng khác nhau Bằng việc tắt khoảng tiêu thụ năng lượng
Thông số kỹ thuật:
- Chip: ESP8266EX
- WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
- Điện áp hoạt động: 3.3V
Trang 29- Tích hợp chuyển đổi TR, balun, LNA, bộ khuếch đại công suất và phù hợp với mạng
- Wake up và truyền các gói dữ liệu trong <2ms
- Chế độ chờ tiêu thụ điện năng<1.0mW (DTIM3)
- Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point
- Tích hợp Led báo trạng thái, nút Reset, Flash
- Hỗ trợ: UART, SPI, I2C, PWM, I2S với DMA
- Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua
Các chân nguồn, vào ra của ESP8266 NodeMCU
- VIN: Điện áp vào mạch ESP8266 khi nó sử dụng nguồn ngoài (khác với nguồn 5V từ kết nối USB hoặc nguồn khác)
- 5V: Chân cấp điện áp ra 5V từ bộ điều chỉnh điện áp của bo mạch
- 3V3: Chân cấp điện áp ra 3,3V từ bộ điều chỉnh điện áp
- GND: Chân nối đất
- 2 chân Serial RX và TX: dùng để gửi (Transmit – TX) và nhận (Receive – RX)
dữ liệu TTL Serial ESP8266 NodeMCU 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 có thể nói là kết nối Serial không dây Cung cấp giao tiếp không đồng bộ (RS232 và RS485) và có thể giao tiếp với tốc độ lên tới 4,5 Mb/ giây
- Chân PWM (~): D2, D5, D6, D8: Đầu ra PWM có thể được thực hiện theo chương trình và được sử dụng để điều khiển động cơ kỹ thuật số và đèn LED Dải tần số PWM được điều chỉnh từ 1000 đến 10000 μs, tức là trong khoảng từ 100 Hz đến 1 kHz
- Chân giao tiếp SPI: D8 (SS), D7 (MOSI), D6 (MISO), D5 (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
Trang 30CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
- Chân giao tiếp I2C: D1 (SCL), D2 (SDA): được sử dụng để kết nối tất cả các loại cảm biến và thiết bị ngoại vi I2C Cả I2C Master và I2C Slave đều được hỗ trợ, tần số xung nhịp tối đa là 100 kHz
- Chân ADC: A0 cung cấp độ phân giải tín hiệu 10 bit để đọc giá trị điện áp trong khoảng 0V → 5V
- Chân SDIO: SDD1, SDD2, SDD3, SDD0, CMD (SDCMD), CLK (SDCLK): ESP8266 có giao diện đầu vào/ đầu ra kỹ thuật số an toàn (SDIO) được sử dụng để giao tiếp trực tiếp thẻ SD Hỗ trợ 4 bit 25 MHz SDIO v1.1 và 4 bit 50 MHz SDIO v2.0
- Các chân điều khiển: được sử dụng để điều khiển ESP8266 Các chân này bao gồm chân Kích hoạt chip (EN), chân Đặt lại (RST) và chân WAKE
Chân EN - Chip ESP8266 được bật khi chân EN được kéo cao Khi kéo thấp, chip hoạt động ở công suất tối thiểu
Chân RST - Chân RST được sử dụng để đặt lại chip ESP8266
Pin WAKE - Pin Wake được sử dụng để đánh thức chip khỏi giấc ngủ sâu
Hình 2 10 Sơ đồ chân ESP8266 NodeMCU 2.2 Giới thiệu về Wifi
Wifi là từ viết tắt của Wireless Fidelity, nó là một hệ thống hoạt động dựa trên sóng vô tuyến không dây, hay còn được gọi là mạng IEEE 802.11 Wifi cho phép truy
Trang 31vô tuyến và gửi lại thông tin cho thiết bị gửi Trên máy tính, điện thoại và các thiết bị thông minh khác thiết bị thu phát Wifi được gọi là Card mạng hay card Wifi Một Router có thể kết nối với nhiều thiết bị khác nhau để truyền tải dữ liệu yêu cầu
Phân loại các chuẩn Wifi:
- Chuẩn 802.11 b : thu phát ở tần số 2.4 GHz và có tốc độ truyền nhận dữ liệu lên đến 11 Megabit/s và sử dụng mã CCk để xử lý
- Chuẩn 802.11 g : cùng đặc điểm với chuẩn b là tần số phát ở 2.4 GHz, nhưng nhờ sử dụng mã OFDM nên tốc độ truyền nhận dữ liệu tăng lên đáng kể, đạt 54 megabit/s
- Chuẩn 802.11 a : chuẩn Wifi này hoạt động ở tần số 5 GHz và có tốc độ truyền tương tự như chuẩn g với 54 megabit/s (cứ mỗi giây có đến 54 megabit dữ liệu được gửi đi )
- Chuẩn 802.11 n : công nghệ Wifi mới phát triển trực tiếp trên chuẩn g do đó tần số hoạt động vẫn dữ nguyên là 2.4 GHz nhưng tốc độ truyền tăng lên đáng kể Lên đế 300 megabit/s và chỉ sau một thời gian ngắn, tốc độ của chuẩn này đã tăng lên đến 450 Mb/s
- Chuẩn 802.11 ac : hoạt động trên băng tần 5 GHz là một trong số những chuẩn Wifi có số thiết bị được tích hợp rộng lớn nhất hiện nay
2.3 Module LCD & I2C
2.3.1 Giới thiệu giao thức I2C
Giao tiếp I2C là viết tắt của Inter Integarated Circuit, là một truyền phương thức truyền dẫn Bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips SemIconductor Ban đầu, loại Bus này chỉ sử dụng trong các linh kiện của Philips nhưng sau này do tính đơn giản và sự ưu việt của nó, I2C dần dần được chuẩn hóa và dùng rộng rãi trong các Module truyền thông nối tiếp của các loại vi mạch tích hợp ngày nay[2]
Trang 32CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Một giao tiếp I2C gồm 2 dây: SDA (Serial Data) là đường truyền dữ liệu hai chiều, và dây SCL (Serial Clock) là đường truyền xung đồng bộ I2C truyền với tốc
độ tiêu chuẩn là 100KHz và tốc độ cao là 400KHz I2C có thể hoạt động chế độ một chủ một tớ hoặc một chủ nhiều tớ
Hình 2 11 Kết nối bus I2C và các thiết bị ngoại vi Quá trình truyền I2C như sau: Bên chủ truyền tín hiệu Start vào tớ, sau đó nó
sẽ gửi liên tiếp 7 bits dữ liệu chứa địa chỉ bên tớ mà nó muốn giao tiếp Các bit msb
sẽ truyền trước Bit thứ 8 là quy định nhận bit “0” hoặc gửi bit “1” của thiết bị tớ, tiếp theo là bit ack để xác nhận thiết bị có nhận đủ 1 byte hay không, cuối cùng là tín hiệu stop để kết thúc quá trình truyền
Hình 2 12 Mô tả phương thức truyền I2C
2.3.2 Màn hình LCD
LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của
Vi Điều Khiển LCD có rất nhiều ưu điểm so với các dạng hiển thị khác Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và
Trang 33RS=1 (mức cao) chọn thanh ghi dữ liệu
Điện áp hoạt động là 5 V
Trang 34CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
Dòng tiêu thụ ~30mA
Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng
để sử dụng ít điện năng hơn
Có thể được điều khiển với 6 dây tín hiệu
2.3.3 Module I2C
Để sử dụng các loại LCD có driver là HD44780(LCD 1602, LCD 2004, ), cần
có ít nhất 6 chân của MCU kết nối với các chân RS, EN, D7, D6, D5 và D4 để có thể giao tiếp với LCD Nhưng với module chuyển giao tiếp LCD sang I2C, các bạn chỉ cần 2 chân (SDA và SCL) của MCU kết nối với 2 chân (SDA và SCL) của module là
đã có thể hiển thị thông tin lên LCD Ngoài ra có thể điều chỉnh được độ tương phản bởi biến trở gắn trên module
Hình 2 14 Module I2C giao tiếp LCD16x2 Thông số kỹ thuật:
Điện áp hoạt động :2.5-6V
Dòng tiêu thụ ~100µA
Jump Chốt: Cung cấp đèn cho LCD hoặc ngắt
Biến trở xoay độ tương phản cho LCD
Trang 35- Điều khiển thiết bị trong nhà thông qua nút nhấn
- Khóa cửa sử dụng vân tay hiển thị trên màn hình LCD
- Điều khiển thiết bị bằng giọng nói, hẹn giờ tắt mở thiết bị trên điện thoại
- Tự động bật đèn khi trời tối
- Báo cháy trong nhà về điện thoại
- Giám sát nhiệt độ, độ ẩm trong nhà thông qua ứng dụng trên điện thoại 3.1.2 Sơ đồ khối
Hệ thống gồm 8 khối kết nối với nhau được trình bày bởi hình 3.1 sau đây:
Hình 3 1 Sơ đồ khối tổng quát của hệ thống
Trang 36CHƯƠNG 3: XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG
3.1.3 Chức năng từng khối
Khối Xử lí trung tâm: Xử lí các thông tin nhận được từ các khối cảm biến, ,kết nối wifi, gửi và nhận dữ liệu từ firebase,… xuất ra màn hình hiển thị và điều khiển relay, động cơ, đèn…
Khối hiển thị: Hiển thị ra màn hình thông tin dấu vân tay đúng/sai hoặc thêm xóa dấu vân tay
Khối đóng ngắt: Điều khiển các thiết bị trong nhà
Khối cảm biến: Cảm biến ánh sáng tự động bật đèn khi trời tối, cảm biến chuyển động phát hiện có người mở đèn, cảm biến lửa phát hiện có cháy
Khối cảm biến vân tay: Dùng dấu vân tay để mở cửa
Khối động cơ: Chạy động cơ để đóng mở cửa
Ứng dụng điều khiển: Điều khiển các thiết bị bằng ứng dụng trên điện thoại, điều khiển bằng giọng nói, hẹn giờ bật tắt thiết bị
Khối nguồn: Cấp nguồn cho toàn bộ hệ thống
Cảm biến ánh sáng quang trở có tích hợp sẵn LM393 và biến trở so sánh mức tín hiệu giúp cho việc nhận biết tín hiệu trở nên dễ dàng, sử dụng để nhận biết hay bật tắt thiết bị theo cường độ ánh sáng môi trường
Trang 37- D0: nối vào chân PWM11 của Arduino Mega 2560
Sơ đồ nguyên lý kết nối cảm biến ánh sáng với nguồn và vi điều khiển:
Trang 38CHƯƠNG 3: XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG
Hình 3 3 Sơ đồ kết nối chân cảm biến ánh sáng và Arduino Mega 2560
Cảm biến chuyển động HC-SR501 là cảm biến có khả năng nhận biết được một vật di chuyển vào vùng mà cảm biến hoạt động Module cảm biến có thể điều chỉnh được độ nhạy nhờ 2 biến trở là Sx biến trở điều chỉnh độ nhạy của cảm biến,
Tx biến trở điều chỉnh thời gian đóng của cảm biến, giúp cho cảm biến hoạt động phù
Trang 39- OUT: nối vào chân PWM8 của Arduino Mega 2560
Sơ đồ nguyên lý kết nối cảm biến chuyển động với nguồn và vi điều khiển:
Trang 40CHƯƠNG 3: XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG
Hình 3 5 Sơ đồ kết nối chân cảm biến chuyển động và Arduino Mega 2560 3.2.1.3 Cảm biến nhiệt độ, độ ẩm
Chức năng: đo nhiệt độ và độ ẩm trong nhà
Phương án và lựa chọn:
Cảm biến nhiệt độ, độ ẩm rất phổ biến, đa dạng cho từng nhu cầu trong các ứng dụng IoT Dùng loại cảm biến DHT 11 nhỏ gọn, tiết kiệm phù hợp với vi điều khiển Arduino mega 2560
Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất) Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào.[11]