HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA: KỸ THUẬT ĐIỆN TỬ I BÁO CÁO BÀI TẬP LỚN ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG ĐỀ TÀI: “MÔ HÌNH CỬA TỰ ĐỘNG SỬ DỤNG RFID VÀ KEYPAD” Giảng viên
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA: KỸ THUẬT ĐIỆN TỬ I
BÁO CÁO BÀI TẬP LỚN
ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG
ĐỀ TÀI:
“MÔ HÌNH CỬA TỰ ĐỘNG SỬ DỤNG RFID VÀ KEYPAD”
Giảng viên hướng dẫn: Ts.Nguyễn Ngọc Minh
Sinh viên thực hiện: Đỗ Hoàng Vũ B17DCDT214
Trang 25 Một số linh kiện khác dùng trong đề tài. 9
1 Sơ Đồ Khối Của Hệ Thống. 10
3 Mô tả hoạt động cơ bản của hệ thống. 11
4 Sơ đồ nguyên lý của hệ thống. 12
5 Các giao thức, ngôn ngữ và trình biên dịch được sử dụng. 12
6 Lưu đồ thuật toán của hệ thống. 13
7 Hình ảnh thực tế của hệ thống. 16
8 Đóng góp của mỗi thành viên. 17
LỜI NÓI ĐẦU
Trang 3không có sự giúp đỡ của Thầy, đề tài của chúng em khó có thể hoàn thành được
Đề tài của chúng em đã được hoàn thành, song do còn thiếu kinh nghiệm và kiến thức còn hạn hẹp 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 các Thầy các Cô để đề tài này có thể hoà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!
Nhóm sinh viên thực hiện
CHƯƠNG I: MỞ ĐẦU
1 Tổng quan.
Hiện nay chúng ta hội nhập trong kỉ nguyên 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 vào 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à khóa số (Keypad).
2 Cơ sở khoa học và thực tiễn.
● Cơ sở khoa học
- Dựa trên các kỹ thuật ghép nối.
● Tính thực tiễn của đề tài
- Áp dụng vào hệ thống nhà thông minh, cụ thể là vào phần hệ thống cửa
Trang 4CHƯƠ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:
Trang 5● Điện áp hoạt động 5V DC (chỉ cấp qua cổng USB)
● Tần số hoạt động 16 MHz
● Điện áp vào khuyên dùng 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 30 mA
- 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 bit).
- 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.
Trang 62 Module RFID RC522.
Hình 2: Cấu tạo của module RFID RC522
⮚ Module RFID RC522 sử dụng IC MFRC522 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 ).
● Khoảng cách hoạt động: 0~60mm (mifare1 card).
● Giao tiếp: SPI, tốc độ tối đa 10Мbps.bps.
● Tốc độ truyền dữ liệu: tối đa 10Mbit/s.
● Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire.
● Kích thước: 40mm × 60mm.
Trang 8● 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
● 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 ta cấu hình ở chế độ đọc hoặc ghi.
● LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.
5 Một số linh kiện khác dùng trong đề tài.
⮚ Module I2C cho màn hình LCD 16*2.
⮚ Động cơ Servo SG90.
⮚ Còi báo, Led, dây Jump cắm.
Trang 9CHƯƠ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: Arduino Uno.
⮚ Khối chấp hành: Servo mở khóa.
Trang 10⮚ 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ẽ được 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 đưa đến thì khối cảnh báo sẽ được thực hiện, đồng thời cả khối hiển thị cũng sẽ hoạt động để hiển thị các cảnh báo.
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 và đèn sáng màu xanh Nếu thẻ 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ẽ có còi báo động và đèn nhấp nháy báo đỏ liên tục 10 lần,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 và đèn sáng màu xanh , 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ẽ có còi báo động và đèn nhấp nháy báo đỏ liên tục 10 lần, sau đó chờ để nhập lại.
“Chú ý: Số lần sai tính cả quét thẻ và nhập mật khẩu”
⮚ Bước 2: Khóa cửa: Quẹt thẻ hoặc ấn phím # để đóng cửa.
Trang 114 Sơ đồ nguyên lý của hệ thống.
Hình 6: Sơ đồ nguyên lý của hệ thống
5 Các giao thức, ngôn ngữ và trình biên dịch được sử dụng.
⮚ Giao thức SPI: Giao thức SPI cung cấp một giao thức nối tiếp đơn giản giữa MCU và thiết bị ngoại vi Giống với các Bus nối tiếp khác như I2C, CAN hoặc USB, chuẩn giao tiếp SPI ngày càng được sử dụng rộng rãi trong lĩnh vực điện tử, đặc biệt là trong giao tiếp trao đổi dữ liệu với các ngoại vi.
⮚ Giao thức SPI: Được tích hợp trong một số loại thiết bị như:
- Các bộ chuyển đổi (ADC và DAC).
- Các loại bộ nhớ (EEPROM và FLASH).
- Các loại IC thời gian thực.
- Các loại cảm biến (nhiệt độ, áp suất…).
- Và một số loại khác như: bộ trộn tín hiệu, LCD, Graphic LCD…
Trang 12⮚ Giao thức I2C: Là giao thức truyền thông nối tiếp đồng bộ phổ biến hiện nay, được sử dụng rộng rãi trong việc kết nối nhiều IC với nhau, hay kết nối giữa IC và các ngoại vi với tốc độ thấp Giao tiếp I2C sử dụng 2 dây để kết nối là SCL (Serial Clock) và SDA (Serial Data) Trong đó dây SCL có tác dụng để đồng bộ hóa giữa các thiết bị khi truyền dữ liệu, còn SDA là dây dữ liệu truyền qua.
⮚ Ngôn ngữ được dùng là ngôn ngữ lập trình C, trình biên dịch là Arduino IDE.
6 Lưu đồ thuật toán của hệ thống.
⮚ Lưu đồ thuật toán đóng mở cửa bằng mật khẩu số và thẻ từ:
Trang 13Hình 7: Lưu đồ thuật toán đóng mở cửa bằng mật khẩu số và thẻ từ
⮚ Lưu đồ thuật toán thay đổi mật khẩu số:
Trang 14Hình 8: Lưu đồ thuật toán thay đổi mật khẩu số
⮚ Lưu đồ thuật toán thêm/ xóa thẻ:
Hình 9: Lưu đồ thuật toán thêm/ xóa thẻ
Trang 157 Hình ảnh thực tế của hệ thống.
Trang 168 Đóng góp của mỗi thành viên.
● Nguyễn Văn Vinh : Thiết kế và xây dựng mô hình phần cứng Tìm hiểu nguyên lý cách thức hoạt động của Arduino Uno R3, module RFID RC-
522, động cơ Servo, màn hình LCD sử dụng module I2C.
● Đỗ Hoàng Vũ : Vẽ mạch mô phỏng mô hình hệ thống trên Proteus Thiết
kế và xây dựng mô hình phần cứng Tìm hiểu nguyên lý cách thức hoạt động của Arduino Uno R3, module RFID RC-522, động cơ Servo, màn hình LCD sử dụng module I2C
● Đỗ Anh Tuấn : Nghiên cứu thiết kế xây dựng thuật toán cho phần module RFID, LCD sử dụng module I2C, Còi, Led để cảnh báo và tìm hiểu phần cứng của các module.
● Bùi Đình Huy : Nghiên cứu thiết kế xây dựng thuật toán mật khẩu số sử dụng Keypad 3*4, Servo, LCD sử dụng module I2C, hoàn thiện và tối ưu thuật toán cho cả đề tài và thêm tính năng thêm thẻ và xóa thẻ và tìm hiểu phần cứng của các module.
TÀI LIỆU THAM KHẢO
[1] Giáo trình kỹ thuật vi xử lý, Học viện công nghệ bưu chính viễn thông [2] Lập trình điều khiển với Arduino.
[3] Vi điều khiển và ứng dụng-Lập trình Arduino từ A-Z.
[4] https://github.com/
[5] https://arduino.vn/
[6] Arduino cho người mới bắt đầu, Phan Minh Trí (2019).
Trang 17PHỤ LỤC Phần Code Arduino IDE:
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include<Wire.h>
#include <LiquidCrystal_I2C.h> // Khai báo thư viện LCD
#include <Keypad.h> // Khai báo thư viện Keypad
const byte ROWS = 4; // Bốn hàng
const byte COLS = 3; // Ba cột
Trang 20int change =0;
if ( ! mfrc522.PICC_IsNewCardPresent()) { return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) { return;
}
countcard ++;
for (byte i = 0; i < mfrc522.uid.size; i++) { if(mfrc522.uid.uidByte[i] != code[0][i] && mfrc522.uid.uidByte[i] != code[1][i])
{match ++;}
if(mfrc522.uid.uidByte[i] != secret[i])
{change++;}
}
if(change !=0 && done ==1){
if (match == 0 && Status==0 ){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Chinh xac!");
Trang 22lcd.print("Khong chinh xac!"); delay(1000);
Trang 23if(check ==1 && countcard ==2){
for (byte i = 0; i < mfrc522.uid.size; i++) {
if(mfrc522.uid.uidByte[i] != code[0][i] ) {the1 + +;}
if(mfrc522.uid.uidByte[i] != code[1][i] ) {the2 + +;}
if(mfrc522.uid.uidByte[i] != secret[i] ) {master + +;}
}
if(the1 !=0 && the2 !=0 && master!=0){
for (byte i = 0; i < mfrc522.uid.size; i++) {
code[flag][i] = mfrc522.uid.uidByte[i];
}
flag++;
Trang 25void password(){
char key = keypad.getKey(); // Ký tự nhập vào sẽ gán cho biến Key
Trang 27if (count == 1 && nochange==1) {
if (str[0] == pass[0] && str[1] == pass[1] && str[2] == pass[2] &&
str[3] == pass[3] && Status==0) {
Trang 31else if(ktra==0 && count==1 ) {