Kazalo:

Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python: 11 korakov (s slikami)
Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python: 11 korakov (s slikami)

Video: Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python: 11 korakov (s slikami)

Video: Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python: 11 korakov (s slikami)
Video: Friendzy: Laravel 8 API и Nuxt — настройка проекта, эпизод №1 2024, November
Anonim
Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python
Nadzor dostopa Arduina YÚN z MySQL, PHP5 in Python

Pozdravljeni prijatelji!

No, kot veste, septembra nov premierni ščit Arduina, Arduino YUN. Ta mali prijatelj ima vgrajen sistem Linux, s katerim lahko izvajamo vse, na kar pomislite (vsaj doslej). Medtem ko je na tej novi plošči zelo malo podatkov, lahko z odhodom v priročniku, ki ponuja stran Arduino (ki bo povezana kasneje), in malo znanja o številnih Linuxih, izvedete velik projekt z nadzornim dostopom. Tokrat bom razložil, kako narediti ta projekt, vendar na dovolj zadosten način vse skozi naš Arduino. To deluje, zahvaljujoč strežniku baz podatkov MySQL, ki se bo naselil v našem YUN -u. Ta zbirka podatkov bo shranjevala dve tabeli, eno za uporabnike, povezane z določenim RFID, drugo pa za shranjevanje evidenc o vseh karticah, ki so prešle skozi naš bralnik. Medtem ko uporabljamo programske jezike PHP in Python za izvajanje nekaterih osnovnih podatkov in delo z našimi podatki. Poleg strojne opreme uporabljamo bralnik ID-20 poleg serijskega LCD-ja s 16 znaki in LED RGB, ki bodo naše informacije. Ta nadzor dostopa lahko uporabimo za vse, kar si zamislimo, spremenimo in dodamo rele ali drugo idejo. Uporablja se lahko za vse, kjer imate kartice in želite zapis. Spomnite se, da je ta dokument brezplačna objava, komercialna uporaba in izvzete spremembe niso dovoljene. Upam, da je to bolj obsežna pot odprtokodne elektronike. Torej gremo na naslednji korak, ki ga stranke potrebujejo!

1. korak: Deli

Deli
Deli
Deli
Deli
Deli
Deli

Za izvedbo tega projekta moramo imeti: * 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 * Preboj bralnika RFID https://www.sparkfun.com/products/8423 0,95 USD * Osnovni LCD z navojem 16x2 znakov 5V https://www.sparkfun.com/products/790 16,95 USD * Serijski nahrbtnik z omogočeno serijo https:// www. sparkfun.com/products/258 16,95 USD * LED RGB 5 mm https://www.sparkfun.com/products/105 1,95 USD * Buzzer https://www.sparkfun.com/products/7950 1,95 USD * Somes Header Pin in žica približno 5,00 USD. Če kupite v trgovini Sparkfun, bo vse skupaj blizu 150 USD. Če živite v Latinski Ameriki, priporočam nakup delov na www.olimex.cl, zelo dobri čilski trgovini z elektroniko.

2. korak: Sestavljanje

Sestavljanje
Sestavljanje
Sestavljanje
Sestavljanje
Sestavljanje
Sestavljanje

Nekaj povezav, ki jih je treba narediti, na kratko razložite. Za RGB LED mora biti rdeči LED zatič na 9 pin Arduina, zelena LED mora biti na Arduino pin 8, modra LED pa na pin 7 Arduina. Za ID-20 morate priključiti naslednje zatiče, kot je prikazano v tabeli v ustreznem vrstnem redu, bralnik pin 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 In končno, za serijski priključek LCD bodo potrebni le 5v in GND zatiči Arduina, medtem ko pin za serijski RX LCD preide na pin 11 Arduina.

3. korak: Programiranje Arduino Yun

Programiranje Arduino Yun
Programiranje Arduino Yun

Za izdelavo našega projekta moramo začeti z delom programske opreme, namestiti nekaj datotek na naš Arduino opkg Yun:

  • MySQL strežnik
  • PHP5
  • MySQLdb za Python 2.7
  • Mod PHP5 v MySQL

Spomnite se, da je privzeto v Bridge nameščen Python 2.7, zato vam za to nikoli ni treba namestiti nobene posodobitve. Začnite z beleženjem SSH si upate vstopiti v naš Arduino Yun, ko jih zaženete, vnesite naslednji ukaz za posodobitev seznama aplikacij opkg:

posodobitev opkg

4. korak: Namestitev MySQL

Namestitev MySQL
Namestitev MySQL

Zdaj bomo vzpostavili namestitev in konfiguracijo strežnika MySQL, v konzolo vnesite naslednje ukaze:

  1. opkg namestite 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 –- sila
  6. /etc/init.d/mysqld začetek
  7. /etc/init.d/mysqld omogoči
  8. mysqladmin -u korensko geslo 'tu-nueva-clave'

Ko vnesete naše kode in zaženete strežnik MySQL, morate konfigurirati bazo podatkov, ki bo manipulirala. Toda preden začnemo vnašati kode, moramo razumeti polja, ki vsebujejo našo tabelo. Odbor bo sestavljen iz 5 tečajev, „id“, „name“, „name“, „email“, „rfid“, na katerih bom nekatere tržil, na kratko bom razložil njihovo uporabo.

  • 'id': bo polje ali atribut int stolpec, ki nam bo povedal številko, dodeljeno ID -ju uporabnika, to številko dodeli ista baza podatkov in bo način za indeksiranje naših zapisov.
  • 'nombre': stolpec atributa bo 'varchar' lahko označen z imenom, s katerim je identificiran uporabnik naše kartice.
  • 'apellido': stolpec atributov bo 'varchar' lahko označen s priimkom, s katerim je povezan naš uporabnik.
  • 'correo': je stolpec atributov 'varchar', ki bo vseboval e-pošto povezanega uporabnika.
  • 'rfid': je stolpec atributov 'varchar', ki bo vseboval kodo kartice RFID, ki jo uporabljate.

(Spremenljivke bom uporabil v španščini, ker je moj materni jezik in všeč mi je c:) Zdaj lahko brez težav konfiguriramo našo bazo podatkov, zato ustvarimo "arduino" klic MySQL. Vnesti morate naslednjo kodo:

mysqladmin -u root -p ustvari arduino

Vprašamo za geslo, ki smo ga vnesli prej pri namestitvi, in ga oddali za dokončanje ustvarjanja baze. Ko smo vse to končali, vnesemo poizvedbo v MySQL, v konzolo vnesite naslednjo kodo:

mysql -root -p

Ponovno zahtevamo geslo, ki ga morate predložiti znova. Ko smo v ukazu MySQL console, moramo kazalec ('mysql>') videti pripravljen za vnos. Prva stvar, ki jo bomo naredili, je premakniti bazo za podatke "arduino", da bodo na njej delovali. To naredite tako, da v konzolo MySQL vnesete naslednji ukaz:

UPORABITE arduino

Menimo, da bo tabela imen 'usuariosrfid' v bazi podatkov uporabljena za ta projekt, vnesite to kodo v konzolo MySQL:

  1. Ustvari tabelo `usuariosrfid` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) NI NIČ,
  4. `apellido` varchar (300) NI NIČ,
  5. `correo` varchar (300) NI NIČ,
  6. `rfid` varchar (300) NI NIČ,
  7. PRIMARNI KLJUČ (`id`)
  8. ) MOTOR = ZNAMENJENA KARZETA MyISAM = latin1 AUTO_INCREMENT = 0;

* Ne pozabite, da se ob pritisku na tipko ENTER na koncu ukazne vrstice v konzoli MySQL ne zažene, dokler ne najdete ';' Zato je na koncu kode ';' Za dokončanje namestitve in konfiguracije MySQL zapolnimo nekaj testnih polj v naši bazi. Vnesite naslednje vrstice:

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

Zdaj nadaljujte z ustvarjanjem tabele 'ControlUsuarios', v kateri bodo vse kode RFID, ki jih prenaša bralnik. Ta tabela je sestavljena iz 3 polj 'id', 'rfid', 'date'.

  • 'id' je polje ali atribut int stolpec, ki bo vseboval id vsakega zapisa za indeksiranje.
  • Atribut 'rfid' je stolpec 'varchar', ki vsebuje kodo oznake RFID, ki jo je prebral bralec.
  • 'date' je stolpec atributa 'varchar', ki bo vseboval datum, ko je bila kartica prebrana.

Če želite ustvariti tabelo 'ControlUsuarios', v konzolo MySQL vnesemo naslednjo kodo:

  1. Ustvari tabelo `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NI NIČ,
  4. `fecha` varchar (300) NI NIČ,
  5. PRIMARNI KLJUČ (`id`)
  6. ) MOTOR = ZNAMENJENA KARZETA MyISAM = latin1 AUTO_INCREMENT = 0;

Na koncu vnesite 'exit;' v konzoli zapustite poizvedbo MySQL in se vrnite v SHH, da lahko začnemo s PHP5.

5. korak: Namestitev PHP5

Namestitev PHP5
Namestitev PHP5

Nadaljujte z namestitvijo in konfiguracijo PHP5. Ta namestitev je lažja od MySQL, zato jih ne bi smela stati nič. Najprej namestite paket opkg iz programa za prenos in namestitev Arduino Yun, zato v konzolo SSH Arduina vnesite to:

opkg namestite php5 php5-cgi

Ko smo naložili in namestili PHP5 na naš Arduino Yun, smo konfigurirali korensko datoteko uHTTPd, strežnik http, ki za Arduino privzame, priporočam, da uporabljate le ta strežnik http, ker je bolj vsestranski in dostopen v konfiguraciji, ne pa Apache ali Lighttpd so težji nastavite, ko ste novi na tem področju. Če želite to nastaviti, uporabite urejevalnik datotek 'vi' SSH, za to morate imeti minimalno znanje za uporabo tega urejevalnika. Za dostop do nastavitvene datoteke uHTTPd začnite vnašati to kodo v konzolo:

vi/etc/config/uhttpd

Pritisnite 'i' za urejanje datoteke, nato pojdite na vrstico kode, ki ste jo napisali 'interpreter seznama#. "php = / usr / bin / php-cgi" '. Izbrisati morate znak '#' na začetku vrstice, nato pritisnite tipko escape (tipka 'ESC'). Ko ste pripravljeni, morate vnesti ukaz ': wq', da shranite datoteko in zapustite datoteko. Ponovno morate zagnati strežnik uHTTPd, za to morate v ukazno konzolo SSH vnesti naslednjo kodo:

/etc/init.d/uhttpd ponovni zagon

6. korak: Namestite povezovalni MySQL za PHP5 in Python

Namestitev Conector MySQL za PHP5 in Python
Namestitev Conector MySQL za PHP5 in Python

Nadaljujte z namestitvijo in konfiguracijo modulov za povezavo baze podatkov MySQL s PHP in Python. Začnimo s priključkom PHP. Vnesite naslednjo kodo:

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

Ko bo pripravljen, ne bo treba znova zagnati strežnika uHTTPd, pripravljenega za takojšnjo uporabo. Zdaj nadaljujte s priključkom za Python, za to morate vnesti naslednjo kodo:

opkg namestite python-mysql

S tem zadnjim korakom bomo imeli Arduino Yun pripravljen za naš projekt s čitalnikom kartic ID-20 RFID 125khz. Zaključite ta del s povratnimi informacijami o tem, kaj smo naredili:

  • Strežnik MySQL smo namestili na naš Arduino Yun, ga nato konfigurirali in končali z vstavljanjem testnih podatkov.
  • Namestite dodatek PHP na naš strežnik.
  • Končali smo z namestitvijo in konfiguracijo MySQL Connectorja za PHP in Python.

7. korak: Kode

Na tem področju razpravljamo o programskih kodah, ki jih bomo uporabili za ta projekt. Zapuščamo kodo Python, ki je razdeljena na dve datoteki: 'comprobar.py', ki se bo povezala z bazo podatkov in poiskala Yun Arduino, če je rezultat v njej, in datoteko 'control. py ', odgovoren za beleženje katere koli kartice, ki jo prebere bralnik ID-20, ne glede na to, ali je v bazi podatkov registriranih uporabnikov ali ne. Nato nadaljujte z opisom datotek PHP, in sicer: 'consuRelacion.php', 'consuControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' advis.php ',' configiguracion.php '. Za te datoteke redundaremos oboje, ker ju je enostavno razumeti. Končno zaključite s kodo, ki bo postala naša skica Arduino.

8. korak: Datoteke Python

Datoteke Python
Datoteke Python

Kot smo že omenili, so naši skripti Python delovali s knjižnico ali razredom 'MySQLdb', ki je že nameščen. Začnite tako, da v našem urejevalniku ustvarite datoteko z '.py', imenovano 'comprobar.py', priporočam, da te primere uporabite za programiranje v Pythonu, urejevalniku Sublime Text 3, ki ga lahko prenesete na njihovo spletno stran www.sublimetext.com. Začnimo z uvozom knjižnice za povezavo z našo bazo podatkov MySQL, knjižnico 'sys', ki nam bo omogočila komunikacijo z našim Arduino Yun:

  1. uvozite MySQLdb
  2. import sys

Ko uvozimo te knjižnice ali razrede, vaši kodi dodamo spremenljivke, ki bodo podatki o povezavi iz naše baze podatkov MySQL, kost:

  1. host = "127.0.0.1" # ustreza naslovu našega strežnika MySQL.
  2. user = "your-seat" # je uporabnik naše baze podatkov.
  3. passw = "vaše geslo" je za uporabniško geslo. base = "arduino" # To je ime baze podatkov, ki jo uporabljate.

Zdaj začnite z osnovnimi kodami skripta:

  1. medtem ko je res:
  2. db = MySQLdb.connect (gostitelj, uporabnik, geslo, baza)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id" "", (sys.argv [1],))
  5. če (rezultat == 1):
  6. tisk 1
  7. sys.exit (1)
  8. drugače:
  9. tisk 2
  10. sys.exit (1)

Če ugotovimo, da v sodbi 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' ukaz za izvedbo naše poizvedbe primerjamo spremenljivko '(sys.argv [1])', ki je koda z Arduino RFID kartice z vsemi podatki o polju 'rfid' tabela 'usuariosrfid', ki bo pri iskanju kode enakosti iz arduina in ali kod, shranjenih v bazi podatkov, vrniti 1, če to ni res in med kodo iz arduina in nekaj baze ni enakosti, vrnemo 2. Te številke bo Arduino prejel. Nadaljujemo z naslednjo datoteko 'control.py. Ta datoteka deluje na enak način, kot je opisano zgoraj, pri čemer ostane le še priokus na mizi, shranjene te zapise pa zbira bralnik ID-20, povezan z našim Arduino Yun, tako da lahko obdržimo vse registrirane uporabnike, ki uporabljajo naš bralnik RFID.

9. korak: Datoteke PHP

Nato nadaljujte z datotekami. 'Php', ki bo mapo shranil z našega strežnika, za to si zapomnite, da je treba te datoteke, ko so pripravljene, shraniti v skeč našega projekta, ki samodejno ustvari IDE Arduino, morate si zapomniti, čeprav predvidevam to, da ko gremo na našo Arduino skico Yun, naložimo prek Wi -Fi, zato jo pustim na isti strani priročnik Arduino, www.arduino. cc / sl / Guide / Arduino Yun # toc14, ki pojasnjuje več o tem in o tem, kako morate pripraviti kartico MicroSD za to vrsto projektov, kjer naj bodo datoteke shranjene na strežniku. Datoteke PHP bodo 10 'consulRelacion.php', 'consuControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consul.php ',' configiguracion.php ', ki bodo hiperpovezane na drugo, za vzdrževanje osnovnega menija, ki je vedno delujoč in dostopen. Pojasnite datoteko 'configiguracion.php', ki deluje kot povezovalec z našo bazo podatkov. V urejevalniku uredimo naslednjo kodo v datoteki:

  1. <? php
  2. / / Podatkovni strežnik in zbirka podatkov
  3. $ server = "localhost";
  4. $ username = "vaš sedež";
  5. $ password = "geslo";
  6. $ database_name = "arduino";

To so podatki, ki jih je treba povezati z našo bazo podatkov v arduinu in bodo enaki kot v naših skriptih Python. Dokončajte programiranje stavka connect, ki je uporabil naš skript:

  1. $ conexion = mysql_connect ($ server, $ username, $ password) ali umreti ("Problemi al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) ali umreti ("Problemi pri izbiri baze podatkov");
  3. ?>

Druge datoteke so priložene.

10. korak: Končno program Arduino YÚN

Prišli smo do glavnega dela te vadnice, pri programiranju našega Arduino Yun, nobena podrobnost ne bo poudarila vse kode, saj je precej obsežna, omenimo le naslednje pomembne točke:

  • Koda je sestavljena iz 6 glavnih funkcij in 13 sekundarnih funkcij, ki so le podpora za uporabo serijskega LCD -zaslona.
  • Uvozite samo tri razrede, 'SoftwareSerial.h', s katerimi bomo vnesli Serial Attached za povezavo z ID-20 in Serial LCD, glavni razred 'Bridge.h', s katerim bomo vzpostavili povezavo med Linuxom in ATMEGA32U4, in razred 'Process.h' bosta služila za postopke posvetovanja v Linuxu.
  • Določite le tri zatiče, pri katerih so drugi brezplačni.

Koda je priložena

11. korak: Srečno novo leto

To natančno nadaljujem, da vam bom pomagal in vam pomagal dobiti več informacij o Arduino Yun. Vse datoteke pustite pripete do konca. Za govorce španskega jezika pustim to vadnico, vendar v španščini s potrebnimi datotekami. Upam, da ste srečno v novem letu, uživajte in uspeh v tem letu 2014!

Priporočena: