Lettore RFID scalabile su MySQL con configuratore WebServer(AJAX) da Raspberry PI

In questo articolo è presentato un lettore di badge/chiavi RFID sviluppato attraverso la scheda Raspberry PI , con la possibilità di monitorare in tempo reale con una pagina Web, esposto tramite un web server, i vari accessi ID catalogati su un database (DB) MySQL. Utilizzando una chiamata asincrona AJAX (tramite XMLHttpRequest) il browser richiederà periodicamente (1 volta al secondo) lo stato del DB alla Raspberry PI e lo visualizzerà formattato opportunamente in una pagina html anch'essa esposta dal WebServer. Per quanto il sistema sia utilizzabile praticamente senza modifiche, lo scopo di questo articolo e' la valenza didattica della presentazione delle varie tecnologie utilizzate per la sua realizzazione.

Introduzione

Il progetto e' pensato per essere rigorosamente Open Source, sia nelle librerie software utilizzate che nei sorgenti che implementano l'applicativo. Il codice sorgente è scaricabile attraverso il seguente link github. Un altro aspetto da sottolineare e' la particolarità del sistema di essere CrossPlatform, ovvero compilabile e funzionante su piu' piattaforme. In particolare, la piattaforma e' stata sviluppata e testata inizialmente su un MacBook Pro, con i due lettori inizialmente pluggati nelle due porte USB disponibili. In seguito, i sorgenti con pochissimi adattamenti al makefile sono stati poi portati e testati sulla Raspberry PI. Come molti lettori sapranno, il sistema operativo OS X e' in realta' un sistema Unix accessibile da shell che i lettori piu' intraprendenti avranno sicuramente provato ad utilizzare. Essendo un fratello maggiore (o minore, a seconda dei punti di vista) di Linux (presente sulla Rasberry PI) e' stato molto semplice portare il codice che, nativamente, compila già anche per Linux. Per poter avere un sistema portabile e ricompilabile su piattaforme diverse, non si sono utilizzati gli strumenti tipici su OS X per sviluppare, ovvero Xcode e simili, bensi' il codice e' sviluppato tutto da editor di testo (mate) e  compilato usando la pratica standard sui sistemi Unix/Linux, ovvero makefile e derivati. Allo stato attuale non si e' ancora portato il sistema su una piattaforma Windows, sia per mancanza di tempo che per problemi tecnici con la compatibilita' delle librerie HidApi (dettagli maggiori su questo nella sezione dedicata alle librerie software utilizzate) su piattaforma Win. In caso si volesse comunque utilizzare questo sistema su sistemi Win, si puo' usare l'escamotage di installare emulatori di ambienti Linux su Windows, quali cygwin o similari. Nel prosieguo dell'articolo procederemo alla descrizione del progetto, partendo da come preparare da zero la Raspberry, installando via via il sistema operativo Raspbian e tutte le librerie necessarie per compilare i sorgenti. Alcune di queste librerie verranno installate piu' comodamente usando il gestore di pacchetti nativo della distribuzione Linux (in gergo distro), ovvero apt dalla linea di comando. Altre di queste, verranno invece scaricate come sorgenti e compilate e configurate con un metodo piu' avanzato, ma meno automatico dell'apt.

Accedere alla shell della Raspberry da remoto

Gli approcci possono essere principalmente due: da rete tramite il comando ssh o un client telnet quale Putty o simili. Quando si lavora su OS X, la sua shell offre nativamente il comando ssh senza installare altro. Prima di tutto si deve determinare quale indirizzo IP sia stato assegnato dal server DHCP solitamente presente in rete (dopo il primo accesso si potra' poi assegnare un IP statico che non confligga con altri dispositivi sulla rete, in modo da avere un IP noto a priori da usare). Per lo sviluppo di questo sistema, la Raspberry PI (Model B+, Pi 2 Model B) e' stata messa in rete tramite cavo ETH (si puo' anche usare una dongle WiFi, dopo aver settato la password tramite il WPA supplicant, oppure la Raspberry Pi 3). Si e' poi determinato, accedendo al router in rete, che questo aveva assegnato l'IP 192.168.1.7 alla board. A quel punto, ricordando che di default Raspbian ha come user “pi” e password “raspberry”, si potra' digitare il seguente comando:

> ssh -lpi 192.168.1.7

La board chiederà la password e a quel punto si accedera' alla shell della Raspberry PI direttamente dalla shell corrente bash. Questa procedura non servira' solo per lanciare e usare l'applicativo che verra' compilato seguendo le istruzioni, ma anche per eseguire tutta la procedura di installazione e compilazione delle librerie, che verra' descritta piu' avanti nella sezione apposita. Per i lettori  piu' orientati all'hardware e ai gadget, si segnala anche il secondo metodo dove si puo' usare un dispositivo USB -> seriale TTL che si connette direttamente ai PIN liberi sulla Raspberry PI. A quel punto si potra' lavorare direttamente dalla shell esposta dalla seriale, che e' in echo su quella descritta qui sopra dallo stack TCP/IP della board. Nella figura 1 si puo'  vedere un dispositivo del genere, disponibile per una decina di euro circa su ebay.

DebuggerSeriale

Figura 1: Serial Debugger

Anche per questo si potra' trovare la mappatura in base al colore in rete su molti siti. Benche' questo progetto sia molto semplice nel suo utilizzo (basta infatti pluggare i lettori, passare i badge e vederne i dati raccolti e aggiornati in tempo reale su di un qualsiasi browser puntato sulla pagina esposta dalla Raspberry PI), coinvolge molte tecnologie e librerie software riutilizzabili anche in altri contesti e altri progetti.

Descrizione funzionale

Il componente fondamentale attorno al quale ruota tutto il sistema e' la board Raspberry PI, in particolare la sua versione B+. Il sistema attualmente lavora utilizzando dei RFID com frequenza di 125KHz (standard EM4100 compatible transponder), ma non vi e' alcun vincolo per [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3999 parole ed è riservato agli abbonati PREMIUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici PREMIUM e potrai fare il download (PDF) dell'EOS-Book e Firmware del mese. ABBONATI ORA con PAYPAL è semplice e sicuro.

Abbonati alle riviste di elettronica

25 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 4 maggio 2017
    • Riccardo Ventrella Riccardo Ventrella 7 maggio 2017
  2. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 5 maggio 2017
  3. Gian Mario Tittarelli 6 maggio 2017
  4. Riccardo Ventrella Riccardo Ventrella 8 maggio 2017
    • Gian Mario Tittarelli 8 maggio 2017
      • Riccardo Ventrella Riccardo Ventrella 8 maggio 2017
      • Riccardo Ventrella Riccardo Ventrella 13 maggio 2017
  5. ytooong 24 maggio 2017
  6. Riccardo Ventrella Riccardo Ventrella 24 maggio 2017
  7. ytooong 24 maggio 2017
    • Riccardo Ventrella Riccardo Ventrella 24 maggio 2017
  8. ytooong 28 maggio 2017
    • Riccardo Ventrella Riccardo Ventrella 28 maggio 2017
  9. ytooong 28 maggio 2017
  10. ytooong 29 maggio 2017
    • Riccardo Ventrella Riccardo Ventrella 29 maggio 2017
      • Riccardo Ventrella Riccardo Ventrella 30 maggio 2017
  11. ytooong 30 maggio 2017
    • Riccardo Ventrella Riccardo Ventrella 30 maggio 2017
      • Riccardo Ventrella Riccardo Ventrella 30 maggio 2017

Scrivi un commento

ESPertino è la nuova scheda per IoT compatibile ARDUINO.
Scopri come averla GRATIS!