Mạch khóa cửa tự động smartlock 1.2. Ý tưởng thiết kế • Hiển thị đăng nhâp mật khẩu qua LCD1602. • Sử dụng bàn phím keypad để nhập mật khẩu mở khóa. • Kết nối đăng nhập mở khóa thông qua app trên điện thoại. • Dùng ESP8266 làm trái tim của mạch. 1.3. Mục tiêu thiết kế • Khóa cửa tự động. • Điện áp hoạt động 12V. • Cảnh báo qua âm thanh. • Hỗ trợ kết nối qua app
TỔNG QUAN VỀ ĐỀ TÀI
Lý do chọn đề tài
Smartlock là sản phẩm an ninh hiện đại với tính năng mở bằng ứng dụng và mật khẩu, thay thế ổ khóa truyền thống giúp nâng cao mức độ bảo mật, mang lại sự tiện lợi vượt trội và thiết kế thẩm mỹ cao Đây là giải pháp khóa thông minh phù hợp cho các gia đình và doanh nghiệp muốn đảm bảo an toàn và thuận tiện trong việc quản lý khoá cửa hàng ngày.
Ý tưởng thiết kế
Hiển thị đăng nhâp mật khẩu qua LCD1602.
Sử dụng bàn phím keypad để nhập mật khẩu mở khóa.
Kết nối đăng nhập mở khóa thông qua app trên điện thoại.
Dùng ESP8266 làm trái tim của mạch.
Mục tiêu thiết kế
Cảnh báo qua âm thanh.
Hỗ trợ kết nối qua app.
CƠ SỞ LÝ THUYẾT VÀ LINH KIỆN CHUYÊN DÙNG
Giới thiệu sơ lượt về Smartlock
Khóa thông minh là loại khóa cơ điện tử tích hợp khả năng kết nối Wifi và Bluetooth, giúp mở cửa dễ dàng bằng lệnh thoại hoặc từ xa Với tính năng truy cập từ xa qua internet, bạn có thể mở khóa cửa ở bất kỳ đâu chỉ cần có kết nối wifi Đây là giải pháp an ninh tiện lợi và hiện đại, phù hợp cho cuộc sống ngày càng bận rộn.
Khóa thông minh hoạt động giống như ổ khóa truyền thống, gồm hai bộ phận chính là khóa và chìa khóa Tuy nhiên, với khóa điện tử, chìa khóa vật lý được thay thế bằng điện thoại thông minh hoặc mã PIN, mang lại tiện lợi và hiện đại hơn Khóa điện tử giúp người dùng dễ dàng mở cửa bằng các phương pháp số hóa, nâng cao an ninh và thao tác linh hoạt trong cuộc sống hàng ngày.
Khóa cửa thông minh hiện nay được tích hợp nhiều tính năng nổi bật như hỗ trợ ứng dụng đi kèm giúp người dùng dễ dàng kiểm soát và quản lý khóa từ xa Công nghệ kết nối wifi và bluetooth mở rộng khả năng kết nối, mang lại sự tiện lợi và linh hoạt trong việc mở khóa Các loại hình thức mở khóa đa dạng như vân tay, mật khẩu, thẻ từ, và tạo mật mã tạm thời giúp tăng cường an ninh cho gia đình Khóa còn có chức năng nhận cảnh báo trực tiếp trên điện thoại thông minh, giúp người dùng luôn nắm bắt được trạng thái của cửa Đặc biệt, khóa cửa thông minh tích hợp hệ thống nhà thông minh, đem lại trải nghiệm tiện nghi và đồng bộ trong cuộc sống hiện đại.
Trong dự án này, do hạn chế về kiến thức và tài nguyên, tôi chỉ tập trung thiết kế hệ thống smartlock mở khóa bằng cách nhập mật khẩu trực tiếp trên bàn phím và điều khiển mở khóa qua ứng dụng trên điện thoại di động.
I2C (Inter-Integrated Circuit) là giao thức truyền thông nối tiếp đồng bộ, được sử dụng để truyền nhận dữ liệu giữa các IC một cách dễ dàng và hiệu quả Giao thức này chỉ sử dụng hai đường truyền tín hiệu chính, giúp giảm thiểu dây kết nối và tiết kiệm không gian trên mạch Nhờ vào tính năng đồng bộ, I2C cho phép truyền dữ liệu nhanh chóng và ổn định giữa các thiết bị điện tử khác nhau trong hệ thống.
- I2C sử dụng 2 đường truyền tín hiệu:
+ SCL - Serial Clock Line : Tạo xung nhịp đồng hồ do Master phát đi
+ SDA - Serial Data Line : Đường truyền nhận dữ liệu.
- Giao tiếp I2C bao gồm quá trình truyền nhận dữ liệu giữa các thiết bị chủ tớ, hay Master - Slave
Thiết bị Master là một vi điều khiển chịu trách nhiệm điều khiển đường tín hiệu SCL, đảm bảo truyền và nhận dữ liệu hoặc lệnh qua đường SDA đến các thiết bị khác trong hệ thống Vị trí của thiết bị Master rất quan trọng trong việc quản lý và điều phối giao tiếp giữa các thiết bị trong mạng I2C Việc hoạt động chính của thiết bị này giúp đảm bảo quá trình truyền dữ liệu diễn ra chính xác, hiệu quả và đồng bộ.
Trong hệ thống truyền dữ liệu, các thiết bị nhận các lệnh và tín hiệu từ thiết bị Master được gọi là các thiết bị Slave Thông thường, các thiết bị Slave là các IC hoặc thậm chí là vi điều khiển, đóng vai trò quan trọng trong việc tiếp nhận và xử lý dữ liệu theo quy trình truyền thông Việc hiểu rõ về vai trò của thiết bị Slave giúp tối ưu hóa hiệu suất và độ chính xác của hệ thống truyền thông giữa các thành phần.
2.1.3 Nguyên lí hoạt động của Module bàn phím ma trận 4x4
Để sử dụng Module bàn phím ma trận 4x4, chúng ta cần kết nối 8 chân của module với Arduino hoặc các vi điều khiển khác Phương pháp xác định phím nhấn phổ biến là quét theo hàng hoặc quét theo cột, giúp dễ dàng nhận diện phím được kích hoạt trong quá trình vận hành Việc lựa chọn giữa quét hàng hay cột phụ thuộc vào cách lập trình và cấu hình hệ thống của người dùng, đảm bảo chính xác trong việc đọc dữ liệu từ bàn phím.
- Quét theo hàng : các chân I/O nối với các cột là input , các chân I/O nối với các hàng là ouput sẽ thực hiện việc quét phím.
- Quét theo cột : ngược lại của quét theo hàng.
Hình 1 Đường truyền tín hiệu Hình 2 1 Đường truyền tín hiệu
Hình 2 2 Sơ đồ mạch bàn phím ma trận 4x4
2.1.4 Các chế độ Wifi của ESP8266
Cơ chế tổng quan đẩy dữ liệu lên internet (Station)
Cơ chế tổng quan cấu hình wifi (Access-point)
Blynk là nền tảng mạnh mẽ cung cấp các ứng dụng điện thoại thông minh giúp bạn dễ dàng kết nối và điều khiển các bộ vi điều khiển như Arduino, ESP8266, ESP32 hoặc Raspberry Pi qua Internet Với Blynk, việc lập trình và quản lý dự án IoT trở nên đơn giản, tiết kiệm thời gian và công sức Nền tảng này hỗ trợ nhiều thiết bị và giao thức, giúp người dùng dễ dàng xây dựng các dự án điều khiển từ xa, tự động hóa và giám sát hệ thống hiệu quả hơn Blynk là giải pháp lý tưởng cho các nhà phát triển và người đam mê IoT muốn tích hợp công nghệ vào các thiết bị dự án của mình một cách dễ dàng và linh hoạt.
Linh kiện chuyên dùng
-ESP8266 là một series các vi điều khiển trên một vi mạch giá rẻ, năng lượng thấp có hỗ trợ WiFi
- WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
- Điện áp vào: 5V thông qua cổng USB
- Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
- Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
- Giao tiếp: Cable Micro USB
- Hỗ trợ bảo mật: WPA/WPA2
- Tích hợp giao thức TCP/IP
- Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU - Lua
2.2.2 Chốt khóa cửa LY-03 12VDC
Khóa chốt điện từ LY-03 hoạt động như một ổ khóa cửa sử dụng solenoid để kích đóng mở bằng điện, phù hợp cho các ứng dụng nhà thông minh, tủ, cửa phòng, cửa kho Khóa hoạt động với điện áp 12VDC, loại thường đóng đảm bảo an toàn, chất lượng tốt và độ bền cao Sản phẩm có thể kết hợp với các mạch chức năng tạo thành hệ thống khóa cửa điện tử thông minh, nâng cao tiện nghi và an ninh cho không gian của bạn.
Yêu cầu nguồn cấp: 12VDC/2A
Hình 2 8 Chốt khóa cửa LY-03 12VDC
- Màn hình LCD 16x2 là một thiết bị hiển thị các ký tự theo mã ASCII, màn có thể hiện thị ký tự trên 16 cột và 2 dòng
4 RS Lựa chọn thanh ghi RS=0 (mức thấp) chọn thanh ghi lệnh
RS=1 (mức cao) chọn thanh ghi dữ liệu
5 R/W Chọn thanh ghi đọc/viết dữ liệu
R/W=0 thanh ghi viết R/W=1 thanh ghi đọc
7 DB0 Chân truyền dữ liệu 8 bit: DB0DB7
15 A Cực dương led nền 0V đến 5V
- Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780)
- Tích hợp Jump chốt cung cấp cho LCD hoặc ngắt.
- Tích hợp biến trở xoay giúp điều chỉnh độ tương phản cho LCD
VCC Chân cung cấp nguồn cho Module và LCD (2,6 – 5V)
SDA Đường gửi và nhận dữ liệu của Master và Slave
SCL Đường mang xung clock
Cách kết nối module I2C và LCD :
Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16x2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.
2.2.5 Mạch Giảm Áp DC LM2596 3A
Mạch Giảm Áp LM2596 là module điều chỉnh nguồn điện với khả năng cung cấp dòng ra tối đa 3A, phù hợp cho nhiều ứng dụng điện tử Với tích hợp đầy đủ IC nguồn bên trong, module dễ dàng điều chỉnh điện áp từ 9V xuống các mức thấp hơn như 5V hoặc 3.3V, đảm bảo ổn định và an toàn cho các thiết bị tiêu thụ điện năng Sử dụng mạch giảm áp LM2596 giúp tiết kiệm năng lượng và nâng cao hiệu quả trong quá trình vận hành của các dự án điện tử DIY hoặc sản xuất.
Hình 2 10 Kết nối module I2C và LCD
- Module nguồn không sử dụng cách ly
- Kích thước mạch: 53mm x 26mm
Khá đơn giản, các bạn chỉ cần cấp nguồn thô vào chân INPUT+, INPUT- rồi nhận nguồn ra từ chân OUTPUT+, OUTPUT-
Sơ đồ bàn phím ma trận 4x4
Hình 2 11 Mạch Giảm Áp DC LM2596 3A
Hình 2 12 Sơ đồ bàn phím ma trận 4x4
Giới thiệu Module bàn phím ma trận 4x4 :
- Module bàn phím ma trận 4x4 loại phím mềm.
Hình 2 13 Bàn phím ma trận 4x4
Ngoài ra còn một số linh kiện được sử dụng trong mạch như : điện trở , diode , buzzer, tụ điện, transistor.
THIẾT KẾ SẢN PHẨM
Sơ đồ nguyên lý
Hình 3.1: Sơ đồ nguyên lý
Nguyên lý hoạt động
Nguồn cấp và từ 12VDC Mạch sử dụng ic ổn áp LM2596 để ổn định điện áp ngõ ra 5V Với dòng điện tối đa 4.16A
Hình 3.4: Khối vi điều khiển
Khi nhận tín hiệu qua wifi esp sẽ truyền tín hiệu được lập trình sẵn để đóng-mở chốt khoa, thay đổi pass tùy vào yêu cầu đưa ra.
- Khối vận hanh chốt khóa:
Khi nhận tín hiệu từ bộ xử lý, bộ chốt khoa sẽ đóng- mở
Khi nhập sai pass quá 3 lần, hệ thống xử lý đưa tín hiệu cảnh báo tác động đến khối còi báo động.
V(+) nên ngõ ra bằng 1 -> LED D7 sáng - > tác động đến khối chuông báo
Tất cả các trạng thái được hiển thị trên lcd
Có thể sử dụng keypad để mở cửa nếu nhập đung mật khẩu
Sử dụng để thay đổi mật khẩu
Sử dụng để reset trạng thái
Mở cửa từ phai trong nhà
Sơ đồ mạch in và mạch đã hoàn thành
Hình 3.9: Sơ đồ mạch PCB Layout và trật tự sắp xếp linh kiện
Code Arduino
#include // bo nho nay luu pass khi mat dien
#include // chuan i2c cho lcd
#define BLYNK_TEMPLATE_ID "TMPLZ-FAIFVI"
#define BLYNK_DEVICE_NAME "keyphim"
#define BLYNK_AUTH_TOKEN "1qo-Ac3m-42AK1BVC9MT60MqxakQL41Z"
#include char auth[] = "1qo-Ac3m-42AK1BVC9MT60MqxakQL41Z"; char ssid[] = "khanhmanh"; char pass[] = "01234567890";
Dòng mã `LiquidCrystal_I2C lcd(0x27, 16, 2);` khởi tạo màn hình LCD I2C kích thước 16x2, phù hợp để hiển thị thông tin Các biến như `h1`, `h2`, `h3`, `h4`, `c1`, `c2`, `c3`, `c4`, `bz`, và `chot` đại diện cho các chân GPIO dùng để kết nối và điều khiển các thành phần phần cứng trong dự án Các mảng ký tự `kytu_sao[]`, `kytu[]`, `passmp[]`, `pass_moi[]`, và `pass_moi_ss[]` chứa các ký tự kiểu mã hex 0x20, tương ứng với ký tự khoảng trắng trong ASCII, thường dùng để tạo ra các mật khẩu hoặc ký tự trống ban đầu trên màn hình hoặc trong quá trình xử lý dữ liệu Biến `b` là biến ký tự để lưu dữ liệu nhập vào, trong khi các biến số như `lan`, `sl`, `tt`, `tt_doi`, và `ss` dùng để đếm số lần nhập, trạng thái hoặc các chỉ số liên quan đến quá trình xử lý của hệ thống, giúp quản lý và kiểm soát các bước trong chương trình một cách hiệu quả.
27 unsigned char mp,i,j,chay,tt_mo; int tt0,tt1,a; void dong_cua(); void mo_cua(); void kiem_tra_key_phim();
{ tt0 = param.asInt(); if(tt0==1)
{ tt1 = param.asInt(); if(tt1==1)
{ tt_doi++; if(tt_doi>1) tt_doi=0; if(tt_doi==1)
Sau khi nhập thành công mật khẩu, hệ thống sẽ kiểm tra lại hàm xác thực, đảm bảo tính an toàn Để thay đổi mật khẩu, chương trình sẽ xóa các ký tự cũ trong bộ nhớ bằng cách đặt tất cả các phần tử của mảng pass_moi và các biến liên quan về giá trị 0x20, giúp chuẩn bị cho việc nhập mật khẩu mới một cách an toàn và chính xác.
29 lan=1; lcd.setCursor(0,0); lcd.print(" DOI MAT KHAU "); lcd.setCursor(0,1); lcd.print("LAN 1: ");
Trong đoạn mã này, biến `tt` được khởi tạo bằng 0 để đảm bảo không cho phép đổi mật khẩu Một vòng lặp `for` chạy từ 0 đến 9 nhằm xóa các ký tự cũ trong quá trình chuyển sang chế độ đổi mật khẩu Các mảng như `pass_moi`, `pass_moi_ss`, `kytu`, và `kytu_sao` đều được đặt giá trị bằng 0x20 (kí tự khoảng trắng) để xóa sạch dữ liệu cũ, chuẩn bị cho việc nhập dữ liệu mới trong quy trình thay đổi mật khẩu.
} lan=0; dong_cua(); ledcua.off(); lcd.setCursor(0,0); lcd.print(" NHAP MAT KHAU "); lcd.setCursor(0,1); lcd.print(" ");
Serial.begin(9600); lcd.init(); lcd.backlight(); pinMode(bz, OUTPUT); pinMode(chot, OUTPUT); pinMode(c1, OUTPUT); pinMode(c2, OUTPUT); pinMode(c3, OUTPUT); pinMode(c4, OUTPUT);
This code initializes multiple input pins and sets a relay pin to LOW, controlling door operation and displaying status messages on an LCD It begins communication with Blynk for remote control, then presents connection success messages on the LCD The system prompts the user to enter a password, indicating whether access is granted or denied, with variables set to manage password verification and system modes.
// for(b=0;b