1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo cuối kỳ học phần nhập môn internet vạn vật student attendance system

33 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Cuối Kỳ Học Phần Nhập Môn Internet Vạn Vật Student Attendance System
Người hướng dẫn TS. Bùi Huy Kiên
Trường học Đại Học Quốc Gia Hà Nội Trường Đại Học Việt Nhật
Chuyên ngành BCSE
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 33
Dung lượng 4,81 MB

Cấu trúc

  • I. Giới Thiệu (5)
    • I.1. Ý Tưởng Dự Án (5)
    • I.2. Ý Nghĩa Thực Tiễn (5)
      • I.2.1. Đối với Giảng Viên (5)
      • I.2.2. Đối với Sinh Viên (6)
      • I.2.3. Đối với Nhà Trường (6)
    • I.3. Mục Tiêu Của Dự Án (6)
      • I.3.1. Phát Triển Hệ Thống Điểm Danh Tự Động (6)
      • I.3.2. Nâng Cao Tính Chính Xác và Minh Bạch (6)
      • I.3.3. Tiết Kiệm Thời Gian và Nguồn Lực (7)
      • I.3.4. Khuyến Khích Tính Kỷ Luật và Chuyên Nghiệp (7)
      • I.3.5. Tích Hợp và Mở Rộng (7)
  • II. Cơ sở Lý Thuyết (7)
    • II.1. Tìm hiểu về Cơ sở dữ liệu (MySQL) (7)
    • II.2. Tìm hiểu về NoteJS (13)
  • III. Thiết Kế Và Triển Khai (17)
    • III.1. Sơ Đồ Mạch (17)
    • III.1. A. Kết Nối Giữa ESP32 và RC522 (17)
    • III.1. B. Nguồn Cung Cấp (17)
    • III.2. Danh Sách Thiết Bị Và Thông Số Kỹ Thuật (19)
    • III.2. A. ESP32 (19)
    • III.2. B. Module RFID Reader (RC522) (23)
    • III.3. Thiết Kế Và Triển Khai Phần Mềm (27)
      • III.3.1. Nền Tảng Và Giao Thức Sử Dụng (27)
      • III.3.1. Giải Thích Các Giao Thức Sử Dụng (27)
    • III.4. Nguyên Lý Hoạt Động (29)
      • III.4.1. Khởi Động Và Thiết Lập ESP32 (29)
      • III.4.2. Đọc Dữ Liệu Từ Thẻ RFID (29)
      • III.4.3. Xử Lý Dữ Liệu Và Cập Nhật Trạng Thái (30)
      • III.4.4. Truyền Dữ Liệu Lên Server (30)
      • III.4.5. Cách Truyền Dữ Liệu (30)
  • IV. Kết Quả Và Đánh Giá (31)
    • IV.1. Kết Quả Đạt Được (31)
    • IV.2. Đánh Giá Kết Quả (31)
    • IV.3. Những Khó Khăn Và Hạn Chế (32)
    • IV.4. Hướng Phát Triển Tương Lai (32)
  • V. Phụ Lục (33)
    • V.1. Mã Nguồn (33)
    • V.2. Các Tài Liệu Tham Khảo (33)

Nội dung

Dự án Hệ Thống Điểm Danh Sinh Viên hướng tới việc tạo ra một hệ thống tự động sử dụng công nghệ IoT Internet of Things để giúpgiảng viên dễ dàng và chính xác hơn trong việc quản lý sự hi

Giới Thiệu

Ý Tưởng Dự Án

Ý tưởng phát triển hệ thống điểm danh sinh viên tự động ra đời từ nhu cầu hiện đại hóa và tự động hóa quản lý lớp học Trong môi trường giáo dục truyền thống, việc điểm danh thường được thực hiện thủ công, gây bất tiện và tốn thời gian Quy trình này cũng dễ xảy ra sai sót, như sinh viên gian lận điểm danh hoặc giảng viên nhầm lẫn trong ghi chép.

Dự án Hệ Thống Điểm Danh Sinh Viên nhằm phát triển một hệ thống tự động dựa trên công nghệ IoT, giúp giảng viên quản lý sự hiện diện của sinh viên một cách dễ dàng và chính xác hơn Hệ thống sẽ sử dụng các thiết bị cảm biến và công nghệ nhận diện như RFID, NFC, hoặc nhận diện khuôn mặt để ghi nhận sự có mặt của sinh viên nhanh chóng và hiệu quả.

Hệ thống điểm danh tự động giảm bớt gánh nặng cho giảng viên, đồng thời nâng cao tính minh bạch và chính xác trong quản lý điểm danh Ngoài ra, hệ thống này còn giúp sinh viên phát triển tính kỷ luật và chuyên nghiệp khi tham gia các buổi học.

Ý Nghĩa Thực Tiễn

Hệ thống điểm danh sinh viên tự động mang lại nhiều ý nghĩa thực tiễn quan trọng cho cả giảng viên, sinh viên và nhà trường.

Tiết Kiệm Thời Gian: Hệ thống giúp giảm bớt thời gian điểm danh, cho phép giảng viên tập trung vào việc giảng dạy.

Đảm bảo tính chính xác và độ tin cậy trong quy trình điểm danh là rất quan trọng để giảm thiểu sai sót và gian lận Dữ liệu được ghi lại một cách chính xác và không thể thay đổi, giúp tăng cường sự minh bạch và độ tin cậy của thông tin.

Phân tích dữ liệu cung cấp thông tin thống kê về mức độ tham gia của sinh viên, giúp giảng viên đánh giá hiệu quả học tập và sự chăm chỉ của sinh viên.

Công Bằng: Hệ thống đảm bảo tính công bằng, tránh được tình trạng điểm danh hộ.

Tiện Lợi: Sinh viên không cần phải lo lắng về việc quên điểm danh hoặc bị ghi nhận sai.

Khuyến Khích Tính Kỷ Luật: Hệ thống tạo ra môi trường học tập nghiêm túc, khuyến khích sinh viên tham gia đầy đủ các buổi học.

Quản Lý Hiệu Quả: Dễ dàng theo dõi và quản lý tình hình tham gia lớp học của sinh viên trên quy mô lớn.

Giảm Chi Phí Nhân Sự: Hệ thống tự động giúp giảm bớt nhu cầu về nhân sự cho việc kiểm tra và quản lý điểm danh.

Tích Hợp Công Nghệ: Hỗ trợ nhà trường trong việc hiện đại hóa và ứng dụng công nghệ vào công tác quản lý và giảng dạy.

Hệ thống điểm danh sinh viên tự động là công cụ hữu ích, mang lại nhiều lợi ích thực tiễn, góp phần nâng cao chất lượng giáo dục và hiệu quả quản lý.

Mục Tiêu Của Dự Án

Dự án Hệ Thống Điểm Danh Sinh Viên nhằm tự động hóa quy trình điểm danh, giúp giảng viên và nhà trường quản lý việc điểm danh một cách chính xác, minh bạch và hiệu quả hơn Các mục tiêu cụ thể của dự án bao gồm nâng cao độ chính xác trong việc ghi nhận thông tin sinh viên, cải thiện quy trình quản lý điểm danh, và tạo ra một hệ thống dễ sử dụng cho cả giảng viên và sinh viên.

I.3.1 Phát Triển Hệ Thống Điểm Danh Tự Động:

Hệ thống tự động ghi nhận sự có mặt của sinh viên trong lớp học sử dụng các công nghệ hiện đại như RFID, NFC và nhận diện khuôn mặt Đảm bảo rằng hệ thống hoạt động ổn định, dễ sử dụng và có khả năng tích hợp với các hệ thống quản lý hiện có của nhà trường.

I.3.2 Nâng Cao Tính Chính Xác và Minh Bạch: Đảm bảo dữ liệu điểm danh được ghi nhận một cách chính xác và không thể bị thay đổi.

Cung cấp báo cáo chi tiết về tình hình tham gia của sinh viên giúp giảng viên và nhà trường theo dõi và đánh giá hiệu quả một cách dễ dàng.

I.3.3 Tiết Kiệm Thời Gian và Nguồn Lực:

Giảm thiểu thời gian và công sức của giảng viên trong việc điểm danh thủ công.

Tối ưu hóa quy trình quản lý điểm danh, giảm bớt nhu cầu về nhân sự và các tài nguyên khác.

I.3.4 Khuyến Khích Tính Kỷ Luật và Chuyên Nghiệp:

Tạo ra một môi trường học tập nghiêm túc, khuyến khích sinh viên tham gia đầy đủ các buổi học và tuân thủ các quy định của nhà trường.

Góp phần nâng cao ý thức tự giác và tinh thần trách nhiệm của sinh viên trong việc học tập.

I.3.5 Tích Hợp và Mở Rộng:

Thiết kế hệ thống cần đảm bảo khả năng tích hợp dễ dàng với các hệ thống quản lý học tập khác của nhà trường, bao gồm hệ thống quản lý học tập (LMS) và hệ thống quản lý sinh viên (SIS).

Mở rộng khả năng của hệ thống để có thể áp dụng trong nhiều ngữ cảnh và môi trường giáo dục khác nhau.

Dự án Hệ Thống Điểm Danh Sinh Viên không chỉ nhằm cải thiện quy trình điểm danh mà còn góp phần nâng cao chất lượng và hiệu quả trong quản lý giáo dục.

Cơ sở Lý Thuyết

Tìm hiểu về Cơ sở dữ liệu (MySQL)

SQL (Ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ máy tính phổ biến dùng để tạo, sửa đổi và truy xuất dữ liệu từ hệ quản trị cơ sở dữ liệu quan hệ Ngôn ngữ này đã phát triển vượt ra ngoài mục đích ban đầu, phục vụ cho các hệ quản trị cơ sở dữ liệu đối tượng-quan hệ và hiện nay là một tiêu chuẩn ANSI/ISO.

Hệ quản trị cơ sở dữ liệu:

Hệ quản trị cơ sở dữ liệu (DBMS) là một chương trình máy tính được thiết kế để quản lý và tổ chức các tập hợp dữ liệu lớn có cấu trúc, nhằm đáp ứng nhu cầu truy cập và xử lý dữ liệu của nhiều người sử dụng.

Hệ quản trị cơ sở dữ liệu (CSDL) hiện nay đã trở thành một phần thiết yếu trong mọi doanh nghiệp, bao gồm các lĩnh vực như kế toán, nguồn nhân lực và hỗ trợ khách hàng Trước đây, CSDL chủ yếu xuất hiện ở các công ty lớn với hạ tầng phần cứng mạnh mẽ để quản lý khối lượng dữ liệu lớn Tuy nhiên, với sự phát triển công nghệ, hệ thống này đã trở thành tiêu chuẩn cho tất cả các loại hình doanh nghiệp.

Có rất nhiều hệ quản trị CSDL như (SQL Server của Microsoft, MySQL của Oracle, ), nhưng trong bài viết này, chúng ta cùng tìm hiểu MySQL

Giới thiệu về hệ quản trị dữ liệu MySQL:

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới, được ưa chuộng bởi các nhà phát triển nhờ vào tốc độ cao, tính ổn định và dễ sử dụng Hệ thống này hỗ trợ nhiều hệ điều hành và cung cấp một bộ hàm tiện ích mạnh mẽ, làm cho MySQL trở thành lựa chọn lý tưởng cho các ứng dụng truy cập cơ sở dữ liệu trên internet với tính bảo mật cao Người dùng có thể tải MySQL miễn phí từ trang chủ, và hệ thống có nhiều phiên bản tương thích với các hệ điều hành như Windows, Linux, Mac OS X, Unix và nhiều nền tảng khác.

MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị

Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).

MySQL là một hệ quản trị cơ sở dữ liệu phổ biến, hỗ trợ nhiều ngôn ngữ lập trình như NodeJs, PHP và Perl, giúp lưu trữ thông tin cho các trang web Trong MySQL, có nhiều kiểu dữ liệu khác nhau được sử dụng để quản lý và tổ chức dữ liệu hiệu quả.

MySQL hỗ trợ các kiểu số nguyên tiêu chuẩn của SQL như INTEGER (hay INT) và SMALLINT, cùng với các kiểu mở rộng như TINYINT, MEDIUMINT, và BIGINT Dưới đây là bảng liệt kê các kiểu số nguyên, không gian lưu trữ cần thiết và phạm vi của chúng.

8 chúng (Giá trị nhỏ nhất, lớn nhất cho kiểu số nguyên có dấu, và không dấu).

Kiểu dữ liệu Độ dài (số byte) Khoảng giá trị

Kiểu dấu chấm động (Floating-Point Types)

Kiểu dữ liệu FLOAT và DOUBLE trong MySQL được sử dụng để lưu trữ các giá trị số thực với độ chính xác gần đúng Cụ thể, FLOAT chiếm 4 byte bộ nhớ, trong khi DOUBLE sử dụng 8 byte để lưu trữ dữ liệu.

Kiểu dữ liệu Độ dài (số byte) Khoảng giá trị

Kiểu dấu chấm cố định (Fixed-Point Types)•

The Fixed-Point data type is essential for maintaining precision, particularly for monetary data In MySQL, the DECIMAL and NUMERIC types are utilized to accurately store numerical values.

MySQL 5.6 lưu trữ giá trị DECIMAL theo định dạng nhị phân.

Trong SQL chuẩn, cú pháp DECIMAL(5,2) xác định độ chính xác là 5 và phần thập phân là 2, cho phép lưu trữ giá trị từ -999.99 đến 999.99 Cú pháp DECIMAL(M) cũng tương đương với DECIMAL(M,0).

DECIMAL tương đương với DECIMAL(M,0) ở đây M mặc định là 10. Độ dài tối đa các con số cho DECIMAL là 65.

Kiểu dữ liệu Bit (Bit Value Types)•

Kiểu dữ liệu BIT được sử dụng để lưu trữ trường giá trị bit, với kiểu BIT(N) có khả năng lưu trữ N giá trị bit, trong đó N có thể từ 1 đến 64 Để chỉ định giá trị các bit, người dùng có thể sử dụng b'value', là dãy các số nhị phân 0 hoặc 1; ví dụ, b'111' đại diện cho số 7, trong khi b'10000000' biểu thị số 128.

 Các kiểu Date and Time

Các kiểu dữ liệu ngày tháng và thời gian đại diện bao gồm

DATE TIME DATETIME TIMESTAMP, , , , and YEAR Mỗi kiểu có một phạm vi hợp lệ.

Kiểu dữ liệu Mô tả Định dạng hiển thị Phạm vi

DATETIME Sử dụng khi bạn cần giá trị lưu trữ cả hai thông tin ngày tháng và thời gian.

YYYY-MM- DD HH:MM:SS

DATE Sử dụng khi bạn muốn lưu trữ chỉ thông tin ngày tháng.

P Lưu trữ cả hai thông tin ngày tháng và thời gian.

Giá trị thời gian sẽ được chuyển đổi từ múi giờ hiện tại sang UTC khi lưu trữ và sẽ trở về múi giờ hiện tại khi truy xuất dữ liệu.

 Kiểu dữ liệu CHAR và VARCHAR

Kiểu dữ liệu Mô tả Định dạng hiển thị Phạm vi các ký tự

CHAR là kiểu dữ liệu dùng để chứa chuỗi không phải nhị phân với độ dài cố định, giống như khi khai báo cột trong bảng Khi lưu trữ, chuỗi sẽ được thêm ký tự trắng bên phải (right-padded) để đạt được độ dài đã chỉ định.

Khoảng trắng phía trước (Trailing spaces) được loại bỏ

VARCHAR Chứa các chuỗi không phải nhịn phân (non- binary strings) Cột là chuỗi có chiều dài thay đổi

Giống như lưu trữ Giá trị từ 0 tới

255 với MySQL trước phiên bản 5.0.3 Và 0 tới 65,535 với các phiên bản

MySQL 5.0.3 hoặc mới hơn. b)Mối quan hệ và ràng buộc MySQL

Các ràng buộc(constraint) SQL được sử dụng để chỉ định các quy tắc cho dữ liệu trong bảng.

SQL được sử dụng để chỉ định các quy tắc cho dữ liệu trong bảng.

Các ràng buộc trong SQL được sử dụng để giới hạn loại dữ liệu có thể nhập vào bảng, từ đó đảm bảo tính chính xác và độ tin cậy của dữ liệu Nếu có bất kỳ vi phạm nào giữa ràng buộc và hành động dữ liệu, hành động đó sẽ bị hủy bỏ.

NOT NULL – Đảm bảo rằng một cột không thể có giá trị NULL

UNIQUE – Đảm bảo rằng tất cả các giá trị trong một cột là khác nhau

PRIMARY KEY – Sự kết hợp giữa KHÔNG ĐẦY ĐỦ và ĐỘC ĐÁO Xác định duy nhất từng hàng trong bảng

FOREIGN KEY – Xác định duy nhất một hàng / bản ghi trong bảng khác

CHECK – Đảm bảo rằng tất cả các giá trị trong một cột thỏa mãn một điều kiện cụ thể

DEFAULT – Đặt giá trị mặc định cho một cột khi không có giá trị nào được chỉ định

INDEX – Được sử dụng để tạo và truy xuất dữ liệu từ cơ sở dữ liệu rất nhanh chóng

Quan hệ: Là sự liên kết giữa 2 hay nhiều thực thể

Kiểu quan hệ giữa các kiểu thực thể bao gồm tất cả các quan hệ tương tự giữa các thực thể thuộc cùng một kiểu Cấp liên kết thể hiện số lượng kiểu thực thể tham gia vào liên kết đó, trong khi ràng buộc trên kiểu liên kết quy định các điều kiện cần thiết cho mối quan hệ giữa các thực thể.

Ràng buộc tỉ số: Xét mối quan hệ nhị phân R (cấp 2) giữa 2 tập thực thể A và B c)Truy vấn nhiều bảng với JOIN trong SQL

Cách truy vấn nhiều bảng, sử dụng các loại JOIN như LEFT JOIN, RIGHT JOIN, INNER JOIN trong SQL để lấy dữ liệu kết hợp

Khi khớp nối bảng trong SQL, điều kiện khớp nối thường được áp dụng trong mệnh đề WHERE SQL hỗ trợ nhiều cách kết nối bảng khác nhau thông qua từ khóa JOIN Có ba loại khớp nối chính: inner join, trả về các bản ghi có giá trị phù hợp giữa hai bảng; left join, trả về tất cả các bản ghi từ bảng bên trái và những bản ghi phù hợp từ bảng bên phải.

Tìm hiểu về NoteJS

Node.js là một mã nguồn mở, một môi trường cho các máy chủ và ứng dụng mạng.

Node.js sử dụng engine JavaScript Google V8 để thực thi mã, với nhiều mô-đun cơ bản được phát triển bằng JavaScript Các ứng dụng Node.js cũng được viết hoàn toàn bằng ngôn ngữ này.

Node.js cung cấp một thư viện tích hợp cho phép ứng dụng hoạt động như một máy chủ web mà không cần sử dụng phần mềm bên ngoài như Nginx hay Apache Với kiến trúc hướng sự kiện và API I/O không chặn, Node.js tối ưu hóa hiệu suất và khả năng mở rộng của ứng dụng Tất cả các hàm trong Node.js đều hoạt động không đồng bộ, cho phép các tác vụ được xử lý ở chế độ nền.

Xây dựng websocket server (Chat server)

Hệ thống Notification (Giống như facebook hay Twitter) Ứng dụng upload file trên client

Các máy chủ quảng cáo

Node.js có một số nhược điểm, đặc biệt là khi xử lý các ứng dụng tốn tài nguyên CPU như mã hóa video hay giải mã Đối với những ứng dụng này, việc sử dụng Node.js không phải là lựa chọn tối ưu, và nên xem xét việc viết một addon C++ để cải thiện hiệu suất Mặc dù Node.js có thể phát triển ứng dụng web giống như các ngôn ngữ khác như PHP, Ruby hay Python, nhưng hiện tại nó vẫn còn ở giai đoạn sơ khai và chưa thể vượt trội hơn những ngôn ngữ này Tuy nhiên, Node.js nổi bật với khả năng nhận và xử lý nhiều kết nối chỉ với một luồng đơn, giúp tiết kiệm RAM và tăng tốc độ xử lý mà không cần tạo luồng mới cho mỗi truy vấn như PHP Hơn nữa, Node.js tận dụng ưu điểm non-blocking I/O của JavaScript, tối ưu hóa tài nguyên của server mà không gây ra độ trễ.

JSON APIs với cơ chế event-driven và I/O không chặn kết hợp với Javascript là lựa chọn lý tưởng cho các dịch vụ Web sử dụng JSON Nếu bạn đang phát triển một ứng dụng trên một trang (Single Page Application) như Gmail, NodeJS là công cụ phù hợp, nhờ vào khả năng xử lý nhiều yêu cầu đồng thời và thời gian phản hồi nhanh Các ứng dụng này không cần tải lại trang và thường xuyên nhận nhiều yêu cầu từ người dùng.

14 sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì NodeJS sẽ là sự lựa chọn của bạn.

The Unix shelling tool for NodeJS maximizes the capabilities of Unix, allowing NodeJS to handle thousands of processes simultaneously This efficient processing results in optimal performance and exceptional operational effectiveness.

Luồng dữ liệu trong ứng dụng web thường sử dụng HTTP request và nhận phản hồi, nhưng khi cần xử lý một luồng dữ liệu lớn, Node.js có khả năng xây dựng các Proxy để phân vùng và tối ưu hóa hoạt động của các luồng dữ liệu khác Với sự phát triển của ứng dụng di động và HTML 5, Node.js trở thành công cụ hiệu quả cho việc phát triển các ứng dụng thời gian thực, như ứng dụng chat và các dịch vụ mạng xã hội như Facebook và Twitter.

Node.js là một công nghệ hấp dẫn cho việc phát triển dự án, nhưng trước khi bắt đầu, bạn cần tự hỏi: "Liệu tôi có nên sử dụng Node.js cho dự án của mình không?" Dưới đây là một số lý do để cân nhắc quyết định này.

KHÔNG nên sử dụng Node.js khi:

Khi xây dựng các ứng dụng tốn tài nguyên, hãy cẩn trọng với việc sử dụng Node.js cho các chương trình chuyển đổi video Node.js thường gặp vấn đề thắt cổ chai khi xử lý các tệp có dung lượng lớn.

Node.js không nhanh hơn PHP trong các tác vụ CRUD nặng về I/O, do các webserver script khác đã được tối ưu hóa cho các tác vụ này Hơn nữa, Node.js có thể gặp khó khăn với những API không hiệu quả trong quá trình xử lý.

Khi cần sự ổn định trong ứng dụng, bạn nên chú ý đến phiên bản của Node.js, đặc biệt là trong giai đoạn phát triển từ 2009 đến 2013, khi phiên bản đạt 0.10.15 và hiện tại là 0.10.35 Các API có thể thay đổi mà không tương thích ngược, vì vậy hãy cẩn thận với những API mà bạn đang sử dụng và luôn tự hỏi: “Khi có sự thay đổi, điều đó sẽ ảnh hưởng như thế nào đến dự án của tôi?”

Node.js có thể gây ra nhiều rủi ro nếu bạn chưa nắm rõ kiến thức về nó Với phần lớn các API hoạt động theo phương thức non-blocking/async, việc thiếu hiểu biết có thể dẫn đến những lỗi khó xác định nguồn gốc Hơn nữa, cộng đồng Node.js hiện tại vẫn chưa đủ lớn mạnh, khiến cho việc tìm kiếm sự hỗ trợ trở nên khó khăn, bởi vì nhiều thành viên trong cộng đồng cũng đang trong quá trình học hỏi như bạn.

Nên dùng Node.js khi nào?

Node.js nổi bật trong việc phát triển RESTful API nhờ vào khả năng xử lý JSON vượt trội của Javascript Với đặc điểm xử lý non-blocking, Node.js phù hợp cho các API server có lượng request đồng thời cao mà không cần thực hiện các xử lý nặng nề Ngoài ra, Node.js còn hỗ trợ các giao thức kết nối khác như TCP, cho phép xây dựng các giao thức tùy chỉnh một cách dễ dàng Đặc biệt, Node.js lý tưởng cho các ứng dụng thời gian thực, cho thấy sự phù hợp của nó với các nhu cầu kết nối hiện đại.

Node.js cho phép xử lý mọi request trên cùng một process, giúp việc xây dựng bộ nhớ đệm trở nên đơn giản hơn bao giờ hết Chỉ cần lưu trữ vào một biến global, mọi request đều có thể truy cập bộ nhớ đệm đó, làm cho việc caching trở nên dễ dàng hơn Bạn có thể lưu và chia sẻ trạng thái của một client với các client khác ngay trong ngôn ngữ mà không cần sử dụng bộ nhớ ngoài Quan trọng nhất, bạn yêu thích và muốn sử dụng công nghệ này.

Thiết Kế Và Triển Khai

Sơ Đồ Mạch

Trong dự án này, chúng tôi sử dụng các thành phần phần cứng như ESP32, đầu đọc RFID (RC522), thẻ RFID (ISO14443A), và module nguồn DC-DC buck converter, cùng với các linh kiện phụ trợ khác.

Hình II.1.1: Sơ Đồ Mạch

A Kết Nối Giữa ESP32 và RC522

 SDA (NSS, Chip Select) (RC522) -> GPIO5 (ESP32)

B Nguồn Cung Cấp

 ESP32 và RC522 được cấp nguồn từ module DC-DC buck converter.

 ESP32: Kết nối với nguồn 3.3V từ module.

 RC522: Cũng kết nối với nguồn 3.3V từ module.

Hình II.1.2: Sơ Đồ Nguyên Lý

A ESP32

Hình II.2.A Cấu Trúc ESP32

ESP32, vi điều khiển do Espressif Systems phát triển, nổi bật với khả năng kết nối Wi-Fi và Bluetooth, cùng với nhiều tính năng mạnh mẽ Với hiệu suất cao và tiết kiệm năng lượng, ESP32 là sự lựa chọn lý tưởng cho các ứng dụng IoT (Internet of Things) và nhiều lĩnh vực điện tử khác.

- CPU Và Bộ Xử Lý

 CPU: Dual-core Tensilica LX6 microprocessor

 Tốc độ xung nhịp: 160 MHz - 240 MHz

 Công nghệ: 32-bit RISC, hỗ trợ đa nhiệm và xử lý đa luồng.

 RAM: 520 KB SRAM, đủ lớn để xử lý các tác vụ phức tạp và lưu trữ tạm thời dữ liệu.

 Flash: 4MB hoặc 8MB bộ nhớ Flash tích hợp cho lưu trữ chương trình và dữ liệu.

 Tốc độ truyền tải: Hỗ trợ tốc độ truyền dữ liệu lên tới 150 Mbps.

 Chuẩn: v4.2 BR/EDR và BLE (Bluetooth Low

 Tính năng: Hỗ trợ kết nối Bluetooth với các thiết bị khác và các ứng dụng IoT.

- GPIO và Các Cổng Giao Tiếp

 GPIO: 34 chân GPIO, có thể cấu hình làm đầu vào, đầu ra số hoặc tương tự Đầu vào/đầu ra số:

Hỗ trợ interrupt, PWM, ADC, DAC.

 ADC (Analog-to-Digital Converter): 18 kênh

ADC, độ phân giải 12-bit, phạm vi điện áp 0V - 3.3V

 DAC (Digital-to-Analog Converter): 2 kênh

DAC, độ phân giải 8-bit Dùng để chuyển đổi dữ liệu số thành tín hiệu analog.

 SPI (Serial Peripheral Interface): 3 bus SPI, hỗ trợ tốc độ cao, giao tiếp với các thiết bị ngoại vi như cảm biến, bộ nhớ flash.

 I2C (Inter-Integrated Circuit): 2 bus I2C, tốc độ giao tiếp lên đến 1 Mbps.

Receiver/Transmitter): 3 cổng UART, dùng để giao tiếp với các thiết bị ngoại vi như module GPS, GSM.

 Wi-Fi: Hỗ trợ các chuẩn 802.11 b/g/n với chế độ truyền dẫn dữ liệu tốc độ cao, các chế độ kết nối

AP (Access Point), STA (Station).

 Bluetooth: Bluetooth 4.2 BR/EDR và BLE

(Bluetooth Low Energy), hỗ trợ kết nối với các thiết bị Bluetooth và các cảm biến BLE.

 Chế độ ngủ sâu (Deep Sleep Mode): Tiêu thụ năng lượng cực thấp, lý tưởng cho các ứng dụng IoT cần tiết kiệm năng lượng.

 Chế độ ngủ (Light Sleep Mode): Tiêu thụ năng lượng thấp, nhưng vẫn duy trì một số chức năng để tiếp tục hoạt động.

- Khả Năng Mở Rộng Và Tích Hợp

 GPIO với chức năng đa dạng: Hỗ trợ các tính năng như PWM, ADC, DAC, I2C, SPI, UART.

Kết nối với các thiết bị ngoại vi trở nên đơn giản hơn bao giờ hết, cho phép người dùng dễ dàng liên kết với các module, cảm biến và thiết bị ngoại vi khác thông qua các giao tiếp phổ biến.

ESP32 có thể được sử dụng trong nhiều ứng dụng khác nhau:

 IoT (Internet of Things): Thiết bị nhà thông minh, cảm biến môi trường, và các ứng dụng điều khiển từ xa.

 Hệ thống tự động hóa: Điều khiển thiết bị điện, hệ thống tưới cây thông minh, và hệ thống an ninh.

 Ứng dụng y tế: Thiết bị đeo thông minh, theo dõi sức khỏe, và thiết bị y tế từ xa.

 Ứng dụng giáo dục và nghiên cứu: Phát triển các dự án nghiên cứu, học tập về vi điều khiển và IoT.

 ESP-IDF (Espressif IoT Development

Bộ công cụ phát triển phần mềm của Espressif cung cấp một môi trường phát triển mạnh mẽ và toàn diện, tích hợp đầy đủ các thư viện và công cụ cần thiết cho việc phát triển ứng dụng trên ESP32.

 Hỗ trợ nhiều tính năng như quản lý nguồn tài nguyên, kết nối mạng, và bảo mật.

 Tích hợp tốt với các công cụ như CMake, Ninja và OpenOCD.

 Có tài liệu hướng dẫn và ví dụ chi tiết giúp lập trình viên dễ dàng bắt đầu.

 Hỗ trợ lập trình ESP32 với thư viện Arduino, dễ sử dụng cho người mới bắt đầu.

 Giao diện đơn giản, dễ sử dụng, phù hợp cho việc lập trình và thử nghiệm nhanh.

 Có cộng đồng lớn, nhiều tài nguyên hỗ trợ, và rất nhiều ví dụ mã nguồn mở.

 Có thể cài đặt thêm các thư viện từ thư viện quản lý thư viện (Library Manager) của Arduino IDE.

 Điểm danh sinh viên: Sử dụng ESP32 và RC522 để đọc thông tin thẻ RFID và lưu trữ dữ liệu điểm danh.

 Giám sát môi trường: Kết hợp cảm biến nhiệt độ, độ ẩm, và ESP32 để giám sát môi trường.

 Hệ thống tự động hóa nhà thông minh: Điều khiển đèn, quạt, và các thiết bị điện khác qua Wi-Fi hoặc Bluetooth.

B Module RFID Reader (RC522)

Hình II.2.B Cấu Trúc Module RFID Reader (RC522)

Module RC522 là một thiết bị đọc thẻ RFID, phổ biến trong các ứng dụng nhận dạng và theo dõi bằng sóng vô tuyến Được phát triển từ IC MFRC522 của NXP, module này hỗ trợ giao tiếp qua SPI, I2C và UART Nó thường được áp dụng trong các dự án IoT, hệ thống kiểm soát ra vào và nhiều ứng dụng nhận dạng tự động khác.

 Tần Số Hoạt Động: 13.56 MHz (Đây là tần số tiêu chuẩn cho các thẻ RFID ISO14443A.)

 Khoảng cách đọc: 0 - 5 cm (Khoảng cách này phụ thuộc vào loại thẻ và điều kiện môi trường.)

 SPI (giao tiếp chính): Được sử dụng phổ biến nhất do tốc độ cao và tính ổn định.

 I2C: Thích hợp cho các ứng dụng yêu cầu kết nối đơn giản.

 UART: Dễ dàng tích hợp với các thiết bị sử dụng giao tiếp nối tiếp.

 Điện áp hoạt động: 2.5V - 3.6V (Điện áp này phù hợp với nhiều loại vi điều khiển và hệ thống điện tử.)

 Khi hoạt động: < 13mA (Mức tiêu thụ năng lượng thấp giúp tiết kiệm điện năng cho hệ thống.)

 Khi chờ: < 10μA (Tiêu thụ năng lượng cực thấp khi không hoạt động, giúp kéo dài tuổi thọ pin trong các ứng dụng chạy bằng pin.)

Module RC522 có thể được sử dụng trong nhiều ứng dụng khác nhau như:

 Hệ thống điểm danh: Sử dụng trong các hệ thống kiểm soát ra vào, điểm danh sinh viên, nhân viên.

 Hệ thống thanh toán không dây: Dùng trong các hệ thống thanh toán tự động qua thẻ RFID.

 Quản lý kho: Theo dõi hàng hóa và sản phẩm trong kho.

 Ứng dụng IoT: Kết hợp với các vi điều khiển như

ESP32 để xây dựng các hệ thống IoT thông minh.

* Lợi Ích Khi Sử Dụng RC522:

 Tiết kiệm năng lượng: Với mức tiêu thụ điện năng thấp, RC522 phù hợp cho các ứng dụng chạy bằng pin.

 Đa dạng giao tiếp: Hỗ trợ nhiều loại giao tiếp giúp dễ dàng tích hợp vào các hệ thống khác nhau.

 Hiệu suất cao: Khả năng đọc thẻ nhanh và chính xác, lý tưởng cho các ứng dụng yêu cầu độ chính xác cao.

Hình II.2.C Thẻ RFID (ISO14443A)

Thẻ RFID (Radio Frequency Identification) theo tiêu chuẩn ISO14443A là loại thẻ phổ biến trong hệ thống nhận dạng qua sóng vô tuyến, được ứng dụng rộng rãi trong kiểm soát ra vào, thanh toán không dây và theo dõi tài sản Trong số đó, MIFARE Classic là dòng chip được ưa chuộng nhất.

Tần số hoạt động của công nghệ RFID là 13.56 MHz, phù hợp với tiêu chuẩn ISO14443A, cho phép truyền tải dữ liệu không dây hiệu quả giữa thẻ và đầu đọc.

 MIFARE Classic 1K: Thường được sử dụng trong các ứng dụng cơ bản như thẻ ra vào.

 MIFARE Classic 4K: Có dung lượng bộ nhớ lớn hơn, phù hợp cho các ứng dụng phức tạp hơn.

 Bộ nhớ: 1KB hoặc 4KB EEPROM

 1KB EEPROM: Dành cho các ứng dụng lưu trữ dữ liệu đơn giản.

 4KB EEPROM: Dành cho các ứng dụng yêu cầu lưu trữ nhiều dữ liệu hơn.Khoảng cách đọc: 0 - 5 cm

 Kiểm soát ra vào: Sử dụng trong các hệ thống khóa cửa, kiểm soát truy cập vào các tòa nhà, văn phòng.

 Thanh toán không dây: Ứng dụng trong các hệ thống vé điện tử, thanh toán trên phương tiện công cộng.

 Quản lý tài sản: Theo dõi và quản lý tài sản trong kho, cửa hàng bán lẻ.

 Thẻ sinh viên, thẻ nhân viên: Sử dụng trong các trường học, công ty để quản lý thông tin cá nhân và điểm danh.

 An toàn và bảo mật: Thẻ MIFARE Classic hỗ trợ các cơ chế bảo mật, giúp bảo vệ dữ liệu lưu trữ trên thẻ.

 Dễ dàng tích hợp: Khả năng tương thích với nhiều đầu đọc RFID chuẩn, giúp dễ dàng triển khai trong các hệ thống hiện có.

Hiệu suất ổn định là yếu tố quan trọng, cho phép đọc và ghi dữ liệu một cách nhanh chóng và chính xác, đáp ứng tốt cho các ứng dụng cần tốc độ và độ tin cậy cao.

III.2.D Các Linh Kiện Phụ Trợ

 Dây kết nối, breadboard: giúp thiết lập và thử nghiệm mạch.

Hình II.2.D Dây kết nối và breadboard

Thiết Kế Và Triển Khai Phần Mềm

III.3.1 Nền Tảng Và Giao Thức Sử Dụng

 ESP32: ESP32 là một vi điều khiển với khả năng kết nối Wi-Fi và Bluetooth, sử dụng để đọc thẻ RFID và gửi dữ liệu lên server.

Node.js là nền tảng chạy trên máy chủ, cho phép thực thi mã JavaScript bên ngoài trình duyệt Nền tảng này thường được sử dụng để xây dựng API, giúp nhận và xử lý dữ liệu từ ESP32 một cách hiệu quả.

 Cơ sở dữ liệu (MySQL): MySQL là một hệ quản trị cơ sở dữ liệu quan hệ, được sử dụng để lưu trữ dữ liệu điểm danh từ ESP32.

 SPI (Serial Peripheral Interface): Giao thức

SPI được sử dụng để giao tiếp giữa ESP32 và module RC522, giúp truyền và nhận dữ liệu thẻ RFID.

 HTTP (Hypertext Transfer Protocol): Giao thức HTTP được sử dụng để truyền dữ liệu điểm danh từ ESP32 lên server Node.js thông qua các yêu cầu POST.

 Wi-Fi: ESP32 sử dụng kết nối Wi-Fi để giao tiếp với server, đảm bảo việc truyền dữ liệu được thực hiện qua mạng không dây.

III.3.1 Giải Thích Các Giao Thức Sử Dụng

SPI là một giao thức truyền thông đồng bộ, sử dụng xung nhịp để đồng bộ hóa dữ liệu giữa thiết bị chủ (ESP32) và thiết bị tớ (RC522).

HTTP là giao thức tầng ứng dụng cho hệ thống thông tin phân tán và đa phương tiện ESP32 thực hiện yêu cầu HTTP POST tới server Node.js, bao gồm dữ liệu điểm danh như UID thẻ RFID và thời gian điểm danh.

Yêu cầu POST bao gồm tiêu đề và nội dung, trong đó ESP32 chuẩn bị dữ liệu điểm danh và gửi nó trong phần body đến server.

Wi-Fi cho phép ESP32 kết nối với mạng không dây, giúp truyền dữ liệu đến server một cách thuận tiện mà không cần dây kết nối vật lý.

 Thiết lập: ESP32 cần được cấu hình với SSID và mật khẩu của mạng Wi-Fi để có thể kết nối thành công.

Hình III.3.1 Giao diện trang web

Hình III.3.1 Giao diện trang web admin

Nguyên Lý Hoạt Động

III.4.1 Khởi Động Và Thiết Lập ESP32

 Khởi động ESP32: Khi ESP32 được cấp nguồn, nó sẽ khởi động và kiểm tra phần cứng, sau đó bắt đầu thiết lập các chân GPIO cần thiết.

Thiết lập giao tiếp SPI giữa ESP32 và module RC522 là bước quan trọng để đảm bảo quá trình truyền và nhận dữ liệu giữa hai thiết bị diễn ra chính xác và hiệu quả.

III.4.2.Đọc Dữ Liệu Từ Thẻ RFID

 Quét thẻ RFID: Khi một thẻ RFID được đưa vào phạm vi hoạt động của module RC522, RC522 sẽ đọc dữ liệu từ thẻ.

 Truyền dữ liệu tới ESP32: Dữ liệu từ thẻ RFID

(thường là mã UID) được gửi từ RC522 tới ESP32 qua giao tiếp SPI.

 Giải mã dữ liệu: ESP32 nhận dữ liệu thô từ RC522 và giải mã để trích xuất thông tin cần thiết, như mã UID của thẻ.

III.4.3.Xử Lý Dữ Liệu Và Cập Nhật Trạng Thái

 Kiểm tra thông tin thẻ: ESP32 sẽ so sánh thông tin

UID của thẻ với danh sách UID hợp lệ đã được lưu trữ trong bộ nhớ hoặc cơ sở dữ liệu từ trước.

 Nếu thông tin thẻ hợp lệ, ESP32 sẽ ghi nhận sự có mặt của sinh viên và lưu trữ thông tin này trong bộ nhớ EEPROM.

ESP32 sẽ cập nhật trạng thái lên server khi có kết nối Wi-Fi, gửi thông tin điểm danh bao gồm UID của thẻ và thời gian điểm danh thông qua một API được phát triển bằng Node.js.

III.4.4.Truyền Dữ Liệu Lên Server

 Kết nối Wi-Fi: ESP32 kết nối với mạng Wi-Fi đã được cấu hình trước đó.

 Gửi dữ liệu qua HTTP: ESP32 sử dụng giao thức HTTP để gửi một yêu cầu POST chứa thông tin điểm danh (UID và timestamp) đến server Node.js.

 Xử lý trên server: Server Node.js nhận dữ liệu từ

ESP32, xử lý và lưu trữ thông tin vào cơ sở dữ liệu MySQL.

III.4.5.Cách Truyền Dữ Liệu

 Kết nối với Wi-Fi: ESP32 kết nối với mạng Wi-Fi.

 Chuẩn bị dữ liệu: Dữ liệu điểm danh (UID và timestamp) được chuẩn bị dưới dạng chuỗi URL- encoded.

 Gửi yêu cầu POST: ESP32 sử dụng thư viện

HTTPClient để gửi một yêu cầu POST tới server.

 Nhận dữ liệu POST: Node.js server nhận yêu cầu

 Lưu trữ dữ liệu vào MySQL: Dữ liệu điểm danh được lưu trữ vào cơ sở dữ liệu MySQL.

Kết Quả Và Đánh Giá

Kết Quả Đạt Được

 Hoàn thành phần cứng và phần mềm của hệ thống:

 Thiết lập và kết nối thành công ESP32, module RC522, và các linh kiện phụ trợ.

 Phát triển phần mềm trên ESP32 để đọc thẻ RFID và gửi dữ liệu lên server.

 Hoạt động ổn định của hệ thống:

 Hệ thống có khả năng quét thẻ RFID và nhận diện sinh viên một cách chính xác.

 Gửi và nhận dữ liệu giữa ESP32 và server diễn ra trơn tru.

 Lưu trữ và quản lý dữ liệu hiệu quả:

 Dữ liệu điểm danh được lưu trữ chính xác trong cơ sở dữ liệu PhpAdmin.

 Xây dựng API trên Node.js để quản lý và truy cập dữ liệu điểm danh.

 Phát triển giao diện người dùng để theo dõi và quản lý điểm danh của sinh viên.

 Hiển thị thông tin điểm danh một cách rõ ràng và dễ hiểu.

Đánh Giá Kết Quả

 Tính chính xác và hiệu quả:

 Đánh giá độ chính xác trong việc nhận diện và điểm danh sinh viên.

 Độ tin cậy của hệ thống trong các điều kiện khác nhau (số lượng sinh viên lớn, thẻ RFID ở khoảng cách xa, v.v.).

 Tính năng và sự ổn định:

 Đánh giá các tính năng của hệ thống và khả năng hoạt động liên tục mà không gặp lỗi.

 Sự ổn định của kết nối Wi-Fi và việc truyền dữ liệu lên server.

 Đánh giá giao diện người dùng và sự dễ dàng trong việc sử dụng hệ thống.

 Khả năng mở rộng và tích hợp với các hệ thống khác.

Những Khó Khăn Và Hạn Chế

 Khó khăn về phần cứng:

 Vấn đề trong việc kết nối và tương thích giữa ESP32 và module RC522.

 Khả năng cấp nguồn và quản lý năng lượng cho các linh kiện.

 Khó khăn về phần mềm:

 Vấn đề trong việc lập trình và cấu hình giao tiếp SPI giữa ESP32 và RC522.

 Khó khăn trong việc thiết lập và quản lý kết nối Wi-Fi.

 Hạn chế của hệ thống:

 Giới hạn về khoảng cách đọc thẻ RFID.

 Giới hạn về số lượng thẻ RFID có thể quét và xử lý đồng thời.

 Khả năng chịu tải của server và cơ sở dữ liệu khi số lượng sinh viên lớn.

Hướng Phát Triển Tương Lai

 Sử dụng các module RFID có khoảng cách đọc xa hơn và độ nhạy cao hơn.

 Cải thiện nguồn cấp để tăng tính ổn định và hiệu suất của hệ thống.

 Tối ưu hóa mã nguồn để tăng tốc độ xử lý và giảm độ trễ.

 Bổ sung các tính năng mới như thông báo qua email/SMS khi điểm danh thành công.

 Tích hợp thêm các cảm biến khác để thu thập dữ liệu môi trường trong lớp học.

 Phát triển ứng dụng di động để quản lý và theo dõi điểm danh từ xa.

 Áp dụng các biện pháp bảo mật mạnh mẽ hơn cho giao tiếp giữa ESP32 và server.

 Bảo vệ dữ liệu điểm danh trên cơ sở dữ liệu bằng cách mã hóa và xác thực người dùng.

 Ứng dụng rộng rãi hơn:

 Mở rộng hệ thống để áp dụng vào các môi trường khác như văn phòng, sự kiện, hội nghị.

 Phát triển các mô-đun mới để kết nối và tương tác với các hệ thống quản lý khác.

Ngày đăng: 26/12/2024, 17:15