Schéma de circuit pour créer un système de péage intelligent à l’aide d’Arduino :


Explication du code pour lire l’UID de la carte RFID à l’aide d’Arduino UNO :
Code :
Bibliothèques et initialisation :
#include #include
Le code utilise la bibliothèque SPI pour la communication SPI et la bibliothèque MFRC522 spécifiquement pour le module RFID. SS_PIN et RST_PIN sont définis pour les broches Slave Select et Reset du module RFID, et l’objet mfrc522 est créé pour gérer les fonctions RFID.
Fonction de configuration :
void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); Serial.println("Approximate your card to the reader...");}
Dans setup(), le code initialise la communication série et démarre SPI. Il appelle ensuite PCD_Init() pour initialiser le module RFID. Le message invite l’utilisateur à rapprocher l’étiquette RFID du lecteur.
Boucle principale – Détection de carte :
if (!mfrc522.PICC_IsNewCardPresent()) { return;}
Dans la fonction loop(), le code vérifie d’abord la présence d’une nouvelle carte avec PICC_IsNewCardPresent(). Si aucune carte n’est présente, elle revient immédiatement pour éviter tout traitement ultérieur.
Sélection de carte et récupération de l’UID :
if (!mfrc522.PICC_ReadCardSerial()) { return;}
Une fois qu’une carte est détectée, PICC_ReadCardSerial() tente de sélectionner la carte et de lire son identifiant unique (UID). Si l’opération de lecture échoue, la fonction retourne.
UID d’affichage et de traitement :
String content = "";for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX));}
Dans cette partie, le code convertit l’UID en contenu de chaîne et l’imprime sur Serial Monitor. Il parcourt chaque octet de l’UID, en l’ajoutant au contenu au format hexadécimal. Cet UID identifie la carte de manière unique.
Logique de contrôle d’accès :
if (content.substring(1) == "BD 31 15 2B") { Serial.println("Authorized access"); delay(3000);} else { Serial.println("Access denied"); delay(3000);}
Le code vérifie si l’UID de la carte correspond à une valeur prédéfinie (BD 31 15 2B). Si cela correspond, il imprime « Accès autorisé » ; sinon, il imprime « Accès refusé ». C’est ici que vous pouvez modifier l’UID des cartes spécifiques auxquelles vous souhaitez accorder l’accès. Le délai (3000) fait une pause de 3 secondes avant de continuer.
Explication du code pour le système de péage intelligent Arduino
La logique de programmation implique la lecture de la carte RFID, sa vérification par rapport à une liste d’identifiants autorisés, le contrôle du servomoteur et la mise à jour de l’écran LCD avec l’état d’accès.
Bibliothèques et définitions de broches :
#include #include #include #include #include #define SS_PIN 10#define RST_PIN 9#define BUZZER 2 // Buzzer pin
Bibliothèques : Wire et LiquidCrystal_I2C pour l’écran LCD, SPI et MFRC522 pour le module RFID, et Servo pour le contrôle du servomoteur.
Épingles : Définissez les broches RFID et une broche pour le buzzer.
Initialisation de l’objet :
MFRC522 mfrc522(SS_PIN, RST_PIN); // Instance RFID
Servo monServo ; // Instance d’asservissement
Écran LCD LiquidCrystal_I2C (0x27, 16, 2); // Instance LCD avec adresse I2C 0x27
Le MFRC522 objet (mfrc522) contrôle le lecteur RFID.myServo est l’instance d’asservissement.
Le lcd L’objet représente l’écran LCD I2C.
Fonction de configuration :
void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); myServo.attach(6); myServo.write(0); pinMode(BUZZER, OUTPUT); noTone(BUZZER);
lcd.init(); lcd.clear(); lcd.backlight();
lcd.setCursor(0, 0); lcd.print(" Put card on "); lcd.setCursor(0, 1); lcd.print(" reader ");}
- Initialisation série et RFID : Démarre la communication série et initialise le lecteur RFID.
- Servo et buzzer : Fixe le servo à la broche 6, règle la position de départ à 0° et configure le buzzer.
- Configuration de l’écran LCD : Initialise et efface l’écran LCD, activant le rétroéclairage et affiche le message initial.
Boucle principale :
if (!mfrc522.PICC_IsNewCardPresent()) { return;}if (!mfrc522.PICC_ReadCardSerial()) { return;}Card Detection: The code checks for a new card. If no card is detected, it returns to avoid further processing.Read Card UID: If a card is detected, it attempts to read its UID.
Displaying the UID on LCD:lcd.clear();lcd.setCursor(0, 0);lcd.print("UID tag:");String content = "";for (byte i = 0; i < mfrc522.uid.size; i++) { lcd.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); lcd.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX));}content.toUpperCase();
Afficher l’UID : Efface l’écran LCD, affiche « UID tag : », puis imprime chaque octet de l’UID au format hexadécimal.
UID du magasin : Les octets UID sont stockés dans la chaîne de contenu pour la comparaison des accès.
Logique de contrôle d’accès :
cd.setCursor(0, 1);if (content.substring(1) == "53 37 5A E4") { // Replace with your card's UID lcd.print("Access Granted"); tone(BUZZER, 500); delay(300); noTone(BUZZER); myServo.write(90); // Open the servo delay(5000); // Keep it open for 5 seconds myServo.write(0); // Close the servo} else { lcd.print("Access Denied"); tone(BUZZER, 300); delay(2000); noTone(BUZZER);}delay(2000);
Comparaison des UID : Vérifie si l’UID correspond à un UID autorisé prédéfini. Si tel est le cas, l’accès est accordé ; sinon, l’accès est refusé.
Accès accordé :
- Affiche « Accès accordé » sur l’écran LCD.
- Un court signal sonore retentit.
- Déplace le servo à 90° (position ouverte) pendant 5 secondes, puis le ramène à 0° (position fermée).
Accès refusé:
- Affiche « Accès refusé » sur l’écran LCD.
- Un signal sonore plus long retentit.




Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
SunFounder Kit Ultime Compatible avec Arduino UNO IDE Scratch,3 en 1 IoT/Voiture Intelligente/Kit de Base,Tutoriels en Ligne,Cours Vidéo en Anglais,192 Pièces,87 Projets,pour Adulte et Adolescent
-
Arduino® UNO™ Q 4GB [ABX00173]- Carte Hybride, microprocesseur Qualcomm Dragonwing QRB2210 (MPU) et microcontrôleur STM32U585 (MCU), AI Vision, Voice, IoT, Robotics, Linux Debian OS, Wi-FI 5, USB-C
