Dự án xây dựng một hệ thống bỏ phiếu điện tử ứng dụng công nghệ RFID để xác thực người tham gia và tự động gửi dữ liệu lên Google Sheet. Hệ thống hướng tới tính chính xác, tiện lợi, và minh bạch, phù hợp với quy mô lớp học, nhóm nhỏ hoặc các hoạt động tổ chức nội bộ.
Người dùng sử dụng thẻ RFID để thực hiện bỏ phiếu. Hệ thống sẽ ghi nhận UID, thời gian, và hiển thị trạng thái qua đèn LED và buzzer.
graph LR
A[Người dùng quét thẻ RFID] --> B[ESP32 đọc UID từ RC522]
B --> C[ESP32 xử lý dữ liệu]
C --> D{UID hợp lệ?}
D -- Có --> E[Gửi UID + thời gian lên Google Sheet]
D -- Không --> F[Hiển thị báo lỗi]
E --> G[Hiển thị trạng thái qua đèn LED & buzzer]
- Nhận dạng thẻ RFID (UID)
- Xác thực dữ liệu đầu vào
- Gửi thông tin lên Google Sheet thông qua API
- Phản hồi bằng đèn LED và buzzer
- Ghi nhận thời gian bỏ phiếu chính xác
- Hiển thị bảng kết quả theo thời gian thực trên web
-
Phần cứng:
- ESP32 DevKit V1
- Module RFID RC522
- Buzzer
- Đèn LED
- Breadboard + Dây jumper
-
Phần mềm:
- Arduino IDE
- Web frontend (HTML + CSS + JS)
- Google Sheet API (qua Google Apps Script)
-
Thư viện Arduino:
WiFi.hHTTPClient.hMFRC522.hSPI.h
-
Web frontend:
index.html: Giao diện hiển thị bảng kết quả bỏ phiếustyle.css: Giao diện tối (dark mode) thân thiện với người dùng- Tìm kiếm UID hoặc thời gian theo thời gian thực
- Dữ liệu lấy từ Google Sheet CSV công khai
🔗 Xem kết quả tại:
📄 Google Sheet kết quả
🌐 Giao diện Web:
index.html+style.csstải dữ liệu từ Google Sheet- Tự động cập nhật bảng kết quả sau khi có người bỏ phiếu
- Tính năng lọc nhanh theo UID hoặc thời gian
| Mạch hoàn chỉnh | Giao diện Web |
|---|---|
| ![Mạch RFID ESP32] | ![Giao diện web] |
Lưu ý: Cập nhật link ảnh thực tế từ Google Drive hoặc Imgur để hiển thị đầy đủ.
-
Nối các chân RC522 với ESP32 theo sơ đồ:
- SDA → GPIO5
- SCK → GPIO18
- MOSI → GPIO23
- MISO → GPIO19
- RST → GPIO22
- GND → GND
- 3.3V → 3.3V
-
Nối thêm đèn LED và buzzer (nếu có) theo code.
- Mở file
code_esp32.inotrong Arduino IDE. - Cài các thư viện cần thiết (SPI, MFRC522, WiFi).
- Điền thông tin Wi-Fi vào code.
- Tạo webhook Google Apps Script để nhận dữ liệu từ ESP32.
- Tải code lên ESP32 và thử nghiệm.
📦 RFID-Voting-System/
├── code_esp32.ino
├── index.html
├── style.css
└── README.md
- Tác giả: [người thực hiện: Giáp Thiên Thanh]
- Email: hoitamsonbg@gmail.com