HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA ĐIỆN TỬ 1
-----🙞🙜🕮🙞🙜-----
BÁO CÁO BÀI TẬP LỚN
Môn học: Thực Hành Cơ Sở
Đề tài: Hệ thống khóa cửa thơng minh dùng RFID RC-522 và Arduino
Giảng viên hướng dẫn: TS. Nguyễn Đức Việt
Nhóm mơn học: 06
Sinh viên thực hiện:
1. Bạch Xuân Cường
- B19DCDT022
2. Lê Đình Duy
- B19DCDT033
3. Nguyễn Ngọc Duy
- B19DCDT034
4. Trịnh Văn Tuân
- B19DCDT200
HÀ NỘI, NĂM 2022
1
MỤC LỤC
LỜI NÓI ĐẦU ......................................................................................................................... 3
CHƯƠNG I: MỞ ĐẦU ............................................................................................................. 4
1.
Tổng quan .................................................................................................................... 4
2.
Mô tả mạch ................................................................................................................... 4
3.
Mục tiêu ....................................................................................................................... 4
CHƯƠNG II: TỔNG QUAN VỀ LINH KIỆN SỬ DỤNG ............................................................ 5
1.
Board Arduino Uno R3 .................................................................................................. 5
2.
Module RFID RC522 ..................................................................................................... 6
3.
Keypad 3*4................................................................................................................... 7
4.
Màn hình LCD 16*2 ...................................................................................................... 8
5.
Một số linh kiện khác dung trong đề tài ............................................................................ 8
CHƯƠNG III: THIẾT KẾ HỆ THỐNG ...................................................................................... 9
1.
Sơ đồ khối của hệ thống ................................................................................................. 9
2.
Nguyên lý hoạt động ...................................................................................................... 9
3.
Mô tả hoạt động cơ bản của hệ thống ............................................................................. 10
4.
Sơ đồ nguyên lý của hệ thống ........................................................................................ 10
5.
Sản phẩm thực tế ......................................................................................................... 11
CHƯƠNG IV: CODE ............................................................................................................. 12
2
LỜI NÓI ĐẦU
Ngày nay, khi cuộc sống ngày càng được phát triển và cải thiện sẽ kéo theo nhu
cầu của người tiêu dùng ngày càng lớn. Việc ra đời của những sản phẩm phục vụ tốt
cho cuộc sống chính là điều tất yếu, là nền tảng mà khoa học, công nghệ kĩ thuật mà
chúng ta đang hướng tới. Những thiết bị điện thông minh như hệ thống ánh sáng thông
minh, rèm thơng minh, hệ thống khóa cửa thơng minh,…tất cả đều là những sản phẩm
dựa trên thành tựu công nghệ và đang nhận được rất nhiều tín hiệu tốt từ thị trường. Vì
vậy, nhóm em quyết định chọn “Hệ thống khóa cửa thơng minh dùng RFID RC-522
vàArduino” làm đề tài.
Qua thời gian nghiên cứu và tìm hiểu, đề tài của chúng em đã được hoàn thành.
Em xin cảm ơn thầy đã dạy dỗ, truyền đạt những kiến thức quý báu cho chúng em
trong suốt thời gian qua và tận tình chỉ bảo chúng em thực hiện đề tài này. Nếu khơng
có sự giúp đỡ của Thầy, đề tài của chúng em khó có thể hồn thành được.
Do cịn thiếu kinh nghiệm, kỹ năng và kiến thức còn nhiều hạn chế nên khó
tránh khỏi những sai sót. Chúng em rất mong nhận được những ý kiến đóng góp quý
báu của Thầy để đề tài này có thể hồn thiện và tiếp tục phát triển thành những sản
phẩm thực tế có ích cho xã hội.
Chúng em xin chân thành cảm ơn!
3
CHƯƠNG I: MỞ ĐẦU
Tổng quan
1.
Hiện nay chúng ta hội nhập trong kỉ ngun số cơng nghệ 4.0…vầ có rất nhiều
thiết bị và hệ thống điều khiển tự động thông minh. Vì thế chúng em muốn cơng nghệ
được áp dụng nhiều trong cuộc sống hơn do đó chúng em thiết lập và đưa ra kế hoạch
khá hiện hữu, đó là mơ hình cửa tự động sử dụng cơng nghệ RFID và Keypad.
Mơ tả mạch
2.
Mạch đóng mở cửa sử dụng RFID, mở cửa khi đầu đọc RFID nhận được tín
hiệu từ thẻ RFID đã được đăng ký trong cơ sở dữ liệu, tín hiệu đã đọc được xử lý qua
MCU cụ thể là dùng Arduino Uno R3. Nếu đúng thẻ đã được đăng ký thì điều khiển
động cơ để mở khóa cửa, ngược lại thì từ chối, khơng mở cửa.
Mục tiêu
3.
-
Cung cấp sự tiện lợi cho người sử dụng.
-
Dễ dàng quản lý sự truy cập/từ chối.
-
Tạo mạch có tính kinh tế mà vẫn đảm bảo điều kiện hoạt động.
4
CHƯƠNG II: TỔNG QUAN VỀ LINH KIỆN SỬ DỤNG
1.
Board Arduino Uno R3
Hình 1: Cấu tạo của Board Arduino Uno R3
+ Thông số kỹ thuật:
Vi điều khiển
ATmega 328 8 bit
Điện áp hoạt động
5V DC(chỉ cấp qua cổng USB)
Tần số hoạt động
16MHZ
Dòng tiêu thụ
~30mA
Điện áp vào khuyên dung
7 – 12 VDC
Điện áp vào giới hạn
6 – 20 VDC
Số chân Digital I/O
14(6 chân Hardware PWM)
Số chân Analog
6(10 bit)
Dòng tối đa trên mỗi chân I/O
30mA
Dòng tối đa(5V)
500mA
Dòng ra tối đa (3.3V)
50mA
Bộ nhớ flash
32KB (ATmega 328) với 0.5
SRAM
2KB (ATmega 328)
EEPROM
1KB (ATmega 328)
5
+ Sử dụng Arduino Uno R3:
- Chân 0 và chân 1: là 2 chân TX, RX, 2 chân này có thể dùng như 1 chân I/O bình
thường nhưng thực tế rất ít ai dùng vì để trống cho chức năng uart.
- Chân PWM: 3,5,9,10,11: Cho phép xuất xung PWM với độ phân giải 8 bit.
- Chân giao tiếp SPI: 10(SS), 11(MOSI),12 (MiSO), 13(SCK): dùng trong giao tiếp
SPI.
- Chân 13: Kết nối với Led (ký hiệu chữ L trên board), người dùng có thể dùng chân
này để điều khiển Led. Khơng nên dùng chân này để điều khiển thiết bị ngoại vi, Vì
khi mở nguồn ootloader làm cho chân 13 này chớp chớp nên ảnh hưởng đến thiết bị
điều khiển.
- Chân A0→ A5: là các chân đọc ADC (độ phân giải 10 bít).
- Chân A4 (SDA), A5(SCL): dùng trong giao tiếp I2C.
- Tất cả các chân kể trên đều có thể sử dụng chức năng I/O (ngõ vào/ra) bình
thường.
2.
Module RFID RC522
Hình 2: Đầu đọc RFID-RCC522
Module đọc thẻ RC522 có thể đọc được các loại thẻ có kết nối khơng dây như NFC,
thẻ từ (loại dùng làm thẻ giảm giá, thẻ xe bus, tàu điện ngầm...).
6
+Thơng số kỹ thuật:
•
Điện áp ni: 3.3V;
•
Dịng điện ni :13-26mA
•
Tần số hoạt động: 13.56MHz
•
Khoảng cách hoạt động: 0 ~ 60 мм
•
Cổng giao tiếp: SPI, tốc độ tối đa 10Мbps
•
Các loại card RFID hỗ trợ: mifare1 S50, mifare S70, mifare Ultralight, mifare
Pro, mifare Desfire.
3.
•
Kích thước: 40мм х 60мм
•
Có khả năng đọc và ghi.
Keypad 3*4
Hình 3: Cấu tạo của keypad 3*4
+ Thơng số kĩ thuật:
• Độ dài cáp: 88mm
• Nhiệt độ hoạt động: 0 ~ 70’C
• Đầu nối ra 7 chân
• Kích thước bàn phím 76.9 x 69.2 mm
7
4.
Màn hình LCD 16*2
Hình 4: Cấu tạo của màn hình LCD 16*2
+ Thơng số kĩ thuật:
• LCD 16x2 có 16 chân trong đó 8 chân dữ liệu (D0-D7) và 3 chân điều khiển
(RS,RW, EN).
• 5 chân cịn lại dùng để cấp nguồn và đèn nền cho LCD 16x2
• Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ
liệu.
• Chúng cịn giúp chúng ta cấu hình ở chế độ đọc và ghi.
• LCD 16x2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang
làm.
Một số linh kiện khác dung trong đề tài
5.
-
Còi báo, Dây jump cắm
-
Relay 5V, Nguồn Adapter 12V 1A
8
CHƯƠNG III: THIẾT KẾ HỆ THỐNG
1.
Sơ đồ khối của hệ thống
Hình 5: Sơ đồ khối của hệ thống
- Khối đầu vào: Module RFID-RC522, Keypad 3*4
- Khối điều khiển: Arduimo Uno
- Khối chấp hành: Servo mở khóa
- Khối hiển thị: Màn hình LCD
- Khối cảnh báo: Cịi
2.
Ngun lý hoạt động
• Khối đầu vào: Khối tiếp nhận thông tin đầu vào là sự thay đổi tín hiệu của
module RFID-RCC522 hoặc Keypad 3*4
• Khối điều khiển: Sau khi có tín hiệu của khối đầu vào thì tín hiệu sẽ được đưa
vào khối điều khiển để xử lý và điều khiển các khối về sau
• Khối chấp hành: Khi khối điều khiển có tín hiệu được đưa đến thì khối chấp
hành sẽ thực hiện, đồng thời cả khối hiển thị cũng sẽ hoạt động để hiển thị trạng
thái.
• Khối cảnh báo: khi khối điều khiển có tìn hiệu cũng sẽ hoạt động để hiển thị
các cảnh báo.
9
3.
Mô tả hoạt động cơ bản của hệ thống
+ Bước 1: Nếu ta chọn quẹt thẻ: Khi thẻ đúng hệ thống sẽ tự động mở cửa và hiển thị
trạng thái lên màn hình LCD. Nếu thẻ sai hệ thống của sẽ khơng mở và đồng thời
có cảnh báo hiển thị trên màn hình LCD, nếu sai quá 3 lần thì hệ thống sẽ báo cịi
báo động, sau đó chờ để quét lại.
Nếu chọn nhập mật khẩu(Password): Nhập mật khẩu đúng hệ thống sê tự động mở
cửa và hiển thị trạng thái lên màn hình LCD. Nếu nhập sai hệ thống cửa sẽ khơng
được mở và đồng thời có cảnh báo hiển thị trên màn hình LCD, nếu sai quá 3 lần
thì hệ thống sẽ báo cói báo động ,sau đó chờ để nhập lại.
+ Bước 2: Khóa cửa: Quẹt thẻ hoặc ẫn phím # để đóng cửa.
4.
Sơ đồ ngun lý của hệ thống
Hình 6: Sơ đồ nguyên lý
10
5.
Sản phẩm thực tế
Hình 7: Sản phẩm thực tế
11
CHƯƠNG IV: CODE
#include <RFID.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <SPI.h>
#include <Servo.h>
#include <Wire.h>
Servo myservo;
#define SS_PIN 10
#define RST_PIN 9
#define doorLock 8
LiquidCrystal_I2C lcd(0x27,16,2);
RFID rfid(SS_PIN, RST_PIN);
int pos = 0;
int mode = 0; // bien trang thai RFID
const int buzzer = 7;
int serNum[5]; //Thẻ quét bộ đệm thay đổi
int cards[][5] = {
{ 33, 89, 98, 38, 60}
//Thẻ ID được phép nhập
};
bool access = false;
int alarm =0;
//bien canh bao
uint8_t alarmStat = 0; // trang thai canh bao
uint8_t maxError = 5;
// cac thong so cho ban phim
int pozisyon = 0;
int so_dung = 0;
bool e;
12
char* password = "11111";
char password_nhap[]={'0','0','0','0','0'};
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'},
};
byte rowPins[ROWS] = {6,5,4,3};
byte colPins[COLS] = {2,1,0};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
lcd.init();
lcd.backlight();
SPI.begin();
rfid.init();
myservo.attach(doorLock);
myservo.write(25);
tone(buzzer,1200);
lcd.setCursor(0,0);
lcd.print(F(" BAO CAO "));
lcd.setCursor(0,1);
lcd.print(F(" THCS NHOM 6 "));
delay(1000);
lcd.clear();
noTone (buzzer);
}
13
void loop() {
if(alarm >= maxError){
alarmStat = 1;
}
if(alarmStat == 0 && mode == 0 ){
lcd.setCursor(0,0);
lcd.print(F(" XIN CHAO ! "));
lcd.setCursor(0,1);
lcd.print(F("
"));
if(rfid.isCard()){ //KIEM TRA CĨ THẺ HAY KHƠNG
if(rfid.readCardSerial()){
for(int x=0; x< sizeof(cards);x++){
for(int i=0;i< sizeof(rfid.serNum);i++){
if(rfid.serNum[i] !=cards[x][i]){
access =false;
break;
}
else
{
access =true;
}
}
if(access) break;
}
}
if(access ){ //NẾU QUẸT THE DÚNG
Serial.println("XINCHAO!");
lcd.setCursor(0,0);
lcd.print(F(" MOI VAO NHA "));
myservo.write(140);//mo cua
tone(buzzer,900);
14
delay(100);
tone(buzzer,1200);
delay(100);
tone(buzzer,1800);
delay(200);
noTone(buzzer);
delay(600);
lcd.setCursor (0,0);
lcd.print("TU DONG DONG SAU ");
lcd.setCursor(0,1);
lcd.print(F("
"));
for(int i=5;i>0;i--){
lcd.setCursor(10,1);
lcd.print(i);
delay(1000);
}
myservo.write(25); //ĐÓNG CỬA
lcd.clear();
} else { //neu quet sai the
alarm =alarm +1;
Serial.println(" Not allowed!");
lcd.setCursor(0,0);
lcd.print(F(" MA THE SAI
"));
lcd.setCursor(0,1);
lcd.print(F("
"));
delay(1000);
lcd.clear();
tone(buzzer,900);
delay(200);
noTone(buzzer);
15
delay(200);
tone(buzzer,900);
delay(200);
noTone(buzzer);
delay(500);
lcd.clear();
}
}
rfid.halt();
}
if(alarmStat == 1){
lcd.setCursor(0,0);
lcd.print(F("-System LOCKED- "));
lcd.setCursor(0,1);
lcd.print(F(" Please Wait "));
for(int i =5;i>0;i--){
tone(buzzer,1800);
lcd.setCursor(13,1);
lcd.print(i);
lcd.print(F(" "));
delay(1000);}
noTone(buzzer);
alarmStat = 0;
alarm = 0;
}
//NHẬP MẬT KHẨU
char whichKey =keypad.getKey();
if (whichKey)//NẾU CĨ PHÍM NHẤN
{
delay(100);
16
e = true;
if(whichKey !='*' && whichKey !='#')
{
//DICH PHIM
for(int i=4;i>0;i--)
{
password_nhap[i] = password_nhap[i-1]; }
password_nhap[0] = whichKey;
for (unsigned int i=0; i<5; i++)
{
lcd.setCursor(4-i+6,1);
lcd.print(password_nhap[i]);
}
}
if(whichKey == '*')
{
mode ++;
mode %=2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" NHAP MAT KHAU ");
}
if(whichKey == '#')
{
if(e == true)
{
for(int i=0; i<5; i++)
{
if(password_nhap[i] ==password[4-i]){so_dung++;}
}
17
if (so_dung == 5)
{
e =false;
setLocked(true);
so_dung = 0;
}
else
{
e=false;
setLocked(false);
so_dung =0;
}
}
}
}
}
void setLocked(int locked)
{
if(locked){
lcd.clear();
lcd.setCursor (0,0);
lcd.print(" MAT KHAU DUNG ");
lcd.setCursor (0,1);
lcd.print(" MOI VAO ");
myservo.write(140);//mo cua
delay(2000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("TU DONG DONG SAU ");
lcd.setCursor (0,1);
18
lcd.print(F("
"));
for(int i =4;i>0;i--){
lcd.setCursor (10,1);
lcd.print(i);
delay(500);
}
myservo.write(25);//dong cua
mode = 0;
for(int i=0;i<5;i++)
{password_nhap[i] = '0';}
}
else{
lcd.clear();
lcd.setCursor (0,0);
lcd.print("MAT KHAU SAI");
for(int i=0; i<5; i++)
{ password_nhap[i] = '0'; }
delay(1000);
lcd.setCursor(0,0);
lcd.print("MOI NHAP LAI MK ");
}
}
19