Sadržaj:

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

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

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

Hello Friends!

Pa, kao što znate, u septembru novi premijerni štit Arduina, Arduino YUN. Ovaj mali prijatelj ima Linux ugrađen sistem 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. Ovog puta ću objasniti kako se radi ovaj projekat, ali na način koji je dovoljan, a sve kroz naš Arduino. Ovo funkcionira, zahvaljujući poslužitelju baze podataka MySQL koji će se smjestiti u našem YUN -u, ova baza podataka pohranit će dvije tablice, jednu za korisnike povezanu s određenim RFID -om i 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. Štaviše, hardverski troškovi, koristimo čitač ID-20 pored serijskog LCD-a od 16 znakova, plus RGB LED koji će biti naši podaci. Ovu kontrolu pristupa možemo koristiti sve što nam padne na pamet, izmijenimo i dodamo 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 elektronike otvorenog koda. Pa idemo na sljedeći korak, strankama je potreban!

Korak 1: Dijelovi

The Parts
The Parts
The Parts
The Parts
The Parts
The Parts

Za ovaj projekt potrebno nam je: * 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 karaktera 5V https://www.sparkfun.com/products/790 16,95 USD * LCD ruksak sa serijskim omogućavanjem 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 vam da kupite dijelove na www.olimex.cl, vrlo dobroj čileanskoj trgovini elektronike.

Korak 2: Sklapanje

Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje
Sastavljanje

Nekoliko veza koje treba obaviti, polaganje ukratko objasniti. Za RGB LED, crveni LED pin mora biti na pinu 9 Arduina, zakačite zeleni LED da ide na Arduino pin 8 i zakačite plavi 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 konektor 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 Server
  • PHP5
  • MySQLdb za Python 2.7
  • Mod PHP5 u MySQL

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

opkg update

Korak 4: Instalacija MySQL -a

Instalacija MySQL -a
Instalacija MySQL -a

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

  1. opkg instalirati 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 početak
  7. /etc/init.d/mysqld omogući
  8. mysqladmin -u root lozinka 'tu-nueva-clave'

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

  • '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 to će biti način indeksiranja naših zapisa.
  • 'nombre': stupac atributa bit će 'varchar' može biti označen imenom s kojim je identificiran korisnik naše kartice.
  • 'apellido': stupac atributa bit će 'varchar' može biti označen prezimenom s kojim je naš korisnik povezan.
  • '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 maternji jezik i sviđa mi se c:) Sada možemo konfigurirati našu bazu podataka bez problema, stoga stvaramo 'arduino' poziv MySQL. Morate upisati sljedeći kôd:

mysqladmin -u root -p kreiraj arduino

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

mysql -root -p

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

USE arduino

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

  1. CREATE TABLE `usuariosrfid` (
  2. `id` int (255) NIJE NULL 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 KARTA MISISAM = latin1 AUTO_INCREMENT = 0;

* Upamtite 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 ';' Da 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 kreiranjem tabele 'ControlUsuarios', u kojoj će se nalaziti svi RFID kodovi koji prolaze pored čitača, ova tabela 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' je kolona 'varchar' koja sadrži kod RFID oznake koju je čitač pročitao.
  • 'date' je stupac atributa 'varchar' koji će sadržavati datum čitanja kartice.

Da bismo stvorili tablicu 'ControlUsuarios', unosimo sljedeći kod u MySQL konzolu:

  1. CREATE TABLE `ControlUsuarios` (
  2. `id` int (255) NIJE NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NIJE NULA,
  4. `fecha` varchar (300) NIJE NULA,
  5. PRIMARNI KLJUČ (`id`)
  6. ) MOTOR = ZNAČAJNA KARTA MISISAM = 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 instalacija je lakša od MySQL -a, pa ih ne bi trebala koštati ništa. Najprije instalirajte opkg paket s Arduino Yuna za preuzimanje i instaliranje, pa upišite u SSH konzolu Arduina ovo:

opkg install php5 php5-cgi

Nakon preuzimanja i instaliranja 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 ovoj oblasti. Da biste ovo konfigurirali, koristite uređivač datoteka 'vi' SSH, jer 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 red koda koji ste napisali 'interpreter liste. "php = / usr / bin / php-cgi" '. Morate izbrisati znak '#' na početku retka, zatim pritisnuti tipku escape (tipka 'ESC'), kada budete spremni, morate upisati naredbu ': wq' da biste spremili datoteku i izašli iz. Morate ponovo pokrenuti poslužitelj uHTTPd, za to biste trebali unijeti u naredbenu konzolu SSH 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 MySQL baze podataka s PHP -om i Pythonom. Počnimo s PHP konektorom. Upišite sljedeći kôd:

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

Kad bude spreman, neće morati ponovo pokrenuti poslužitelj uHTTPd, spreman za trenutnu upotrebu. 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 uradili:

  • Instalirali smo MySQL poslužitelj na naš Arduino Yun, zatim ga konfigurirali, završavajući umetanjem testnih podataka.
  • Instalirajte PHP komplement na naš server.
  • Završili smo s instalacijom i konfiguracijom MySQL konektora 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 datotekom 'control. py ', odgovoran za snimanje bilo koje kartice koju čitač čita-ID-20, bez obzira nalazi li se u bazi podataka registriranih korisnika ili ne. Zatim nastavite s opisom PHP datoteka, a to su: 'KonsultacijeRelacion.php', 'KonsultacijeControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' advis.php ',' configiguracion.php '. Za ove datoteke redundaremos oba jer ih je lako razumjeti. Konačno 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 biblioteke za povezivanje s našom MySQL bazom podataka, bibliotekom 'sys' koja će nam omogućiti komunikaciju s našim Arduino Yunom:

  1. uvoz MySQLdb
  2. import sys

Nakon uvoza ovih biblioteka 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 servera.
  2. user = "your-seat" # je korisnik naše baze podataka.
  3. passw = "vaša lozinka" služi za lozinku korisnika. base = "arduino" # Ovo je ime baze podataka koju koristite.

Sada počnite s kodovima osnovne skripte:

  1. dok je True:
  2. db = MySQLdb.connect (host, korisnik, 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. štampa 1
  7. sys.exit (1)
  8. drugo:
  9. štampa 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 uporedi varijablu '(sys.argv [1])' koji je kôd sa 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, vrati 1, ako to nije istina 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 snimljene zapise prikupit ć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 pređ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 će biti 10 'KonsultantRelacion.php', 'consulControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' advis.php ',' configiguracion.php ', koji će biti hipervezani prema drugom, radi održavanja osnovnog menija 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 sedište";
  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 ($ server, $ username, $ password) ili umreti ("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 istaknuti sav kôd jer je prilično opsežan, samo spomenimo sljedeće važne točke:

  • Kod se sastoji od 6 glavnih funkcija i 13 sekundarnih funkcija, koje su samo podrška za upotrebu 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 konsultacijske procese u Linuxu.
  • Definirajte samo tri pina, koji koriste druge da budu besplatni.

Kôd 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 -u. Ostavite sve datoteke priložene do kraja. Za govornike španjolskog jezika napuštam ovaj vodič, ali na španjolskom s potrebnim datotekama. Nadam se da vam je sretna nova godina, uživajte u njoj i uspjehu ove 2014. godine!

Preporučuje se: