Sadržaj:

Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom: 11 koraka (sa slikama)
Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom: 11 koraka (sa slikama)

Video: Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom: 11 koraka (sa slikama)

Video: Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom: 11 koraka (sa slikama)
Video: Управляющая лампа переменного тока с реле 5 В с помощью Arduino 2024, Studeni
Anonim
Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom
Kontrolirajte pristup Arduino YÚN s MySQL, PHP5 i Pythonom

Pozdrav prijatelji!

Pa, kao što znate, u rujnu novi premijerni štit Arduina, Arduino YUN. Ovaj mali prijatelj ima ugrađeni sustav Linux s kojim možemo pokrenuti sve što vam padne na pamet (barem do sada). Iako je na ovoj novoj ploči vrlo malo informacija, s odlaskom u vodič koji pruža Arduino stranicu (koja će se kasnije povezati), plus malo znanja o mnogim Linuxima, može se izvesti veliki projekt s kontrolnim pristupom. Ovaj put ću vam objasniti kako izvesti ovaj projekt, ali na dostatan način kroz cijeli naš Arduino. Ovo funkcionira, zahvaljujući poslužitelju baze podataka MySQL koji će se ustaliti u našem YUN -u, ova baza podataka pohranit će dvije tablice, jednu za korisnike povezane s određenim RFID -om, a drugu tablicu za evidenciju svih kartica koje su prošle kroz naš čitač. Dok koristimo programske jezike PHP i Python skripte za izvođenje nekih osnovnih radnji i rad s našim podacima. Štoviše, hardverski troškovi, koristimo čitač ID-20 pored serijskog LCD-a od 16 znakova, plus RGB LED koji će biti naša informacija. Ovu kontrolu pristupa možemo koristiti sve što nam padne na pamet, izmijeniti i dodati relej ili drugu ideju. Može se koristiti na bilo čemu gdje imate kartice i želite zapis. Podsjetimo da je ovaj dokument besplatna publikacija, komercijalna upotreba i izuzete izmjene nisu dopuštene. Nadam se da je to daleko opsežniji put otvorene elektronike. Pa idemo na sljedeći korak, stranke trebaju!

Korak 1: Dijelovi

Dijelovi
Dijelovi
Dijelovi
Dijelovi
Dijelovi
Dijelovi

Za ovaj projekt moramo imati: * Arduino YUN https://www.sparkfun.com/products/12053 71,95 USD * RFID čitač ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 USD * Probijanje čitača RFID -a https://www.sparkfun.com/products/8423 0,95 USD * Osnovni LCD displej sa 16x2 znakova 5V https://www.sparkfun.com/products/790 16,95 USD * Serijski omogućen LCD ruksak https:// www. sparkfun.com/products/258 16,95 USD * LED RGB 5 mm https://www.sparkfun.com/products/105 1,95 USD * Zujalica https://www.sparkfun.com/products/7950 1,95 USD * Somes Header Pin i žica oko 5,00 USD približno. Sve u svemu, ako kupite u trgovini Sparkfun, sve će biti blizu 150 USD. Ako živite u Latinskoj Americi, preporučio bih da kupite dijelove na www.olimex.cl, vrlo dobroj čileanskoj trgovini elektronike.

Korak 2: Sklapanje

Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje

Nekoliko veza za napraviti, polaganje ukratko objasniti. Za RGB LED, crveni LED pin mora biti na pinu 9 Arduina, zakačite zelenu LED da ide na Arduino pin 8 i zakačite plavu LED na pin 7 Arduina. Za ID-20 morate spojiti sljedeće pinove kako je navedeno u tablici odgovarajućim redoslijedom, čitač pinova na Arduino pin: Pin ID-20 na pin Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V I na kraju, za serijski LCD priključak bit će potrebni samo 5v i GND pinovi Arduina, dok LCD serijski RX pin ide na pin 11 Arduina.

Korak 3: Programiranje Arduino Yuna

Programiranje Arduino Yuna
Programiranje Arduino Yuna

U svrhu izrade našeg projekta, moramo početi s dijelom softvera, instalirati neke datoteke na naš Arduino opkg Yun:

  • MySQL poslužitelj
  • PHP5
  • MySQLdb za Python 2.7
  • Mod PHP5 na MySQL

Podsjetimo da je prema zadanim postavkama u Bridgeu instaliran Python 2.7, pa za to nikada ne morate instalirati nikakvo ažuriranje. Počnite se prijavljivati. SSH se usuditi ući u naš Arduino Yun, nakon što ste ih pokrenuli, upišite sljedeću naredbu za ažuriranje popisa aplikacija opkg:

opkg ažuriranje

Korak 4: Instalacija MySQL -a

Instalacija MySQL -a
Instalacija MySQL -a

Sada ćemo uspostaviti instalaciju i konfiguraciju MySQL poslužitelja, upišite sljedeće naredbe u konzolu:

  1. opkg instalirati libpthread libncurses libreadline mysql-poslužitelj
  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 –- sila
  6. /etc/init.d/mysqld početak
  7. /etc/init.d/mysqld omogući
  8. mysqladmin -u root lozinka 'tu-nueva-clave'

Nakon što završite s unosom naših kodova i pokrenete MySQL poslužitelj, trebate konfigurirati bazu podataka koja će manipulirati. No prije nego što počnemo upisivati kodove, moramo razumjeti polja koja nose našu tablicu. Odbor će se sastojati od 5 tečajeva, 'id', 'name', 'name', 'email', 'rfid' za plasiranje nekih od njih dat ću kratko objašnjenje njihove uporabe.

  • 'id': hoće li polje ili atribut int stupac koji će nam reći broj dodijeljen User ID -u, ovaj broj dodjeljuje ista baza podataka i bit će način za indeksiranje naših zapisa.
  • 'nombre': stupac atributa bit će 'varchar' može biti označen imenom s kojim je identificiran naš korisnik kartice.
  • 'apellido': stupac atributa bit će 'varchar' može biti označen prezimenom s kojim je povezan naš korisnik.
  • 'correo': je stupac atributa 'varchar' koji će sadržavati e-poštu pridruženog korisnika.
  • 'rfid': je stupac atributa 'varchar' koji će sadržavati kôd RFID kartice koju koristite.

(Koristit ću varijable na španjolskom, jer je to moj materinji jezik i sviđa mi se c:) Sada možemo konfigurirati našu bazu podataka bez problema, stoga stvaramo 'arduino' poziv MySQL. Morate unijeti sljedeći kôd:

mysqladmin -u root -p stvoriti arduino

Tražimo lozinku koju smo unijeli ranije u instalaciji, poslat ćemo je za dovršetak stvaranja baze. Sve ovo završilo, unosimo upit u MySQL, trebali biste unijeti sljedeći kod u konzolu:

mysql -korijen -p

Opet tražimo lozinku, morate je poslati ponovno. Kad uđemo u naredbu MySQL konzole, pokazivač ('mysql>') bi se trebao pojaviti spreman za upis. Prvo što ćemo učiniti je premjestiti bazu za 'arduino' podatke na njih. To se postiže upisivanjem sljedeće naredbe na MySQL konzolu:

KORISTITE arduino

Vjerujemo da će se tablica naziva 'usuariosrfid' u bazi podataka koristiti za ovaj projekt, upišite ovaj kôd u MySQL konzolu:

  1. IZRADI TABLICU `usuariosrfid` (
  2. `id` int (255) NIJE NULA AUTO_INCREMENT,
  3. `nombre` varchar (300) NIJE NULA,
  4. `apellido` varchar (300) NIJE NULA,
  5. `correo` varchar (300) NIJE NULA,
  6. `rfid` varchar (300) NIJE NULA,
  7. PRIMARNI KLJUČ (`id`)
  8. ) MOTOR = ZNAČAJNA KARETA MyISAM = latin1 AUTO_INCREMENT = 0;

* Zapamtite da se pritiskom na tipku ENTER na kraju naredbenog retka u MySQL konzoli neće pokrenuti dok ne pronađete ';' Stoga je na kraju koda ';' Kako bismo dovršili instalaciju i konfiguraciju MySQL -a, popunjavamo neka test polja u našoj bazi. Upišite sljedeće redove:

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

Sada nastavite sa stvaranjem tablice 'ControlUsuarios', u kojoj će se nalaziti svi RFID kodovi koji prolaze pored čitača, ova tablica se sastoji od 3 polja, 'id', 'rfid', 'date'.

  • 'id' je polje ili atribut int stupac koji će sadržavati id svakog zapisa za indeksiranje.
  • Atribut 'rfid' čitatelj je pročitao stupac 'varchar' koji sadrži kod RFID oznake.
  • 'date' je stupac atributa 'varchar' koji će sadržavati datum čitanja kartice.

Za izradu tablice 'ControlUsuarios' unosimo sljedeći kôd u MySQL konzolu:

  1. IZRADI TABLICU `ControlUsuarios` (
  2. `id` int (255) NIJE NULA AUTO_INCREMENT,
  3. `rfid` varchar (300) NIJE NULA,
  4. `fecha` varchar (300) NIJE NULA,
  5. PRIMARNI KLJUČ (`id`)
  6. ) MOTOR = ZNAČAJNA KARETA MyISAM = latin1 AUTO_INCREMENT = 0;

Na kraju upišite 'exit;' u konzoli za izlaz iz MySQL upita i povratak na SHH kako bismo mogli početi s PHP5.

Korak 5: Instalacija PHP5

Instalacija PHP5
Instalacija PHP5

Nastavite s instalacijom i konfiguracijom PHP5. Ova je instalacija lakša od MySQL -a pa ih ne bi trebala koštati ništa. Prvo instalirajte opkg paket s Arduino Yuna za preuzimanje i instaliranje, pa unesite SSH konzolu Arduina ovo:

opkg instalirajte php5 php5-cgi

Nakon što ste preuzeli i instalirali PHP5 na naš Arduino Yun, pa smo konfigurirali root datoteku uHTTPd, http poslužitelj koji Arduino zadano postavlja, preporučujem da koristite samo ovaj http poslužitelj jer je svestraniji i pristupačniji u konfiguraciji, a ne Apache ili Lighttpd su teži za postavljanje kada ste novi u ovom području. Da biste to konfigurirali, koristite uređivač datoteka 'vi' SSH, za to morate imati minimalno znanje za korištenje ovog uređivača. Počnite upisivati ovaj kôd u konzolu za pristup datoteci postavki uHTTPd:

vi/etc/config/uhttpd

Pritisnite 'i' za uređivanje datoteke, a zatim idite na redak koda koji ste napisali 'tumač popisa#. "php = / usr / bin / php-cgi" '. Morate izbrisati znak '#' na početku retka, zatim pritisnuti tipku escape (tipka 'ESC'), nakon što ste spremni, morate upisati naredbu ': wq' da biste spremili datoteku i izašli iz. Morate ponovno pokrenuti poslužitelj uHTTPd, za to biste trebali unijeti u naredbenu konzolu SSH -a sljedeći kod:

/etc/init.d/uhttpd ponovno pokretanje

Korak 6: Instalirajte Conector MySQL za PHP5 i Python

Instalirajte Conector MySQL za PHP5 i Python
Instalirajte Conector MySQL za PHP5 i Python

Nastavite s instalacijom i konfiguracijom modula za povezivanje baze podataka MySQL s PHP -om i Pythonom. Počnimo s PHP priključkom. Upišite sljedeći kôd:

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

Kad bude spreman, neće trebati ponovno pokrenuti poslužitelj uHTTPd, spreman za trenutnu uporabu. Sada nastavite s konektorom za Python, za to morate unijeti sljedeći kôd:

opkg instalirajte python-mysql

S ovim posljednjim korakom, naš Arduino Yun bit će spreman za naš projekt s čitačem kartica ID-20 RFID 125 kHz. Završite ovaj dio povratnom informacijom o onome što smo učinili:

  • Instalirali smo MySQL poslužitelj na naš Arduino Yun, zatim ga konfigurirali, završavajući umetanjem testnih podataka.
  • Instalirajte PHP komplement na naš poslužitelj.
  • Završili smo s instalacijom i konfiguracijom MySQL Connector -a za PHP i Python.

Korak 7: Kodovi

U ovom području raspravljamo o programskim kodovima koji će se koristiti za ovaj projekt. Odlazimo s Python kodom, koji je podijeljen u dvije datoteke: 'comprobar.py', koji će se povezati s bazom podataka i tražiti Yun Arduino ako je rezultat u njoj, te datoteku 'control. py ', odgovoran za snimanje bilo koje kartice koju čitač ID-20 čita, bez obzira nalazi li se u bazi podataka registriranih korisnika ili ne. Zatim nastavite s opisom PHP datoteka, a to su: 'consulRelacion.php', 'ConsultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' Consultura.php ',' configiguracion.php '. Za ove datoteke redundaremos oboje jer ih je lako razumjeti. Na kraju završite s kodom koji će postati naša Arduino skica.

Korak 8: Datoteke Python

Datoteke Python
Datoteke Python

Kao što je ranije spomenuto, naše Python skripte funkcionirale su s bibliotekom ili klasom 'MySQLdb', koja je već instalirana. Počnite stvaranjem datoteke s '.py' imenom 'comprobar.py' u našem uređivaču, preporučujem da koristite ove slučajeve za programiranje u Pythonu, uređivaču Sublime Text 3, koji možete preuzeti na njihovoj web stranici www.sublimetext.com. Počnimo s uvozom knjižnice za povezivanje s našom MySQL bazom podataka, knjižnicom 'sys' koja će nam omogućiti komunikaciju s našim Arduino Yunom:

  1. uvoz MySQLdb
  2. import sys

Nakon uvoza ovih knjižnica ili klasa, vašem kodu dodajemo varijable, koje će biti podaci o povezivanju iz naše MySQL baze podataka, kost:

  1. host = "127.0.0.1" # odgovara adresi našeg MySQL poslužitelja.
  2. user = "your-seat" # je korisnik naše baze podataka.
  3. passw = "vaša lozinka" služi za lozinku korisnika. base = "arduino" # Ovo je naziv baze podataka koju koristite.

Sada počnite s kodovima osnovne skripte:

  1. dok je istina:
  2. db = MySQLdb.connect (host, user, passw, base)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id" "", (sys.argv [1],))
  5. if (rezultat == 1):
  6. ispis 1
  7. sys.exit (1)
  8. drugo:
  9. ispis 2
  10. sys.exit (1)

Ako shvatimo, u presudi 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' naredba za izvršavanje našeg upita usporedite varijablu '(sys.argv [1])' koji je kôd s Arduino RFID kartice sa svim podacima polja 'rfid' tablica 'usuariosrfid', koja će, pronalaženje koda jednakosti iz arduina i ili kodova pohranjenih u bazi podataka, vratiti 1, ako to nije točno i nema jednakosti između koda iz arduina i neke baze, vratit ćemo 2. Ove će brojeve primiti Arduino. Nastavljamo sa sljedećom datotekom 'control.py. Ova datoteka radi na isti način kao gore, samo zadržavajući zaostatak okusa na stolu, te spremljene zapise prikupljat će čitač ID-20 povezan s našim Arduino Yunom, tako da možemo zadržati sve registrirane korisnike koji koriste naš RFID čitač.

Korak 9: Datoteke PHP

Zatim nastavite s datotekama. 'Php' koji će zadržati mapu s našeg poslužitelja, da biste to učinili, zapamtite da je potrebno da se te datoteke, nakon što budu spremne, spremaju u skeč našeg projekta, koji automatski generira IDE Arduino, također morate zapamtiti, iako pretpostavljam ovo, da kad prijeđemo na našu Arduino skicu Yun, učitavamo je putem Wi -Fi -ja, pa je ostavljam na istoj stranici priručnik Arduino, www.arduino. cc / hr / Vodič / Arduino Yun # toc14, koji objašnjava više o tome i kako biste trebali ići pripremljenu MicroSD karticu za ovu vrstu projekta gdje bi datoteke trebale biti pohranjene na poslužitelju. PHP datoteke bit će 10 'consulRelacion.php', 'consulControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' advis.php ',' configiguracion.php ', koji će biti hiperpovezani na drugu, radi održavanja osnovnog izbornika koji je uvijek aktivan i dostupan. Samo objasnite datoteku 'configiguracion.php', koja funkcionira kao konektor s našom bazom podataka. U našem uređivaču zakazujemo sljedeći kod u datoteci:

  1. <? php
  2. / / Poslužitelj podataka i baza podataka
  3. $ server = "localhost";
  4. $ username = "vaše mjesto";
  5. $ password = "lozinka";
  6. $ database_name = "arduino";

Ovo su podaci koje je potrebno povezati s našom bazom podataka u arduinu i bit će isti kao mi u našim Python skriptama. Završite programiranje naredbe connect, koja je koristila našu skriptu:

  1. $ conexion = mysql_connect ($ poslužitelj, $ korisničko ime, $ lozinka) ili umrijeti ("Problemi al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) ili umrijeti ("Problemi pri odabiru baze podataka");
  3. ?>

Ostale datoteke su priložene.

Korak 10: Konačno, program Arduino YÚN

Došli smo do glavnog dijela ovog vodiča, programirajući naš Arduino Yun, bez pojedinosti će se istaknuti sav kôd jer je prilično opsežan, spomenimo samo sljedeće važne točke:

  • Kôd se sastoji od 6 glavnih funkcija i 13 sekundarnih funkcija, koje su samo podrška za korištenje serijskog LCD -a.
  • Uvozite samo tri klase, 'SoftwareSerial.h', s kojima ćemo unijeti Serial Attached za povezivanje s ID-20 i Serial LCD, glavnu klasu 'Bridge.h' s kojom ćemo uspostaviti vezu između Linuxa i ATMEGA32U4, i klasa 'Process.h' poslužit će za konzultacijske procese u Linuxu.
  • Odredite samo tri pribadače za koje je korištenje drugih besplatno.

Kod je u prilogu

Korak 11: Sretna Nova godina

Pažljivo nastavljam s ovim kako bih vam služio i pomogao vam da dobijete više informacija o Arduino Yun. Ostavite sve datoteke priložene do kraja. Za govornike španjolskog jezika ostavljam ovaj vodič, ali na španjolskom jeziku s potrebnim datotekama. Nadam se da ćete imati sretnu novu godinu, uživati u njoj i uspjeh ove 2014. godine!

Preporučeni: