Không phí tiền tải về !!!!!!! Khóa cửa thông minh có thể mở khóa bằng vân tay, password, tin nhắn. Đặc biệt có chức năng đổi password, thêm xóa vân tay trong hệ thống ( các chức năng này được phân quyền > chỉ có chủ nhà mới có quyền)
TỔNG QUAN
LÝ DO CHỌN ĐỀ TÀI
Ngày nay, nhu cầu sử dụng khóa cửa thông minh ngày càng tăng do khả năng hạn chế nguy cơ đột nhập, mất cắp và bảo vệ tài sản giá trị trong gia đình Công nghệ hiện đại đã thúc đẩy sự phát triển của các dòng khóa thông minh nhỏ gọn, tích hợp nhiều chức năng tiện ích, phù hợp cho các khu chung cư và biệt thự cao cấp Bên cạnh đó, sự tiến bộ của các vi điều khiển như kit Arduino đã tạo ra nhiều sản phẩm thông minh đa chức năng, dễ sử dụng cho người tiêu dùng Kit Arduino được sử dụng phổ biến nhờ cộng đồng người dùng rộng lớn và khả năng kết hợp nhiều mô-đun để tạo ra các ứng dụng thực tế, góp phần nâng cao chất lượng cuộc sống hiện đại Chính vì những ưu điểm này, tác giả quyết định thực hiện đề tài “Thiết kế cửa thông minh” để góp phần thúc đẩy công nghệ an ninh gia đình.
Dự án "Minh dựa trên Arduino Mega 2560" tập trung vào việc xây dựng hệ thống khóa cửa thông minh tích hợp nhiều tính năng, bao gồm sử dụng Arduino Mega 2560 làm bộ xử lý chính Hệ thống còn bao gồm cảm biến vân tay để xác minh danh tính chính xác và nhanh chóng, bàn phím để nhập mã PIN dự phòng hoặc điều chỉnh cài đặt, cùng mô-đun SIM để gửi thông báo và điều khiển từ xa qua mạng Đây là giải pháp hoàn chỉnh kết hợp công nghệ cảm biến sinh trắc học, điều khiển từ xa và bảo mật cao nhằm nâng cao tiện ích và an toàn cho người dùng.
MỤC TIÊU NGHIÊN CỨU
Thiết kế khóa cửa thông minh có các chức năng sau:
- Cho phép đóng/mở cửa bằng vân tay
- Cho phép đóng/mở cửa bằng mật khẩu
- Cho phép đóng/mở cửa từ xa bằng tin nhắn SMS
- Cho phép thêm ID vân tay mới, xóa ID vân tay đã có và thay đổi mật khẩu (chỉ có chủ nhà mới dùng được các chức năng này)
- Có màn hình hiển thị thông tin, để giao tiếp với người dùng
- Có nguồn dự phòng khi mất điện
GIỚI HẠN CỦA ĐỀ TÀI
Thiết kế sử dụng Arduino Mega 2560 để giao tiếp với mô-đun cảm biến vân tay AS608 và mô-đun SIM 800L qua chuẩn UART, đảm bảo kết nối chính xác và hiệu quả Ngoài ra, dự án còn sử dụng chuẩn truyền thông I2C để kết nối Arduino với màn hình LCD, giúp hiển thị thông tin dễ dàng và rõ ràng Các phương pháp truyền thông này tối ưu hóa khả năng xử lý dữ liệu và tăng tính ổn định của hệ thống.
Người thiết kế sử dụng phần mềm Arduino IDE để viết và biên dịch chương trình điều khiển, giúp dễ dàng lập trình và kiểm thử các dự án điện tử Để hỗ trợ quá trình lập trình, các thư viện như được tích hợp sẵn, giúp giao tiếp I2C và điều khiển các thiết bị ngoại vi một cách dễ dàng Việc sử dụng Arduino IDE kết hợp với các thư viện hỗ trợ sẽ tối ưu quá trình phát triển và nâng cao hiệu quả làm việc của các dự án điện tử tự động hóa.
BỐ CỤC
Nội dung đề tài gồm 5 chương:
Chương 1: Tổng quan: Chương này trình bày lý do chọn đề tài, cũng như mục tiêu và phạm vi nghiên cứu của đề tài
Chương 2: Cơ sở lý thuyết: Chương này trình bày lý thuyết các chuẩn truyền thông có dây được sử dụng trong đề tài, cũng như giới thiệu các mô-đun, linh kiện được lựa chọn
Chương 3: Thiết kế hệ thống: Trình bày sơ đồ khối, thiết kế sơ đồ nguyên lý cho từng khối và xây dựng lưu đồ giải thực của hệ thống
Chương 4: Kết quả thực hiện: Trình bày các kết quả thực hiện thiết kế
Chương 5: Kết luận và hướng phát triển: Đưa ra kết luận và hướng phát triển của đề tài
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU MỘT VÀI CHUẨN TRUYỀN THÔNG CÓ DÂY
2.1.1 Giới thiệu chuẩn truyền thông I2C
I2C, viết tắt của Inter-Integrated Circuit, là chuẩn truyền thông do Philips Semiconductor sáng lập, cho phép giao tiếp giữa thiết bị chủ (Master) và nhiều thiết bị tớ (Slave) qua hai đường tín hiệu chính Các đường này bao gồm SDA (serial data) để truyền tải dữ liệu và SCL (serial clock) để truyền xung clock do Master phát ra nhằm đồng bộ thời gian các bit dữ liệu trên đường truyền Để phân biệt các thiết bị Slave, mỗi Slave có một địa chỉ riêng biệt gồm 7 hoặc 10 bit theo chuẩn truyền thông I2C do nhà sản xuất quy định.
Dạng sóng quá trình thiết bị chủ ghi dữ liệu vào thiết bị tớ bắt đầu bằng việc thiết bị chủ tạo trạng thái START để bắt đầu truyền dữ liệu Tiếp đến, thiết bị chủ gửi địa chỉ của thiết bị tớ cần giao tiếp, trong đó 7 bit là địa chỉ và 1 bit là điều khiển đọc/ghi (R/W), với bit R/W bằng 0 để báo cho thiết bị tớ biết sẽ nhận byte tiếp theo Sau đó, thiết bị chủ chờ tín hiệu bắt tay từ thiết bị tớ, rồi gửi địa chỉ ô nhớ cần ghi dữ liệu Thiết bị chủ tiếp tục chờ phản hồi từ thiết bị tớ, và cuối cùng, tiến hành gửi dữ liệu để ghi vào thiết bị tớ, kết thúc quá trình truyền dữ liệu.
Hình 2 1 Dạng song quá trình thiết bị chủ ghi dữ liệu vào thiết bị tớ
Nguồn: trang 365 tài liệu tham khảo [3]
Trong quá trình truyền dữ liệu, thiết bị gửi 4 lần, mỗi lần 1 byte, và sau mỗi byte gửi đi, design chờ nhận tín hiệu phản hồi từ thiết bị đích Quá trình này tiếp tục cho đến khi gửi xong toàn bộ byte, sau đó thiết bị chủ sẽ chuyển sang trạng thái STOP để kết thúc quá trình giao tiếp Điều này đảm bảo quá trình trao đổi dữ liệu diễn ra mượt mà, chính xác và theo đúng quy trình chuẩn.
Dưới đây là đoạn văn đã được chỉnh sửa, tóm tắt và tối ưu hóa cho SEO dựa trên nội dung bạn cung cấp:Trong quá trình truyền dữ liệu giữa thiết bị chủ và thiết bị tớ, dạng sóng thể hiện các bước chính của giao tiếp Thiết bị chủ bắt đầu bằng tín hiệu START để khởi động quá trình truyền dữ liệu, sau đó gửi địa chỉ của thiết bị tớ cần giao tiếp, trong đó gồm 7 bit địa chỉ và 1 bit điều khiển R/W với giá trị bằng 0 để báo hiệu việc đọc dữ liệu Tiếp theo, thiết bị chủ chờ nhận tín hiệu bắt tay từ thiết bị tớ, rồi gửi địa chỉ ô nhớ cần đọc, đồng thời chờ phản hồi từ tớ Sau khi nhận được phản hồi, thiết bị chủ chuyển sang trạng thái STOP rồi lặp lại quá trình bắt đầu mới, gửi địa chỉ thiết bị kèm bit R/W bằng 1 để yêu cầu tớ gửi dữ liệu nội dung ô nhớ Khi nhận đủ dữ liệu mong muốn, thiết bị chủ kết thúc giao tiếp bằng tín hiệu STOP, đảm bảo quá trình truyền dữ liệu diễn ra liên tục và hiệu quả.
Hình 2 2 Dạng sóng quá trình thiết bị chủ đọc dữ liệu từ thiết bị tớ
Nguồn: trang 365 tài liệu tham khảo [3]
2.1.2 Giới thiệu chuẩn truyền thông UART không đồng bộ
UART (Universal Asynchronous Receiver – Transmitter) là tiêu chuẩn truyền thông nối tiếp cho phép truyền dữ liệu giữa hai thiết bị điện tử Giao thức UART sử dụng 3 chân chính gồm chân Tx để truyền dữ liệu, chân Rx để nhận dữ liệu, và chân GND để nối chung đất giữa hai thiết bị Vì không có xung clock đồng bộ, hai thiết bị cần thống nhất trước về tốc độ truyền dữ liệu và số bit trong mỗi frame để đảm bảo quá trình truyền nhận dữ liệu diễn ra chính xác.
Trong truyền dữ liệu, frame và bit kiểm tra lỗi đóng vai trò quan trọng để đảm bảo dữ liệu được truyền chính xác Tốc độ truyền dữ liệu thường đo bằng đơn vị bit trên giây (bps), còn gọi là Baud, thể hiện số lần thay đổi tín hiệu trong 1 giây Tốc độ Baud mặc định thường là 57600 bps, nhưng người dùng có thể cài đặt trong khoảng từ 9600 đến 115200 bps để phù hợp với nhu cầu Khi đã thống nhất tốc độ Baud, bên phát sẽ truyền dữ liệu theo khung với tốc độ xác định trước, trong khi bên nhận sẽ xác định đúng thời điểm bắt đầu nhận để đảm bảo dữ liệu được truyền tải thành công.
Hình 2.3 trình bày khung dữ liệu truyền dữ liệu 10 bit từ thiết bị phát Tx sang thiết bị nhận Rx Trong trạng thái không truyền, tín hiệu ở mức logic ‘1’, và để bắt đầu truyền dữ liệu, đường tín hiệu sẽ kéo xuống mức logic ‘0’ gọi là start bit Tiếp theo, 8 bit dữ liệu được truyền theo thứ tự từ bit có trọng số nhỏ đến bit có trọng số lớn, kết thúc bằng stop bit luôn ở mức logic ‘1’ Khung dữ liệu này không có bit kiểm tra (check bit), đảm bảo truyền dữ liệu hiệu quả và đơn giản.
Hình 2.4 mô tả quá trình nhận dữ liệu, trong đó chân tín hiệu Rx liên tục đọc dữ liệu và chờ phát hiện bit start để bắt đầu quá trình nhận Khi phát hiện bit start, bộ thu sẽ đợi 1,5 chu kỳ bit để đọc bit dữ liệu đầu tiên, sau đó tiếp tục chờ 1 chu kỳ bit để đọc các bit tiếp theo, lặp lại quá trình này đến khi nhận đủ 8 bit dữ liệu Với tốc độ baud là 9600 bps, mỗi chu kỳ bit có độ dài khoảng 104ms, giúp xác định chính xác thời điểm đọc dữ liệu trong quá trình truyền thông.
Hình 2 3 Định dạng khung dữ liệu UART 10 bit
Nguồn: tài liệu tham khảo [5]
GIỚI THIỆU BOARD ARDUINO MEGA 2560
Arduino Mega 2560 (Hình 2.5) là một bo mạch vi điều khiển dựa trên ATmega2560 có
Arduino Mega 2560 được trang bị 54 chân vào/ra kỹ thuật số (trong đó 14 chân hỗ trợ xuất PWM), 16 chân vào analog, cùng các giao tiếp UART, SPI, I2C giúp kết nối đa dạng thiết bị Mạch tích hợp bộ dao động thạch anh 16 MHz và kết nối USB để truyền mã nguồn từ máy tính đến board qua phần mềm IDE, dễ dàng lập trình và tải file Ngoài ra, Arduino còn có giắc cắm nguồn DC, cổng ICSP để lập trình bootloader và một nút reset để khởi động lại hệ thống Thiết bị cung cấp khả năng cấp nguồn DC với hai mức điện áp 5V và 3.3V, phù hợp cho nhiều dự án điện tử phức tạp.
Hình 2 4 Quá trình nhận dữ liệu UART
Nguồn: tài liệu tham khảo [5]
Hình 2 5 Hình ảnh thực tế về Ardiuno Mega 2560
Nguồn: tài liệu tham khảo [1]
Điện áp hoạt động: 5V DC Nguồn DC được nhà sản xuất khuyên dùng từ 7- 12V (Giới hạn nguồn 6-20V)
54 Chân Digital I/O (trong đó 15 chân hỗ trợ PWM)
16 Chân ngõ vào tín hiệu Analog
Bộ dao động tần số 16Mhz
Sơ đồ cũng như chức năng các chân Arduino Mega 2560 có thế thấy trên Hình 2.6. Dưới đây là chức năng cụ thể của một vài chân:
- Chân 5V và 3.3V : 2 chân này được sử dụng để cung cấp nguồn DC 5V và 3.3V cho các ngoại vi
Chân GND trên Arduino Mega gồm 5 chân nối mass có sẵn trên board, giúp dễ dàng kết nối với nhiều thiết bị ngoại vi trong các dự án điện tử Việc sử dụng chân GND thuận tiện cho quá trình lập trình và đảm bảo kết nối an toàn, ổn định cho các mạch mở rộng Điều này giúp người dùng dễ dàng thiết lập hệ thống và duy trì sự ổn định trong các dự án tích hợp nhiều linh kiện khác nhau.
- Chân reset : Được sử dụng để thiết lập lại board mạch về lại ban đầu Mức tích cực LOW được thiết lập sẽ reset lại board mạch
Chân Vin là chân điện áp đầu vào cung cấp nguồn từ 7V đến 20V cho mạch Arduino Mega, giúp điều chỉnh điện áp phù hợp cho hoạt động của thiết bị Ngoài ra, chân này còn cho phép lấy nguồn điện qua giắc nguồn DC kết nối trực tiếp vào mạch Tuy nhiên, dù nguồn đầu vào có từ 7V đến 20V, điện áp ra qua chân Vin sẽ tự động được chuyển đổi xuống mức 5V để đảm bảo an toàn và ổn định cho các linh kiện bên trong Arduino Mega.
- Các chân ngắt ngoài ( External Interrupts) : 6 chân được sử dụng để tạo các ngắt ngoài đó là ngắt 0 (chân 0), ngắt 1 (chân 3), ngắt 2 (chân 21), ngắt 3 (chân 20), ngắt
Trong bài viết, chúng tôi đề cập đến các chân 19 và chân 18, trong đó chân 19 thực hiện chức năng ngắt 4, còn chân 18 đảm nhận vai trò ngắt 5 Các chân này có khả năng tạo ra các ngắt theo nhiều cách khác nhau, bao gồm cung cấp giá trị LOW, cũng như tăng, giảm hoặc thay đổi giá trị của các chân ngắt Những tính năng này giúp điều chỉnh hiệu quả hoạt động của mạch điện, góp phần tối ưu hóa hiệu suất và độ bền của hệ thống.
Hình 2 6 Sơ đồ chân Arduino Mega 2560
Nguồn: tài liệu tham khảo [1]
- Đèn LED : Arduino Mega 2560 tích hợp đèn LED trên board mạch kết nối với chân
13 Giá trị HIGH đèn LED được bật và LOW đèn LED tắt Giúp người lập trình quan sát trực quan khi test, kiểm tra chương trình trên board Arduino
Chân AREF trên Arduino dùng để tạo điện áp tham chiếu cho các đầu vào analog, giúp cải thiện độ chính xác của phép đo Các chân analog (A0 đến A15) trên board Arduino được tích hợp sẵn, có thể dùng làm đầu vào hoặc I/O digital, với độ phân giải 10-bit cho phép đọc giá trị điện áp từ 0V đến 5V Người dùng có thể điều chỉnh phạm vi điện áp này bằng cách sử dụng hàm analogReference() và hàm ISF để tối ưu hóa độ chính xác của các phép đo analog.
Các chân truyền thông UART, gồm RXD và TXD, là các chân nối tiếp được sử dụng để truyền và nhận dữ liệu theo phương thức nối tiếp Trong đó, chân RX đại diện cho chức năng nhận dữ liệu, còn chân TX dùng để truyền dữ liệu Hệ thống có tổng cộng 4 cổng UART, trong đó Serial 0 gồm chân RX (0) và TX (1); Serial 1 gồm chân TX (18) và RX (19); Serial 2 gồm chân TX (16) và RX (17); và Serial 3 gồm chân TX (14) và RX (15).
Các chân giao tiếp I2C trên thiết bị gồm chân số 20 và 21 Trong đó, chân 20 đại diện cho SDA, chịu trách nhiệm truyền dữ liệu nối tiếp, đảm bảo dữ liệu được giữ ổn định trong quá trình truyền Chân 21 là SCL, dùng để cung cấp xung đồng hồ nhằm đồng bộ hóa dữ liệu giữa các thiết bị trong hệ thống I2C.
Các chân truyền thông SPI trên Arduino gồm chân 50 (MISO), chân 51 (MOSI), chân 52 (SCK), và chân 53 (SS), được sử dụng để truyền dữ liệu hiệu quả với các thiết bị ngoại vi khác Những chân này cho phép giao tiếp SPI nhanh chóng và ổn định, đóng vai trò quan trọng trong kết nối các sensor, màn hình hoặc các module mở rộng Việc hiểu rõ các chân này giúp lập trình viên dễ dàng thiết lập hệ thống truyền thông giữa Arduino và các thiết bị ngoại vi, nâng cao hiệu suất và độ tin cậy của dự án Arduino của bạn.
GIỚI THIỆU MÔ-ĐUN CẢM BIẾN VÂN TAY AS608
Hình 2.7 minh họa thực tế mô-đun cảm biến nhận dạng vân tay AS608, giao tiếp trực tiếp qua giao thức UART, dễ dàng kết nối với vi điều khiển hoặc qua PC adapter Max232/USB-Serial Người dùng có thể lưu trữ dữ liệu vân tay trực tiếp trên mô-đun, giúp tăng tính thuận tiện và linh hoạt trong quá trình sử dụng Mô-đun dễ dàng giao tiếp với các loại vi điều khiển khác nhau, nhờ vào cảm biến có độ chính xác cao, phù hợp để tích hợp trong các thiết bị như hệ thống kiểm soát truy cập, két sắt, khóa cửa nhà hoặc khóa xe.
Nguyên lý hoạt động của mô-đun cảm biến vân tay cơ bản có 2 phần:
Để lấy dữ liệu hình ảnh của vân tay, người dùng cần quét dấu vân tay hai lần qua cảm biến quang học, giúp đảm bảo độ chính xác và độ tin cậy của dữ liệu Hệ thống sau đó sẽ xử lý hình ảnh hai lần quét bằng thuật toán, tạo ra một khuôn mẫu vân tay dựa trên kết quả xử lý này, và lưu trữ các bản mẫu để sử dụng cho các quá trình xác thực trong tương lai.
Hệ thống so sánh dấu vân tay có thể thực hiện theo chế độ 1:1 hoặc 1:N, trong đó khi người dùng quét vân tay, mô-đun sẽ chụp lại hình ảnh vân tay và so sánh với dữ liệu đã lưu trong thư viện Đối với chế độ 1:1, hệ thống so sánh trực tiếp vân tay với mẫu cụ thể đã được chỉ định, còn chế độ 1:N sẽ tìm kiếm trong thư viện để xác định vân tay phù hợp Kết quả sẽ trả về là trùng khớp chính xác hoặc không trùng khớp với dữ liệu đã lưu.
Hình 2 7 Hình ảnh thực tế về cảm biến vân tay AS608
Nguồn: tài liệu tham khảo[2]
Thông số kỹ thuật của mô-đun cảm biến vân tay AS608 được trình bày ở bảng 2.1
Bảng 2 1 Thông số kỹ thuật Mô-đun cảm biến vân tay AS608 [2]
Thông số Mô tả Điện áp làm việc (DC) 3.0 ~ 3.6V Mức điện áp 3.3V được nhà sản xuất khuyên dùng
Dòng điện làm việc 30 ~ 60 mA, giá trị điển hình là 40mA
Truyền thông UART có tốc độ truyền dữ liệu từ 9600 x N bps, trong đó N dao động từ 1 đến 12, với giá trị mặc định là N = 6, tương ứng 57600 bps Giao thức UART sử dụng cấu trúc khung dữ liệu gồm 8 bit, không có bit kiểm tra chẵn lẻ, 1 bit dừng và mức điện áp TTL phù hợp cho các ứng dụng điều khiển và truyền tải dữ liệu trong hệ thống nhúng.
Giao tiếp USB 2.0FS (2.0 Full Speed)
Thời gian xử lý ảnh < 0.4 s
Kích thước hình ảnh cảm biến
256x288pixel Độ trễ bật nguồn