Bonjour à tous,
Je suis très novice dans le domaine du arduino, mais un peu bricoleur dans l'âme...
Pour les besoins d'un ami, je me suis lancé dans la conception d'un projet arduino crée par un youtubeur (Et grand merci à RAOM Electronica pour son travail ! ) qui permet de démarrer sa moto avec un arduino nano, une carte électronique et un module RFID-RC522. Apres avoir suivi les instructions vidéos et diffèrent documentations mise à dispo par le concepteur du projet, j'ai réussi à le faire fonctionner. youpi...
Cependant, la détection par le module RFID-RC522 de la carte rfid est assez faible, car le module se trouve derrière le carénage (pour ne pas être visible de l'extérieur).
J'ai donc pensé à remplacer le module RFID-RC522 par un module PN5180-NFC.... Plus puissant à ce que j'ai compris.
Mon problème est justement dans ce changement de module (RFDI-RC522 vers un PN5180-NFC), je ne sais pas si c'est vraiment faisable, et si c'est le cas, je ne sais pas non plus comment adapter le code et le câblage pour assurer que cela fonctionne.
Voici les informations que j'ai utilisées pour concevoir le projet :
Matériels
Module: Arduino Nano
RFID (original): RFID-RC522
RFID (souhaité): PN5180-NFC
Schéma Électrique
J'ai mis en couleur les liaisons entre le arduino nano et le module RFID pour que ce soit plus lisible.
Code Utilisé
//CE CODE A ÉTÉ CRÉÉ PAR RAOM ELECTRONICA
//WWW.YOUTUBE.COM/RAOMELECTRONICA
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte LecturaUID[4]; // Tableau pour stocker l'identifiant lu depuis la carte RFID
byte Usuario1[4]= {0x89, 0xC5, 0x43, 0xE8} ; // UID de l'utilisateur 1: 89 C5 43 E8
byte Usuario2[4]= {0xBA, 0x8D, 0x35, 0x29} ; // UID de l'utilisateur 2: BA 8D 35 29
byte Usuario3[4]= {0xBF, 0xBF, 0x5B, 0xDC} ; // UID de l'utilisateur 3: BF BF 5B DC
int suma = 0; // Variable pour compter le nombre de lectures
unsigned long tanterior;
unsigned long tiempo;
void setup() {
pinMode (4,OUTPUT); // Configure le pin 4 comme sortie, pour activer la moto
pinMode (3,OUTPUT); // Configure le pin 3 comme sortie, pour activer le CDI de la moto
pinMode (2,OUTPUT); // Configure le pin 2 comme sortie, pour démarrer la moto
pinMode (6,OUTPUT);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(6, HIGH);
SPI.begin();
mfrc522.PCD_Init(); // Initialise le module lecteur RFID
}
void loop() {
tiempo=millis();
if(tiempo- tanterior> 10000UL) { // Réinitialise la connexion à la carte
tanterior=tiempo;
mfrc522.PCD_Reset(); // Réinitialise le module lecteur RFID
SPI.end();
delay(10);
SPI.begin();
mfrc522.PCD_Init(); // Réinitialise le module lecteur RFID
}
if ( ! mfrc522.PICC_IsNewCardPresent()) // Vérifie si une nouvelle carte RFID est détectée
return;
if ( ! mfrc522.PICC_ReadCardSerial()) // Lit les données de la carte RFID
return;
for (byte i = 0; i < mfrc522.uid.size; i++) {
LecturaUID[i]=mfrc522.uid.uidByte[i]; // Stocke l'identifiant lu dans un tableau
}
// Vérifie si l'identifiant lu correspond à l'un des utilisateurs enregistrés
if(comparaUID(LecturaUID, Usuario1)) // Utilisateur 1
{
suma = suma + 1;}
else if(comparaUID(LecturaUID, Usuario2)) // Utilisateur 2
{
suma = suma + 1;}
else if(comparaUID(LecturaUID, Usuario3)) // Utilisateur 3
{
suma = suma + 1;}
mfrc522.PICC_HaltA(); // Met fin à la communication avec la carte RFID
if(suma == 1) { // Moto prête à démarrer
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
delay(100);
digitalWrite(6,HIGH);
delay(50);
digitalWrite(6,LOW);
delay(100);
digitalWrite(6,HIGH);
}
if(suma == 2) { // Démarrage de la moto
digitalWrite(2, LOW);
delay(700);
digitalWrite(2,HIGH);
delay(1500);
SPI.begin();
mfrc522.PCD_Init();
}
if(suma == 3) { // Arrêt de la moto
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(6, LOW);
delay(100);
digitalWrite(6,HIGH);
delay(50);
digitalWrite(6,LOW);
delay(100);
digitalWrite(6,HIGH);
suma=0;
}
}
// Fonction pour comparer deux identifiants
boolean comparaUID(byte lectura[],byte usuario[])
{
for (byte i=0; i < mfrc522.uid.size; i++){
if(lectura[i] != usuario[i])
return(false);
}
return(true);
}
J'espère avoir mis suffisaient d'informations... Merci à ceux qui prendront le temps de lire ma demande et d'y répondre.


