Sisukord:

Juurdepääs Arduino YÚN -ile MySQL, PHP5 ja Pythoni abil: 11 sammu (koos piltidega)
Juurdepääs Arduino YÚN -ile MySQL, PHP5 ja Pythoni abil: 11 sammu (koos piltidega)

Video: Juurdepääs Arduino YÚN -ile MySQL, PHP5 ja Pythoni abil: 11 sammu (koos piltidega)

Video: Juurdepääs Arduino YÚN -ile MySQL, PHP5 ja Pythoni abil: 11 sammu (koos piltidega)
Video: Linux на Arduino. Платформы Tian, Yún и Yún mini. Железки Амперки 2024, Juuli
Anonim
Kontrollige Arduino YÚN -i juurdepääsu MySQL -i, PHP5 ja Pythoni abil
Kontrollige Arduino YÚN -i juurdepääsu MySQL -i, PHP5 ja Pythoni abil

Tere, sõbrad!

Noh, nagu teate, septembris Arduino uus esilinastuskilp Arduino YUN. Sellel väikesel sõbral on Linuxi sisseehitatud süsteem, millega saame käivitada kõike, mida arvate (vähemalt siiani). Kuigi sellel uuel tahvlil on väga vähe teavet, võib Arduino lehte pakkuv juhend (mis lingitakse hiljem) ja vähene tundmine paljudest Linuxitest võimaldab teostada suurprojekti, kontrollides juurdepääsu. Seekord selgitan, kuidas seda projekti teha, kuid piisavalt konkreetsel viisil kogu meie Arduino kaudu. See töötab, tänu andmebaasiserverile MySQL, mis asub meie YUN -is, sellesse andmebaasi salvestatakse kaks tabelit, üks konkreetse RFID -ga seotud kasutajatele ja teine tabel kõigi meie lugeja läbinud kaartide registreerimiseks. Kuigi me kasutame programmeerimiskeeli PHP ja Pythoni skripte, et täita põhilisi ja töötada meie andmetega. Lisaks kasutame riistvara üldkulude korral lugejat ID-20 16-tähemärgilise jadakraani kõrval ning RGB-LED-i, mis on meie informaator. Võime kasutada seda juurdepääsukontrolli kõike, mida suudame välja mõelda, muuta ja relee või muud ideed lisada. Seda saab kasutada kõikjal, kus teil on kaarte ja soovite salvestada. Tuletame meelde, et see dokument on tasuta avaldamine, kaubanduslik kasutamine ja eranditeta muudatused ei ole lubatud. Loodan, et see on avatud lähtekoodiga elektroonika palju laiem tee. Nii et läheme järgmise sammu juurde, mida osapooled vajavad!

Samm: osad

Osad
Osad
Osad
Osad
Osad
Osad

Selle projekti tegemiseks peab meil olema: * Arduino YUN https://www.sparkfun.com/products/12053 71,95 $ * RFID-lugeja ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 dollarit * RFID -lugeja purunemine https://www.sparkfun.com/products/8423 0,95 $ * Põhiline 16x2 -tähemärgiline LCD 5V https://www.sparkfun.com/products/790 16,95 dollarit * Seeriafunktsiooniga LCD -seljakott https:// www. sparkfun.com/products/258 16,95 $ * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1,95 * summeri https://www.sparkfun.com/products/7950 $ 1,95 * Somes päise tihvt ja traat umbes 5,00 dollarit. Kokkuvõttes, kui ostate poest Sparkfun, on kõik 150 dollari lähedal. Kui elate Ladina -Ameerikas, soovitaksin osad osta saidilt www.olimex.cl, see on väga hea Tšiili elektroonikapood.

2. samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

Vähe seoseid, mida lühidalt selgitada. RGB LED -i puhul peab punane LED -tihvt olema Arduino tihvti 9 peal, roheline LED -tuli peaks põlema Arduino tihvti 8 peal ja sinine LED -tuli peaks olema Arduino 7 -nda tihvti peal. ID-20 jaoks peate ühendama järgmised tihvtid, nagu on näidatud tabelis, vastavas järjekorras, tihvtilugeja Arduino tihvtiga: PIN-kood ID-20 pistikule Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V Ja lõpuks, jada-LCD pistik on vajalik ainult Arduino 5v ja GND tihvtidele, samas kui LCD Serial RX tihvt läheb 11. tihvtile Arduino'st.

3. samm: Arduino Yuni programmeerimine

Arduino Yuni programmeerimine
Arduino Yuni programmeerimine

Projekti tegemiseks peame alustama tarkvara osast, installima mõned failid meie Arduino opkg Yuni:

  • MySQL server
  • PHP5
  • MySQLdb Python 2.7 jaoks
  • PHP5 modifikatsioon MySQL -iks

Tuletame meelde, et vaikimisi on Bridge'is installitud Python 2.7, nii et te ei pea kunagi selle jaoks värskendusi installima. Alustage SSH logimist, et siseneda meie Arduino Yuni, kui olete need sisse lülitanud, tippige rakenduste loendi uuendamiseks järgmine käsk:

opkg värskendus

Samm: MySQL -i installimine

MySQL installimine
MySQL installimine

Nüüd kehtestame MySQL -serveri installimise ja konfigureerimise, tippige konsooli järgmised käsud:

  1. opkg install 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 –jõud
  6. /etc/init.d/mysqld start
  7. /etc/init.d/mysqld lubada
  8. mysqladmin -u juurparool 'tu-nueva-clave'

Kui olete meie koodide sisestamise lõpetanud ja MySQL -serveri käivitanud, peaksite konfigureerima manipuleeritava andmebaasi. Kuid enne koodide sisestamise alustamist peame mõistma meie tabelit sisaldavaid välju. Juhatus koosneb viiest kursusest, "id", "nimi", "nimi", "e -post", "rfid", et turustada mõnda neist, annan lühikese selgituse nende kasutamise kohta.

  • "id": kas väli või atribuut int veerus, mis ütleb meile kasutaja ID -le määratud numbri, selle numbri määrab sama andmebaas ja see on viis meie kirjete indekseerimiseks.
  • "nombre": atribuudi veerg on "varchar", selle võib tähistada nimi, millega meie kaardi kasutaja on identifitseeritud.
  • "apellido": atribuudi veerg on "varchar", selle võib tähistada perekonnanimega, millega meie kasutaja on seotud.
  • 'Correo': on atribuutide veerg 'varchar', mis sisaldab seotud kasutaja e-posti.
  • 'rfid': on atribuutide veerg 'varchar', mis sisaldab teie kasutatava RFID -kaardi koodi.

(Kasutan muutujaid hispaania keeles, sest see on minu emakeel ja mulle meeldib c:) Nüüd saame oma andmebaasi ilma probleemideta konfigureerida, seetõttu loome „arduino” kõne MySQL. Peate sisestama järgmise koodi:

mysqladmin -u juur -p loo arduino

Küsime parooli, mille sisestasime installimisel varem, esitame selle baasi loomise lõpuleviimiseks. Lõpetanud selle, sisestame päringu MySQL -i, peate konsooli sisestama järgmise koodi:

mysql -juur -p

Jälle palume parooli, peate selle uuesti esitama. Kui oleme MySQL konsooli käsu sees, peaks kursor ('mysql>') ilmuma trükkimiseks valmis. Esimese asjana liigutame arduino andmete baasi selle kallal töötama. Selleks sisestage MySQL -i konsoolile järgmine käsk:

KASUTA arduino

Usume, et andmebaasis olevat nime tabelit „usuariosrfid” kasutatakse selle projekti jaoks, tippige see kood MySQL konsooli:

  1. LOO TABEL "usuariosrfid" (
  2. "id" int (255) NOT NULL AUTO_INCREMENT,
  3. "nombre" varchar (300) EI OLE NULL,
  4. "apellido" varchar (300) EI OLE NULL,
  5. "correcto" varchar (300) EI OLE NULL,
  6. "rfid" varchar (300) EI OLE NULL,
  7. ESIMENE VÕTT ("id")
  8. ) MOOTOR = MyISAM DEFAULT CHARSET = ladina1 AUTO_INCREMENT = 0;

* Pidage meeles, et MySQL konsooli käsurea lõpus ENTER klahvi vajutades ei käivitu see enne, kui leiate ';' Seetõttu on koodi lõpus ';' MySQL -i installimise ja konfigureerimise lõpuleviimiseks täidame oma baasis mõned testväljad. Sisestage järgmised read:

  1. INSERT INTO "usuariosrfid" ("id", "nombre", "apellido", "correcto", "rfid") VÄÄRTUSED
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Nüüd jätkake tabeli "ControlUsuarios" loomisega, mis sisaldab kõiki lugejast mööduvaid RFID -koode, see tabel koosneb kolmest väljast: "id", "rfid", "date".

  • „id” on väli või atribuut int veerus, mis sisaldab iga indekseerimiseks kasutatava kirje ID -d.
  • Atribuut „rfid” on RFID -märgendi koodi sisaldav veerg „varchar”, mille lugeja luges.
  • "kuupäev" on atribuutide veerg "varchar", mis sisaldab kaardi lugemise kuupäeva.

Tabeli "ControlUsuarios" loomiseks sisestame MySQL -i konsooli järgmise koodi:

  1. LOO TABEL "ControlUsuarios" (
  2. "id" int (255) NOT NULL AUTO_INCREMENT,
  3. "rfid" varchar (300) EI OLE NULL,
  4. "fecha" varchar (300) EI OLE NULL,
  5. ESIMENE VÕTT ("id")
  6. ) MOOTOR = MyISAM DEFAULT CHARSET = ladina1 AUTO_INCREMENT = 0;

Lõpuks tippige 'exit;' konsoolis MySQL päringust väljumiseks ja naasmiseks SHH -sse, et saaksime alustada PHP5 -ga.

Samm: PHP5 installimine

PHP5 installimine
PHP5 installimine

Jätkake PHP5 installimist ja konfigureerimist. See installimine on lihtsam kui MySQL, seega ei tohiks see neile midagi maksta. Esmalt installige opkg pakett Arduino Yuni allalaadimisest ja installimisest, nii et tippige Arduino SSH konsooli see:

opkg install php5 php5-cgi

Kui oleme alla laadinud ja PHP5 meie Arduino Yuni installinud, konfigureerisime juurfaili uHTTPd, http -serveri, mis toob Arduino vaikimisi, soovitan teil kasutada ainult seda http -serverit, kuna see on mitmekülgsem ja konfiguratsioonile juurdepääsetavam, mitte Apache või Lighttpd on keerulisemad seadistamiseks, kui olete sellel alal uus. Selle seadistamiseks kasutage failiredaktorit 'vi' SSH, selleks peavad teil olema selle redaktori kasutamiseks minimaalsed teadmised. Alustage selle koodi sisestamist konsoolis, et pääseda juurde seadete failile uHTTPd:

vi/etc/config/uhttpd

Faili muutmiseks vajutage 'i', seejärel minge koodiridale, mille olete kirjutanud '# nimekirja tõlk. "php = / usr / bin / php-cgi" ". Peate rea alguses kustutama märgi „#”, seejärel vajutama klahvi Esc (klahv „ESC”). Kui olete valmis, peate faili salvestamiseks ja failist väljumiseks sisestama käsu „: wq”. Peate serveri uHTTPd taaskäivitama, selleks peaksite SSH käsukonsooli sisestama järgmise koodi:

/etc/init.d/uhttpd taaskäivitage

Samm: installige Conector MySQL PHP5 ja Python jaoks

Conector MySQL installimine PHP5 ja Pythoni jaoks
Conector MySQL installimine PHP5 ja Pythoni jaoks

Jätkake moodulite installimist ja konfigureerimist, et ühendada MySQL andmebaas PHP ja Pythoniga. Alustame PHP -pistikuga. Sisestage järgmine kood:

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

Kui see on valmis, ei pea te serverit uHTTPd taaskäivitama, mis on koheseks kasutamiseks valmis. Nüüd jätkake Pythoni pistikuga, selleks peate sisestama järgmise koodi:

opkg install python-mysql

Selle viimase sammuga saame oma Arduino Yuni projekti jaoks valmis kaardilugejaga ID-20 RFID 125khz. Lõpetage see osa tagasisidega, mida oleme teinud:

  • Paigaldasime oma Arduino Yuni MySQL -serveri, seejärel seadistasime selle, lõpetades katseandmete sisestamisega.
  • Installige PHP täiendus meie serverisse.
  • Lõpetasime MySQL Connectori installimise ja konfigureerimise nii PHP kui ka Pythoni jaoks.

Samm: koodid

Selles valdkonnas käsitleme selle projekti jaoks kasutatavaid programmeerimiskoode. Lahkume koos Pythoni koodiga, mis on jagatud kaheks failiks: 'comprobar.py', mis loob ühenduse andmebaasiga ja otsib Yun Arduino, kui tulemus on selles, ja faili 'kontrolli. py ', kes vastutab lugeja ID-20 poolt loetava kaardi salvestamise eest, olenemata sellest, kas see on registreeritud kasutajate andmebaasis või mitte. Seejärel jätkake PHP -failide kirjeldusega: "consultaRelacion.php", "consultaControl.php", "index.php" "modificar2.php", "modificar.php", "borrar.php", "delete2. php ',' guardar.php 'consulta.php', 'configuracion.php'. Nende failide jaoks redundaremos nii sellepärast, et neid on lihtne mõista. Lõpuks lõpetage kood, mis tõuseb meie Arduino visandina.

Samm: failid Python

Failid Python
Failid Python

Nagu varem mainitud, toimisid meie Pythoni skriptid raamatukogu või klassiga „MySQLdb”, mis on juba varem installitud. Alustuseks looge meie redaktoris fail „.py” nimega „comprobar.py”, soovitan neid juhtumeid kasutada programmeerimiseks Pythonis, redaktoris Sublime Text 3, mille saate alla laadida nende veebisaidilt www.sublimetext.com. Alustame raamatukogu importimisest, et luua ühendus meie MySQL andmebaasiga, raamatukogu süsteemiga, mis võimaldab meil suhelda meie Arduino Yuniga:

  1. importige MySQLdb
  2. impordi süsteem

Kui need teegid või klassid on imporditud, lisame teie koodile muutujad, milleks on meie MySQL -i andmebaasi ühendusandmed.

  1. host = "127.0.0.1" # vastab meie MySQL -serveri aadressile.
  2. user = "your-seat" # on meie andmebaasi kasutaja.
  3. passw = "teie parool" on kasutaja parool. base = "arduino" # See on teie kasutatava andmebaasi nimi.

Nüüd alustage skripti baaskoodidega:

  1. kuigi tõsi:
  2. db = MySQLdb.connect (hosti, kasutaja, parool, baas)
  3. cur = db. kursor ()
  4. resultado = cur.execute ("" "SELECT * FRU usuariosrfid WHERE rfid LIKE %s ORDER BY id" "", (sys.argv [1],))
  5. kui (tulemus = = 1):
  6. trükk 1
  7. sys.exit (1)
  8. muidu:
  9. trükk 2
  10. sys.exit (1)

Kui me mõistame, siis otsuses 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' käsk päringu täitmiseks võrrelda muutujat '(sys.argv [1])', mis on Arduino RFID -kaardi kood koos kõigi väljaandmetega 'rfid' tabel 'usuariosrfid', mis, leides arduino võrdsuskoodi ja andmebaasi salvestatud koodid, tagastage 1, kui see pole tõsi ja arduino koodi ja mõne baasi vahel pole võrdsust, tagastame 2. Need numbrid saab Arduino. Jätkame järgmise faili 'control.py. See fail töötab samamoodi nagu eespool, ainult lauale järelmaitset hoides, need salvestatud kirjed kogub lugeja ID-20, mis on ühendatud meie Arduino Yuniga, nii et saame hoida kõiki registreeritud kasutajaid, kes kasutavad meie RFID-lugejat.

9. samm: failid PHP

Seejärel jätkake failidega. "Php", mis hoiab kausta meie serverist, pidage meeles, et kui need failid on valmis, tuleb need salvestada meie projekti sketti, mis genereerib automaatselt IDE Arduino, peate ka meeles pidama, kuigi ma eeldan see, et kui me läheme üles oma Arduino eskiisi Yun juurde, laadime üles Wi -Fi kaudu, nii et jätan selle samale lehele Arduino kasutusjuhend, www.arduino. cc / et / Guide / Arduino Yun # toc14, mis selgitab selle kohta rohkem ja kuidas peaksite seda tüüpi projektide jaoks ette valmistama MicroSD -kaardi, kus failid tuleks serverisse salvestada. PHP -failid on 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', mis lingitakse teisega, et säilitada põhimenüü alati töötav ja juurdepääsetav. Lihtsalt selgitage faili 'configuracion.php', mis toimib meie andmebaasi konnektorina. Ajastame oma redaktoris faili järgmise koodi:

  1. <? php
  2. / / Andmeserver ja andmebaas
  3. $ server = "localhost";
  4. $ kasutajanimi = "teie koht";
  5. $ password = "parool";
  6. $ database_name = "arduino";

Need on andmed, mis peavad meie arduino andmebaasiga ühenduse loomiseks olema samad, mida kasutame oma Pythoni skriptides. Lõpeta ühenduse avalduse programmeerimine, mis kasutas meie skripti:

  1. $ conexion = mysql_connect ($ server, $ kasutajanimi, $ parool) või sure ("Problemas al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) või sure ("Problems al seleccionar la base de datos");
  3. ?>

Ülejäänud failid on manuses.

Samm 10: Lõpuks Arduino YÚNi programm

Jõudsime selle õpetuse põhiosani, programmeerides oma Arduino Yuni, ükski detail ei tõsta kogu koodi esile, kuna see on üsna ulatuslik, mainige ainult järgmisi olulisi punkte:

  • Kood koosneb 6 põhifunktsioonist ja 13 lisafunktsioonist, mis on ainult jada LCD -ekraani kasutamise tugi.
  • Imporditakse ainult kolm klassi „SoftwareSerial.h”, millega sisestame Serial Attached, et luua ühendus ID-20 ja seeriaekraaniga, põhiklassiga „Bridge.h”, millega loome ühenduse Linuxi ja ATMEGA32U4 vahel, ja "Process.h" klassi kasutatakse Linuxi konsultatsiooniprotsessideks.
  • Määrake ainult kolm tihvti, mis kasutavad teisi tasuta.

Kood on lisatud

Samm: head uut aastat

Jätkan seda hoolikalt, et teid teenida ja aidata teil saada rohkem teavet Arduino Yuni kohta. Jätke kõik failid lõppu. Hispaania keelt kõnelejate jaoks jätan selle õpetuse, kuid hispaania keeles koos vajalike failidega. Loodan teile head uut aastat, nautige seda ja edu sellel aastal 2014!

Soovitan: