Pages: [1] 2   Go Down
Author Topic: 5 RFID con Arduino Uno  (Read 1155 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, avrei un problema con Arduino Uno nel gestire 5 RFID Reader ID-12 nello stesso tempo.
Ora ne sto usando 2 per le prove e spesso non riescono a leggere il tag RFID o lo fanno male.
Non so se il problema è dell'alimentazione(li alimento con l'Arduino, ma con un alimentatore esterno non funzionano, non so perchè) o del programma:
Code:
#include <NewSoftSerial.h>

NewSoftSerial ss(8, 3);
NewSoftSerial ss2(9, 4);
NewSoftSerial ss3(10, 5);
NewSoftSerial ss4(11, 6);
NewSoftSerial ss5(12, 7);

void setup()
{
 
  Serial.begin(9600);
  ss.begin(9600);
  ss2.begin(9600);
  ss3.begin(9600);
  ss4.begin(9600);
  ss5.begin(9600);
 
}

void loop()
{
  ss.listen();
 
  char c = 0;
  int cont = 0;
    if(ss.available()){
    do{
    cont++;
    if (ss.available())
    {
      cont=0;
      c = ss.read();
      Serial.print(c);
    }
    }while(cont != 11);
    }
 
  ss2.listen();
  c = 0;
  cont = 0;
  if(ss2.available()){
  do{
  cont++;
  if (ss2.available())
  {
    cont=9;
    c = ss2.read();
    Serial.print(c);
  }
  }while(cont != 11);
  }
  ss3.listen();
 
  c = 0;
  cont = 0;
    if(ss3.available()){
    do{
    cont++;
    if (ss3.available())
    {
      cont=9;
      c = ss3.read();
      Serial.print(c);
    }
    }while(cont != 11);
    }
   
  ss4.listen();
  c = 0;
  cont = 0;
  if(ss4.available()){
  do{
  cont++;
  if (ss4.available())
  {
    cont=9;
    c = ss4.read();
    Serial.print(c);
  }
  }while(cont != 11);
  }
  ss5.listen();
 
  c = 0;
  cont = 0;
    if(ss5.available()){
    do{
    cont++;
    if (ss5.available())
    {
      cont=9;
      c = ss5.read();
      Serial.print(c);
    }
    }while(cont != 11);
    }
 
}
 
Grazie!
Logged

Senago - Milano
Offline Offline
God Member
*****
Karma: 3
Posts: 508
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Che tipo sono ? 125Khz o 13.56Mhz ??
Molti tipi di rfid non hanno l'anti collissione, non puoi leggerli più di uno contemporaneamente!
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 235
Posts: 20221
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Secondo me anche voler gestire 5 connessioni seriali emulate via SW con un Arduino non é possibile.
Ciao Uwe
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Secondo me anche voler gestire 5 connessioni seriali emulate via SW con un Arduino non é possibile.
Ciao Uwe
La NewSoftSerial può reggere più canali seriali software a patto di usarne solo 1 alla volta. Non ho esaminato il suo codice per cui non so se il problema sta qui.
Anche la SoftwareSerial dell'Arduino IDE 1.0 permette di poter gestire più canali seriali software ma di poter dialogare solo con 1 alla volta.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 235
Posts: 20221
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Leo, cosa intendi per dialogare?
Penso che per ricevere i dati di 5 lettori RFID debbano essere attivi tutti i 5 canali di ricezione delle seriali.
Ciao Uwe
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2227
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

Quote
La NewSoftSerial può reggere più canali seriali software a patto di usarne solo 1 alla volta. Non ho esaminato il suo codice per cui non so se il problema sta qui.
Anche la SoftwareSerial dell'Arduino IDE 1.0 permette di poter gestire più canali seriali software ma di poter dialogare solo con 1 alla volta.

effettivamente la SoftwareSerial distribuita con l'IDE 1.0 è basata sulla NewSoftSerial  smiley-razz:

Quote
The version of SoftwareSerial included in 1.0 and later is based on the NewSoftSerial library by Mikal Hart.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Leo, cosa intendi per dialogare?
Penso che per ricevere i dati di 5 lettori RFID debbano essere attivi tutti i 5 canali di ricezione delle seriali.
Ciao Uwe
Siccome è basata sugli interrupt, per non caricare eccessivamente la ISR potrà spedire/ricevere solo da 1 canale seriale per volta. Per cui se metti, ad esempio, 5 invii sulle 5 seriali saranno eseguiti 1 dietro l'altro e non in contemporanea. Così varrà immagino per la ricezione, nel senso che non appena metti un read su un canale, non potrai fare altrettanto su un altro canale dato che dai l'uso dell'interrupt al primo.
Logged


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

Che tipo sono ? 125Khz o 13.56Mhz ??
Molti tipi di rfid non hanno l'anti collissione, non puoi leggerli più di uno contemporaneamente!

Sinceramente non ne ho idea...
Leo, cosa intendi per dialogare?
Penso che per ricevere i dati di 5 lettori RFID debbano essere attivi tutti i 5 canali di ricezione delle seriali.
Ciao Uwe
Siccome è basata sugli interrupt, per non caricare eccessivamente la ISR potrà spedire/ricevere solo da 1 canale seriale per volta. Per cui se metti, ad esempio, 5 invii sulle 5 seriali saranno eseguiti 1 dietro l'altro e non in contemporanea. Così varrà immagino per la ricezione, nel senso che non appena metti un read su un canale, non potrai fare altrettanto su un altro canale dato che dai l'uso dell'interrupt al primo.
Si, è quello che ho cercato di fare, ma temo non mi sia riuscito bene, per questo ho chiesto  smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, è quello che ho cercato di fare, ma temo non mi sia riuscito bene, per questo ho chiesto  smiley
Sinceramente non so come opera la NewSoftSerial "dietro le quinte". Andrebbe esaminato il codice e capita la sua struttura. Io non ci ho mai gestito più di 1 canale per volta.
Logged


Senago - Milano
Offline Offline
God Member
*****
Karma: 3
Posts: 508
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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..
Logged

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

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!
Logged

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

potrei dire una bestialità, ma se hai 5 device seriali attaccati ad arduino ma alimentati separatamente, hai controllato che il gnd arduino sia connesso ai gnd dei 5 device?

Poi NewSoftwareSerial e SoftwareSerial sono veramente le stesse in IDE 1.0 ...
« Last Edit: May 15, 2012, 09:11:09 am by brunialti » Logged

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

No, sono totalmente separati, l'Arduino lo alimento da pc mentre gli rfid da un alimentatore, ma cosa cambia?
Logged

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

Succede che con alimentazione esterna rispetto alle linee dati arduino ha un gnd diverso da quello dei device  e spesso questo crea problemi
Logged

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

Quindi esternalmente dovrei dargli solo i 5v e il gnd darlo all'Arduino?
Logged

Pages: [1] 2   Go Up
Jump to: