INHOUDSOPGAWE:

Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python: 11 stappe (met foto's)
Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python: 11 stappe (met foto's)

Video: Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python: 11 stappe (met foto's)

Video: Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python: 11 stappe (met foto's)
Video: How to control Actuator using Arduino - Robojax 2024, Julie
Anonim
Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python
Beheer toegang tot Arduino YÚN met MySQL, PHP5 en Python

Hallo vriende!

Wel, soos u weet, in September die nuwe premierskild van Arduino, Arduino YUN. Hierdie vriendin het 'n Linux -ingeboude stelsel waarmee ons alles kan uitvoer waaraan u kan dink (ten minste tot dusver). Alhoewel daar baie min inligting oor hierdie nuwe bord is, kan die gids met die Arduino -bladsy (wat later skakel), plus 'n bietjie kennis van baie Linux, 'n groot projek met Control Access uitvoer. Hierdie keer sal ek verduidelik hoe u hierdie projek moet doen, maar op 'n voldoende wyse deur ons Arduino. Dit werk, te danke aan 'n databasisbediener MySQL wat in ons YUN gevestig sal wees; hierdie databasis sal twee tabelle stoor, een vir gebruikers wat met 'n spesifieke RFID verband hou en 'n ander tabel om rekords te hou van alle kaarte wat deur ons leser gegaan het. Terwyl ons programmeertale PHP- en Python -skrifte gebruik om basiese inligting uit te voer en met ons data te werk. Boonop gebruik ons die hardeware-bokant, 'n leser-ID-20 langs 'n seriële LCD van 16 karakters, plus 'n RGB-LED wat ons informante sal wees. Ons kan hierdie toegangsbeheer alles gebruik waaraan ons kan dink, 'n aflos of 'n ander idee byvoeg, en dit byvoeg. Dit kan gebruik word op alles waar u kaarte het en 'n rekord wil hê. Onthou dat hierdie dokument gratis publikasie is, kommersiële gebruik en vrygestelde wysigings word nie toegelaat nie. Ek hoop dat dit 'n meer uitgebreide pad van Open Source -elektronika is. Dus gaan ons na die volgende stap, die partye benodig!

Stap 1: Die onderdele

Die onderdele
Die onderdele
Die onderdele
Die onderdele
Die onderdele
Die onderdele

Vir hierdie projek moet ons: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34,95 * RFID -leser -uitbreek https://www.sparkfun.com/products/8423 $ 0,95 * Basiese 16x2 karakter LCD 5V https://www.sparkfun.com/products/790 $ 16,95 * Seriële -geaktiveerde LCD -rugsak https:// www. sparkfun.com/products/258 $ 16,95 * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1,95 * Gonser https://www.sparkfun.com/products/7950 $ 1,95 * Somes Header Pin en draad $ 5,00 ongeveer. As u alles by die winkel Sparkfun koop, beloop alles ongeveer $ 150. As u in Latyns -Amerika woon, sou ek aanbeveel dat u die onderdele koop in www.olimex.cl, 'n baie goeie Chileense elektronikawinkel.

Stap 2: Die samestelling

Die samestelling
Die samestelling
Die samestelling
Die samestelling
Die samestelling
Die samestelling

Paar verbindings om te doen, verduidelik kortliks. Vir RGB LED moet rooi LED -pen op pen 9 van die Arduino wees, pen die groen LED op Arduino -pen 8 en pen die blou LED op pen 7 van die Arduino. Vir die ID-20 moet u die volgende penne verbind soos aangedui in die tabel in die volgorde, penleser op die Arduino-pen: Pin ID-20 om Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V En ten slotte, vir die seriële LCD-aansluiting sal slegs 5v en GND-penne van die Arduino nodig wees, terwyl die LCD Serial RX-pen na pen 11 gaan van die Arduino.

Stap 3: Programmering van die Arduino Yun

Programmering van die Arduino Yun
Programmering van die Arduino Yun

Om ons projek te maak, moet ons met die deel van die sagteware begin, 'n paar lêers op ons Arduino opkg Yun installeer:

  • MySQL -bediener
  • PHP5
  • MySQLdb vir Python 2.7
  • Mod van PHP5 na MySQL

Onthou dat Python 2.7 standaard geïnstalleer is in Bridge, dus u hoef nooit 'n opdatering hiervoor te installeer nie. Begin aanmeld SSH waag om ons Arduino Yun in te voer, tik die volgende opdrag sodra u dit begin het om die lys met toepassings op te dateer:

opkg -opdatering

Stap 4: Installasie van MySQL

Installasie van MySQL
Installasie van MySQL

Nou stel ons die installasie en konfigurasie van MySQL Server in, tik die volgende opdragte in die konsole:

  1. opkg installeer libpthread libncurses libreadline mysql-bediener
  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 –- krag
  6. /etc/init.d/mysqld begin
  7. /etc/init.d/mysqld aktiveer
  8. mysqladmin -u wortel wagwoord 'tu-nueva-clave'

Nadat u ons kodes ingevoer het en die MySQL -bediener begin het, moet u die databasis opstel wat sal manipuleer. Maar voordat ons die kodes begin tik, moet ons die velde wat ons tafel bevat, verstaan. Die bord bestaan uit 5 kursusse, 'id', 'naam', 'naam', 'e -pos', 'rfid' om 'n paar daarvan te bemark. Ek gee 'n kort verduideliking van die gebruik daarvan.

  • 'id': sal die veld of attribuut int -kolom ons die nommer toewys wat aan die gebruikers -ID toegeken word, word hierdie nommer deur dieselfde databasis toegeken en sal dit die manier wees om ons rekords te indekseer.
  • 'nombre': die kenmerkkolom sal 'varchar' wees, kan aangedui word deur die naam waarmee ons kaartgebruiker geïdentifiseer word.
  • 'apellido': die kenmerkkolom sal 'varchar' wees, kan aangedui word met die van waarmee ons gebruiker geassosieer word.
  • 'correo': is die kenmerkkolom 'varchar' wat die e-pos van die geassosieerde gebruiker bevat.
  • 'rfid': is die kenmerkkolom 'varchar' wat die kode van die RFID -kaart bevat wat u gebruik.

(Ek sal die veranderlikes in Spaans gebruik, want dit is my moedertaal en ek hou van c:) Nou kan ons ons databasis sonder probleme opstel, daarom skep ons 'n 'arduino' oproep MySQL. U moet die volgende kode tik:

mysqladmin -u root -p skep arduino

Ons vra die wagwoord wat ons vroeër in die installasie ingevoer het; ons sal dit indien om die basis te skep. Alles klaar, ons voer die navraag in by MySQL; u moet die volgende kode in die konsole tik:

mysql -wortel -p

Ons vra weer die wagwoord; u moet dit weer indien. As ons binne die MySQL -konsole -opdrag is, moet ons wyser ('mysql>') gereed wees om te tik. Die eerste ding wat ons sal doen, is om die basis vir 'arduino' -data te laat werk om daaraan te werk. Dit word gedoen deur die volgende opdrag in die MySQL -konsole in te tik:

GEBRUIK arduino

Ons glo dat die naamtabel 'usuariosrfid' in die databasis vir hierdie projek sal gebruik, tik hierdie kode in die MySQL -konsole:

  1. SKEP TAFEL `usuariosrfid` (
  2. `id` int (255) NIE NULL AUTO_INCREMENT NIE,
  3. `nombre` varchar (300) NOT NULL,
  4. `apellido` varchar (300) NOT NULL,
  5. `correo` varchar (300) NOT NULL,
  6. `rfid` varchar (300) NOT NULL,
  7. PRIMARYRE SLEUTEL (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Onthou dat wanneer u op die ENTER -sleutel aan die einde van die opdragreël in die MySQL -konsole druk, dit eers sal loop totdat u die ';' Daarom is aan die einde van die kode ';' Om die installasie en konfigurasie van MySQL te voltooi, vul ons 'n paar toetsvelde in ons basis. Tik die volgende reëls in:

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

Gaan nou voort met die skep van die tabel 'ControlUsuarios', wat alle RFID -kodes wat deur die leser verby is, sal huisves; hierdie tabel bestaan uit 3 velde, 'id', 'rfid', 'date'.

  • 'id' is die veld of kenmerk int kolom wat die ID van elke rekord vir indeksering bevat.
  • 'rfid' kenmerk is die kolom 'varchar' wat die RFID -tag -kode bevat wat deur die leser gelees is.
  • 'datum' is die kenmerkkolom 'varchar' wat die datum bevat waarop die kaart gelees is.

Om die tabel 'ControlUsuarios' te skep, voer ons die volgende kode in die MySQL -konsole in:

  1. SKEP TAFEL `ControlUsuarios` (
  2. `id` int (255) NIE NULL AUTO_INCREMENT NIE,
  3. `rfid` varchar (300) NOT NULL,
  4. `fecha` varchar (300) NOT NULL,
  5. PRIMARYRE SLEUTEL (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Tik laastens 'exit;' in die konsole om die MySQL -navraag te verlaat en terug te keer na SHH sodat ons met PHP5 kan begin.

Stap 5: Installasie van PHP5

Installasie van PHP5
Installasie van PHP5

Gaan voort met die installering en konfigurasie van PHP5. Hierdie installasie is makliker as MySQL, so dit behoort hulle niks te kos nie. Installeer eers die opkg -pakket vanaf die aflaai en installering van die Arduino Yun, en tik die SSH -konsole van Arduino in:

opkg installeer php5 php5-cgi

Sodra dit afgelaai is en PHP5 op ons Arduino Yun geïnstalleer is, het ons die root -lêer uHTTPd opgestel, die http -bediener wat die standaard van Arduino bring. om op te stel as u nuut is in hierdie veld. Gebruik die lêerredakteur 'vi' SSH om dit te konfigureer, hiervoor moet u minimum kennis hê om hierdie redakteur te kan gebruik. Tik hierdie kode in die konsole om toegang tot die instellingslêer uHTTPd te verkry:

vi/etc/config/uhttpd

Druk 'i' om die lêer te wysig, en gaan dan na die kodelyn wat u geskryf het '# list tolk. "php = / usr / bin / php-cgi" '. U moet die teken '#' aan die begin van die reël uitvee, druk dan op die ontsnappingsleutel ('ESC'), sodra u gereed is, tik u die opdrag ': wq' om die lêer te stoor en die. U moet die bediener uHTTPd herlaai, hiervoor moet u die opdragskonsole van SSH die volgende kode invoer:

/etc/init.d/uhttpd herbegin

Stap 6: Installeer die Conector MySQL vir PHP5 en Python

Die installering van die Conector MySQL vir PHP5 en Python
Die installering van die Conector MySQL vir PHP5 en Python

Gaan voort met die installering en konfigurasie van die modules om die MySQL -databasis met PHP en Python te verbind. Kom ons begin met die PHP -aansluiting. Tik die volgende kode in:

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

Sodra dit gereed is, hoef u die bediener uHTTPd nie weer te begin nie, gereed vir onmiddellike gebruik. Gaan nou voort met die aansluiting vir Python, daarvoor moet u die volgende kode invoer:

opkg installeer python-mysql

Met hierdie laaste stap sal ons ons Arduino Yun gereed hê vir ons projek met die kaartleser ID-20 RFID 125khz. Sluit hierdie deel af met terugvoer oor wat ons gedoen het:

  • Ons het die MySQL -bediener op ons Arduino Yun geïnstalleer en dit dan opgestel en geëindig met die invoeging van toetsdata.
  • Installeer die PHP -aanvulling op ons bediener.
  • Ons is klaar met die installering en konfigurasie van MySQL Connector vir PHP en Python.

Stap 7: Kodes

Op hierdie gebied bespreek ons die programmeringskodes wat vir hierdie projek gebruik moet word. Ons vertrek met Python -kode, wat in twee lêers verdeel is: 'comprobar.py', wat aan die databasis sal koppel en Yun Arduino soek as die resultaat daarin is, en die lêer 'control'. py ', verantwoordelik vir die opname van enige kaart wat deur die leser ID-20 gelees word, al dan nie in die databasis van geregistreerde gebruikers. Gaan dan voort met die beskrywing van die PHP -lêers: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Vir hierdie lêers redundaremos, beide omdat dit maklik verstaanbaar is. Eindig uiteindelik met die kode wat in ons Arduino -skets sal optree.

Stap 8: Lêer Python

Lêers Python
Lêers Python

Soos vroeër genoem, funksioneer ons Python -skrifte met die biblioteek of klas 'MySQLdb', wat reeds voorheen geïnstalleer is. Begin met die skep van 'n lêer met '.py' genaamd 'comprobar.py' in ons redakteur, ek beveel aan dat u hierdie gevalle gebruik vir programmering in Python, die redakteur Sublime Text 3, wat u kan aflaai op hul webwerf www.sublimetext.com. Kom ons begin met die invoer van die biblioteek om aan te sluit op ons MySQL -databasis, die biblioteek 'sys', wat ons in staat sal stel om met ons Arduino Yun te kommunikeer:

  1. voer MySQLdb in
  2. invoer sys

Nadat ons hierdie biblioteke of klasse ingevoer het, voeg ons veranderlikes by u kode, wat die verbindingsdata van ons MySQL -databasis is:

  1. host = "127.0.0.1" # stem ooreen met die adres van ons MySQL -bediener.
  2. user = "your-seat" # is die gebruiker van ons databasis.
  3. passw = "jou-wagwoord" is vir die gebruiker se wagwoord. base = "arduino" # Dit is die naam van die databasis wat u gebruik.

Begin nou met die basiskripkodes:

  1. terwyl dit waar is:
  2. db = MySQLdb.connect (gasheer, gebruiker, wagwoord, basis)
  3. cur = db. wyser ()
  4. resultado = cur.execute ("" "SELECT * UIT usuariosrfid WAAR rfid LIKE %s BESTEL DEUR id" "", (sys.argv [1],)))
  5. as (resultado == 1):
  6. druk 1
  7. sys.exit (1)
  8. anders:
  9. druk 2
  10. sys.exit (1)

As ons besef, in die uitspraak 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' se opdrag om die veranderlike uit te voer '(sys.argv [1])' wat die kode is van die Arduino RFID -kaart met al die velddata 'rfid' -tabel' usuariosrfid ', wat die gelykheidskode van die arduino en die of kodes wat in die databasis gestoor is, vind terugkeer 1, as dit nie waar is nie en daar geen gelykheid is tussen die kode van die arduino en sommige van die basis nie, sal ons terugkeer 2. Hierdie getalle sal deur die Arduino ontvang word. Ons gaan voort met die volgende lêer 'control.py. Hierdie lêer werk op dieselfde manier as hierbo, met slegs 'n nasmaak op 'n tafel; hierdie gestoorde rekords word versamel deur die leser ID-20 wat gekoppel is aan ons Arduino Yun, sodat ons alle geregistreerde gebruikers wat ons RFID-leser gebruik, kan behou.

Stap 9: Lêer PHP

Gaan dan voort met die lêers. 'Php' wat die gids van ons bediener af sal hou, om dit te kan doen, onthou dat dit nodig is dat hierdie lêers gereed is in die projek wat ons outomaties genereer, wat die IDE Arduino genereer. dit, dat as ons na ons Arduino -skets Yun gaan, ons via Wi -Fi oplaai, so ek laat dit op dieselfde bladsy handleiding Arduino, www.arduino. cc / af / Gids / Arduino Yun # toc14, wat meer daaroor verduidelik, en hoe u 'n MicroSD -kaart moet voorberei vir hierdie tipe projek waar die lêers op die bediener gestoor moet word. Die PHP -lêers sal 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar' wees. php '' consulta.php ',' configuracion.php ', wat na 'n ander skakel gekoppel word, om 'n basiese spyskaart te handhaaf wat altyd lopend en toeganklik is. Verduidelik net die lêer 'configuracion.php', wat funksioneer as 'n verbinding met ons databasis. In ons redakteur skeduleer ons die volgende kode in die lêer:

  1. <? php
  2. / / Databediener en databasis
  3. $ bediener = "localhost";
  4. $ gebruikersnaam = "jou sitplek";
  5. $ wagwoord = "wagwoord";
  6. $ database_name = "arduino";

Dit is die data wat in die arduino met ons databasis gekoppel moet word, sal dieselfde wees as wat ons in ons Python -skrifte gebruik. Voltooi die programmering van die verbindingsverklaring, wat ons script gebruik het:

  1. $ conexion = mysql_connect ($ bediener, $ gebruikersnaam, $ wagwoord) of sterf ("Problems al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ databasisnaam) of sterf ("Problems al seleccar la base de datos");
  3. ?>

Die ander lêers is aangeheg.

Stap 10: Laastens, die program van die Arduino YÚN

Ons het by die belangrikste deel van hierdie tutoriaal gekom om ons Arduino Yun te programmeer; geen besonderhede sal die hele kode beklemtoon nie, aangesien dit redelik uitgebreid is, maar noem slegs die volgende belangrike punte:

  • Die kode bestaan uit 6 hooffunksies en 13 sekondêre funksies, wat slegs die gebruik van die seriële LCD ondersteun.
  • Word slegs drie klasse ingevoer, 'SoftwareSerial.h', waarmee ons Serial Attached sal invoer om verbinding te maak met die ID-20 en Serial LCD, die hoofklas 'Bridge.h' waarmee ons die verbinding tussen Linux en ATMEGA32U4 sal maak, en 'Process.h' klas sal dien vir konsultasie prosesse in Linux.
  • Definieer slegs drie penne, wat ander gebruik, gratis.

Die kode is aangeheg

Stap 11: Voorspoedige nuwe jaar

Ek gaan dit noukeurig voort om u te dien en u te help om meer inligting oor die Arduino Yun te kry. Laat alle lêers aan die einde aangeheg word. Vir sprekers van Spaanse taal, verlaat ek hierdie tutoriaal, maar in Spaans met die nodige lêers. Ek hoop jy het 'n gelukkige nuwe jaar, geniet dit en sukses hierdie 2014!

Aanbeveel: