Pages: 1 [2]   Go Down
Author Topic: 5 RFID con Arduino Uno  (Read 1144 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, il gnd degli alimentatori va collegato al GND dell'arduino.
GND è il valore di riferimento, essendo il voltaggio una "differenza di tensione", servono due valori: il gnd, che rappresenta lo 0V, e il 5v, che rappresenta uno scostamento di 5v dal GND. se tu misurassi il GND degli alimentatori rispetto a quello arduino probabilmente rileveresti qualche V di differenza: ognuno ha il suo 0v! collegandoli insieme fai in modo che il valore di riferimento sia uguale per tutti
Scusa, avevo capito che volevi leggere 5 tessere contemporaneamente..
Ma da che codice di esempio sei partito? Perché dici che legge male? Ma con una tessera funge?
Quando ci sono problemi bisogna sempre scomporre in sotto parti.. una volta che va bene uno basta fare un cliclo for..
Beh, quasi, in pratica devo leggere rfid da 5 lettori, non contemporaneamente, però spesso non mi restituisce il tag dell'rfid.
Con uno funziona, però per quello ho usato la SoftwareSerial, che non sono riuscito a fare funzionare con 2 rfid.
Suggerimenti su come usare la SoftwareSerial (se si può) con più rfid o su come farne andare 5 con la NewSoftSerial?
Grazie!

questo è un altro problema. fossi in te farei una read su ogni porta ogni loop, nel momento in cui leggi un qualcosa in arrivo, ti blocchi a leggere quella porta per il tempo necessario a ricevere 3 volte il codice RFID (in modo da ricevere almeno una lettura completa, puoi fare anche solo 2 volte ma poi devi giocare di concatenazione). Una volta passato questo tempo indipendentemente se hai letto qualcosa, e se questo qualcosa era valido o meno, prosegui per la tua strada.
a 9600 baud leggi 960 caratteri al secondo, quindi se il rfid è di 12 caratteri +2 di inizio e fine, il tempo (in millisecondi) per una lettura completa è 1000/(960/14) = circa 14 millisecondi
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

rome
Offline Offline
Sr. Member
****
Karma: 15
Posts: 474
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lesto è stato più lesto di me :-)
Prova a connettere i gnd arduino e quelli dell'alimentatore e 90% hai risolto il problema del funzionamento.
Per la lettura non dovresti avere problemi di temporizzazione. La chiave di un Mifare è lunga al max 7 byte, più 4 o 5 byte di incapsulamento del messaggio. Io normalmente ho usato lettori con interfaccia I2c, e con un protocollo che ha come header la lunghezza del messaggio in arrivo. Questo mi permette di verificare se è arrivato tutta la risposta o meno. Se poi la risposta non arriva posso abortire l'operazione di lettura, passare al prossimo rfid e ritentare la lettura il ciclo successivo. Dipende dal protocollo di interfaccia
« Last Edit: May 15, 2012, 10:21:59 am by brunialti » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, il gnd degli alimentatori va collegato al GND dell'arduino.
GND è il valore di riferimento, essendo il voltaggio una "differenza di tensione", servono due valori: il gnd, che rappresenta lo 0V, e il 5v, che rappresenta uno scostamento di 5v dal GND. se tu misurassi il GND degli alimentatori rispetto a quello arduino probabilmente rileveresti qualche V di differenza: ognuno ha il suo 0v! collegandoli insieme fai in modo che il valore di riferimento sia uguale per tutti
Scusa, avevo capito che volevi leggere 5 tessere contemporaneamente..
Ma da che codice di esempio sei partito? Perché dici che legge male? Ma con una tessera funge?
Quando ci sono problemi bisogna sempre scomporre in sotto parti.. una volta che va bene uno basta fare un cliclo for..
Beh, quasi, in pratica devo leggere rfid da 5 lettori, non contemporaneamente, però spesso non mi restituisce il tag dell'rfid.
Con uno funziona, però per quello ho usato la SoftwareSerial, che non sono riuscito a fare funzionare con 2 rfid.
Suggerimenti su come usare la SoftwareSerial (se si può) con più rfid o su come farne andare 5 con la NewSoftSerial?
Grazie!

questo è un altro problema. fossi in te farei una read su ogni porta ogni loop, nel momento in cui leggi un qualcosa in arrivo, ti blocchi a leggere quella porta per il tempo necessario a ricevere 3 volte il codice RFID (in modo da ricevere almeno una lettura completa, puoi fare anche solo 2 volte ma poi devi giocare di concatenazione). Una volta passato questo tempo indipendentemente se hai letto qualcosa, e se questo qualcosa era valido o meno, prosegui per la tua strada.
a 9600 baud leggi 960 caratteri al secondo, quindi se il rfid è di 12 caratteri +2 di inizio e fine, il tempo (in millisecondi) per una lettura completa è 1000/(960/14) = circa 14 millisecondi
Come dovrei fare quindi?
Il programma che uso non va bene?

E una cosa, il GND dell'alimentatore va collegato insieme al GND dell'Arduino ed agli rfid sulla breadboard? O va collegato solo al GND dell'Arduino?
Grazie!
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non va bene se credi che i tag rfid sino letti per meno di 14ms. In pratica per un essere umano la cosa è immediata (il riflesso minimo dell'occhio si aggira sui 30ms)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, ma come faccio in termini di programmazione a farlo?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

loop
 per ogni seriale
  se c'è qualcosa nel buffer
    per 13 ms leggi la seriale
    cerca codice <-- magari una funzione
  fine se
 fine per
fine loop
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille, ora almeno con 2 rfid funziona tutto, anche se ogni 15-20 letture scrive qualcosa simile a †6–³fЛ come mai?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

una lettera è composta da un 8 bit, ovvero 80 baud. se perdi anche solo baud, perchè magari stai leggendo un altra seriale, ottieni un valore che "non ha senso". è il motivo per cui ti ho detto di aspettare il tempo per almeno 3 codici completi: in questo modo ricevi sicuramente almeno una lettura completamente valida (quella centrale) e sei in grado di eliminare le altre letture che invece conterranno quei caratteri invalidi.
kiss
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: 1 [2]   Go Up
Jump to: