Cuprins:

Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python: 11 pași (cu imagini)
Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python: 11 pași (cu imagini)

Video: Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python: 11 pași (cu imagini)

Video: Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python: 11 pași (cu imagini)
Video: NEW Arduino Yun Mini review | RS Components 2024, Noiembrie
Anonim
Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python
Controlați accesul la Arduino YÚN cu MySQL, PHP5 și Python

Bună prieteni!

Ei bine, după cum știți, în septembrie noul scut de premieră al Arduino, Arduino YUN. Acest mic prieten are un sistem încorporat Linux cu care putem rula orice vă puteți gândi (cel puțin până acum). Deși există foarte puține informații pe această nouă placă, cu plecare în ghidul care oferă pagina Arduino (care va face legătura mai târziu), plus puține cunoștințe despre multe Linux, poate realiza un proiect major un Control Access. De data aceasta voi explica cum să fac acest proiect, dar într-o manieră suficient de specială prin intermediul Arduino-ului nostru. Acest lucru funcționează, datorită unui server de baze de date MySQL care se va instala în YUN-ul nostru, această bază de date va stoca două tabele, unul pentru utilizatorii asociați cu un anumit RFID și un alt tabel pentru a păstra evidența tuturor cardurilor care au trecut prin cititorul nostru. În timp ce folosim limbaje de programare scripturi PHP și Python pentru a efectua unele elemente de bază și a lucra cu datele noastre. Mai mult, cheltuielile hardware, folosim un cititor ID-20 lângă un LCD Serial de 16 caractere, plus un LED RGB care va fi starea noastră informativă. Putem folosi acest control de acces la tot ceea ce ne putem gândi, modifica și adăuga un releu sau o altă idee. Poate fi folosit pe orice loc unde aveți cărți și doriți o înregistrare. Reamintim că acest document este publicare gratuită, utilizarea comercială și modificările scutite nu sunt permise. Sper că este o cale mult mai extinsă a electronicii Open Source. Deci trecem la pasul următor, părțile au nevoie!

Pasul 1: piesele

Părțile
Părțile
Părțile
Părțile
Părțile
Părțile

Pentru a face acest proiect, trebuie să avem: * Arduino YUN https://www.sparkfun.com/products/12053 71,95 USD * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 USD * Breakout Reader RFID https://www.sparkfun.com/products/8423 0,95 USD * LCD de bază 16x2 caractere 5V https://www.sparkfun.com/products/790 16,95 USD * Rucsac LCD activat în serie https:// www. sparkfun.com/products/258 16,95 $ * LED RGB 5mm https://www.sparkfun.com/products/105 1,95 $ * Buzzer https://www.sparkfun.com/products/7950 1,95 $ * Somes Header Pin and wire 5,00 $ aprox. În total, dacă cumpărați la magazinul Sparkfun, totul va fi aproape de 150 USD. Dacă locuiți în America Latină, aș recomanda să cumpărați piesele de pe www.olimex.cl, este un magazin de electronice din Chile foarte bun.

Pasul 2: Asamblarea

Adunarea
Adunarea
Adunarea
Adunarea
Adunarea
Adunarea

Câteva conexiuni de făcut, stabilind pe scurt explica. Pentru LED-ul RGB, pinul roșu trebuie să fie pe pinul 9 al Arduino, pinul LED-ul verde ar trebui să meargă pe pinul Arduino 8 și pinul LED-ul albastru să fie pe pinul 7 al Arduino. Pentru ID-20 trebuie să conectați următorii pini, așa cum se indică în tabel în ordinea respectivă, cititorul de pin la pinul Arduino: Pin ID-20 la pinul Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - BUZZER PIN 11 - 5V Și, în cele din urmă, pentru conectorul Serial LCD va fi necesar doar pinii 5v și GND ai Arduino, în timp ce pinul Serial LCD RX merge la pinul 11 al Arduino.

Pasul 3: Programarea Arduino Yun

Programarea Arduino Yun
Programarea Arduino Yun

În scopul realizării proiectului nostru, trebuie să începem cu partea software-ului, să instalăm câteva fișiere pe Arduino opkg Yun:

  • Server MySQL
  • PHP5
  • MySQLdb pentru Python 2.7
  • Mod de PHP5 la MySQL

Amintiți-vă că implicit în Bridge vine instalat Python 2.7, deci nu trebuie să instalați niciodată nicio actualizare pentru aceasta. Începeți înregistrarea SSH îndrăzniți să intrați în Arduino Yun, după ce le-ați pornit, tastați următoarea comandă pentru a actualiza lista de aplicații opkg:

actualizare opkg

Pasul 4: Instalarea MySQL

Instalarea MySQL
Instalarea MySQL

Acum vom stabili instalarea și configurarea MySQL Server, tastați următoarele comenzi în consolă:

  1. opkg instalează 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 activate
  8. mysqladmin -u parola de root 'tu-nueva-clave'

Odată ce ați terminat introducerea codurilor noastre și ați pornit serverul MySQL, ar trebui să configurați baza de date care va manipula. Dar înainte de a începe să tastați codurile, trebuie să înțelegem câmpurile care transportă tabelul nostru. Consiliul va fi format din 5 cursuri, „id”, „nume”, „nume”, „e-mail”, „rfid” pentru comercializarea unora dintre ele. Voi da o scurtă explicație a utilizării lor.

  • „id”: câmpul sau atributul int coloana care ne va spune numărul atribuit ID-ului de utilizator, acest număr este atribuit de aceeași bază de date și va fi modul de indexare a înregistrărilor noastre.
  • „nombre”: coloana atributului va fi „varchar” poate fi indicată de numele cu care este identificat utilizatorul cardului nostru.
  • „apellido”: coloana atributului va fi „varchar” poate fi indicată de numele de familie cu care este asociat utilizatorul nostru.
  • „correo”: este coloana de atribute „varchar” care va conține e-mail-ul utilizatorului asociat.
  • „rfid”: este coloana de atribute „varchar” care va conține codul cardului RFID pe care îl utilizați.

(Voi folosi variabilele în spaniolă, deoarece este limba mea maternă și îmi place c:) Acum ne putem configura baza de date fără probleme, prin urmare creăm un apel „arduino” MySQL. Trebuie să tastați următorul cod:

mysqladmin -u root -p creează arduino

Vă cerem parola pe care am introdus-o mai devreme în instalare, o vom trimite pentru a finaliza crearea bazei. Finalizate toate acestea, introducem interogarea către MySQL, ar trebui să tastați următorul cod în consolă:

mysql -root -p

Din nou cerem parola, trebuie să o trimiteți din nou. Odată ajuns în comanda consolei MySQL, pointerul ('mysql>') ar trebui să apară gata de tastat. Primul lucru pe care îl vom face este să mutăm baza pentru ca datele „arduino” să funcționeze pe ele. Acest lucru se face tastând următoarea comandă la consola MySQL:

Folosiți arduino

Credem că tabelul de nume „usuariosrfid” din baza de date va fi utilizat pentru acest proiect, tastați acest cod în consola MySQL:

  1. CREAȚI TABELUL `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. CHEIE PRIMARĂ („id”)
  8. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Amintiți-vă că atunci când apăsați tasta ENTER la sfârșitul liniei de comandă din consola MySQL, aceasta nu va rula până când nu găsiți „;” Prin urmare, la sfârșitul codului este „;” Pentru a finaliza instalarea și configurarea MySQL, completăm câteva câmpuri de testare din baza noastră. Tastați următoarele rânduri:

  1. INSERAȚI ÎN "usuariosrfid" ("id", "nombre", "apellido", "correo", "rfid") VALORI
  2. (1, „Pedro”, „Suarez”, „[email protected]”, „1234a-12345-b-123c”),
  3. (4, „Matias”, „Lopez”, „[email protected]”, „987a-9876b-987c”);

Acum continuați cu crearea tabelului „ControlUsuarios”, care va găzdui toate codurile RFID care trec pe lângă cititor, acest tabel constă din 3 câmpuri, „id”, „rfid”, „dată”.

  • „id” este câmpul sau coloana int atribut care va conține id-ul fiecărei înregistrări pentru indexare.
  • Atributul „rfid” este coloana „varchar” care conține codul etichetei RFID a fost citită de cititor.
  • „data” este coloana de atribute „varchar” care va conține data citirii cardului.

Pentru a crea tabelul „ControlUsuarios”, introducem următorul cod în consola MySQL:

  1. CREAȚI TABELUL `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NOT NULL,
  4. `fecha` varchar (300) NU NUL,
  5. CHEIE PRIMARĂ („id”)
  6. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

În cele din urmă, tastați „exit;” în consolă pentru a ieși din interogarea MySQL și a reveni la SHH, astfel încât să putem începe cu PHP5.

Pasul 5: Instalarea PHP5

Instalarea PHP5
Instalarea PHP5

Continuați cu instalarea și configurarea PHP5. Această instalare este mai ușoară decât MySQL, deci nu ar trebui să le coste nimic. Mai întâi, instalați pachetul opkg din Arduino Yun descărcând și instalând, așa că tastați consola SSH a Arduino:

opkg instalează php5 php5-cgi

Odată descărcat și PHP5 instalat pe Arduino Yun, așa că am configurat fișierul rădăcină uHTTPd, serverul http care aduce implicit Arduino, vă recomand să utilizați acest server http doar deoarece este mai versatil și accesibil în configurație, nu Apache sau Lighttpd sunt mai dificile pentru a vă configura când sunteți nou în acest domeniu. Pentru a configura acest lucru, utilizați editorul de fișiere „vi” SSH, pentru aceasta trebuie să aveți cunoștințe minime pentru a utiliza acest editor. Începeți să tastați acest cod în consolă pentru a accesa fișierul de setări uHTTPd:

vi / etc / config / uhttpd

Apăsați pe „i” pentru a edita fișierul, apoi mergeți la linia de cod pe care ați scris-o „# list interpret. "php = / usr / bin / php-cgi" '. Trebuie să ștergeți caracterul „#” la începutul liniei, apoi apăsați tasta escape (tasta „ESC”), odată ce sunteți gata, trebuie să tastați comanda „: wq” pentru a salva fișierul și a ieși din. Trebuie să reporniți serverul uHTTPd, pentru aceasta, trebuie să tastați în consola de comandă a SSH următorul cod:

/etc/init.d/uhttpd reporniți

Pasul 6: Instalarea Conector MySQL pentru PHP5 și Python

Instalarea Conector MySQL pentru PHP5 și Python
Instalarea Conector MySQL pentru PHP5 și Python

Continuați cu instalarea și configurarea modulelor pentru a conecta baza de date MySQL cu PHP și Python. Să începem cu conectorul PHP. Tastați următorul cod:

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

Odată gata, nu va trebui să repornească serverul uHTTPd, gata pentru utilizare imediată. Acum continuați cu conectorul pentru Python, pentru aceasta, trebuie să introduceți următorul cod:

opkg instalează python-mysql

Cu acest ultim pas, vom avea Arduino Yun pregătit pentru proiectul nostru cu cititorul de card ID-20 RFID 125khz. Finalizați această parte cu Feedback despre ceea ce am făcut:

  • Am instalat serverul MySQL pe Arduino Yun, apoi îl configurăm, terminând cu o inserție de date de testare.
  • Instalați complementul PHP pe serverul nostru.
  • Am terminat cu instalarea și configurarea MySQL Connector atât pentru PHP, cât și pentru Python.

Pasul 7: Coduri

În acest domeniu, discutăm codurile de programare care vor fi utilizate pentru acest proiect. Plecăm cu codul Python, care este împărțit în două fișiere: „comprobar.py”, care se va conecta la baza de date și va căuta Yun Arduino dacă rezultatul este în el și fișierul „control. py ', responsabil pentru înregistrarea oricărui card care este citit de cititorul ID-20, indiferent dacă este sau nu în baza de date a utilizatorilor înregistrați. Apoi continuați cu descrierea fișierelor PHP, sunt: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Pentru aceste fișiere redundarem ambele, deoarece sunt ușor de înțeles. În cele din urmă, terminați cu codul care va crește ca schița noastră Arduino.

Pasul 8: Fișiere Python

Fișierele Python
Fișierele Python

După cum sa menționat mai devreme, scripturile noastre Python au funcționat cu biblioteca sau clasa „MySQLdb”, care este deja instalată anterior. Începeți prin crearea unui fișier cu „.py” numit „comprobar.py” în editorul nostru, vă recomand să folosiți aceste cazuri pentru programarea în Python, editorul Sublime Text 3, pe care îl puteți descărca de pe site-ul lor www.sublimetext.com. Să începem prin importarea bibliotecii pentru a ne conecta la baza de date MySQL, biblioteca „sys” care ne va permite să comunicăm cu Arduino Yun:

  1. importă MySQLdb
  2. import sisteme

Odată importate aceste biblioteci sau clase, adăugăm variabile în codul dvs., care vor fi datele de conexiune din baza noastră de date MySQL, os:

  1. host = "127.0.0.1" # corespunde adresei serverului nostru MySQL.
  2. user = "your-seat" # este utilizatorul bazei noastre de date.
  3. passw = "parola ta" este pentru parola utilizatorului. base = "arduino" # Acesta este numele bazei de date pe care o utilizați.

Acum începeți cu codurile scriptului de bază:

  1. în timp ce este adevărat:
  2. db = MySQLdb.connect (gazdă, utilizator, passw, bază)
  3. cur = db.cursor ()
  4. result = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE% s ORDER BY id" "", (sys.argv [1],))
  5. if (rezultat == 1):
  6. tipăriți 1
  7. sys.exit (1)
  8. altceva:
  9. tipar 2
  10. sys.exit (1)

Dacă ne dăm seama, în judecată 'cur.execute result = ("" "SELECT * FROM WHITE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' comanda pentru a executa interogarea noastră compară variabila „(sys.argv [1])”, care este codul de pe cardul RFID Arduino cu toate datele de câmp „tabelul“rfid”„ utilizatorirfid”, care, găsind codul egalității din arduino și codurile sau stocate în baza de date, va returnează 1, dacă acest lucru nu este adevărat și nu există egalitate între codul din arduino și o parte din bază, vom returna 2. Aceste numere vor fi primite de Arduino. Continuăm cu următorul fișier 'control.py. Acest fișier funcționează la fel ca mai sus, păstrând doar un postgust pe o masă, aceste înregistrări salvate vor fi colectate de cititorul ID-20 conectat la Arduino Yun, astfel încât să putem păstra toți utilizatorii înregistrați care folosesc cititorul nostru RFID.

Pasul 9: Fișierele PHP

Apoi continuați cu fișierele. „Php” care va păstra folderul de pe serverul nostru, pentru a face acest lucru, amintiți-vă că este necesar ca aceste fișiere, odată gata, să fie salvate în scenariul proiectului nostru, care generează automat IDE Arduino, trebuie să vă amintiți, deși anticipez asta, că atunci când urcăm la schița noastră Arduino Yun, încărcăm prin Wi-Fi, așa că o las pe aceeași pagină manuală Arduino, www.arduino. cc / ro / Guide / Arduino Yun # toc14, care explică mai multe despre acest lucru și cum ar trebui să mergeți cardul MicroSD pregătit pentru acest tip de proiect în care fișierele ar trebui stocate pe server. Fișierele PHP vor fi 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php "consulta.php", "configuracion.php", care va fi hyperlink la celălalt, pentru a menține un meniu de bază întotdeauna rulat și accesibil. Doar explicați fișierul „configuracion.php”, care funcționează ca un conector cu baza noastră de date. În editorul nostru, programăm următorul cod în fișier:

  1. <? php
  2. / / Server de date și bază de date
  3. $ server = "localhost";
  4. $ nume utilizator = "locul tău";
  5. $ parolă = "parolă";
  6. $ database_name = "arduino";

Acestea sunt datele care trebuie să se conecteze la baza noastră de date din arduino vor fi aceleași pe care le folosim în scripturile noastre Python. Finalizați programarea declarației de conectare, care a folosit scriptul nostru:

  1. $ conexion = mysql_connect ($ server, $ username, $ password) or die ("Probleme pentru tratarea stabilirii conexiunii");
  2. $ bd_sel = mysql_select_db ($ database_name) sau die ("Probleme la selectarea bazei de date");
  3. ?>

Celelalte fișiere sunt atașate.

Pasul 10: În cele din urmă, programul Arduino YÚN

Am ajuns la partea principală a acestui tutorial, programând Arduino Yun, niciun detaliu nu va evidenția tot codul, deoarece este destul de extins, menționând doar următoarele puncte importante:

  • Codul este format din 6 funcții principale și 13 funcții secundare, care sunt doar un suport pentru utilizarea ecranului LCD Serial.
  • Fiți importați doar trei clase, „SoftwareSerial.h”, cu care vom introduce Serial Attached pentru a ne conecta cu ID-20 și Serial LCD, clasa principală „Bridge.h” cu care vom face conexiunea între Linux și ATMEGA32U4, și clasa „Process.h” va servi pentru procesele de consultare în Linux.
  • Definiți doar trei pini, care folosesc alții să fie gratuit.

Codul este atașat

Pasul 11: La mulți ani

Continu acest lucru meticulos pentru a vă servi și a vă ajuta să obțineți mai multe informații despre Arduino Yun. Lăsați toate fișierele atașate la final. Pentru vorbitorii de limbă spaniolă, las acest tutorial dar în spaniolă cu fișierele necesare. Sper să aveți un an nou fericit, bucurați-vă de el și succes în acest 2014!

Recomandat: