Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
Composants
| Arduino UNO | 1 |
| Lecteur RFID RC522 + badges | 1 |
| Fils de connexion (jumper wires) | 1 jeu |
Logiciels requis
- Arduino IDE : site officiel
- Serveur XAMPP (Windows) : Apache + MySQL + phpMyAdmin. Téléchargement
- Alternative Linux (LAMP) :
sudo apt-get install apache2 mysql-server php libapache2-mod-php phpmyadmin
- Alternative Linux (LAMP) :
- Python IDLE (3.x recommandé) : python.org
- Bibliothèques Python :
pip install pyserial mysqlclient(oumysql-connector-python)
- Bibliothèques Python :
Principe
Contrairement aux projets avec shield Ethernet, ici l'Arduino envoie les UID RFID via **liaison série (USB)** vers un script Python sur PC (ou Raspberry Pi pour version portable). Le script Python insère les données dans une base MySQL (phpMyAdmin).
Câblage RFID RC522 → Arduino UNO (SPI)
| RC522 | Arduino UNO | Arduino Mega |
|---|---|---|
| RST | 9 | 9 |
| SDA (SS) | 10 (ou 4) | 53 (ou 4) |
| MOSI | 11 | 51 |
| MISO | 12 | 50 |
| SCK | 13 | 52 |
| VCC | 3,3 V | 3,3 V |
| GND | GND | GND |
| IRQ | Non connecté | Non connecté |
Important : Alimentez le RC522 en 3,3 V uniquement !
Bibliothèque Arduino
Installez MFRC522 via le gestionnaire de bibliothèques (recherche « MFRC522 » → installer).
Code Arduino (extrait clé)
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID Attendance System Ready");
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
// Construire l'UID en chaîne hexadécimale
String uidStr = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (mfrc522.uid.uidByte[i] < 0x10) uidStr += "0";
uidStr += String(mfrc522.uid.uidByte[i], HEX);
}
uidStr.toUpperCase();
Serial.println(uidStr); // Envoi série vers Python
delay(1000); // Anti-rebond
}
Script Python (envoi vers MySQL/phpMyAdmin)
import serial
import mysql.connector
from datetime import datetime
# Configuration série
ser = serial.Serial(port='COM3', baudrate=9600, timeout=1) # Adapter le port
# Configuration BDD
db = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="attendance_db"
)
cursor = db.cursor()
# Table : CREATE TABLE logs (id INT AUTO_INCREMENT PRIMARY KEY, uid VARCHAR(20), timestamp DATETIME);
print("En écoute sur port série...")
while True:
if ser.in_waiting > 0:
uid = ser.readline().decode('utf-8').strip()
if uid:
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
sql = "INSERT INTO logs (uid, timestamp) VALUES (%s, %s)"
cursor.execute(sql, (uid, now))
db.commit()
print(f"Enregistré : {uid} @ {now}")
Base de données (phpMyAdmin)
CREATE DATABASE attendance_db;
USE attendance_db;
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
uid VARCHAR(20) NOT NULL,
timestamp DATETIME NOT NULL,
INDEX idx_uid (uid),
INDEX idx_timestamp (timestamp)
);
Avantages de cette architecture
- Pas de shield Ethernet/WiFi coûteux
- PC/Raspberry Pi gère la BDD et l'interface web
- Facilement extensible : interface web de consultation, export CSV, notifications email, etc.
- Portable sur Raspberry Pi (headless) pour installation fixe
Ressources
- Code source complet : GitHub (lien dans le projet original)
- Vidéo tutoriel détaillée (voir projet source)
- Schéma de câblage (image fournie)
Projet idéal pour apprendre la communication série Arduino↔Python, l'intégration BDD, et réaliser un vrai système de pointage low-cost.
Processus de fabrication
- Système de contrôle d'accès intégré QR, RFID et vérification de température
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Construire un robot avec Raspberry Pi et Python : Guide complet
- Construire une serrure RFID sécurisée avec Arduino et RC522 (MIFARE 13,56 MHz)
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
- Construire une Radio FM Compacte avec Arduino Nano et RDA5807M
- Système de pointage RFID temps réel avec Arduino et Google Sheets