Quản lý điểm danh sinh viên là một phần quan trọng trong công tác giảng dạy. Nó giúp thầy cô có thể nắm rõ về tình hình học tập của sinh viên. Vì vậy, việc thiết kế một hệ thống quản lý sinh viên là rất quan trọng trong công tác giảng dạy tại đại học. Đồ án này đưa ra cái nhìn tổng quan về một hệ thống điểm danh quản lý sinh viên, qua đó thiết kế lên phần mềm quản lý. Đồ án cũng tập trung nguyên cứu về công nghệ RFID để ứng dụng nó vào hệ thống quản lý. Trong đồ án này sử dụng những công cụ như Microsoft Visual Studio, SQL Sever, Arduino IDE …để xây dựng lên hệ một về thống hoàn chỉnh với đầy đủ chức năng có thể áp dụng vào thực tế.
GIỚI THIỆU HỆ THỐNG QUẢN LÝ ĐIỂM DANH SINH VIÊN
Hệ thống quản lý điểm danh sinh viên sử dụng ESP32, RFID RC522 và PHPMyAdmin qua web server là một giải pháp tích hợp giữa thiết bị nhúng ESP32, đầu đọc thẻ RFID RC522 và môi trường phần mềm PHPMyAdmin ESP32 được lập trình để kết nối với RFID RC522 để đọc thông tin từ thẻ RFID của sinh viên Dữ liệu này sau đó được truyền đến một web server thông qua thư viện ESPAsyncWebServer. Trên phía server, PHP được sử dụng để xử lý dữ liệu từ ESP32 và tương tác với cơ sở dữ liệu MySQL được quản lý bằng PHPMyAdmin Cơ sở dữ liệu chứa thông tin về sinh viên cũng như dữ liệu điểm danh Các script PHP được tạo để thực hiện các thao tác như thêm, sửa, xóa và truy vấn dữ liệu trong cơ sở dữ liệu.
Giao tiếp giữa ESP32 và server được xây dựng trên cơ sở giao thức HTTP hoặc HTTPS để đảm bảo an toàn dữ liệu Các biện pháp bảo mật, như xác thực và ủy quyền, được áp dụng để đảm bảo chỉ người dùng có quyền mới có thể truy cập vào hệ thống.
Ngoài ra, hệ thống cũng cung cấp các tính năng hiển thị thông tin và điểm danh.Các trang web hoặc ứng dụng được tạo để liên tục cập nhật thông tin từ cơ sở dữ liệu,cung cấp một giao diện người dùng thuận tiện và thông tin chi tiết về tình trạng điểm danh.
MỤC TIÊU ĐỀ TÀI
Tìm hiểu về ESP 32 cùng các ngoại vi giao tiếp, song song đó là tìm hiểu về RFID và các ngoại vi khác, kết hợp cùng với sự điều khiển của vi xử lí, tương tác từ màn hình LCD 16x2 nhằm tạo ra một thiết bị có khả năng điểm danh bằng hình thức: quét thẻ.
Quản lý thông tin sinh viên một cách hiệu quả Cơ sở dữ liệu MySQL kết hợp với PHPMyAdmin cung cấp một nền tảng mạnh mẽ để lưu trữ, quản lý và cập nhật thông tin liên quan đến sinh viên Hệ thống này không chỉ giúp theo dõi quá trình điểm danh mà còn cung cấp thông tin chi tiết về học viên, tạo điều kiện thuận lợi cho quản lý sinh viên.
GIỚI HẠN ĐỀ TÀI
-Sử dụng 1 module RFID RC522 để tiến hành điểm danh.
-Giao tiếp giữa module RFID RC522 với bộ vi điều khiển ESP 32.
-Giao diện được xây dựng và xử lý trên nền tảng web local.
-Tiến hành đưa dữ liệu lên server để dễ dàng quản lý từ xa.
CÁC PHÂN MỀM HỖ TRỢ
- Visual studio code: Lập trình tạo giao diện web và kết nối sever.
- Arduino IDE: Lập trình cho ESP32.
CƠ SỞ LÝ THUYẾT
TÌM HIỂU MODULE RFID
RFID – Radio Frequency Identification công nghệ truyền nhận dữ liệu từ chip ở khoảng cách xa mà không thông qua tiếp xúc vật lý trực tiếp nào.
Các thiết bị thu phát thông qua sóng vô tuyến cùng tần số với nhau Các tần số thường được dùng là 125Khz hoặc 900Mhz.
Hình 1 Nguyên lý làm việc RFID
Nguyên lý làm việc của hệ thống RFID sử dụng thông dụng ngày nay:
Bộ đọc (Reader) phát 1 tín hiệu thông qua anten đến một con chip sau đó bộ đọc nhận thông tin lại từ chip rồi sẽ gửi nó đến trạm chủ để điều khiển và xử lý dữ liệu nhận được
Các chip không tiếp xúc vật lý với nhau, hoạt động bằng sử dụng năng lượng nhận từ tín hiệu của bộ đọc.
- Thẻ Tag tích hợp Chip và Anten (Transponder)
- Bộ đọc nhận dữ liệu từ các thẻ (Reader)
- Thiết bị liên kết giữa thẻ và bộ đọc (Antenna)
- Trạm thu nhận, xử lý, thống kê, điều khiển (Server)
MODULE ESP32
ESP-WROOM-32 là một module WiFi và Bluetooth tích hợp, dựa trên vi điều khiển mạnh mẽ ESP32 của Espressif Systems Được thiết kế nhằm hỗ trợ các ứng dụng IoT (Internet of Things), ESP-WROOM-32 cung cấp một giải pháp linh hoạt và hiệu quả cho việc kết nối thiết bị với mạng không dây và giao tiếp không dây.
Vi điều khiển ESP32 trong ESP-WROOM-32 được xây dựng với kiến trúc hai nhân Tensilica LX6, cho phép nó chạy ở tốc độ cao lên đến 240 MHz Điều này đảm bảo hiệu suất đủ mạnh mẽ để xử lý các nhiệm vụ đa nhiệm và xử lý dữ liệu phức tạp trong ứng dụng IoT.
ESP-WROOM-32 hỗ trợ kết nối WiFi băng tần kép ở tần số 2.4 GHz, cũng như Bluetooth Classic và Bluetooth Low Energy (BLE) Điều này giúp nó tương thích với nhiều ứng dụng khác nhau, từ việc truyền dữ liệu không dây đến điều khiển thiết bị từ xa.
Module này thường được sử dụng trong nhiều dự án IoT và các ứng dụng nhúng khác, nhờ vào khả năng linh hoạt, hiệu suất cao và khả năng tích hợp các giao tiếp không dây Với ESP-WROOM-32, những dự án IoT có thể được triển khai một cách hiệu quả và dễ dàng tích hợp vào các hệ thống thông tin và mạng lưới liên kết.
- Như một vi điều khiển với kiến trúc đa nhân, cung cấp khả năng xử lý đa nhiệm và hiệu suất cao.
- Kết nối không dây qua wifi.
- Giao tiếp ngoại vi và GPIO.
- Có khả năng lưu trữ và RAM đủ lớn.
PHẦN MỀM XAMPP
XAMPP là một phần mềm cho phép giả lập môi trường server hosting ngay trên máy tính của ta, cho phép ta chạy demo website mà không cần phải mua hosting hayVPS Chính vì vậy, XAMPP hay được phục vụ cho hoạt động học tập giảng dạy thực hành và phát triển web.
Hình 2 Logo phần mềm XAMPP
XAMPP được viết tắt của X + Apache + MySQL + PHP + Perl vì nó được tích hợp sẵn Apache, MySQL, PHP, FTP server, Mail Server Còn X thể hiện cho sự đa nền tảng của XAMPP vì nó có thể dùng được cho 4 hệ điều hành khác nhau: Windows, MacOS, Linux và Solaris. Đặc điểm của XAMPP: Ưu điểm
- Có thể chạy được linh hoạt được trên mọi hệ điều hành: Cross-platform, Windows, MacOS, Linux.
- Có cấu hình đơn giản nhưng mang đến nhiều chức năng hữu ích như: Lập Server giả định, lập Mail Server giả định và hỗ trợ SSL trên localhost.
- Tạo mã nguồn mở: Giao diện quản lý dễ dàng và tiện lợi giúp người dùng luôn chủ động được trong chế độ khởi động lại hay bật/ tắt đối với máy chủ theo thời gian phù hợp nhất.
- Do cấu hình khá đơn giản cho nên Xampp hoàn toàn không nhận được sự hỗ trợ về cấu hình Module, đồng thời cũng không có cả MySQL.
- Dung lượng tương đối nặng (141Mb).
- Không có nhiều phiên bản cho từng thành phần của server như PHP, Apache mà phải cài đặt riêng.
- Tích hợp được nhiều tính năng với các thành phần quan trọng như: Apache, PHP, MySql Vì thế, người dùng không cần cài đặt từng phần trên riêng lẻ mà chỉ cần cài XAMPP là có 1 web server hoàn chỉnh.
XAMPP được dùng để xây dựng và phát triển website theo ngôn ngữ PHP Ngoài ra, XAMPP còn được sử dụng để phát triển, nghiên cứu website thông qua localhost của máy tính cá nhân, biến máy tính cá nhân thành máy chủ, dùng chính ổ cứng của máy tính để làm nơi lưu trữ cho máy chủ trang web.
Tuy nhiên, đối với các trang web kinh doanh, các trang web cần vận hành liên tục thì việc sử dụng XAMPP để tạo lập không khả thi Do localhost sử dụng máy tính để làm máy chủ, nên việc duy trì máy chủ sẽ rất khó khăn và không đảm bảo tốc độ lâu dài, thay vào đó các chủ trang web sẽ thuê server hosting Chung quy lại XAMPP dùng chủ yếu để học tập, nâng cấp và thử nghiệm web. Để sử dụng các tệp trong XAMPP:
Hình 3 Giao diện chính của XAMMP
Bước 1: Khởi chạy XAMPP, khi ứng dụng được mở, ta sẽ nhìn thấy mục Control Panel
Trong mục này, ta có thể kiểm soát các phần riêng lẻ của máy chủ Ta có thể bắt đầu hoặc dừng các module riêng lẻ bằng cách nhấp vào các nút bên dưới “Actions”.
Bảng điều khiển bao gồm nhiều các nút khác nhau như config, netstat, shell, explorer, services, help, quit
Config: Cho phép ta định cấu hình XAMPP cũng như các thành phần riêng lẻ Netstat: Giúp ta hiển thị tất cả quá trình đang chạy trên hệ thống cục bộ
Shell: Cho phép mở shell UNIX
Service: Giúp hiển thị các dịch vụ đang chạy ở backend
Help: Cung cấp cho người sử dụng Xampp các cộng đồng hỗ trợ
Bước 2: Nhấn vào nút Start trên thanh Start trong hàng Apache Thao tác này sẽ giúp ta khởi chạy máy chủ Apache Nhãn Apache trong cột Module sẽ chuyển sang màu xanh lục và ta sẽ thấy một thông báo trong nhật ký ở cuối Control Panel, thông báo cho ta biết rằng máy chủ đang chạy.
Bước 3: Mở trình duyệt của ta, nhập localhost vào thanh địa chỉ
Bước 4: Ta sẽ thấy tùy chọn “Local host - Welcome to XAMPP” ngay bên dưới thanh địa chỉ Nhấn vào đó.
Bước 5: Ta sẽ chuyển hướng đến localhost/dashboard Thay thế phần bảng điều khiển bằng tên của thư mục chứa tệp PHP của ta.
Bước 6: Ta sẽ thấy danh sách các tệp trong thư mục đã nói, nhấp chọn vào tệpPHP của ta.
VISUAL STUDIO CODE
Visual Studio Code, thường được viết tắt là VS Code, là một trình soạn thảo mã nguồn mở miễn phí do Microsoft phát triển Đây là công cụ phát triển mã nguồn rất phổ biến trong cộng đồng phát triển phần mềm và có sẵn cho các hệ điều hành Windows, macOS và Linux.
VS Code thường được sử dụng cho việc phát triển ứng dụng web, ứng dụng di động, phát triển back-end, và nhiều tác vụ phát triển mã nguồn khác Điều quan trọng là nó là một công cụ linh hoạt có khả năng tuỳ chỉnh cao, phù hợp với nhiều dự án phát triển khác nhau.
Hình 5 Logo phần mềm Visual studio code
Visual Studio Code là một trình soạn thảo mã nguồn mã nguồn mở phổ biến và mạnh mẽ Một số tính năng nổi bật của VS Code bao gồm:
1 Hỗ trợ đa ngôn ngữ
VS Code có khả năng làm việc với nhiều loại ngôn ngữ lập trình khác nhau, chẳng hạn như JavaScript, TypeScript, Python, C#, Java, Go, Ruby và nhiều hơn nữa.
Visual Studio Code hỗ trợ mạnh mẽ cho quá trình gỡ lỗi với các tính năng như Breakpoints, kiểm tra biến, theo dõi code từng bước, và bảng điều khiển gỡ lỗi Các công cụ và tính năng này giúp ta tìm và sửa lỗi trong mã nguồn của mình một cách dễ dàng và hiệu quả.
Với tích hợp Git sẵn có trong VS Code, ta có thể thực hiện các nhiệm vụ quản lý phiên bản trực tiếp trong trình soạn thảo Ta có thể thực hiện các thao tác Git như commit, push, pull và xem lịch sử mã nguồn một cách dễ dàng.
4 Tự động hoàn thành mã (IntelliSense)
VS Code cung cấp tính năng IntelliSense giúp tự động hoàn thành mã nguồn dựa trên ngữ cảnh Nó hiển thị gợi ý về biến, phương thức và các thành phần khác của mã nguồn của ta, giúp tăng tốc quá trình viết mã.
5 Hỗ trợ đa nền tảng
Visual Studio Code khả dụng trên Windows, macOS và Linux, cho phép người dùng làm việc trên nhiều nền tảng khác nhau và đồng bộ hóa cài đặt và tiện ích mở rộng giữa các máy tính.
Terminal tích hợp cho phép người dùng dễ dàng chuyển đổi giữa việc chỉnh sửa mã và thực hiện các lệnh dòng lệnh mà không cần mở cửa sổ dòng lệnh riêng biệt. Điều này giúp tiết kiệm thời gian và tăng hiệu suất làm việc cho nhà phát triển.
Visual Studio Code hỗ trợ hầu hết các ngôn ngữ lập trình Nhưng nếu người dùng sử dụng một ngôn ngữ không thuộc danh sách ngôn ngữ được hỗ trợ, họ vẫn có thể tải và sử dụng tiện ích mở rộng Về mặt hiệu suất, tiện ích mở rộng không làm chậm trình soạn thảo vì nó chạy dưới dạng một tiến trình riêng biệt.
Hình 6 Giao diện chính của Visual studio code
Cấu trúc cấp bậc (Hierarchy Structure) trong Visual Studio Code cho phép ta tổ chức mã nguồn của dự án một cách rõ ràng bằng cách sắp xếp các tệp và thư mục. Điều này giúp ta duyệt và tìm kiếm tệp một cách hiệu quả hơn, đặc biệt là đối với các dự án lớn và phức tạp.
Ta có thể mở đồng thời nhiều dự án chứa nhiều tệp/thư mục Các dự án/thư mục này có thể liên quan hoặc không liên quan đến nhau.
ARDUINO IDE
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino. Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng mà ngay cả một người bình thường không có kiến thức kỹ thuật cũng có thể làm được.
Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường.
Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, ArduinoLeonardo, Arduino Micro và nhiều module khác.
Hình 7 Phần mềm Arduino IDE
Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã.
Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo.
Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino.
Môi trường này hỗ trợ cả ngôn ngữ C và C ++.
THIẾT KẾ PHẦN CỨNG
TỔNG QUAN VỀ HỆ THỐNG
3.1.1 Sơ đồ khối hệ thống
Theo yêu cầu của đề tài nhóm tiến hành thiết kế sơ đồ khối của mạch hệ thống điểm danh Sau đây là sơ đồ khối của mạch hệ thống điểm danh :
Hình 8 Sơ đồ khối hệ thống
Cấp nguồn 5V cho bộ điều khiển trung tâm ESP32 và các ngoại vi.
Khối nguồn: Cung cấp nguồn cho toàn bộ hệ thống hoạt động ổn định
Khối xử lý trung tâm: Sử dụng ESP 32 làm bộ xử lí trung tâm, giao tiếp với mạng Wifi, xử lí tín hiệu từ khối đọc rồi gửi dữ liệu đến cơ sở dữ liệu để hiển thị lên web.
Khối đọc: đọc các thông tin từ thẻ từ sau đó chuyển dữ liệu đến khối xử lý trung tâm.
Cơ sở dữ liệu: Nhận dữ liệu được gởi từ ESP32 để tiến hành lưu trữ và là nơi khối hiển thị truy cập vào để lấy dữ liệu hiển thị.
Khối hiển thị: truy xuất dữ liệu từ cơ sở dữ liệu để hiển thị thông tin sinh viên, thực hiện thao tác đăng ký thông tin để gửi dữ liệu vào cơ sở dữ liệu.
Cấp nguồn 5V cho bộ điều khiển trung tâm ESP32 cùng các thiết bị ngoại vi sử dụng nguồn 5V.
Thiết bị quẹt thẻ điểm danh RFID sử dụng nguồn 3,3V hoạt động bằng cách quẹt thẻ Tag Sau khi giao tiếp, bộ điều khiển trung tâm ESP32 sẽ nhận dữ liệu thông tin từ thẻ và truyền tiếp thông tin lên cơ sở dữ liệu Khối hiển thị sẽ truy xuất dữ liệu từ cơ sở dữ liệu để hiển thị thông tin sinh viên cùng với đó sẽ thực hiện thao tác đăng ký thông tin để gửi dữ liệu vào cơ sở dữ liệu.
LCD được dùng để hiển thị thông báo.
CHỌN LINH KIỆN
CPU: Xtensa Dual-Core LX6 microprocessor.
Tốc độ xử lý từ 160 MHz đến 240 MHz
Tốc độ xung nhịp từ 40 Mhz ÷ 80 Mhz (có thể tùy chỉnh khi lập trình)
RAM: 520 Kb SRAM liền chip Trong đó 8 Kb RAM RTC tốc độ cao –
8 Kb RAM RTC tốc độ thấp (dùng ở chế độ DeepSleep).
Hỗ trợ 2 giao tiếp không dây
Bluetooth: v4.2 BR/EDR và BLE
Hỗ trợ tất cả các loại giao tiếp
Bộ chuyển đổi số sang tương tự (DAC) 8 bit
18 kênh bộ chuyển đổi tương tự sang số (ADC) 12 bit.
cổng giao tiếp SPI (1 cổng cho chip FLASH)
10 kênh ngõ ra điều chế độ rộng xung (PWM)
SD card/SDIO/MMC host
Ethernet MAC hỗ trợ chuẩn: DMA và IEEE 1588
Hỗ trợ tất cả các tính năng bảo mật chuẩn IEEE 802.11, bao gồm WFA, WPA/WPA2 và WAPI
Khởi động an toàn (Secure boot)
Mã hóa flash (Flash encryption)
1024-bit OTP, lên đến 768-bit cho khách hàng
Tăng tốc phần cứng mật mã: AES, SHA-2, RSA, mật mã đường cong elliptic (ECC – elliptic curve cryptography), bộ tạo số ngẫu nhiên (RNG – random number generator)
Tiêu thụ điện năng dưới 200 mA
Nút khởi động: Nút này được sử dụng để tải bản phác thảo / chương trình mới lên vi điều khiển ESP32 Trong quá trình tải lên, chúng ta phải giữ nút khởi động. Micro USB: Bo mạch được cấp nguồn bằng cổng Micro USB tích hợp Cổng này cũng có thể được sử dụng để kết nối bo mạch với máy tính để tải lên các chương trình.
Nút RESET: Nút này chỉ đơn giản được sử dụng để đặt lại bảng.
Cảm biến cảm ứng: ESP32 đi kèm với 10 cảm biến cảm ứng điện dung được kết nối với chân GPIO-
Các chân GPIO này có thể cảm nhận được các biến thể nếu chúng chạm vào bất cứ thứ gì dẫn điện, như da người Vì vậy, khi chúng ta chạm vào chân GPIO bằng ngón tay, nó sẽ tạo ra biến thể này được đọc bởi cảm biến Chúng ta có thể sử dụng chức năng touchRead (GPIO) để đọc giá trị từ cảm biến cảm ứng.
Cảm biến hiệu ứng Hall: Bo mạch đi kèm với một cảm biến tích hợp khác, cảm biến hiệu ứng Hall Cảm biến hiệu ứng Hall được sử dụng để đo sự thay đổi từ trường trong môi trường xung quanh.
Bảng phát triển ESP32 SƠ ĐỒ CHÂN:
Hình 10 Sơ đồ chân của esp32
Bo mạch đi kèm với hai chân nguồn - chân 5V và chân 3.3V Chân 5V có thể được sử dụng để cung cấp trực tiếp ESP32 và các thiết bị ngoại vi của nó nếu ta có nguồn điện áp 5V được điều chỉnh Trong khi chân 3.3V là đầu ra của bộ điều chỉnh điện áp (CP2102), nó có thể được sử dụng để cấp nguồn cho các thành phần bên ngoài.
GND: Chân nối đất của ESP32 được sử dụng để hoàn thành mạch.
Kênh ADC (Tương tự sang kỹ thuật số):
Bo mạch có 18 ADC SAR 12 bit và hỗ trợ các phép đo trên 15 kênh (chân hỗ trợ tương tự ADC1_CH0 (GPIO 36)
Kênh DAC (Digital to Analog):
Bo mạch đi kèm với hai kênh DAC 8 bit có thể được sử dụng để chuyển đổi tín hiệu kỹ thuật số thành điện áp tương tự.
Chân UART (Máy thu-phát không đồng bộ đa năng):
Bảng phát triển ESP32 có ba giao diện UART, - UART0, UART1 và UART2, cung cấp giao tiếp không đồng bộ giữa các thiết bị hỗ trợ UART lên đến tốc độ 5 Mbps.
Giao diện UART trong bảng phát triển cũng bao gồm hai chân bổ sung cho phép người nhận và người gửi cảnh báo lẫn nhau về trạng thái hiện tại của họ - chân tín hiệu CTS và RTS.
Bo mạch có ba SPI (SPI, HSPI và VSPI) ở chế độ chủ và tớ Các chân này được sử dụng để kết nối với các thiết bị hỗ trợ SPI bên ngoài.
Bo mạch đi kèm với 25 chân hỗ trợ PWM (Gần như tất cả các chân GPIO) Đầu ra PWM có thể được sử dụng để điều khiển động cơ kỹ thuật số và đèn LED.
EN hoặc Bật mã pin:
EN là viết tắt của Enable; chân này là chân kích hoạt bộ điều chỉnh 3.3 V Khi điều này được kéo THẤP, nó sẽ đặt lại vi điều khiển.
Chú ý: Bảng dev được thảo luận ở trên có 38 chân Hai biến thể phổ biến khác chỉ có 30 hoặc 36 chân lộ ra ngoài (có sẵn cho kết nối bên ngoài), mặc dù chúng có cùng chip WROOM-32 được cài đặt.
Sơ đồ của ESP32 Board:
Hình 11.Sơ đồ nguyên lý ESP32.
3.2.2 Màn hình LCD 16x2 tích hợp I2C
Mô tả: Đây là LCD ký tự 16x2 chữ trắng nền xanh dương có IC điều khiển HD44780Super Twisted Nematic (STN) LCD Giao tiếp đơn giản với 4 bit hoặc 8 bit Giao tiếp dễ dàng với các loại vi điều khiển và board Arduino, ATMEL AVR hoặc PIC.
Hình 12 Màn hình LCD16x2 tích hợp I2C
Hình 13 Sơ đồ nguyên lý LCD tích hợp I2C. Đặc điểm màn LCD:
Thông số kỹ thuật: Điện áp hoạt động là 5 V.
Chữ trắng, nền xanh dương
Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.
Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
Có thể được điều khiển với 6 dây tín hiệu
LCD 16×2 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 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.Đặc điểm Module I2C Arduino:
LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển
Module I2C LCD ra đời và giải quyết vấn để này cho bạn.
Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (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.
Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4,
…) và tương thích với hầu hết các vi điều khiển hiện nay.
Thông số kĩ thuật: Điện áp hoạt động: 2.5-6V DC.
Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
Giao tiếp: I2C. Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2). Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
Module còi buzzer có 3 chân giao tiếp ngoại vi GNP, I/O, VCC rất dễ sử dụng.Buzzer kêu liên tục khi cấp điện áp 3-5V.
Điện áp sử dụng: 3.3~5VDC
Tín hiệu kích: TLL mức thấp low 0VDC
3.2.4 Module RC522 mạch đọc ghi IC RFID
RC522 Mạch Đọc Ghi IC RFID hoạt động với tần số 13.56mhz không tiếp xúc, được thiết kế bởi NXP sử dụng chip tiêu thụ điện năng thấp và kích thước nhỏ gọn, là sự lựa chọn tốt nhất trong sự phát triển các ứng dụng thông minh như máy đo và thiết bị cầm tay di động
Mô-đun này có thể lắp trực tiếp trong các thiết bị cầm tay để sản xuất hàng loạt Mô-đun sử dụng nguồn điện 3.3V và có thể giao tiếp trực tiếp với bất kỳ bo mạch CPU nào bằng cách kết nối thông qua giao tiếp SPI, khoảng cách đọc tốt.
Hình 17 RC522 Mạch đọc ghi IC RFID
RFID RC522 sử dụng cảm ứng điện từ để kích hoạt thẻ và có tần số 13,56MHz để truyền dữ liệu.
Thẻ RFID có thể sử dụng được với cả hai mặt của module khoảng cách tối đa 5cm.
Tần số hoạt động: 13.56MHz
Hỗ trợ các loại card: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire
Nhiệt độ hoạt động: -20~80oC
Nhiệt độ lưu trữ: -40~85oC
Tốc độ truyền data: Max 10Mbit/s
Dòng điện cung cấp esp32: 50 mA.
Dòng điện cung cấp LCD: 100 mA.
Dòng điện cung cấp buzzer: 20 mA.
Dòng điện cung cấp rfid_rc522: 30 mA.
=> Dòng điện tiêu thụ toàn mạch là ~ 2 A.
THI CÔNG HỆ THỐNG
THIẾT KẾ MẠCH
Sơ đồ mạch nguyên lý:
Hình 19 Sơ đồ nguyên lý mạch
Thiết kế bằng phần mềm protues:
TẠO SERVER
Vào folder cài đặt XAMPP thường là từ ổ C:/xampp, tìm đến và chọn xampp- control.exe
Hình 23 Giao diện xampp chưa khởi động
Nhấn start để khởi động mấy chủ ảo và phần mềm quản lý dữ liệu MySQL
Hình 24 Giao diện xampp khởi động
Truy cập dịch vụ web vào server ảo
Bạn dùng trình duyệt (chrome, firefox ) và nhập một trong hai: Truy cập IP http://127.0.0.1/, hoặc đơn giản gõ http://localhost/, Nếu thấy trang nội dung tương tự hình bên dưới, là bạn đã kết nối thành công tới server ảo.
Hình 25 Giao diện quản lý dữ liệu.
Sau đó ta tạo thêm một Structure (một cơ sở dữ liệu)
Tiếp theo ta tạo thêm một table bằng cách nhấn vào New.
Tiếp theo, ta sẽ đặt tên cho table
Và tên các trường dữ liệu, tên, kiểu dữ liệu và các đặc tính khác ta muốn quản lý
Trong đó ta có thể tạo ra nhiều bảng dữ liệu với nhiều trường khác nhau để quản lý, yêu cầu mỗi bảng cần phải có một khóa chính để duy nhất định danh mỗi bản ghi trong bảng Khóa chính đảm bảo rằng mỗi bản ghi trong bảng có một giá trị duy nhất không trùng lặp Điều này giúp cơ sở dữ liệu xác định mỗi bản ghi một cách duy nhất và tránh được sự trùng lặp không mong muốn.
Với giao diện thân thiện, phpMyAdmin là một công cụ quản lý cơ sở dữ liệu MySQL thông dụng và mạnh mẽ và nhiều tính năng.
Quản lý Cơ Sở Dữ Liệu:
Tạo, sửa đổi và xóa cơ sở dữ liệu.
Tạo bảng mới, sửa đổi cấu trúc bảng, thêm/xóa cột.
Xem và chỉnh sửa dữ liệu trong bảng.
Tạo và quản lý người dùng MySQL và các quyền truy cập của họ.
Quản lý các mật khẩu và quyền hạn.
Thực Hiện Câu Lệnh SQL:
Chạy các câu lệnh SQL trực tiếp từ giao diện.
Hỗ trợ nhập và thực thi các tập tin SQL.
Xem và Sao Lưu Dữ Liệu:
Xem cấu trúc của cơ sở dữ liệu, bảng, chỉ số, khóa ngoại.
Sao lưu và khôi phục cơ sở dữ liệu hoặc bảng.
Tìm Kiếm và Thay Thế Dữ Liệu:
Tìm kiếm dữ liệu trong bảng.
Thực hiện thay thế dữ liệu dựa trên điều kiện tìm kiếm.
Quản Lý Chỉ Số và Khóa Ngoại:
Tạo và quản lý chỉ số cho tăng tốc truy xuất dữ liệu.
Quản lý các ràng buộc khóa ngoại giữa các bảng.
Hiển Thị Thống Kê và Biểu Đồ:
Thông kê về sử dụng cơ sở dữ liệu.
Hiển thị biểu đồ và thông tin về cấu trúc bảng.
Nhập và Xuất Dữ Liệu:
Nhập dữ liệu từ các nguồn khác nhau.
Xuất dữ liệu ra các định dạng như SQL, CSV, XML
Khi đã tạo xong table, thì các dữ liệu này sẽ được lưu vào Mysql từ web sever.Tóm lại, MySQL chỉ dùng để lưu trữ các giá trị nhận từ web sever.
LƯU ĐỒ GIẢI THUẬT
Lưu đồ giải thuật chương trình chính
Hình 26 Lưu đồ giải thuật chương trình chính
Giải thích lưu đồ trên hình 26:
Đầu tiên ta sẽ khởi tạo các thư viện, biến, hàm cần sử dụng để phục vụ cho chương trình.
Khởi tạo giao thức SPI, LCD và kết nối ESP32 với wifi
Thực hiện việc kiểm tra có thẻ quét ra hay không Nếu có đọc ID của thẻ rồi gửi dữ liệu lên webserve Nếu không thì sẽ quay lại việc kiểm tra có thẻ hay không và LCD hiển thị trạng thái “MOI BAN QUET” để chờ thẻ quét qua.
Nếu quét thẻ thành công sẽ hiển thị trên LCD mã ID của thẻ và báo quét thành công, còi cũng sẽ kêu
Lưu đồ giải thuật hiển thị và đăng ký thông tin sinh viên trên web
Hình 27 Lưu đồ giải thuật chương trình lưu dữ liệu sinh viên lên webserver
Giải thích lưu đồ trên hình 27:
Đầu tiên khởi động phầm mềm Xampp và cơ sở dữ liệu SQL để truy cập vào nơi chứa dữ liệu và truy cập vào web.
Tiếp đến kiểm tra dữ liệu sinh viên đã có trên hệ thống chưa ở mục Student List
Nếu chọn chỉnh sửa thông tin thì web chuyển hướng đến trang chỉnh sửa Khi sửa xong sẽ lưu dữ liệu vào cơ sở dữ liệu MySQL và cập nhật thông tin đã sửa để hiện thị trên trang Student List.
Tương tự nếu chọn xóa thì sẽ xóa dữ liệu sinh viên trong cơ sở dữ liệu rồi trang sẽ cập nhật danh sách mới sau khi đã xóa.
LẬP TRÌNH CODE
Khởi động phần mềm Visual studio code. Đầu tiên ta sẽ tạo một folder với tên NODEMCU_RC522_MYSQL, tên folder này rất quan trọng cần chú ý để có thể truy cập chính xác vào sever nội bộ.
Tiếp theo tạo một file database bằng ngôn ngữ php Mã PHP này định nghĩa một lớp cung cấp các phương thức để kết nối và ngắt kết nối từ cơ sở dữ liệu MySQL bằng cách sử dụng PDO (PHP Data Objects). Định nghĩa Lớp (Database):
Lớp được đặt tên là “Database”
Có các thuộc tính tĩnh riêng tư cho tên cơ sở dữ liệu, máy chủ, tên người dùng và mật khẩu người dùng.
Có một thuộc tính tĩnh riêng tư được khởi tạo nó sẽ được sử dụng để lưu trữ kết nối cơ sở dữ liệu “$con” “tnull”
Hàm tạo được đặt là riêng tư và chứa một câu lệnh với một thông báo, cho biết rằng hàm khởi tạo không được phép Điều này ngăn chặn việc khởi tạo một đối tượng của lớp.die
Phương thức được định nghĩa là tĩnh, có nghĩa là nó có thể được gọi trên lớp mà không cần tạo một thể hiện của lớp “connect”
Nó kiểm tra xem thuộc tính có giá trị là hay không Nếu có, điều này có nghĩa là không có kết nối cơ sở dữ liệu hiện tại “$contnull”
Bên trong khối điều kiện, nó cố gắng tạo một kết nối mới PDO (PHP Data Objects) đến cơ sở dữ liệu MySQL bằng cách sử dụng tên cơ sở dữ liệu, máy chủ, tên người dùng và mật khẩu đã cung cấp.
Nếu kết nối thành công, đối tượng PDO được lưu trữ trong thuộc tính
Nếu có ngoại lệ (PDOException) xảy ra trong quá trình thử nghiệm kết nối, mã sẽ kết thúc và hiển thị một thông báo lỗi.
Phương thức được định nghĩa là tĩnh “disconnect”.
Nó đặt thuộc tính thành, hiệu quả đóng kết nối cơ sở dữ liệu “$cont” “null” Mục Đích:
Mục đích chính của lớp này là cung cấp một cách đơn giản và có thể tái sử dụng để thiết lập kết nối đến cơ sở dữ liệu MySQL bằng cách sử dụng PDO Việc sử dụng một phương thức tĩnh () đảm bảo rằng chỉ có một kết nối cơ sở dữ liệu trong toàn bộ ứng dụng, tăng cường hiệu suất và quản lý tài nguyên “connect”.
Mã PHP này được sử dụng để nhận giá trị từ biểu mẫu POST (thông qua $_POST) và sau đó ghi giá trị đó vào một tệp tin PHP khác (UIDContainer.php) Hãy giải thích từng phần của mã:
$_POST["UIDresult"]: Lấy giá trị được gửi từ biểu mẫu POST với trường tên là
$Write: Tạo một chuỗi chứa mã PHP để đặt giá trị nhận được vào một biến có tên
"UIDresult" và sau đó ghi giá trị đó vào tệp tin.
"": Đây là một đoạn mã PHP được nhúng vào chuỗi Nó gán giá trị nhận được từ biểu mẫu vào biến "UIDresult" và sau đó xuất giá trị đó. file_put_contents ('UIDContainer.php', $Write): Ghi nội dung của chuỗi $Write vào tệp tin có tên là "UIDContainer.php" Nếu tệp tin đã tồn tại, nó sẽ bị ghi đè Đoạn mã PHP này đơn giản là thiết lập giá trị của biến “$UIDresult” thành chuỗi rỗng (“' '”) và sau đó xuất giá trị đó ra màn hình bằng câu lệnh echo Hãy giải thích từng phần của mã:
“$UIDresult='';”: Điều này gán giá trị chuỗi rỗng (“' '”) cho biến “$UIDresult”. Điều này có nghĩa là giá trị của “$UIDresult” sẽ là một chuỗi không có ký tự nào.
“echo $UIDresult;”: Câu lệnh echo được sử dụng để xuất giá trị của biến
$UIDresult ra màn hình Trong trường hợp này, vì “$UIDresult” đã được gán giá trị rỗng, nó sẽ xuất ra màn hình một dòng trắng hoặc không có gì.
4.4.3 Tạo trang hiện thị Home:
Ghi giá trị rỗng vào tệp tin "UIDContainer.php"
Mục đích: Tạo một chuỗi mã PHP và ghi nó vào tệp tin có tên là
Chi tiết: “$Write” chứa chuỗi PHP, trong đó “UIDresult” được gán giá trị rỗng và sau đó giá trị đó được xuất ra.
“file_put_contents” được sử dụng để ghi chuỗi này vào tệp tin
Mục đích: Hiển thị một trang HTML sử dụng Bootstrap để tạo giao diện trang web.
Thẻ chứa thông tin về chiều rộng và tỷ lệ màn hình.
Thẻ được sử dụng để kết nối với tệp tin CSS của Bootstrap.
Thẻ được sử dụng để kết nối với tệp tin JavaScript của Bootstrap.
Định dạng trang web với một số CSS được nhúng trực tiếp trong tệp PHP.
Một số thẻ HTML được sử dụng để tạo liên kết và hiển thị hình ảnh.
4.4.4 Tạo trang đăng ký thẻ:
Phần code giao diện: Định nghĩa một trang HTML cơ bản với các thẻ như ,
Sử dụng thẻ để thiết lập các thuộc tính như viewport và charset.
Kết nối với các tệp CSS và JavaScript của Bootstrap để tạo giao diện người dùng.
Sử dụng thẻ để đặt các quy tắc CSS tùy chỉnh, đặt tiêu đề trang.
Mục đích: Sử dụng jQuery để tải nội dung từ "UIDContainer.php" vào phần tử có id="getUID" Đồng thời, cập nhật nó mỗi 500ms bằng cách sử dụng setInterval.
Phần code INSERT dữ liệu: Đoạn mã PHP này được thiết kế để xử lý dữ liệu được gửi từ một biểu mẫu HTML và thực hiện việc chèn (insert) dữ liệu này vào một bảng trong cơ sở dữ liệu MySQL.
Require ‘database.php’: Import (nhúng) file “database.php”, giả định rằng file này chứa lớp “Database” để kết nối đến cơ sở dữ liệu. if (! empty ($_POST)): Kiểm tra xem có dữ liệu được gửi từ biểu mẫu HTML không.
Lấy các giá trị được gửi từ biểu mẫu POST vào các biến tương ứng.
Kết nối đến cơ sở dữ liệu và thực hiện câu lệnh SQL để chèn dữ liệu từ biểu mẫu vào bảng “table_nodemcu_rfidrc522_mysql”.
“$pdo = Database :: connect();”: Kết nối đến cơ sở dữ liệu thông qua lớp
“Database” và lấy đối tượng PDO.
“$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);”: Thiết lập chế độ báo lỗi để PDO sẽ ném ra ngoại lệ nếu có lỗi.
“$sql = "INSERT INTO table_nodemcu_rfidrc522_mysql (name, id, gender, mssv, mobile) VALUES (?, ?, ?, ?, ?)";”: Chuỗi SQL chèn dữ liệu vào bảng table_nodemcu_rfidrc522_mysql với các cột là name, id, gender, mssv, mobile.
“$q = $pdo->prepare($sql);”: Chuẩn bị câu lệnh SQL để thực thi, sử dụng các giá trị thay thế (?) cho dữ liệu.
“$q->execute ([$name, $id, $gender, $mssv, $mobile]);”: Thực hiện câu lệnh SQL với các giá trị thay thế đã được cung cấp từ biểu mẫu.
“Database::disconnect();”: Đóng kết nối đến cơ sở dữ liệu.
Sau khi chèn dữ liệu thành công, chuyển hướng người dùng đến trang user_data.php.
“header ("Location: user_data.php");”: Chuyển hướng trình duyệt đến trang user_data.php.
“exit ();”: Đảm bảo rằng sau khi chuyển hướng, không có mã PHP hoặc HTML nào tiếp tục chạy.
4.4.5 Tạo trang đọc dữ liệu
Tạo trang HTML để hiển thị thông tin người dùng và các phần giao diện người dùng khác.
Các thẻ , , và được sử dụng để cài đặt các thuộc tính và thư viện cần thiết cho trang web.
Các quy tắc CSS được đặt trong thẻ để tùy chỉnh giao diện người dùng, bao gồm cả thanh điều hướng và bảng hiển thị thông tin người dùng.
Sử dụng JavaScript và AJAX để tương tác với trang web mà không làm tải lại toàn bộ trang.
Sử dụng thư viện jQuery để đơn giản hóa các thao tác DOM.
Sử dụng setInterval để liên tục tải lại nội dung từ tệp UIDContainer.php và hiển thị nó trong một thẻ
với id là getUID.
Có một hàm showUser để thực hiện AJAX request và hiển thị thông tin người dùng dựa trên ID nhận được từ thẻ RFID.
Xử Lý Tham số ID từ URL:
Lấy giá trị của tham số ID từ URL nếu có Tham số này được truyền qua đường dẫn URL khi trang được gọi.
Truy vấn Cơ sở dữ liệu và Hiển thị Thông Tin Người Dùng:
Kết nối đến cơ sở dữ liệu và truy vấn thông tin của người dùng dựa trên ID nhận được từ URL Dữ liệu được lấy về từ cơ sở dữ liệu và lưu vào mảng “$data”.
Thông báo Nếu ID Không Được Đăng Ký:
Kiểm tra xem ID có tồn tại trong cơ sở dữ liệu hay không Nếu không, gán giá trị mặc định và hiển thị một thông báo.
Hiển thị Thông Tin Người Dùng Trong Bảng HTML:
Hiển thị thông tin chi tiết của người dùng trong một bảng HTML Các dữ liệu như
ID, tên, giới tính, emailvà mssv được hiển thị dựa trên dữ liệu lấy từ cơ sở dữ liệu.
4.4.6 Tạo trang xóa dữ liệu sinh viên
Xử Lý Tham số ID từ URL:
Lấy giá trị của tham số ID từ URL nếu có Tham số này được truyền qua đường dẫn URL khi trang được gọi.
Phần xử lý xóa người dùng:
Kiểm tra nếu có dữ liệu được gửi đi (POST request) từ biểu mẫu xác nhận xóa người dùng Nếu có, thực hiện việc xóa người dùng từ cơ sở dữ liệu và sau đó chuyển hướng về trang hiển thị danh sách người dùng.
Hiển thị Biểu Mẫu Xác Nhận Xóa:
LẬP TRÌNH CODE CHO ESP32
Đầu tiên khai báo thư viên, Chương trình sử dụng các thư viện để kết nối WiFi, tạo web server, thực hiện HTTP requests, và giao tiếp với module RFID và màn hình LCD.
WiFi.h: Cho phép ESP32 kết nối với mạng Wi-Fi.
WebServer.h: Thực hiện một máy chủ web đơn giản.
HTTPClient.h: Đơn giản hóa quá trình thực hiện các yêu cầu HTTP.
SPI.h hỗ trợ giao tiếp qua giao thức SPI.
MFRC522.h làm việc với module RFID MFRC522
LiquidCrystal_I2C.h cho phép kết nối và điều khiển màn hình LCD thông qua giao thức I2C.
Khai báo tên và mật khẩu của mạng Wi-Fi.
Tạo một đối tượng WebServer lắng nghe trên cổng 80.
Hàm setup được gọi một lần khi bắt đầu chương trình Nó khởi tạo các thiết bị, kết nối Wi-Fi, cài đặt chân I/O, và hiển thị thông báo trên Serial Monitor.
Bắt đầu kết nối serial với tốc độ truyền 115200 bps để gửi và nhận thông điệp từ và đến máy tính thông qua cổng serial.
Khởi tạo SPI để tương tác với các thiết bị thông qua giao thức SPI.
Khởi tạo đối tượng mfrc522 để tương tác với module RFID MFRC522.
Ngừng thực thi chương trình trong 500 milliseconds.
Bắt đầu quá trình kết nối WiFi sử dụng tên mạng (ssid) và mật khẩu (password) đã được xác định trước. Đợi cho đến khi thiết bị kết nối thành công với mạng WiFi Trong quá trình chờ đợi, LED được làm sáng tắt lên đèn để thể hiện quá trình này.
Thiết lập chân buzer và ON_Board_LED làm chân output.
Khởi tạo và bật đèn nền của màn hình LCD thông qua giao thức I2C.
Hiển thị thông điệp kết nối WiFi thành công cùng với tên mạng và địa chỉ IP trên Serial Monitor.
Hiển thị thông tin mặc định trên màn hình LCD.
Gọi hàm “getid” để kiểm tra và đọc thông tin từ thẻ RFID nếu có.
Nếu việc đọc thẻ RFID thành công, thực hiện các hành động bên trong điều kiện này.
Bật loa bíp trong một khoảng thời gian ngắn thông báo về việc đọc thẻ thành công.
Khởi tạo đối tượng http để thực hiện HTTP request.
Gửi thông tin UID của thẻ lên một máy chủ thông qua HTTP POST request. Đóng kết nối HTTP và chờ một khoảng thời gian trước khi bật lại đèn LED trên bo mạch ESP32.
Hiển thị thông tin mặc định trên màn hình LCD sau khi xử lý xong.
Hàm “getid”: Hàm getid kiểm tra xem có thẻ RFID mới không Nếu có, nó đọc UID và lưu vào biến StrUID.
Sử dụng phương thức PICC_IsNewCardPresent của đối tượng mfrc522 để kiểm tra xem có thẻ RFID mới được đặt trên module không Nếu không, hàm trả về 0, không có thẻ mới nào được đọc.
Sử dụng phương thức PICC_ReadCardSerial để đọc Serial Number (UID) của thẻ RFID Nếu không đọc được, hàm trả về 0.
Hiển thị thông điệp trên Serial Monitor để thông báo rằng UID của thẻ đang được hiển thị.
Sử dụng một vòng lặp for để lưu các byte của UID vào mảng readcard.
Gọi hàm array_to_string để chuyển đổi mảng readcard thành chuỗi hex và lưu vào biến StrUID.
Sử dụng phương thức PICC_HaltA để dừng giao tiếp với thẻ RFID sau khi đã đọc xong UID.
Hàm trả về 1 để thông báo rằng việc đọc thẻ RFID đã thành công và có thông tin UID.
Hàm “array_to_string”: Chuyển đổi mảng byte thành chuỗi hex.
“byte array”: Mảng chứa các byte cần chuyển đổi.
“unsigned int len”: Độ dài của mảng.
“char buffer”: Mảng char để chứa chuỗi kết quả.
Sử dụng vòng lặp for để duyệt qua từng phần tử của mảng.
Dùng các phép toán bit để tách mỗi byte thành hai nibble (4-bit).
Chuyển đổi mỗi nibble thành ký tự hex tương ứng Nếu giá trị của nibble nhỏ hơn
10, sẽ được chuyển trực tiếp thành ký tự số; nếu lớn hơn hoặc bằng 10, sẽ được chuyển thành ký tự hex 'A' đến 'F'.
Thêm ký tự kết thúc chuỗi để đảm bảo chuỗi là null-terminated (kết thúc bằng ký tự null '\0').
KẾT QUẢ
KẾT QUẢ THI CÔNG MẠCH THỰC TẾ
Thi công mạch in là điều đầu tiên em làm, ở đây em đã hoàn thành các bước như: in mạch lên miếng đồng, rửa mạch…để cho ra một mạch in hoàn chỉnh.
Hình 28 Mạch in sau khi thi công
Tiếp theo em sẽ thực hiện việc hàn các linh kiện lên mạch, sau đó cho ra một sản phẩm hoàn chỉnh đó chính là mô hình của mạch.
Dưới đây chính là mô hình thực tế của mạch.
Hình 29.Mô hình thực tế của mạch.
Với màn hình hiển thị là LCD 16x2 sinh viên sẽ nhận biết được việc quét thẻ đã thành công hay chưa.
Module RC522 thực hiện đọc thẻ UID thông qua ESP32 sẽ gửi lên webserver để lưu trữ và tiến hành quản lý thẻ đó.
Module buzzer sẽ báo hiệu là có thẻ quét qua.
HOẠT ĐỘNG CỦA HỆ THỐNG
Hệ thống có chức năng như hiển thị được mã UID của thẻ trên web và LCD từ đó đăng ký các thông tin của sinh viên gắn cho thẻ đó trên webserver Người dùng có thể đọc thông tin của sinh viên vừa quét thẻ điểm danh, đăng ký thông tin cho sinh viên mới, sửa đổi dữ liệu đã đăng ký của sinh viên Sau đây là mô tả trực quan hệ thống hoạt động.
Mạch cứng bao gồm module RC522, LCD, còi và led LCD sẽ hiển thị thông tin mã UID của thẻ và báo trạng thái đã quét thành công Còi sẽ báo khi có thẻ quẹt qua. Lúc bắt đầu sẽ hiển thị giao diện chờ quét thẻ.
Hình 30 Hình trạng thái đang đợi thẻ
Khi thẻ quét thành công sẽ hiển thị mã ID và báo trạng thái quét thành công Mã
ID của thẻ sẽ hiện thị trong 10 giây, nếu không có thẻ nào quét thành công sẽ chuyển về trạng thái đang đợi thẻ.
Hình 31 Trạng thái khi quét thẻ thành công
Việc thao tác với hệ thống sẽ được chủ yếu thực hiện trên web bao gồm hiển thị thông tin sinh viên, danh sách sinh viên đã đăng ký và thông tin ID của thẻ đã được web Sau đây là giao diện trang chủ.
Hình 32 Giao diện trang chính Ở trang chính này có một thanh điều hướng gồm bốn mục Home, Student List, Regstration, Read Tag ID để người dùng lựa chọn theo mục đích.
Web sever nơi nhận dữ liệu ID từ thẻ từ và ESP32 sẽ xử lý và gửi dữ liệu lên (chuỗi dữ liệu), sau đó ta sẽ thấy thông tin ID thẻ từ được hiện thị ở trang đăng ký thẻ trong mục ID.
Hình 33 Giao diện trang đăng ký.
Khi thẻ đã được đăng ký thành công, nó sẽ được hiện thị bên trang quản lý danh sách sinh viên, ở trang web này ta có thể chỉnh sửa thông tin và xóa dữ liệu của sinh viên.
Hình 34 Giao diện trang hiển thị danh sách sinh viên.
Hình 35 Giao diện trang chỉnh sửa thông tin sinh viên.
Khi thẻ đã đăng ký được quét qua module đọc thẻ, trang này sẽ hiển thị các thông tin đã gán cho thẻ.
Hình 36 Giao diện trang đọc thông tin sinh viên.
Trong trang đọc thông tin sinh viên, khi có thẻ từ đã được gán thông tin vào quẹt qua bộ cảm biến thì các thông tin của thẻ đó sẽ được hiện thị tại đây.