Satura rādītājs:

Arduino YÚN piekļuves kontrole ar MySQL, PHP5 un Python: 11 soļi (ar attēliem)
Arduino YÚN piekļuves kontrole ar MySQL, PHP5 un Python: 11 soļi (ar attēliem)

Video: Arduino YÚN piekļuves kontrole ar MySQL, PHP5 un Python: 11 soļi (ar attēliem)

Video: Arduino YÚN piekļuves kontrole ar MySQL, PHP5 un Python: 11 soļi (ar attēliem)
Video: Как отслеживать и контролировать ESP32 из любой точки мира с помощью RemoteXY IoT Cloud 2024, Jūlijs
Anonim
Kontrolējiet piekļuvi Arduino YÚN, izmantojot MySQL, PHP5 un Python
Kontrolējiet piekļuvi Arduino YÚN, izmantojot MySQL, PHP5 un Python

Sveiki draugi!

Nu, kā jūs zināt, septembrī jaunais Arduino pirmizrādes vairogs Arduino YUN. Šim mazajam draugam ir Linux iegultā sistēma, ar kuru mēs varam palaist visu, ko vien varat iedomāties (vismaz līdz šim). Lai gan šajā jaunajā panelī ir ļoti maz informācijas, ar pamācību rokasgrāmatā, kas nodrošina Arduino lapu (kas vēlāk tiks novirzīta uz saiti), kā arī nelielas zināšanas par daudziem Linux, var īstenot lielu projektu - piekļuves kontroli. Šoreiz es paskaidrošu, kā veikt šo projektu, bet pietiekami konkrētā veidā, izmantojot mūsu Arduino. Tas darbojas, pateicoties datubāzes serverim MySQL, kas atradīsies mūsu YUN, šajā datu bāzē tiks saglabātas divas tabulas, viena lietotājiem, kas saistīti ar noteiktu RFID, un cita tabula, lai saglabātu visu mūsu lasītājā izgājušo karšu ierakstus. Kamēr mēs izmantojam programmēšanas valodas PHP un Python skriptus, lai veiktu dažus pamata un strādātu ar mūsu datiem. Turklāt aparatūras izmaksas mēs izmantojam lasītāju ID-20 blakus 16 rakstzīmju sērijas LCD, kā arī RGB LED, kas būs mūsu informators. Mēs varam izmantot šo piekļuves kontroli, ko varam izdomāt, modificēt un pievienot releju vai citu ideju. To var izmantot jebkur, kur jums ir kartes un vēlaties ierakstu. Atgādinām, ka šis dokuments ir bezmaksas publicēšana, komerciāla izmantošana un izņēmuma izmaiņas nav atļautas. Es ceru, ka tas ir daudz plašāks atvērtā koda elektronikas ceļš. Tātad mēs ejam uz nākamo soli, partijām vajag!

1. solis: daļas

Daļas
Daļas
Daļas
Daļas
Daļas
Daļas

Lai veiktu šo projektu, mums ir jābūt: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * RFID lasītājs ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 USD * RFID lasītāju pārtraukums https://www.sparkfun.com/products/8423 0,95 USD * Pamata 16x2 rakstzīmju LCD 5V https://www.sparkfun.com/products/790 16,95 USD * Sērijas iespējota LCD mugursoma https:// www. sparkfun.com/products/258 16,95 ASV dolāri * LED RGB 5 mm https://www.sparkfun.com/products/105 1,95 ASV dolāri * skaņas signāls https://www.sparkfun.com/products/7950 1,95 ASV dolāri * Dažas galvenes tapa un vads aptuveni 5,00 ASV dolāri. Kopumā, ja jūs pērkat veikalā Sparkfun, viss būs tuvu 150 ASV dolāriem. Ja jūs dzīvojat Latīņamerikā, es ieteiktu iegādāties detaļas vietnē www.olimex.cl, kas ir ļoti labs Čīles elektronikas veikals.

2. solis: salikšana

Salikšana
Salikšana
Salikšana
Salikšana
Salikšana
Salikšana

Daži savienojumi jādara, īsumā noskaidrojot. RGB gaismas diodēm sarkanajai gaismas diodes tapai jābūt uz Arduino 9. tapas, piespraudiet zaļo gaismas diodi uz Arduino tapas 8. un zilajai gaismas diodei jābūt uz Arduino 7. tapas. ID-20 jums ir jāpievieno šādas tapas, kā norādīts tabulā, atbilstošā secībā, tapas lasītājs ar Arduino tapu: PIN ID-20 uz pin Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V Un, visbeidzot, seriālajam LCD savienotājam būs nepieciešams tikai Arduino 5 un GND tapas, bet LCD sērijas RX tapa iet uz 11. tapu no Arduino.

3. solis: Arduino Yun programmēšana

Arduino Yun programmēšana
Arduino Yun programmēšana

Lai izveidotu mūsu projektu, mums jāsāk ar programmatūras daļu, jāinstalē daži faili mūsu Arduino opkg Yun:

  • MySQL serveris
  • PHP5
  • MySQLdb Python 2.7
  • PHP5 modifikācija MySQL

Atgādiniet, ka Bridge pēc noklusējuma ir instalēts Python 2.7, tāpēc jums nekad nav jāinstalē neviens atjauninājums. Sāciet reģistrēties SSH, uzdrīkstieties ievadīt mūsu Arduino Yun, kad esat to uzsācis, ierakstiet šādu komandu, lai atjauninātu lietojumprogrammu sarakstu opkg:

opkg atjauninājums

4. solis: MySQL instalēšana

MySQL instalēšana
MySQL instalēšana

Tagad mēs izveidosim MySQL servera instalēšanu un konfigurēšanu, konsolē ierakstiet šādas komandas:

  1. opkg install libpthread libncurses libreadline mysql-server
  2. sed -i ', ^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-spēks
  6. /etc/init.d/mysqld start
  7. /etc/init.d/mysqld enable
  8. mysqladmin -u saknes parole 'tu-nueva-clave'

Kad esat pabeidzis ievadīt mūsu kodus un palaidis MySQL serveri, jums jākonfigurē datu bāze, ar kuru manipulēs. Bet pirms sākat rakstīt kodus, mums ir jāsaprot lauki, kuros ir mūsu tabula. Dēlis sastāv no 5 kursiem, "id", "name", "name", "email", "rfid", lai dažus no tiem tirgotu. Es sniegšu īsu paskaidrojumu par to izmantošanu.

  • 'id': vai lauks vai atribūts int slejā, kas mums pateiks User ID piešķirto numuru, šo numuru piešķir tā pati datu bāze un tas būs veids, kā indeksēt mūsu ierakstus.
  • 'nombre': atribūtu sleja būs 'varchar', to var norādīt ar vārdu, ar kuru tiek identificēts mūsu kartes lietotājs.
  • 'apellido': atribūtu sleja būs 'varchar', to var norādīt uzvārds, ar kuru mūsu lietotājs ir saistīts.
  • 'koreo': ir atribūtu sleja 'varchar', kas saturēs saistītā lietotāja e-pastu.
  • “rfid”: ir atribūtu sleja “varchar”, kurā būs jūsu izmantotās RFID kartes kods.

(Es izmantošu mainīgos spāņu valodā, jo tā ir mana dzimtā valoda un man patīk c:) Tagad mēs varam bez problēmām konfigurēt savu datu bāzi, tāpēc mēs izveidojam “arduino” zvanu MySQL. Jums jāievada šāds kods:

mysqladmin -u root -p izveidot arduino

Mēs lūdzam paroli, kuru ievadījām instalācijas laikā, mēs to iesniegsim, lai pabeigtu bāzes izveidi. Pabeidzot visu, mēs ievadām vaicājumu MySQL, jums konsolē jāievada šāds kods:

mysql -akne -p

Atkal mēs lūdzam paroli, jums tā jāiesniedz vēlreiz. Kad MySQL konsoles komanda atrodas, rādītājam ('mysql>') vajadzētu būt gatavam rakstīt. Pirmā lieta, ko mēs darīsim, ir pārvietot “arduino” datu bāzi, lai pie tiem strādātu. To var izdarīt, MySQL konsolē ierakstot šādu komandu:

LIETOT arduino

Mēs uzskatām, ka datu bāzē esošo datu tabulu “usuariosrfid” izmantos šim projektam, ierakstiet šo kodu MySQL konsolē:

  1. IZVEIDOT TABULU "usuariosrfid" (
  2. "id" int (255) NOT NULL AUTO_INCREMENT,
  3. "nombre" varchar (300) NAV NULL,
  4. "apellido" varchar (300) NAV NULL,
  5. "Koreo" varchar (300) NAV NULL,
  6. "rfid" varchar (300) NAV NULL,
  7. PRIMĀRĀ ATSLĒGTA ("id")
  8. ) DZINĒJS = MyISAM DEFAULT CHARSET = latīņu1 AUTO_INCREMENT = 0;

* Atcerieties, ka, nospiežot taustiņu ENTER komandrindas beigās MySQL konsolē, tā nedarbosies, kamēr nebūsit atradis ';' Tāpēc koda beigās ir ';' Lai pabeigtu MySQL instalēšanu un konfigurēšanu, mēs savā bāzē aizpildām dažus testa laukus. Ierakstiet šādas rindas:

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

Tagad turpiniet izveidot tabulu “ControlUsuarios”, kurā atradīsies visi RFID kodi, kas iet garām lasītājam. Šī tabula sastāv no 3 laukiem “id”, “rfid”, “date”.

  • “id” ir lauks vai atribūts int slejā, kurā būs iekļauts katra indeksējamā ieraksta ID.
  • Atribūts “rfid” ir sleja “varchar”, kurā ir RFID taga kods.
  • “datums” ir atribūtu sleja “varchar”, kurā būs kartītes lasīšanas datums.

Lai izveidotu tabulu “ControlUsuarios”, MySQL konsolē ievadām šādu kodu:

  1. IZVEIDOT TABULU "ControlUsuarios" (
  2. "id" int (255) NOT NULL AUTO_INCREMENT,
  3. "rfid" varchar (300) NAV NULL,
  4. "fecha" varchar (300) NAV NULL,
  5. PRIMĀRĀ ATSLĒGTA ("id")
  6. ) DZINĒJS = MyISAM DEFAULT CHARSET = latīņu1 AUTO_INCREMENT = 0;

Visbeidzot ierakstiet 'exit;' konsolē, lai izietu no MySQL vaicājuma un atgrieztos SHH, lai mēs varētu sākt ar PHP5.

5. darbība: PHP5 instalēšana

PHP5 instalēšana
PHP5 instalēšana

Turpiniet instalēt un konfigurēt PHP5. Šī instalēšana ir vieglāka nekā MySQL, tāpēc tai nevajadzētu maksāt neko. Vispirms instalējiet opkg pakotni no Arduino Yun lejupielādes un instalēšanas, tāpēc ierakstiet Arduino SSH konsoli:

opkg instalēt php5 php5-cgi

Kad esam lejupielādējuši un PHP5 instalējuši mūsu Arduino Yun, tāpēc mēs konfigurējām saknes failu uHTTPd - http serveri, kas nodrošina Arduino noklusējumu, es iesaku izmantot tikai šo http serveri, jo tas ir daudzpusīgāks un pieejamāks konfigurācijā, nevis Apache vai Lighttpd ir grūtāk lai iestatītu, kad esat jauns šajā jomā. Lai to konfigurētu, izmantojiet failu redaktoru 'vi' SSH, lai izmantotu šo redaktoru, jums ir jābūt minimālām zināšanām. Sāciet rakstīt šo kodu konsolē, lai piekļūtu iestatījumu failam uHTTPd:

vi/etc/config/uhttpd

Nospiediet “i”, lai rediģētu failu, un pēc tam pārejiet uz jūsu uzrakstīto koda rindu “# saraksta tulks. "php = / usr / bin / php-cgi" ". Rindas sākumā ir jāizdzēš rakstzīme “#”, pēc tam jānospiež taustiņš “Esc” (taustiņš “ESC”). Kad esat gatavs, ierakstiet komandu “: wq”, lai saglabātu failu un izietu no. Jums ir jārestartē serveris uHTTPd, lai to izdarītu, SSH komandu konsolē jāievada šāds kods:

/etc/init.d/uhttpd restart

6. darbība: instalējiet Conector MySQL PHP5 un Python

Conector MySQL instalēšana PHP5 un Python
Conector MySQL instalēšana PHP5 un Python

Turpiniet instalēt un konfigurēt moduļus, lai savienotu MySQL datu bāzi ar PHP un Python. Sāksim ar PHP savienotāju. Ierakstiet šādu kodu:

  1. opkg instalēt php5-mod-mysql
  2. sed -i 's; paplašinājums = mysql.so, paplašinājums = mysql.so, g' /etc/php.ini

Kad tas būs gatavs, nebūs nepieciešams restartēt serveri uHTTPd, kas ir gatavs tūlītējai lietošanai. Tagad turpiniet ar Python savienotāju, lai to izdarītu, jums jāievada šāds kods:

opkg instalēt python-mysql

Veicot šo pēdējo darbību, mūsu Arduino Yun būs gatavs mūsu projektam ar karšu lasītāju ID-20 RFID 125 khz. Pabeidziet šo daļu ar atsauksmēm par paveikto:

  • Mēs savā Arduino Yun instalējām MySQL serveri, pēc tam to konfigurējām, beidzot ar testa datu ievietošanu.
  • Instalējiet PHP papildinājumu mūsu serverim.
  • Mēs pabeidzām instalēt un konfigurēt MySQL Connector gan PHP, gan Python.

7. darbība: kodi

Šajā jomā mēs apspriežam programmēšanas kodus, kas jāizmanto šim projektam. Mēs atstājam ar Python kodu, kas ir sadalīts divos failos: “comprobar.py”, kas izveidos savienojumu ar datu bāzi un meklēs Yun Arduino, ja rezultāts būs tajā, un failu “control”. py ', kas ir atbildīgs par jebkuras kartes, ko nolasa lasītāja ID-20, ierakstīšanu neatkarīgi no tā, vai tā ir reģistrēto lietotāju datu bāzē. Pēc tam turpiniet ar PHP failu aprakstu: “consultaRelacion.php”, “consultaControl.php”, “index.php” “modificar2.php”, “modificar.php”, “borrar.php”, “delete2. php "," guardar.php "" consulta.php "," configuracion.php ". Šiem failiem redundaremos gan tāpēc, ka tie ir viegli saprotami. Visbeidzot pabeidziet ar kodu, kas palielināsies kā mūsu Arduino skice.

8. darbība: Faili Python

Faili Python
Faili Python

Kā minēts iepriekš, mūsu Python skripti darbojās ar bibliotēku vai klasi "MySQLdb", kas jau ir instalēta. Sāciet, izveidojot redaktorā failu ar “.py”, ko sauc par “comprobar.py”, es iesaku šos gadījumus izmantot programmēšanai Python, redaktors Sublime Text 3, kuru varat lejupielādēt viņu vietnē www.sublimetext.com. Sāksim ar bibliotēkas importēšanu, lai izveidotu savienojumu ar mūsu MySQL datu bāzi - bibliotēkas sistēmu, kas ļaus mums sazināties ar mūsu Arduino Yun:

  1. importēt MySQLdb
  2. importēt sistēmu

Kad šīs bibliotēkas vai klases ir importētas, mēs jūsu kodam pievienojam mainīgos lielumus, kas būs savienojuma dati no mūsu MySQL datu bāzes.

  1. host = "127.0.0.1" # atbilst mūsu MySQL servera adresei.
  2. user = "your-seat" # ir mūsu datu bāzes lietotājs.
  3. passw = "jūsu parole" ir paredzēta lietotāja parolei. base = "arduino" # Šis ir jūsu izmantotās datu bāzes nosaukums.

Tagad sāciet ar pamata skripta kodiem:

  1. kamēr taisnība:
  2. db = MySQLdb.connect (resursdators, lietotājs, caurlaide, bāze)
  3. cur = db. kursors ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id" "", (sys.argv [1],))
  5. ja (rezultāts = = 1):
  6. izdrukāt 1
  7. sys.exit (1)
  8. cits:
  9. drukāt 2
  10. sys.exit (1)

Ja mēs saprotam, spriedumā 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' komanda, lai izpildītu mūsu vaicājumu, salīdziniet mainīgo “(sys.argv [1])”, kas ir kods no Arduino RFID kartes ar visiem lauka datiem “rfid” tabula “usuariosrfid”, kas, atrodot arduino vienlīdzības kodu un datu bāzē saglabātos kodus, atgriezt 1, ja tā nav taisnība un nav vienādības starp kodu no arduino un dažiem bāzes elementiem, mēs atgriezīsimies 2. Šos skaitļus saņems Arduino. Mēs turpinām ar nākamo failu 'control.py. Šis fails darbojas tāpat kā iepriekš, tikai saglabājot galdā pēcgaršu, šos saglabātos ierakstus apkopos lasītājs ID-20, kas savienots ar mūsu Arduino Yun, lai mēs varētu saglabāt visus reģistrētos lietotājus, kuri izmanto mūsu RFID lasītāju.

9. solis: Faili PHP

Pēc tam turpiniet ar failiem. "Php", kas saglabās mapi no mūsu servera, lai to izdarītu, atcerieties, ka ir nepieciešams, lai šie faili, kad tie ir gatavi, tiktu saglabāti mūsu projekta shēmā, kas automātiski ģenerē IDE Arduino, jums arī jāatceras, lai gan es paredzu šo, ka tad, kad mēs ejam uz mūsu Arduino skici Yun, mēs augšupielādējam, izmantojot Wi -Fi, tāpēc es to atstāju tajā pašā lapā Arduino rokasgrāmata, www.arduino. cc / lv / Ceļvedis / Arduino Yun # toc14, kurā ir paskaidrots vairāk par to un kā jums vajadzētu sagatavot MicroSD karti šāda veida projektiem, kur faili jāglabā serverī. PHP faili būs 10 "consultaRelacion.php", "consultaControl.php", "index.php" "modificar2.php", "modificar.php", "borrar.php", "borrar2.php", "guardar". php '' consulta.php ',' configuracion.php ', kas tiks hipersaiti uz otru, lai uzturētu vienmēr pieejamu un pieejamu pamata izvēlni. Vienkārši izskaidrojiet failu 'configuracion.php', kas darbojas kā savienotājs mūsu datu bāzē. Mūsu redaktorā mēs plānojam šādu kodu failā:

  1. <? php
  2. / / Datu serveris un datu bāze
  3. $ serveris = "localhost";
  4. $ username = "jūsu vieta";
  5. $ parole = "parole";
  6. $ database_name = "arduino";

Šie ir dati, kas jāpievieno mūsu datu bāzei arduino, un tie būs tie paši, ko mēs izmantojam mūsu Python skriptos. Pabeidziet programmēt savienojuma paziņojumu, kurā tika izmantots mūsu skripts:

  1. $ conexion = mysql_connect ($ serveris, $ lietotājvārds, $ parole) vai mirst ("Problemas al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) vai mirst ("Problemas al seleccionar la base de datos");
  3. ?>

Pārējie faili ir pievienoti.

10. solis: Visbeidzot, Arduino YÚN programma

Mēs nokļuvām šīs apmācības galvenajā daļā, programmējot savu Arduino Yun, neviena informācija neizceļ visu kodu, jo tas ir diezgan plašs, minot tikai šādus svarīgus punktus:

  • Kods sastāv no 6 galvenajām funkcijām un 13 sekundārajām funkcijām, kas ir tikai atbalsts sērijveida LCD izmantošanai.
  • Tiks importētas tikai trīs klases, “SoftwareSerial.h”, ar kurām mēs ievadīsim sērijveidā pievienotu, lai izveidotu savienojumu ar ID-20 un sērijas LCD, galveno klasi “Bridge.h”, ar kuru mēs izveidosim savienojumu starp Linux un ATMEGA32U4, un "Process.h" klase kalpos konsultāciju procesiem Linux.
  • Definējiet tikai trīs tapas, kuras bez maksas var izmantot citas.

Kods ir pievienots

11. solis: laimīgu Jauno gadu

Es turpinu to rūpīgi, lai kalpotu jums un palīdzētu jums iegūt vairāk informācijas par Arduino Yun. Visus failus atstājiet beigās. Spāņu valodas runātājiem es atstāju šo pamācību, bet spāņu valodā ar nepieciešamajiem failiem. Es ceru, ka jums būs laimīgs jaunais gads, izbaudiet to un panākumus šajā 2014. gadā!

Ieteicams: