progetto con rfid Scritto da tigiemme - 02/08/2013 22:10 Salve a tutti Avrei bisogno di aiuto per creare un progetto che mi frulla in testa da un po di tempo. Comincio col dire che sono un principiante alle prime armi e non so da dove cominciare a progettare. Il mio intento è quello di creare uni sistema di controllo e gestione di un macchinario che non è collegato ad un pc, quindi deve funzionare autonomamente. Devo utilizzare degli impulsi a 24v per decrementare un numero preimpostato su un rfid il quale deve fungere anche da autorizzazione all'uso del macchinario tramite un ponticello che trovo nello stesso. Praticamente devo progettare una gettoniera che lavori con rfid. Secondo voi è una cosa fattibile? Se si, da che lato comincio? Di che materiale ho bosogno? Sono certo che voi saprete aiutarmi perciò comincio col ringraziare tutti coloro che risponderanno. Scritto da MIGLIORE - 26/08/2013 12:34 > Praticamente devo progettare una gettoniera che lavori con rfid. Ok > Secondo voi è una cosa fattibile? Certo > Se si, da che lato comincio? Conviene comprare qualcosa di gia' fatto e programmabile in C o in BASIC L'hardware deve avere le seguenti interfacce: - Alimentazione 12 o 24 Volt in continua o in alternata a seconda di dove va installata (*) - Interfaccia RFID a 125 KHz oppure a 13.56 MHz - Uscita open collector - Led di segnalazione per dare un feedback all'utente (*) Nelle macchine del Vending fino a pochi anni fa era disponibile un'alimentazione a 24 Volt alternati Cerca su Google le seguenti frasi: "programmable RFID reader" "RFID reader for hobbyist" "Low cost RFID reader" 1 / 8
Scritto da tigiemme - 26/08/2013 14:45 Grazie per aver risposto >Conviene comprare qualcosa di gia' fatto e programmabile in C o in BASIC A cosa pensavi? Raspberry, Arduino o cos'altro? > Interfaccia RFID a 125 KHz oppure a 13.56 MHz Ho già in casa un ACR122U lettore e scrittore RFID 13.56MHz con interfaccia USB. Pensi che può andare? >Uscita open collector Scusa l'ignoranza, ma cosa è una uscita open collector? > Led di segnalazione per dare un feedback all'utente Preferirei un display che indichi il credito residuo. Ho dato un occhiata a Google con i criteri di ricerca cha mi hai indicato, ma escono fuori solo lettori RFID. Considerando che ho un raspberry ed il lettore ACR122U, mi conviene utilizzarli o è meglio utilizzare altri ardware? attendo tue notizie Ciao Gabriele Scritto da MIGLIORE - 27/08/2013 10:18 > Considerando che ho un raspberry ed il lettore ACR122U, mi conviene utilizzarli o è meglio utilizzare altri ardware? 2 / 8
Ho controllato sul sito del ACR122U. Questo lettore ACR122U viene fornito con la libreria USB in C solo per PC e per Android. Morale della favola: se Resperry e' basato su Android allori puoi controllare ACR122U con il Resperry, altrimenti lo puoi controllare da PC o da uno smartphone tipo il Galaxy S3 o S4. > Scusa l'ignoranza, ma cosa è una uscita open collector? Cerca su Internet, purtroppo non ho molto tempo adesso. Se parti da zero devi trovare qualcuno che venga da te un pomeriggio e ti scriva una mini applicazione che tu svilupperai. Scritto da MIGLIORE - 27/08/2013 17:55 guarda questo RFID reader che c'e' su ebay: http://www.ebay.it/itm/mifare-rc522-reader-antenna-rf-module-rfid-/251290615124?pt=componenti_ elettronici_passivi&hash=item3a82167d54 Se tu avessi Arduino lo potresti utilizzare. Cerca su ebay la frase "RFID reader", ne troverai altri. Scritto da tigiemme - 28/08/2013 22:08 ciao scusa per il ritardo ma ho avuto un pò da fare ho letto le tue risposte e ho qualche dubbio 3 / 8
>Morale della favola: se Raspberry e' basato su Android allori puoi controllare ACR122U con il Raspberry Ho cercato di installare ANDROID su raspi. Ho scaricato il file immagine e mettendolo sul raspi non parte. Accende il led rosso e non fa altro. Ho provato più volte e con SD diverse, ma senza risultato. Hai qualche dritta? Ho un tablet SAMSUNG note 10" ed ho provato a installare ACR122u, ho trovato 2 APP e funziona, quindi penso che potrebbe essere una buona soluzione se raspi riuscisse a funzionare con ANDROID. >guarda questo RFID reader che c'e' su ebay: Ma questo RFID è solo reader e penso che non va bene, come farebbe a scalare il credito? Su Ebay ci sono altri lettori da usare con Arduino, ma in un progetto di Futura Elettronica si parla di chiave RFID che può memorizzare fino a 25 TAG, a me non bastano, mi servono almeno 100 TAG per ogni lettore, ma la cosa più importante è che il credito deve stare nel TAG, così da poter usare lo stesso TAG su più lettori. Forse sono troppo complicato? Chiedo troppo? Ciao Gabriele Scritto da MIGLIORE - 29/08/2013 07:13 > ma la cosa più importante è che il credito deve stare nel TAG, così da poter usare lo stesso TAG su più lettori. Allora ti serve un READER/WRITER e il tuo ACR122U lo e'. La scrittura e' piu' delicata nel senso che il TAG deve essere molto vicino all'antenna. Non so come mai Raspi non faccia funzionare le immagini di Android. Il reader su ebay indicato dovrebbe funzionare con Arduino che e' molto piu' semplice di Android. Se il tuo progetto va in porto e devi acquistare molti TAG ti consiglio di comprali a Taiwan o in Cina che costano 0.5 Euro cadauno. Spedizione 40 Euro. > Forse sono troppo complicato? Chiedo troppo? No, sono specifiche normali di progetto. 4 / 8
Scritto da tigiemme - 18/09/2013 22:40 ciao Rieccomi scusate l'assenza è arrivato arduino uno, lcd 16x2, beadboard e componentistica varia sono in attesa del lettore scrittore RFID, però ho già cominciato a giocare e scopiazzare qa e la ed ho composto il seguente Sketch, però ho un problemino che non riesco a risolvere, quando l'lcd scrive i valori "a" e "b" questi lampeggiano. Sai aiutarmi? #include int in=8; int in2=7; int in3=9; int led=13; int a = 10; int b = 10; int c = 0; int d = 0; int x = 0; LiquidCrystal lcd(12, 11, 2, 3, 4, 5); void setup() pinmode(in,input); pinmode(in2,input); pinmode(in3,input); pinmode(led,output); lcd.begin(16, 2); lcd.print(" Tigiemme "); delay(3000); lcd.clear(); digitalwrite(led, LOW); } void loop() if (digitalread(in3) == 0) lcd.setcursor(0,0); lcd.print(" Tigiemme "); lcd.print(" Inserire Card "); digitalwrite(led, LOW);} if (a >= 1 && digitalread(in3) == 1) 5 / 8
lcd.setcursor(0, 0); lcd.print("credito: "); lcd.print("bn= "); lcd.setcursor(8, 1); lcd.print("col= "); digitalwrite(led, HIGH); d=digitalread(in2); if ( d== 1)a=a-1; delay(500);} lcd.setcursor(3, 1); lcd.print(a); c=digitalread(in); if ( c== 1)b=b-1; delay(500);} lcd.setcursor(12, 1); lcd.print(b); if (a Scritto da MIGLIORE - 19/09/2013 07:07 al 99% il problema e' questo: la funzione lcd.print() richiede un array di caratteri terminato con il carattere ASCII numero zero, cioe' una stringa. a e b sono di tipo int e quindi per stamparli devi convertirli in array terminati cioe' in stringhe. Se disponibile su Arduino, puoi usare la funzione itoa () http://www.cplusplus.com/reference/cstdlib/itoa/ -------------------------------------------------------- Esempio: int a; char buffer; itoa (a,buffer,10); // 10 significa che lo vuoi convertire in base 10 lcd.print(buffer); -------------------------------------------------------- Se itoa() non e' disponibile dimmelo che te la trovo in giro. 6 / 8
Scritto da tigiemme - 19/09/2013 22:29 Ciao Ho provato "itoa()" e non cambia nulla, continua a lampeggiare, il compilatore non mi da errore quindi penso che funziona. Ti allego il codice #include int in=8; int in2=7; int in3=9; int led=13; int a = 10; int b = 10; int c = 0; int d = 0; int x = 0; LiquidCrystal lcd(12, 11, 2, 3, 4, 5); void setup() pinmode(in,input); pinmode(in2,input); pinmode(in3,input); pinmode(led,output); lcd.begin(16, 2); lcd.print(" Tigiemme "); delay(3000); lcd.clear(); digitalwrite(led, LOW); } void loop() if (digitalread(in3) == 0) lcd.setcursor(0,0); lcd.print(" Tigiemme "); lcd.print(" Inserire Card "); digitalwrite(led, LOW);} if (a >= 1 && digitalread(in3) == 1) lcd.setcursor(0, 0); 7 / 8
lcd.print("credito: "); lcd.print("bn= "); lcd.setcursor(8, 1); lcd.print("col= "); digitalwrite(led, HIGH); d=digitalread(in2); if ( d== 1)a=a-1; delay(500);} lcd.setcursor(3, 1); char buffer; itoa(a, buffer, 10); lcd.print(buffer); c=digitalread(in); if ( c== 1)b=b-1; delay(500);} lcd.setcursor(12, 1); lcd.print(b); if (a 8 / 8