Commande d'une ventouse (serrure électromagnétique) avec un relais une carte RFID et Arduino

Bonjour,
Dans mes bricolage comme d'habitude j'ai décidé cette fois çi de mettre une serrure électronique sur la porte de chez moi . Pour ce projet j'ai utilisé :
-arduino Uno
-carte RFID rc522
-un module relais 5v srd-05vdc
-une ventouse (12v-24v)
Après avoir fait le branchement et avoir televerser le code dans l'arduino j'ai monté le tout sur la porte et ça à fonctionner pratiquement une semaine en permanence le tout était alimentaté par une batterie rechargeable de 12v . Après ces une semaine passé ça a cessé de fonctionner. J'ai changé tout les composants sauf la ventouse . S'il vous plaît venez moi en aide , actuellement ça fonctionne seulement un nombre de tentatives définie parfois 7fois souvent 50fois puis suis obligé de redémarrer l'arduino. C'est à dire que à l'état initial la ventouse est activé (la porte est fermée), lorsque je présente le badge sur la carte RFID la ventouse se désactive pendant 2s puis s'active à nouveau, le problème avec le système est qu'il à fonctionner normalement sans interruption une semaine puis passé ces une semaine j'ai redémarré l'arduino ça avait recommencer de fonctionner croyant que tout allait on me fait signe que la porte ne s'ouvre plus , lorsque je redémarre encore l'arduino je fais plusieurs teste et je me rend compte au bout de certains nombre de test la ventouse reste actif et n'obéit plus à la carte RFID ou au relais parce que la led du relais clignote lorsqu'on fait le test et je vérifie avec la machine la carte RFID fonctionne normalement.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Vous ne pensez pas que poster le code (avec les balises de code) et un schéma du circuit (propre et lisible) ainsi que toutes les infos sur les composants retenus et leur alimentation serait nécessaires pour vous aider ???

(Lisez les bonnes pratiques avant de répondre)

#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#define SS_PIN 53
#define RST_PIN 5
#define Max_Acces 10000

const int RELAY_PIN = 9;
byte Count_acces1=0;
byte CodeVerif1=0;
byte CodeVerif2=0;
byte CodeVerif3=0;
byte CodeVerif4=0;
byte CodeVerif5=0;
byte CodeVerif6=0;
byte CodeVerif7=0;
byte CodeVerif8=0;
byte CodeVerif9=0;
byte CodeVerif10=0;
byte Code_Acces1[4]={0xB7, 0x6E, 0x31, 0x39};
byte Code_Acces2[4]={0x2E, 0x0E, 0x20, 0xDF};
byte Code_Acces3[4]={0xE7, 0xDE, 0x5B, 0x3A};
byte Code_Acces4[4]={0xC7, 0x5E, 0x49, 0x3A};
byte Code_Acces5[4]={0xA7, 0x7C, 0x5D, 0x3A};
byte Code_Acces6[4]={0x27, 0xA0, 0x4E, 0x3A};
byte Code_Acces7[4]={0x37, 0x41, 0x06, 0x39};
byte Code_Acces8[4]={0x07, 0xF3, 0x62, 0x3A};
byte Code_Acces9[4]={0x07, 0x19, 0x61, 0x3A};
byte Code_Acces10[4]={0x9E, 0x8E, 0x2C, 0xDF};

MFRC522 rfid(SS_PIN,RST_PIN); // Instance of the class
byte nuidPICC[4];
void setup() 
{ 
  Serial.begin(9600);
  SPI.begin(); 
  rfid.PCD_Init(); 
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH);
}
 
void loop() 
{
  if ( !rfid.PICC_IsNewCardPresent())
    return;
  if ( !rfid.PICC_ReadCardSerial())
    return;
  for (byte i = 0; i < 4; i++) {
    nuidPICC[i] = rfid.uid.uidByte[i];
  }

  // Vérification du code 
  CodeVerif1= GetAccesState(Code_Acces1,nuidPICC); 
  CodeVerif2=GetAccesState(Code_Acces2,nuidPICC);
  CodeVerif3=GetAccesState(Code_Acces3,nuidPICC);
  CodeVerif4=GetAccesState(Code_Acces4,nuidPICC);
  CodeVerif5=GetAccesState(Code_Acces5,nuidPICC);
  CodeVerif6=GetAccesState(Code_Acces6,nuidPICC);
  CodeVerif7=GetAccesState(Code_Acces7,nuidPICC);
  CodeVerif8=GetAccesState(Code_Acces8,nuidPICC);
  CodeVerif9=GetAccesState(Code_Acces9,nuidPICC);
  CodeVerif10=GetAccesState(Code_Acces10,nuidPICC);
  
  
  if (CodeVerif1!=1 and CodeVerif2!=1 and CodeVerif3!=1 and CodeVerif4!=1 and CodeVerif5!=1 and CodeVerif6!=1 and CodeVerif7!=1 and CodeVerif8!=1 and CodeVerif9!=1 and CodeVerif10!=1)
  {
    Count_acces1+=1;
    if(Count_acces1==Max_Acces)
    {
     // Dépassement des tentatives (clignotement infinie) 
     while(1)
     {
 
      
      // Affichage 
      Serial.println("Alarme!");              
      digitalWrite(RELAY_PIN, LOW);
     }
    }
    else
    {
      // Affichage 
      Serial.println("ERROR");
      digitalWrite(RELAY_PIN, LOW);  // unlock the door
    }
  }
  else
  {
    Serial.println("Ouverture de la porte"); 
    Count_acces1=0; 
    digitalWrite(RELAY_PIN, LOW); // lock the door
    delay(2000);
    digitalWrite(RELAY_PIN, HIGH); // lock the doo
  }

  // Affichage de l'identifiant 
  Serial.println(" L'UID du tag est:");
  for (byte i = 0; i < 4; i++) 
  {
    Serial.print(nuidPICC[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  // Re-Init RFID
  rfid.PICC_HaltA(); // Halt PICC
  rfid.PCD_StopCrypto1(); // Stop encryption on PCD
}

byte GetAccesState(byte *CodeAcces,byte *NewCode) 
{
  byte StateAcces=0; 
  if ((CodeAcces[0]==NewCode[0])&&(CodeAcces[1]==NewCode[1])&&
  (CodeAcces[2]==NewCode[2])&& (CodeAcces[3]==NewCode[3]))
    return StateAcces=1; 
  else
    return StateAcces=0; 
}

``


NB: a la place de la vantouse electrique j'ai mis la lampe parce que j'ai pas pu avoir cella dans le logiciel Fritzing utilise

les composants utilises sont:

  • une carte RFID RC 522

  • Une ventouse électrique (12v aa 24v et un courant de 0,2 aa 0,5A)

  • une carte Arduino Méga

  • Un module relais de 5v / 240v comme sur la photo

  • Une batterie de 12v rechargeable servant d'alimentation à l'arduino et à la ventouse

Bonjour,

Si ta 'ventouse' est un électroaimant, il faut absolument une diode de roue libre (montée en inverse) à ses bornes pour protéger des surtensions lors de l'ouverture des contacts.

Merci,
J'ai oublié de rappeller que à la place de la ventouse électrique j'ai aussi utiliser une ampoule de 220v pour tester et malheureusement j'observe le même problème . Merci de m'aider

Lorsque le système ne répond plus, quels sont les messages que tu reçois dans le moniteur série?

Rien avoir avec le problème rencontré mais je m’interroge sur ce point !

if (CodeVerif1!=1 and CodeVerif2!=1 and CodeVerif3!=1 and CodeVerif4!=1.......

Le "and " c'est un opérateur particulier ou ça remplace && ?

Merci,
Je ne reçois aucune erreur tout fonctionne à la normale, le moniteur affiche la lecture du badge par la carte RFID, merci de m'aider.

Ça remplace le &

Merci je connaissais pas .

Tu veux dire que

  • le message "Ouverture de la porte" s'affiche
  • la LED du module relais s'allume pendant 2s
  • le message " L'UID du tag est:" s'affiche suivi du numéro du tag qui a été présenté

Si c'est bien ça il faudrait regarder l'état du relais ou sa tension d'alimentation. C'est bien un module relais qui s'alimente en 5V?
Tu as un lien vers le fournisseur du module relais?

Le relais que j'ai est exactement similaires à celui du site du lien suivant : Module Relais 1 canal 5V DC - 250V AC SRD-05VDC-SL-C relay

Le && pas le & (qui serait bitand)

Il y a toute une liste de représentation alternative des opérateurs

Primary Alternative
&& and
&= and_eq
& bitand

Etc (cf le lien parce que la mise en forme sous forme de tableau fonctionne mal quand il y a un pipe comme pour le ou)

1 Like

Bonjour,
voici le lien d'un forum qui pose le même problème que moi ,s'il vous plaît jetez-y un coup d'oeil. Chute de tension lors de l'activation d'un relais | Les Électroniciens.com (les-electroniciens.com)
ça pourrais orienté la pensée.

Bonjour djagbaa

Le problème : dès que le relais est actif, la tension de mon alim 5V chute (de 5V à 2.7V). Une fois le relais à nouveau inactif, la tension remonte à 5V.

As-tu constaté le même problème?

Cordialement
jpbbricole

Oui oui

Donc, si tu constates le même problème c'est sans doute un problème d'alimentation.
Le relais consomme environ 70mA

Il faudrait chercher la consommation du module RFID.

Comme ton module relais et ton lecteur RFID tire leur 5V de l'Arduino, as-tu essayé d'utiliser un 5V externe pour alimenter ces 2 périphériques?

1 Like