Apriporta RFID con arduino uno
Moderatori: MassimoB, WALTERmwp, xyz
0
voti
Scusate ho sbagliato a scrivere prima, non è il dispositivo il problema ma è il display che si accende e si spegne...scusate.
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
Il watchdog l'ho inserito così:
Sicuramente ho sbagliato qualcosa ma non riesco a capire cosa...
- 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...
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
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
Dite che sia qualcosa a livello hardware?
Dite che sia qualcosa a livello hardware?
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
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.
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
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.
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
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?...
-
lupoalberto74it
10 3 - Messaggi: 42
- Iscritto il: 4 ago 2021, 14:39
0
voti
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.
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti