Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Apriporta RFID con arduino uno

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[31] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 14 giu 2023, 21:52

Scusate ho sbagliato a scrivere prima, non è il dispositivo il problema ma è il display che si accende e si spegne...scusate. :(
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[32] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteGioArca67 » 14 giu 2023, 23:14

Sì, ma pare che lui abbia qualcosa che non va...
Avatar utente
Foto UtenteGioArca67
3.576 4 5 9
Master
Master
 
Messaggi: 3424
Iscritto il: 12 mar 2021, 9:36

0
voti

[33] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 14 giu 2023, 23:58

Il watchdog l'ho inserito così:
Codice: Seleziona tutto
#include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <avr/wdt.h>

#define SS_PIN 10

#define RST_PIN 9

#define rele 2

#define MAXSCHEDE 8


LiquidCrystal_I2C lcd(0x27,16,2);

MFRC522 mfrc522(SS_PIN, RST_PIN);


int code[MAXSCHEDE][7] = {{xxxxxxxxx},
{xxxxxxxxxxx},
{xxxxxxxxxxx},
{xxxxxxxxxxx},
{xxxxxxxxxxx},
{xxxxxxxxxx},
{xxxxxxxxxx},
{xxxxxxxxx}};

int codeRead = 0;


void setup() {
    wdt_disable();
    Serial.begin(9600);
   
   SPI.begin();       

   mfrc522.PCD_Init();

   Serial.println("Arduino RFID reading UID");

      digitalWrite (rele, HIGH);
   pinMode(rele, OUTPUT);
         
   lcd.init();

    lcd.backlight();

  lcd.setCursor(0,0);

  lcd.print("IT Benvenuto");
  Serial.println("IT Benvenuto");
  lcd.setCursor(0,1);

  lcd.print("ES Bienvenidos");
  Serial.println("ES Bienvenidos");
  wdt_enable(WDTO_8S);
}

void loop() {

  if ( mfrc522.PICC_IsNewCardPresent())

    {
        if ( mfrc522.PICC_ReadCardSerial())
        {

           lcd.clear();

           Serial.print("Tag UID:");

           lcd.setCursor(0,0);

           lcd.print("Tag UID:");

           lcd.setCursor(0,1);


           for (byte i = 0; i < mfrc522.uid.size; i++) { 

                  Serial.print(mfrc522.uid.uidByte[i] < 0x27 ? " 0" : " ");

                  Serial.print(mfrc522.uid.uidByte[i], HEX);                 

                  lcd.print(mfrc522.uid.uidByte[i] < 0x27 ? " 0" : " ");

                  lcd.print(mfrc522.uid.uidByte[i], HEX);
            }           
 
            int i = 0;

            boolean match = false;
        for(int sch=0;sch<MAXSCHEDE&&!match;sch++)
        {
            int i=0;
            match = true;
            while(i<mfrc522.uid.size)
            {
                if(!(int(mfrc522.uid.uidByte[i]) == int(code[sch][i])))
                  {
                     match = false;
                   }
                  i++;
}
}

            delay(1000);
                       
           lcd.clear();

           lcd.setCursor(0,0);           

           if(match)

           {             
              lcd.print("Accesso Valido");
              lcd.setCursor(0,1);
              lcd.print("Porta Aperta");

              Serial.println("\Accesso Valido");
             
              digitalWrite (rele, LOW);
              delay (700);     
              digitalWrite (rele, HIGH);                 

           }else{
                           
              lcd.print("Carta Errata");
              lcd.setCursor(0,1);
              lcd.print("Accesso Negato");

             Serial.println("\Carta Errata");
           }             

             Serial.println("============================");           

             mfrc522.PICC_HaltA();

             delay(2000);

             reset_state();
                           
    }
  }
}
wdt_reset();
void reset_state()

{
    lcd.clear();

    lcd.setCursor(0,0);

    lcd.print("IT Benvenuto");
    Serial.println("IT Benvenuto");
    lcd.setCursor(0,1);
    lcd.print("ES Bienvenidos");
    Serial.println("ES Bienvenidos");
   
}
}


Sicuramente ho sbagliato qualcosa ma non riesco a capire cosa... :shock:
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[34] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentenicsergio » 15 giu 2023, 6:51

wdt_reset() devi inserirlo come ultima istruzione all'interno di loop().
Avatar utente
Foto Utentenicsergio
4.451 3 9 13
Master
Master
 
Messaggi: 869
Iscritto il: 1 gen 2020, 16:42

0
voti

[35] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 15 giu 2023, 15:36

Ok grazie...appena ho tempo provo...comunque questa mattina ho visto che era di nuovo bloccato il sensore RFID. Il display continua ad accendersi e spegnersi ma con la scritta di benvenuto sempre visibile :-x
Dite che sia qualcosa a livello hardware?
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[36] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteGioArca67 » 15 giu 2023, 15:56

Potrebbe.
Ma hai solo il lettore di schede? Hai aggiunto un relè?
Metti comunque un condensatore elettrolitico da 10uF in parallelo all'alimentazione dell'arduino.
Avatar utente
Foto UtenteGioArca67
3.576 4 5 9
Master
Master
 
Messaggi: 3424
Iscritto il: 12 mar 2021, 9:36

0
voti

[37] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 15 giu 2023, 18:05

Ho sia il lettore di schede che il relè e anche il display LCD ic2. Il lettore e il display sono collegati alla stessa alimentazione dell'arduino, il lettore prende la tensione dalla scheda di Arduino. L'alimentazione dell'arduino arriva con circa 4m di cavo. L'alimentatore dell'arduino è 5v 2ah collegato ai pini 5v - GND.
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[38] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 16 giu 2023, 20:47

Finalmente ho montato il condensatore consigliatomi da Gio e per adesso sta tenendo vedremo domani mattina se è ancora in funzione, ho spostato anche il codice di reset del watchdog alla fine del loop e va un po' meglio, si resetta una volta passata la scheda e si apre il cancello. Speriamo in bene. :D
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[39] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 17 giu 2023, 12:14

Purtroppo anche con il condensatore si blocca. Stavo pensando di cambiare l'alimentatore e metterne uno con più ampere, visto che ho all'incirca 4m di cavo dall'alimentatore all'arduino. Dico questo perché se alimento l'arduino in casa con lo stesso alimentatore, e ovviamente con un cavo più corto, non si blocca.Potrebbe essere una soluzione?...
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[40] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentedjnz » 17 giu 2023, 13:17

lupoalberto74it ha scritto:Ho sia il lettore di schede che il relè e anche il display LCD ic2. [...] il lettore prende la tensione dalla scheda di Arduino. L'alimentazione dell'arduino arriva con circa 4m di cavo

I motivi per cui Arduino si blocca non possono essere molti:
- uso improprio della memoria dinamica (ad esempio attraverso la classe String) o di puntatori o indici di array.
- guasto hardware
- alimentazione inadeguata (instabile, disturbi)
- disturbi irradiati o accoppiati induttivamente o capacitivamente che vengono ricevuti dai terminali di ingresso/uscita
- disturbi condotti attraverso alimentazione e massa per non adeguati collegamenti con i moduli esterni.

Dalla descrizione dei collegamenti, di cui urge uno schema di cablaggio altrimenti ci si tira avanti il problema altri cento post, non è chiaro come sia alimentata la scheda relé, e questo è un altro punto fondamentale. Inoltre dove vi sia un relé serve sia il diodo di ricircolo sulla bobina per evitare le extratensioni di rilascio (e sulle schedine relé c'è già), sia lo snubber sui contatti per evitarne la scintillazione con conseguente generazione di disturbi irradiati (e questo invece non c'è mai).
Una domanda ben posta è già mezza risposta.
Avatar utente
Foto Utentedjnz
1.055 1 4 5
Expert
Expert
 
Messaggi: 577
Iscritto il: 26 lug 2020, 14:52

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti