Ciao a tutti!
Volevo presentavi il mio progetto finito di realizzare giusto una settimana fa.
Innanzitutto l'idea nasce dal fatto che nel mio ufficio si timbrava sempre al pc quindi non solo si perdeva
un po' di tempo prima di timbrare ma si incentivava anche i dipendenti a tenere acceso il proprio pc in modo tale da avere subito il programma pronto per timbrare...
Come avete capito dal titolo ho costruito un "badge reader" con arduino in grado di leggere la carta di chi timbra, inviare il codice identificativo ad un tcp server in remoto, attendere la risposta ed stamparla a video.
Per far tutto ciò ho utilizzato:
- Arduino: scheda per pilotare l'intero sistema
- RFID-RC522: lettore RFID per leggere il codice identificativo della scheda
- Display LCD: per visualizzare la risposta del tcp server
- Buzzer: emettitore di suono per notificare di aver letto la carta correttamente e per avvisare anche l'esito della timbratura
- ESP8266: modulo wifi utilizzato per comunicare con il tcp server ed acquisire la riposta
ecco una foto di come è venuto fuori:
Un obiettivo sul quale ho puntato molto è stato il concetto di MASTER/slave , infatti questo apparecchio non fa praticamente nulla se non acquisire il codice identificativo ed inviarlo al server.
Questo è molto utile perche:
- evitiamo di far lavorare troppo un micro controllore che, se pur di ottima qualità, non è assolutamente paragonabile come prestazioni ad un computer moderno.
- progettato per larga scala: ammettendo che siano necessari tanti di questi apparecchi perchè magari un'azienda ha più sedi o comunque più piani nello stesso edificio;collegando tutti i dispositivi allo stesso server non ci sarebbero ripercussioni anzi, il server gestirebbe tranquillamente le entrate e le uscite anche in sedi separate.
- predisposto ad aggiornamenti: in caso si voglia effettuare delle modifiche magari per gestire meglio l'orario di lavoro il sabato od i turni extra ecc... non sarà necessario andare ad intervenire sui singoli dispositivi e quindi staccarli la loro postazione,smontare la scatola,ricaricare il codice ecc... ma basterà andare ad intervenire solamente sul server centrale
Sottolineo il fatto che è importante non sforzare troppo le prestazioni di arduino perchè, inizialmente persi molto tempo inutilmente quando decisi di utilizzare una comunicazione HTTP/1.1 per inviare i dati tra arduino il server e viceversa perchè il server generava una risposta troppo lunga mettendoci i classici dati del protocollo http (request,cookie, ecc), il quale quando doveva parsare il codice json non riusciva ad andare a termine...
Quindi decisi di definirmi io un protocollo di comunicazione , in questo caso ho utilizzato:
$: inizio comunicazione
&: fine comunicazione
.: separatore di parametri
un esempio di risposta si può visualizzare nello screenshot che ho allegato a questo post.
Spero che vi sia piaciuto!
vi lascio il link a github: GitHub - passa9/Arduino-badge-reader: badge reader with arduino uno
PS: se avete altre idee postatele qui per esempio io avevo pensato di metterci un lettore di impronte digitali ma per sfortuna quello che avevo ordinato non andava ed ho dovuto riconsegnarlo >.<