Professional Documents
Culture Documents
------
ĐỒ
Á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.
Hình 1.3: Thẻ RFID chủ động Hình 1.4: Thẻ RFID thụ động
1.2: Các yêu cầu cơ bản.
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
Tín hiệu cảnh báo Trên LCD/ Đèn/Còi
Bảng 1-1: Cấu trúc thiết bị.
1.2.3: Đặc tính kỹ thuật
Thông số Giá trị
Trang 8
1.3.2: Phạm vi nghiêm cứu
- Hoạt động được nghiên cứu: tập trung nghiên cứu về cách thức hoạt
động, các ưu nhược điểm, các ứng dụng thực tiễn của công nghệ
RFID.
- Thời gian nghiên cứu: nghiên cứu trong thời gian được giáo viên
hướng dẫn cho phép.
1.3.3: Giới hạn nghiên cứu
Trong đề tài “Xây dựng hệ thống điểm danh nhân sự sử dụng cảm biến
RFID” thì phần quan trong nhất là sử dụng cảm biến RFID nên giới hạn của
việc nghiên cứu dừng lại ở việc đọc được thẻ RFID, lưu thời gian đến và đi
trong bộ nhớ EEPROM và có thể truy xuất qua máy tính.
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
Trang 11
b) Nhận dạng bằng công nghệ sinh trắc học.
Hệ thống nhận dạng trên thì thuật ngữ sinh trắc học là chỉ chung cho tất cả
các thủ tục để nhận dạng con người bằng cách so sánh các đặc điểm đặc trưng
nhất của mỗi người. Thông thường như: dấu vân tay, giọng nói , khuông mặt,
võng mạc,…
Trang 12
Bộ đọc: Cùng với thẻ là bộ phận không thể thiếu trong hệ thống
RFID.
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
Quản lí nhân sự
RFID thực sự hữu ích, nhân viên chỉ cần đưa thẻ đến gần máy đọc là có
thể được ghi nhận mà không cần nhét thẻ vào hay sử dụng vân tay. Những thẻ
này còn có thể thu hồi và tái sử dụng. Công tác chấm công tại các cơ quan xí
nghiệp trở nên đơn giản hơn bao giờ hết, những báo cáo về tình trạng nhân viên
có thể dễ dàng được trích xuất khi cần.
Y tế, giáo dục.
Ở các bệnh viện vòng đeo tay RFID được mang cho các trẻ em mới sinh
và những người già mất trí. Việc quản lí hồ sơ bệnh án cũng có thể sử dụng công
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ư.
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
Trang 14
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:
Arduino UNO, Arduino MEGA, Arduino Nano, Arduino Leonardo
Ưu - nhược điểm của arduino:
Ưu điểm:
Có thể sử dụng ngay
Các chức năng đơn giản hóa
công việc
Có cộng đồng lớn
Nhược điểm
Chi phí tốn kém Hình 2.13: Aruduino
Dễ sử dụng (Vì phần cứng và phần
mềm của Arduino dễ sử dụng nên sẽ không biết những điều cơ bản
như giao tiếp, nối tiếp, ADC, I2C, vv).
Ứng dụng của arduino
Các mạch chiếu sáng tự động.
Nghành quảng cáo
Ngành giáo dục
Nhà thông minh.
Robot cứu hỏa.
Máy bay không người lái…
Lập trình cho arduino
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm
phát triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình
Arduino được gọi là Arduino IDE (Intergrated Development Environment)
Arduino Uno R3
Trang 15
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.
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.
Trang 16
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
I2C
I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là đường Bus
giao tiếp giữa các IC với nhau. Thông thường, để sử dụng màn hình LCD sẽ
phải mất rất nhiều chân trên Arduino để điều khiển. Do vậy, để đơn giản hóa
công việc, người ta đã tạo ra một loại mạch điều khiển màn hình LCD sử dụng
giao tiếp I2C. Nói một cách đơn giản là chỉ tốn ... 2 dây để điều khiển màn hình,
thay vì 8 dây như cách thông thường.
Trang 17
Hình 2.16: I2C
Ưu điểm:
DS1307
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 18
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
Trang 19
Chương 3: Chế tạo và thử nghiệm hệ thống.
3.1: Chế tạo các bộ phận cơ khí.
Trang 20
3.2: Chế tạo bộ phận điện – điện tử.
Trang 21
3.3: Xây dựng chương trình điều khiển.
3.3.1: Sơ đồ thuật toán.
Trang 22
Hình 3.24: Sơ đồ thuật toán của hệ thống.
Trang 23
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 “Không tồn tại sinh
viên”.
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 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 24
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 25
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 26
Hình 3.28: Thử nghiệm trên thực tế.
3.4.2: Đánh giá hệ thống.
Sau qua nhiều lần thử nghiệm và sửa đổi, nhóm đã hoàn thành được sản
phẩm theo các tiêu chí đã nêu ở mục 1.2.1
Dù đã hoàn thiện và đạt được các tiêu chí như trên nhóm nhận thấy hệ
thống vẫn có thể phát triển thêm nữa. Nhóm có một số hướng phát triển như sau:
Thêm thẻ admin có thể thêm, xóa các thẻ có thể điểm danh.
Thêm còi báo động khi có thẻ lạ được nhận dạng.
Tải dữ liệu lên cloud để tránh trường hợp hệ thống xảy ra lỗi.
Trang 27
Phụ lục
Code cho Arduino IDE
#include <EEPROMex.h>
#include <SPI.h>
#include <RFID.h>
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#define SS_PIN 10
#define RST_PIN 9
Trang 28
Serial.begin(9600);
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(':');
Trang 29
if(now.minute()<=9)
{
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 30
{
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 31
}
}
// 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 ");
}
Trang 32
if(k==4)
{
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;
Trang 33
giay=128+8*6;
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 36
}
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();
}
Trang 37
if(i!=4 && j!=4 && k!=4 && l!=4)
{
lcd.setCursor(4, 0);
lcd.print("sai the");
Serial.println("sai the ");
delay(2000);
lcd.clear();
}
rfid.halt();
}
}
}
Trang 38