Professional Documents
Culture Documents
(123doc) Do An Xay Dung He Thong Diem Danh Nhan Su Su Dung Cam Bien Rfid Co Code Day Du
(123doc) Do An Xay Dung He Thong Diem Danh Nhan Su Su Dung Cam Bien Rfid Co Code Day Du
(123doc) Do An Xay Dung He Thong Diem Danh Nhan Su Su Dung Cam Bien Rfid Co Code Day Du
------
ĐỒ ÁN MÔN HỌC
Trang 1
DANH MỤC ẢNH
Hình 1.1: Ứng dụng của sóng vô tuyến trong cuộc sống...........................6
Hình 1.2:Phòng thí nghiệm về công nghệ sóng vô tuyến..........................7
Hình 1.3: Thẻ RFID chủ động....................................................................8
Hình 1.4: Thẻ RFID thụ động....................................................................8
Hình 2.1: Arduino UNO R3.....................................................................11
Hình 2.2: Cảm biến RC522 & Thẻ RFID................................................12
Hình 2.3: Mã vạch của sản phẩm.............................................................12
Hình 2.4: Công nghệ quét dấu vân tay.....................................................13
Hình 2.5: Thẻ RFID.................................................................................13
Hình 2.6: Cảm biến RC522......................................................................14
Hình 2.7: Vi điều khiển PIC 18f877A......................................................15
Hình 2.8: Cấu tạo của 1 bộ lập trình PLC................................................16
Hình 2.9: Aruduino..................................................................................16
Hình 2.10: LCD 1602...............................................................................18
Hình 2.11: LCD 1602...............................................................................18
Hình 2.12: I2C..........................................................................................19
Hình 2.13: DS 1307.................................................................................19
Hình 2.14: Phần mềm fritzing..................................................................20
Hình 2.15: Mạch đo và xử lí tín hiệu.......................................................20
Hình 3.1: Gia công cơ khí phần vỏ..........................................................21
Hình 3.2: Gia công cơ khí phần vỏ..........................................................21
Hình 3.3: Nối Arduino với I2C và DS1307.............................................22
Hình 3.4: Nối dây Arduino với RC522....................................................22
Hình 3.5: Sơ đồ thuật toán của hệ thống..................................................24
Hình 3.6: Giao diện Arduino IDE............................................................26
Hình 3.7: Giao diện Arduino IDE............................................................26
Hình 3.8: Kết quả thử nghiệm trên máy tính...........................................27
Hình 3.9: Thử nghiệm trên thực tế...........................................................28
Trang 2
DANH MỤC BẢNG
Bảng 1-1: Cấu trúc thiết bị..........................................................................7
Bảng 1-2: Đặc tính kỹ thuật........................................................................8
Bảng 1-3: Nội dung báo cáo.......................................................................8
Bảng 2-1:Thông số của Arduino Uno R3..................................................17
Trang 3
LỜI MỞ ĐẦU
Ngày nay, ngành công nghệ kỹ thuật ngày càng phát triển. Các máy móc
đều được tự động hóa đáp ứng nhu cầu con người và đem lại hiệu quả cao cho
các doanh nghiệp trong nhiều lĩnh vực như công nghiệp, dịch vụ, nông nghiệp,
… Bên cánh các trang thiết bị hiện đại, nhân lực cũng là thành phần quan trong
trong việc quyết định đến sự phát triển của doanh nghiệp.
Do nhu cầu về nhân lực ngày càng cao và phức tạp nên đòi hỏi khâu quản
lí cũng cần phải được cải tiến để đáp ứng được nhu cầu đó.
Ngày nay, có nhiều cách để quản lí nhân sự cụ thể như: điểm danh trực
tiếp ( cách điểm danh này đòi hỏi phải có người giám sát và cần danh sách kèm
theo để điểm danh, người giám sát thường sẽ gọi tên và đối chiếu với danh sách
được cung cấp để kiểm tra. Hình thức này tốn khá nhiều thời gian, công sức và
thiếu tính chuyên nghiệp ); điểm danh bằng hình thức làm bài kiểm tra giấy ( là
hình thức sử dụng bài kiểm tra để xác định số lượng và quản lí được những
người có mặt để kiểm tra. Cách này khá tốn thời gian nên chỉ thường thấy được
áp dụng trong các trường học); điểm danh bằng hệ thống sinh trắc học ( là hình
thức áp dụng công nghệ sinh trắc học như: vân tay, võng mạc, …. Nhưng không
thường thấy vì nó khá tốn kém cho thiết bị nên chỉ thấy trong các công ty lớn
hay các nơi cần bảo mật thông tin tuyệt đối); điểm danh bằng công nghệ RFID
( hình thức này nhanh gọn nên khá phổ biến hiện nay được nhiều nơi áp dụng
nhưng có nhược điểm là cần phải mang theo thẻ nếu không thì không thể điểm
danh được); …
Nhận thấy được nhu cầu đó nên nhóm quyết định chọn đề tài “ Xây dựng
hệ thống điểm danh nhân sự sử dụng cảm biến RFID ” áp dụng phương pháp
điểm danh bằng thẻ RFID được sử dụng cho nhiều trường hợp khác nhau.
Để bài báo cáo được hoàn thiện hơn, nhóm chúng em hi vọng nhận được
những góp ý từ phía các thầy cô. Qua đây, chúng em cũng xin được gửi lời
cảm ơn đến các thầy cô trong Khoa Cơ khí nói chung và thầy cô trong bộ
môn Cơ điện tử nói riêng đã nhiệt tình hướng dẫn đồ án môn cho chúng em
Trang 4
Chương 1: Tổng quan về hệ thống.
1.1: Giới thiệu chung.
1.1.1: Lịch sử phát triển sóng vô tuyến
Công nghệ sóng vô tuyến đã có trong thương mại, trong một số hình thức
từ những năm 1970. Bây giờ nó là một phần trong cuộc sống hằng ngày, có thể
thấy trong những chìa khóa xe hơi, thẻ lệ phí quốc lộ và các loại thẻ truy cập an
toàn, cũng như trong môi trường mà nơi đó việc đánh nhãn bằng mã sô kẻ vạch
trên hàng hóa (yêu cầu giao tiếp vật lý hoặc nhìn thây) là không thực tế hoặc
không hiệu quả lắm.
Kỹ thuật sóng vô tuyến đã bắt đầu trong suốt thời gian chiến tranh thế giới
thứ II và được gia tăng trong vài năm qua. Trong suốt thời kỳ chiên tranh,sóng
radio được sử dụng để xác định xem máy bay đang đến thuộc đồng minh hay thù
địch. Từ đó, việc khảo sát tỉ mỉ kỹ thuật radio được đem ra nghiên cứu và phát
triển trong các hoạt động thương mại cho đến thập niên 1960 và tiên triển rõ vào
những năm 1970 bởi các công ty, học viện,và chính phủ Mỹ. Thêm nữa là các
thẻ không yêu cầu nhìn thấy mới đọc như mã vạch, đọc nhanh và ở khoảng cách
xa.Công nghệ sóng vô tuyến đang ngày càng được hoàn thiện dựa trên nền tảng
nhũng Công nghệ mới ra đời.
Hiện nay đã có những phát triển mới trong công nghệ sóng vô tuyến, tuy
nhiên, việc thực hiện thực tê trong các ngành và các quá trình sản xuất đã đưa ra
nhiều đề xuất hâp dẫn hơn.
Hình 1.1: Ứng dụng của sóng vô tuyến trong cuộc sống.
1.1.2: Công nghệ RFID.
Công nghệ RFID (Radio Frequency Identification) là công nghệ nhận
dạng đối tượng bằng sóng vô tuyên, cho phép một thiết bị đọc thông tin chứa
trong chip ở khoảng cách xa, không cần tiếp xúc trực tiếp,không thực hiện bất kì
giao tiếp vật lý nào giữa hai vật không nhìn thấy.Công nghệ này cho ta phương
Trang 5
pháp truyền, nhận dữ liệu từ một điểm đến một điểm khác. Kỹ thuật RFID sử
dụng truyền thông không dây trong dải tần sóng vô tuyến để truyền dữ liệu từ
các tag (thẻ) đến các reader (bộ đọc).
Thẻ (tag) có thể được đính kèm hoặc gắn vào đối tượng được nhận dạng
chẳng hạn sản phẩm, hộp hoặc giá kê (pallet). Bộ đọc quét dữ liệu của thẻ (tag)
và gửi thông tin đến cơ sở dữ liệu có lưu dữ liệu của thẻ (tag).
Dạng thông dụng nhất được ứng dụng hiện nay là hệ thống RFID bị động
làm việc như sau:
-Bộ đọc (Reader) truyền một tín hiệu tần số vô tuyến điện từ qua
anten của nó đến một con chip.
-Bộ đọc (Reader) nhận thông tin trở lại từ chip và gửi nó đến máy
tính điều khiển đầu đọc và xử lý thông tin lây được từ chip.
-Các chip không tiếp xúc không tích điện, chúng hoạt động bằng
cách sử dụng năng lượng nhận từ tín hiệu được gửi bởi bộ đọc(reader).
Đây là một phương pháp đáng tin cậy để phát hiện và giám sát điện tử,
một dạng mới của phương pháp truyền thông tin vô tuyến. Cũng có thể hiểu
RFID như một loại mã vạch điện tử, trong đó dữ liệu được mã hóa dưới dạng
bít, được truyền đi và nhận biết thông qua sóng vô tuyến.
Thẻ RFIDcó hai loại: tích cực và thụ động :
Các bộ thu phát tích cực có một nguồn nuôi trong khi các bộ thu phát thụ
động thu năng lượng từ chính tín hiệu sóng vô tuyến mà nó nhận được từ các
máy dò hay máy đọc. Loại thẻ thụ động được ứng dụng rộng rãi hơn cả.
Thẻ RFID thụ động hoạt động nhờ năng lượng sóng vô tuyến thu được
Trang 6
qua ăng-ten mà không cần nguồn nuôi. Điện thê AC cảm ứng này được chỉnh
luu để cung cấp nguồn cho thiết bị.
Thiết bị bắt đầu hoạt động khi điện thế DC đạt được một giá trị xác định.
Bằng việc cung cấp một tín hiệu RF mang năng lượng, một máy đọc có thể giao
tiếp từ xa với một thiết bị không có nguồn nuôi.
Mạch chuyển đổi xử lí tín hiệu ADC ngoài hoặc trong chíp
Phím chức năng nhập dữ liệu Nút bấm / Màn hình chạm
Trang 7
Trang 9
Chương 2: Xây dựng mô hình hệ thống.
2.1: Thiết kế sơ đồ khối hệ thống.
PC
Khối nguồn: Cấp nguồn cho toàn mạch.
Khối xử lý trung tâm:
Điều khiển mạch và kết nối với các linh kiện với nhau.Khối hiển thị:
Hiển thị tên đọc được từ thẻ.
Trang 10
Trang 11
Bộ đọc: Cùng với thẻ là bộ phận không thể thiếu trong hệ thống
Giá thành cao hơn mã vạch nên chưa được áp dụng rộng rãi trong tất cả các
lĩnh vực cần nhận dạng.
Thẻ dễ bị nhiễu sóng trong môi trường nước hoặc kim loại.
c) Các ứng dụng của RFID.
Trang 13
nghệ này. Ngành giáo dục cũng dần áp dụng công nghệ RFID trong công tác
quản lí các thiết bị, tài sản, vật tư.
68HC11 (8-bit),….
PLC (programmable logic controller): là thiết bị điều khiển lập trình được
(khả trình) cho phép thực hiện linh hoạt các thuật toán điều khiển logic
thông qua một ngôn ngữ lập trình. Người sử dụng có thể lập trình để thực
hiện một loạt trình tự các sự kiện. Các sự kiện này được kích hoạt bởi tác
nhân kích thích (ngõ vào) tác động vào PLC hoặc qua các hoạt động có trễ
như thời gian định thì hay các sự kiện được đếm. Ngôn ngữ lập trình của
PLC có thể là Ladder hay State Logic.
2.3.2: Lựa chọn bộ điều khiển
Arduino
Là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng
điện tử tương tác với nhau hoặc với môi trường được thuận lợi hơn.Arduino
giống như một máy tính nhỏ để người dùng có thể lập trình và thực hiện các dự
án điện tử mà không cần phải có các công cụ chuyên biệt để phục vụ việc nạp
code.
Các loại arduino thường gặp:
Trang 14
Hình 2.12: Cấu tạo của 1 bộ lập trình PLC
Arduino Uno R3
Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi
điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch
được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với
các bảng mạch mở rộng khác nhau.
Trang 15
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB
dùng bởi bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Bảng 2-4:Thông số của Arduino Uno R3
LCD 16x2
LCD 16x2 là một linh kiện được sử dụng rộng rãi trong trong các dự án
điện tử và lập trình,sử dụng để hiển thị trạng thái hoặc các thông số.
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 ta cấu hình ở chế độ đọc hoặc ghi.
LCD 16x2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng
Trang 16
Ưu điểm:
Tiết kiệm chân cho vi điều khiển.
Là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời
gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử
dụng, tình bằng giây, phút, giờ…
Trang 17
2.4: Thiết kế mạch đo và xử lý tín hiệu
2.4.1: Giới thiệu phần mềm thiết kế mạch
Fritzing là một phần mềm thiết kế mạch điện tử tự động dùng cho các kỹ
sư, sinh viên, những người yêu thích điện tử. Fritzing giúp bạn thiết kế mạch
nguyên lý, xây dựng trên test board, chạy mạch PCB.
Fritzing hổ trợ rất mạnh trong các mạch sử dụng board Arduino.
2.4.2: Thiết kế mạc đo và xử lý tín hiệu
Trang 18
Trang 19
Trang 20
3.3: Xây dựng chương trình điều khiển.
3.3.1: Sơ đồ thuật toán.
Trang 21
Hình 3.24: Sơ đồ thuật toán của hệ thống.
Trang 22
3.3.2: Giải thích sơ đồ thuật toán
Bắt đầu chương trình LCD hiển thị thời gian thực.
Khi quẹt thẻ, cảm biến RC522 nhận dạng ID của thẻ và só sánh với ID có
sẵn trong bộ nhớ:
Nếu ID được nhận dạng không có sẵn -> LCD báo “sai the”.
Nếu ID được nhận dạng có sẵn trong bộ nhớ thì đèn sẽ nháy :
Nếu ID là thẻ admin thì sẽ xóa toàn bộ bộ nhớ được lưu trong
EEPROM.
Nếu ID là thẻ thành viên thì lưu số lần quẹt thẻ (x) vào bộ nhớ:
Nếu số lần quẹt thẻ là lẻ (x%2!=0) thì sẽ lưu thời gian đến của
người dùng vào bộ nhớ EEPROM và hiển thị thông báo trên
LCD.
Nếu số lần quét thẻ là chẵn (x%2==0) thì sẽ lưu thời gian đi
của người dùng và lấy thời gian đi, đến của người dùng đó
trong EEPROM để tính toán tổng thời gian làm việc và số lần
điểm danh(x/2). Sau đó và hiển thị trên LCD.
Thời gian đi, đến và số lần điểm danh của mỗi thành viên được lưu
vào những vị trí khác nhau trong EEPROM.
Trang 23
3.3.3: Chương trình điều khiển.
Chương trình điều khiển được xây dựng trên phần mềm Arduino IDE
(Intergrated Development Environment) - là một trình soạn thảo có thể viết code
và nạp vào arduino.
Arduino ide được viết bằng ngôn ngữ lập trình Java là ứng dụng đa nền
tảng (cross-platform). Ngôn ngữ code cho các chương trình của arduino là bằng
C hoặc C++ . Bản thân arduino ide đã được tích hợp một thư viện phầm mềm
thường gọi là "wiring", từ các chương trìn "wiring" gốc sẽ giúp thực hiện thao
tác code dễ dàng hơn
Trang 24
3.4: Thử nghiệm và đánh giá hệ thống.
3.4.1: Thử nghiệm hệ thống.
Sau khi nhóm lên ý tưởng thực hiện đã tiến hành thử nghiệm và gặp một số
lỗi khi tiến hành:
-LCD 16x2 không hoạt động.
Nguyên nhân do khi hàn I2C vào Arduino bị chạm 2 chân của I2C với nhau
nên dẫn đến cháy khiến cho LCD không hoạt động. Sau khi tìm được nguyên
nhân nhóm đã thay I2C và hàn lại.
- Tính toán sai thời gian làm việc.
+Nguyên nhân: do thuật toán câu lệnh.
Khắc phục: Nhóm đã tính toán lại và điều chỉnh câu lệnh
- Khi lưu trữ vào bộ nhớ EEPROM chỉ lưu được thời gian không lưu được
ID của thẻ
+Nguyên nhân của lỗi do sai câu lệnh trong khi code.
- Hiển thị sai thời gian thực.
+Nguyên nhân do quá trình code hệ thống.
- Không đọc được nhiều thẻ cùng 1 lúc .
+Nguyên nhân: Do sai code.
+Khắc phục: sau nhiều lần chạy thử nhóm đã tim ra nguyên nhân và code
lại
Kết quả thực nghiệm hệ thống:
Trang 25
Trang 26
Trang 27
SPI.begin();
lcd.init();
lcd. backlight();
Wire.begin();
rtc.begin();
rfid.init();
if (! rtc.begin())
{
lcd.print("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning())
{
lcd.print("RTC is NOT running!");
}
}
void loop () {
// hien thi thoi gian tren cld
DateTime now = rtc.now();
lcd.setCursor(4, 1);
if(now.hour()<=9)
{
lcd.print("0");
lcd.print(now.hour());
}
else {
lcd.print(now.hour());
}
lcd.print(':');
if(now.minute()<=9)
Trang 28
{
lcd.print("0");
lcd.print(now.minute());
}
else {
lcd.print(now.minute());
}
lcd.print(':');
if(now.second()<=9)
{
lcd.print("0");
lcd.print(now.second());
}
else {
lcd.print(now.second());
}
lcd.print(" ");
lcd.setCursor(1, 0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(",");
if(now.day()<=9)
{
lcd.print("0");
lcd.print(now.day());
}
else {
lcd.print(now.day());
}
lcd.print('/');
if(now.month()<=9)
{
Trang 29
lcd.print("0");
lcd.print(now.month());
}
else {
lcd.print(now.month());
}
lcd.print('/');
if(now.year()<=9)
{
lcd.print("0");
lcd.print(now.year());
}
else {
lcd.print(now.year());
}
if (rfid.isCard()) {
if (rfid.readCardSerial()) // Nếu có thẻ
{
lcd.clear();
for (i = 0; i < 4; i++) {
Trang 30
}
// Tương tự với thẻ Slave
for (j = 0; j < 4; j++) {
if (reading_card[j] != slave[j])
{
break;
}
}
for (k = 0; k < 4; k++) {
if (reading_card[k] != hai[k])
{
break;
}
}
for (l = 0; l < 4; l++) {
if (reading_card[l] != luu[l])
{
break;
}
}
if(i==4)
{
Serial.println("hello AN ");
nam=0;thang=8;ngay=16;gio=24;phut=32;giay=40;sogio=136;s
ophut=336; sogiay= 556;solanan=1004;
lcd.setCursor(4, 0);
lcd.print("hello AN ");
lcd.setCursor(3, 1);
lcd.print("da diem danh ");
}
if(k==4)
Trang 31
{
Serial.println("hello HAI ");
lcd.setCursor(4, 0);
lcd.print("hello HAI ");
lcd.setCursor(3, 1);
lcd.print("da diem danh ");
nam=40+8;
thang=40+8*2;
ngay=40+8*3;
gio=40+8*4;
phut=40+8*5;
giay=40+8*6;
sogio=136+60;
sophut=336+60;
sogiay=556+60;
solanan=1004+4;
}
if(l==4)
{
Serial.println("hello LUU ");
lcd.setCursor(3, 1);
lcd.print("da diem danh ");
lcd.setCursor(4, 0);
lcd.print("hello LUU ");
nam=128+8;
thang=128+8*2;
ngay=128+8*3;
gio=128+8*4;
phut=128+8*5;
giay=128+8*6;
Trang 32
sogio=136+60*2;
sophut=336+60*2;
sogiay=556+60*2;
solanan=1004+8;
}
if (i == 4 || k==4 || l==4) // Nếu các phần tử của màng reading_card phù
hợp hết với mảng master thì lúc này i chạy đến 4
{
//bat den
pinMode(6,OUTPUT);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(6, LOW);
y=EEPROM.readDouble(solanan);
y=y+1;
EEPROM.writeDouble(solanan,y);
x=EEPROM.readDouble(solanan);
delay(100);
if(x%2!=0)
{
EEPROM.writeDouble(nam, now.year());
EEPROM.writeDouble(thang, now.month());
EEPROM.writeDouble(ngay, now.day());
EEPROM.writeDouble(gio, now.hour());
EEPROM.writeDouble(phut, now.minute());
EEPROM.writeDouble(giay, now.second());
}
if(x%2==0)
{
// tinh toan thoi gian lam viec
EEPROM.writeDouble(nam+4, now.year());
EEPROM.writeDouble(thang+4, now.month());
EEPROM.writeDouble(ngay+4, now.day());
EEPROM.writeDouble(gio+4, now.hour());
EEPROM.writeDouble(phut+4, now.minute());
EEPROM.writeDouble(giay+4, now.second());
c=EEPROM.readDouble(ngay+4) - EEPROM.readDouble(ngay);
d=EEPROM.readDouble(gio+4) - EEPROM.readDouble(gio);
e =EEPROM.readDouble(phut+4) - EEPROM.readDouble(phut);
//vd tg den: 17h30p, tg di: 18h45p
if(e<0)//vd tg den: 17h30p, tg di: 18h10p
{
f=(60-EEPROM.readDouble(phut))+ EEPROM.readDouble(phut+4) ;
d=d-1;
}
f=EEPROM.readDouble(giay+4) - EEPROM.readDouble(giay);
//vd tg den: 17h30p 40s, tg di : 17h45p50s
Serial.print(EEPROM.readDouble(sogio),0);Serial.print("h:");
Serial.print( EEPROM.readDouble(sophut),0);Serial.print("ph:");
Serial.print( EEPROM.readDouble(sogiay),0);Serial.println("s");
Serial.print("so lan lam viec la:");
Serial.print(EEPROM.readDouble(solanan)/2,0);
delay(1000);
Serial.println(" ");
}
Trang 35
sogio=sogio+4;sophut=sophut+4;sogiay=sogiay+4;
delay(2000);
lcd.clear();
}
if (j == 4)
{
Serial.println("hello admin");
lcd.setCursor(1, 0);
lcd.print(" hello admin");
lcd.setCursor(0, 1);
lcd.print(" batdauxoabonho");
delay(500);
lcd.clear();
//bat den
pinMode(7,OUTPUT);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(7, LOW);
// xóa các giá trị tại các ô nhớ EEPROM từ 0-1023 (có 1024 ô nhớ)
for (int i = 0; i < 1024; i++) {
EEPROM.write(i, 0);
delay(5);
}//Phải có delay tối thiểu 5 mili giây giữa mối lần write
lcd.setCursor(2, 0);
lcd.print("daxoabonho");
delay(500);
lcd.clear();
}
if(i!=4 && j!=4 && k!=4 && l!=4)
Trang 36
{
lcd.setCursor(4, 0);
lcd.print("sai the");
Serial.println("sai the ");
delay(2000);
lcd.clear();
}
rfid.halt();
}
}
}
Trang 37