Sommario:

Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python: 11 passaggi (con immagini)
Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python: 11 passaggi (con immagini)

Video: Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python: 11 passaggi (con immagini)

Video: Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python: 11 passaggi (con immagini)
Video: DIY remote control access control module, can be changed to RFID card control (rfid-life.com) 2024, Dicembre
Anonim
Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python
Controlla l'accesso di Arduino YÚN con MySQL, PHP5 e Python

Ciao amici!

Ebbene, come saprete, a settembre il nuovo shield in anteprima di Arduino, Arduino YUN. Questo piccolo amico ha un sistema embedded Linux con il quale possiamo eseguire qualsiasi cosa ti venga in mente (almeno finora). Mentre ci sono pochissime informazioni su questa nuova scheda, con partenza nella guida che fornisce la pagina di Arduino (che collegherò in seguito), oltre a una piccola conoscenza di molti Linux, è possibile realizzare un progetto importante a Control Access. Questa volta vi spiegherò come realizzare questo progetto, ma in maniera sufficientemente particolare attraverso il nostro Arduino. Funziona, grazie a un server database MySQL che si depositerà nel nostro YUN, questo database memorizzerà due tabelle, una per gli utenti associati a un particolare RFID e un'altra tabella per tenere traccia di tutte le carte che sono passate attraverso il nostro lettore. Mentre utilizziamo i linguaggi di programmazione PHP e script Python per eseguire alcune operazioni di base e lavorare con i nostri dati. Inoltre, per il sovraccarico hardware, utilizziamo un lettore ID-20 accanto a un LCD seriale di 16 caratteri, più un LED RGB che sarà il nostro informatore degli stati. Possiamo usare questo controllo di accesso tutto ciò che possiamo pensare, modificare e aggiungere un relè o un'altra idea. Può essere utilizzato su qualsiasi cosa in cui si hanno carte e si desidera un record. Si ricorda che questo documento è di libera pubblicazione, non sono consentiti usi commerciali e modifiche esenti. Spero che sia un percorso molto più ampio dell'elettronica Open Source. Quindi andiamo al passo successivo, le parti hanno bisogno!

Passaggio 1: le parti

Le parti
Le parti
Le parti
Le parti
Le parti
Le parti

Per realizzare questo progetto, abbiamo bisogno di: * Arduino YUN https://www.sparkfun.com/products/12053 $71,95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34,95 * Breakout lettore RFID https://www.sparkfun.com/products/8423 $ 0,95 * LCD di base 16x2 caratteri 5 V https://www.sparkfun.com/products/790 $ 16,95 * Zaino LCD con abilitazione seriale https://www. sparkfun.com/products/258 $ 16,95 * LED RGB 5 mm https://www.sparkfun.com/products/105 $1,95 * cicalino https://www.sparkfun.com/products/7950 $1,95 * Somes Header Pin and wire $ 5,00 circa. In tutto, se acquisti nel negozio Sparkfun, tutto sarà vicino a $ 150. Se vivi in America Latina, consiglierei di acquistare le parti su www.olimex.cl, è un ottimo negozio di elettronica cileno.

Passaggio 2: l'assemblaggio

Il montaggio
Il montaggio
Il montaggio
Il montaggio
Il montaggio
Il montaggio

Pochi collegamenti da fare, che stabiliscono brevemente spiegare. Per il LED RGB, il pin del LED rosso deve essere sul pin 9 di Arduino, il pin del LED verde deve essere sul pin 8 di Arduino e il pin del LED blu deve essere sul pin 7 di Arduino. Per l'ID-20 è necessario collegare i seguenti pin come indicato nella tabella nel rispettivo ordine, lettore di pin al pin Arduino: Pin ID-20 al pin Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- BUZZER PIN 11 -- 5V E infine per il connettore Serial LCD saranno necessari solo i pin 5v e GND dell'Arduino, mentre il pin LCD Serial RX va al pin 11 dell'Arduino.

Passaggio 3: Programmazione di Arduino Yun

Programmazione dell'Arduino Yun
Programmazione dell'Arduino Yun

Allo scopo di realizzare il nostro progetto, dobbiamo iniziare con la parte del software, installare alcuni file sul nostro Arduino opkg Yun:

  • Server MySQL
  • PHP5
  • MySQLdb per Python 2.7
  • Mod di PHP5 in MySQL

Ricordiamo che per impostazione predefinita in Bridge viene installato Python 2.7, quindi non è necessario installare alcun aggiornamento per questo. Inizia a registrare SSH coraggio per entrare nel nostro Arduino Yun, una volta avviati, digita il seguente comando per aggiornare l'elenco delle applicazioni opkg:

aggiornamento opkg

Passaggio 4: installazione di MySQL

Installazione di MySQL
Installazione di MySQL

Ora stabiliremo l'installazione e la configurazione di MySQL Server, digitare i seguenti comandi nella console:

  1. opkg installa libpthread libncurses libreadline mysql-server
  2. sed -i 's, ^datadir.*, datadir = /srv/mysql/, g' /etc/my.cnf
  3. sed -i 's, ^tmpdir.*, tmpdir = /tmp/, g' /etc/my.cnf
  4. mkdir -p /srv/mysql
  5. mysql_install_db –-force
  6. /etc/init.d/mysqld start
  7. /etc/init.d/mysqld enable
  8. mysqladmin -u password di root 'tu-nueva-clave'

Una volta terminato l'inserimento dei nostri codici e avviato il server MySQL, sarà necessario configurare il database che andrà a manipolare. Ma prima di iniziare a digitare i codici, dobbiamo capire i campi che portano la nostra tabella. Il tabellone sarà composto da 5 corsi, 'id', 'nome', 'nome', 'email', 'rfid' per commercializzare alcuni di essi darò una breve spiegazione del loro utilizzo.

  • 'id': sarà il campo o l'attributo int colonna che ci dirà il numero assegnato allo User ID, questo numero è assegnato dallo stesso database e sarà il modo per indicizzare i nostri record.
  • 'nombre': la colonna dell'attributo sarà 'varchar' può essere indicata dal nome con cui viene identificato il nostro utente della carta.
  • 'apellido': la colonna dell'attributo sarà 'varchar' può essere indicata dal cognome a cui è associato il nostro utente.
  • 'correo': è la colonna attributi 'varchar' che conterrà l'e-mail dell'utente associato.
  • 'rfid': è la colonna dell'attributo 'varchar' che conterrà il codice della carta RFID che utilizzi.

(Userò le variabili in spagnolo, perché è la mia lingua madre e mi piace c:) Ora possiamo configurare il nostro database senza problemi, quindi creiamo un 'arduino' chiamato MySQL. Devi digitare il seguente codice:

mysqladmin -u root -p crea arduino

Chiediamo la password che abbiamo inserito in precedenza nell'installazione, la invieremo per completare la creazione della base. Finito tutto questo, inseriamo la query su MySQL, dovresti digitare il seguente codice nella console:

mysql -root -p

Ancora una volta chiediamo la password, è necessario inviarla di nuovo. Una volta all'interno del comando della console MySQL, il puntatore ('mysql>') dovrebbe apparire pronto per essere digitato. La prima cosa che faremo è spostare la base per i dati "arduino" per lavorarci sopra. Questo viene fatto digitando il seguente comando nella console MySQL:

USA arduino

Riteniamo che la tabella dei nomi "usuariosrfid" nel database verrà utilizzata per questo progetto, digitare questo codice nella console MySQL:

  1. CREATE TABLE `usuariosrfid` (
  2. `id` int(255) NOT NULL AUTO_INCREMENT,
  3. `nombre` varchar(300) NOT NULL,
  4. `apellido` varchar(300) NOT NULL,
  5. `correo` varchar(300) NOT NULL,
  6. `rfid` varchar(300) NOT NULL,
  7. CHIAVE PRIMARIA (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

* Ricorda che quando premi il tasto INVIO alla fine della riga di comando nella console MySQL, non verrà eseguito finché non trovi il ';' Pertanto, alla fine del codice è ';' Per completare l'installazione e la configurazione di MySQL, riempiamo alcuni campi di test all'interno della nostra base. Digita le seguenti righe:

  1. INSERIRE NEI VALORI `usuariosrfid` (`id`, `nombre`, `apellido`, `correo`, `rfid`)
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Procediamo ora con la creazione della tabella 'ControlUsuarios', che ospiterà tutti i codici RFID che passano dal lettore, questa tabella è composta da 3 campi, 'id', 'rfid', 'data'.

  • 'id' è il campo o la colonna int dell'attributo che conterrà l'id di ciascun record per l'indicizzazione.
  • L'attributo 'rfid' è la colonna 'varchar' contenente il codice del tag RFID letto dal lettore.
  • 'date' è la colonna dell'attributo 'varchar' che conterrà la data di lettura della carta.

Per creare la tabella 'ControlUsuarios', inseriamo il seguente codice nella console MySQL:

  1. CREATE TABLE `ControlUsuarios` (
  2. `id` int(255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar(300) NOT NULL,
  4. `fecha` varchar(300) NOT NULL,
  5. CHIAVE PRIMARIA (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

Infine digita 'exit;' nella console per uscire da MySQL Query e tornare a SHH in modo da poter iniziare con PHP5.

Passaggio 5: installazione di PHP5

Installazione di PHP5
Installazione di PHP5

Continua con l'installazione e la configurazione di PHP5. Questa installazione è più semplice di MySQL, quindi non dovrebbe costare loro nulla. Innanzitutto, installa il pacchetto opkg da Arduino Yun scaricando e installando, quindi digita nella console SSH di Arduino questo:

opkg installa php5 php5-cgi

Una volta scaricato e installato PHP5 sul nostro Arduino Yun, quindi abbiamo configurato il file root uHTTPd, il server http che porta Arduino di default, vi consiglio di usare solo questo server http perchè è più versatile e accessibile in configurazione, non Apache o Lighttpd sono più difficili da impostare quando sei nuovo in questo campo. Per configurarlo, usa l'editor di file 'vi' SSH, per questo devi avere una conoscenza minima per usare questo editor. Inizia a digitare questo codice nella console per accedere al file delle impostazioni uHTTPd:

vi /etc/config/uhttpd

Premi "i" per modificare il file, quindi vai alla riga di codice che hai scritto "# interprete di liste". "php = /usr/bin/php-cgi"'. È necessario eliminare il carattere '#' all'inizio della riga, quindi premere il tasto escape (tasto 'ESC'), una volta che si è pronti, è necessario digitare il comando ': wq' per salvare il file e uscire da. È necessario riavviare il server uHTTPd, per questo è necessario digitare nella console dei comandi di SSH il seguente codice:

/etc/init.d/uhttpd restart

Passaggio 6: installazione di Connector MySQL per PHP5 e Python

Installazione di Connector MySQL per PHP5 e Python
Installazione di Connector MySQL per PHP5 e Python

Procedi con l'installazione e la configurazione dei moduli per connettere il database MySQL con PHP e Python. Iniziamo con il connettore PHP. Digita il seguente codice:

  1. opkg installa php5-mod-mysql
  2. sed -i 's,;extension=mysql.so, extension=mysql.so, g' /etc/php.ini

Una volta pronto non sarà necessario riavviare il server uHTTPd, pronto per l'uso immediato. Ora continua con il connettore per Python, per questo devi inserire il seguente codice:

opkg installa python-mysql

Con quest'ultimo passaggio, avremo il nostro Arduino Yun pronto per il nostro progetto con il lettore di schede ID-20 RFID 125khz. Termina questa parte con un feedback su ciò che abbiamo fatto:

  • Abbiamo installato il server MySQL sul nostro Arduino Yun, quindi lo configuriamo, terminando con un inserimento dei dati di test.
  • Installa il complemento PHP sul nostro server.
  • Abbiamo terminato con l'installazione e la configurazione di MySQL Connector sia per PHP che per Python.

Passaggio 7: codici

In quest'area, discutiamo i codici di programmazione da utilizzare per questo progetto. Partiamo con il codice Python, che è diviso in due file: 'comprobar.py', che si collegherà al database e cercherà Yun Arduino se il risultato è in esso, e il file 'control. py', responsabile della registrazione di qualsiasi tessera che viene letta dal lettore ID-20, presente o meno nel database degli utenti registrati. Quindi prosegui con la descrizione dei file PHP, sono: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', ' guardar.php '' consulta.php ', ' configuracion.php '. Per questi file ridondaremos entrambi perché sono facili da capire. Infine finisci con il codice che salirà come nostro sketch Arduino.

Passaggio 8: file Python

File Python
File Python

Come accennato in precedenza, i nostri script Python hanno funzionato con la libreria o classe 'MySQLdb', che è già installata in precedenza. Inizia creando un file con '.py' chiamato 'comprobar.py' nel nostro editor, consiglio di utilizzare questi casi per la programmazione in Python, l'editor Sublime Text 3, che puoi scaricare sul loro sito Web www.sublimetext.com. Iniziamo importando la libreria per connetterci al nostro database MySQL, la libreria 'sys' che ci permetterà di comunicare con il nostro Arduino Yun:

  1. import MySQLdb
  2. sistema di importazione

Una volta importate queste librerie o classi, aggiungiamo delle variabili al tuo codice, che saranno i dati di connessione dal nostro database MySQL, bone:

  1. host = "127.0.0.1" # corrisponde all'indirizzo del nostro server MySQL.
  2. user = "your-seat" # è l'utente del nostro database.
  3. passw = "tua-password" è per la password dell'utente. base = "arduino" # Questo è il nome del database che usi.

Ora inizia con i codici script di base:

  1. mentre vero:
  2. db= MySQLdb.connect(host, utente, passw, base)
  3. cur = db.cursor()
  4. risultato = cur.execute("""SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id""", (sys.argv[1],))
  5. if (risultato == 1):
  6. stampa 1
  7. sys.exit(1)
  8. altro:
  9. stampa 2
  10. sys.exit(1)

Se ci rendiamo conto, nel comando 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' per eseguire la nostra query confrontare la variabile '(sys.argv [1])' che è il codice della scheda RFID Arduino con tutti i dati di campo 'rfid' tabella 'usuariosrfid', che, trovando il codice di uguaglianza dall'arduino e i codici o memorizzati nel database, restituire 1, se questo non è vero e non c'è uguaglianza tra il codice dell'arduino e parte della base, restituiremo 2. Questi numeri verranno ricevuti da Arduino. Continuiamo con il file successivo 'control.py. Questo file funziona allo stesso modo di sopra, mantenendo solo un retrogusto su un tavolo, questi record salvati verranno raccolti dal lettore ID-20 collegato al nostro Arduino Yun, quindi possiamo mantenere tutti gli utenti registrati che utilizzano il nostro lettore RFID.

Passaggio 9: file PHP

Quindi procedi con i file. 'Php' che conserveremo la cartella dal nostro server, per fare questo ricordiamo che è necessario che questi file una volta pronti, vengano salvati nella scenetta del nostro progetto, che in automatico genera l'IDE Arduino, bisogna anche ricordarlo, anche se vi anticipo questo, che quando saliamo sul nostro schizzo Arduino Yun, lo carichiamo tramite Wi-Fi, quindi lo lascio nella stessa pagina del manuale Arduino, www.arduino. cc / it / Guide / Arduino Yun # toc14, che spiega di più a riguardo e come dovresti preparare la scheda MicroSD per questo tipo di progetto in cui i file dovrebbero essere archiviati sul server. I file PHP saranno 10 ' consultaRelacion.php ', ' consultaControl.php ', ' index.php' ' modificar2.php ', ' modificar.php ', ' borrar.php ', ' borrar2.php ', ' guardar. php ' 'consulta.php ', 'configuracion.php ', che verrà collegato tramite hyperlink all'altro, per mantenere un menu di base sempre attivo e accessibile. Basta spiegare il file 'configuracion.php', che funziona come un connettore con il nostro database. Nel nostro editor, pianifichiamo il seguente codice nel file:

  1. <? php
  2. // Server dati e database
  3. $ server = "host locale";
  4. $ username = "il tuo posto";
  5. $password = "password";
  6. $ nome_database = "arduino";

Questi sono i dati che devono connettersi al nostro database in arduino saranno gli stessi che usiamo nei nostri script Python. Finisci di programmare l'istruzione connect, che ha usato il nostro script:

  1. $conexion=mysql_connect($server, $username, $password) or die("Problemas al tratar de establecer la conexion");
  2. $bd_sel=mysql_select_db($database_name) or die("Problemi alla selezione della base di dati");
  3. ?>

Gli altri file sono allegati.

Step 10: Infine, il Programma di Arduino YÚN

Siamo arrivati alla parte principale di questo tutorial, programmando il nostro Arduino Yun, nessun dettaglio evidenzierà tutto il codice in quanto è piuttosto esteso, menziona solo i seguenti punti importanti:

  • Il codice è composto da 6 funzioni principali e 13 funzioni secondarie, che sono solo un supporto per l'utilizzo del Serial LCD.
  • Saranno importate solo tre classi, 'SoftwareSerial.h', con cui inseriremo Serial Attached per connetterci con l'ID-20 e Serial LCD, la classe principale 'Bridge.h' con la quale effettueremo la connessione tra Linux e ATMEGA32U4, e la classe 'Process.h' servirà per i processi di consultazione in Linux.
  • Definire solo tre pin, che utilizzano altri essere liberi.

Il codice è allegato

Passaggio 11: felice anno nuovo

Continuo meticolosamente questo per servirti e aiutarti a ottenere maggiori informazioni su Arduino Yun. Lascia tutti i file allegati alla fine. Per i parlanti di lingua spagnola, lascio questo tutorial ma in spagnolo con i file necessari. Spero che tu abbia un felice anno nuovo, buon divertimento e successo per questo 2014!

Consigliato: