Inhoudsopgave:

Toegang tot Arduino YÚN beheren met MySQL, PHP5 en Python: 11 stappen (met afbeeldingen)
Toegang tot Arduino YÚN beheren met MySQL, PHP5 en Python: 11 stappen (met afbeeldingen)

Video: Toegang tot Arduino YÚN beheren met MySQL, PHP5 en Python: 11 stappen (met afbeeldingen)

Video: Toegang tot Arduino YÚN beheren met MySQL, PHP5 en Python: 11 stappen (met afbeeldingen)
Video: iPhone Introducing❓ Steve Jobs in 2007❕ #part6 (Full Subtitle) 2024, November
Anonim
Beheer de toegang van Arduino YÚN met MySQL, PHP5 en Python
Beheer de toegang van Arduino YÚN met MySQL, PHP5 en Python

Hallo vrienden!

Nou, zoals je weet, in september het nieuwe première schild van Arduino, Arduino YUN. Deze kleine vriend heeft een Linux embedded systeem waarmee we alles kunnen draaien wat je maar kunt bedenken (tenminste tot nu toe). Hoewel er heel weinig informatie is over dit nieuwe bord, met vertrek in de gids die de Arduino-pagina biedt (die later zal worden gelinkt), plus een beetje kennis van veel Linux, kan een groot project een Control Access uitvoeren. Deze keer zal ik uitleggen hoe dit project te doen, maar op een manier die voldoende specifiek is via onze Arduino. Dit werkt, dankzij een databaseserver MySQL die zich in onze YUN zal vestigen, deze database zal twee tabellen opslaan, een voor gebruikers die zijn gekoppeld aan een bepaalde RFID en een andere tabel om alle kaarten bij te houden die door onze lezer zijn gegaan. Terwijl we programmeertalen PHP- en Python-scripts gebruiken om wat basis uit te voeren en met onze gegevens te werken. Bovendien, de hardware-overhead, gebruiken we een lezer-ID-20 naast een seriële LCD van 16 tekens, plus een RGB-LED die onze informant zal zijn. We mogen deze toegangscontrole alles gebruiken wat we kunnen bedenken, wijzigen en een relais of een ander idee toevoegen. Het kan worden gebruikt op alles waar je kaarten hebt en een record wilt. Bedenk dat dit document vrije publicatie is, commercieel gebruik en vrijgestelde wijzigingen zijn niet toegestaan. Ik hoop dat het een veel uitgebreider pad is van Open Source-elektronica. Dus we gaan naar de volgende stap, de partijen nodig hebben!

Stap 1: De onderdelen

De onderdelen
De onderdelen
De onderdelen
De onderdelen
De onderdelen
De onderdelen

Om dit project te doen, hebben we nodig: * Arduino YUN https://www.sparkfun.com/products/12053 $71.95 * RFID-lezer ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34,95 * Uitbraak van RFID-lezer https://www.sparkfun.com/products/8423 $ 0,95 * Basis LCD-scherm met 16x2 tekens 5V https://www.sparkfun.com/products/790 $ 16,95 * Serieel ingeschakelde LCD-rugzak https://www. sparkfun.com/products/258 $16.95 * LED RGB 5mm https://www.sparkfun.com/products/105 $1.95 * Zoemer https://www.sparkfun.com/products/7950 $1.95 * Somes Header Pin en draad $5.00 ongeveer. In totaal, als je in de winkel Sparkfun koopt, zal alles in de buurt van $ 150 zijn. Als je in Latijns-Amerika woont, raad ik je aan om de onderdelen te kopen op www.olimex.cl, een zeer goede Chileense elektronicawinkel.

Stap 2: De montage

de montage
de montage
de montage
de montage
de montage
de montage

Weinig connecties te doen, vast even kort uitleggen. Voor RGB LED moet de rode LED-pin op pin 9 van de Arduino zitten, pin moet de groene LED op Arduino pin 8 zitten en pin moet de blauwe LED op pin 7 van de Arduino zitten. Voor de ID-20 moet u de volgende pinnen aansluiten zoals aangegeven in de tabel in de respectievelijke volgorde, pinlezer op Arduino-pin: Pin ID-20 op pin Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- BUZZER PIN 11 -- 5V En tot slot, voor de seriële LCD-connector is alleen nodig voor de 5v- en GND-pinnen van de Arduino, terwijl de LCD Seriële RX-pin naar pin 11 gaat van de Arduino.

Stap 3: Programmeren van de Arduino Yun

Programmeren van de Arduino Yun
Programmeren van de Arduino Yun

Om ons project te maken, moeten we beginnen met het deel van de software, enkele bestanden installeren op onze Arduino opkg Yun:

  • MySQL-server
  • PHP5
  • MySQLdb voor Python 2.7
  • Mod van PHP5 naar MySQL

Bedenk dat in Bridge standaard Python 2.7 is geïnstalleerd, dus je hoeft hiervoor nooit een update te installeren. Begin met loggen SSH durf onze Arduino Yun in te voeren, zodra je ze hebt gestart, typ je de volgende opdracht om de lijst met applicaties opkg bij te werken:

opkg-update

Stap 4: Installatie van MySQL

Installatie van MySQL
Installatie van MySQL

Nu zullen we de installatie en configuratie van MySQL Server tot stand brengen, typ de volgende opdrachten in de console:

  1. opkg installeer 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 start
  7. /etc/init.d/mysqld inschakelen
  8. mysqladmin -u root-wachtwoord 'tu-nueva-clave'

Als u klaar bent met het invoeren van onze codes en de MySQL-server hebt gestart, moet u de database configureren die zal manipuleren. Maar voordat we beginnen met het typen van de codes, moeten we de velden begrijpen die onze tabel bevatten. Het bord zal bestaan uit 5 cursussen, 'id', 'naam', 'naam', 'e-mail', 'rfid' om er enkele op de markt te brengen. Ik zal een korte uitleg geven over het gebruik ervan.

  • 'id': zal het veld of attribuut int kolom die ons het nummer zal vertellen dat is toegewezen aan de gebruikers-ID, dit nummer wordt toegewezen door dezelfde database en zal de manier zijn om onze records te indexeren.
  • 'nombre': attribuutkolom wordt ' varchar ' kan worden aangegeven door de naam waarmee onze kaartgebruiker wordt geïdentificeerd.
  • ' apellido': attribuutkolom zal ' varchar ' zijn, kan worden aangegeven door de achternaam waarmee onze gebruiker is geassocieerd.
  • ' correo': is de attribuutkolom ' varchar ' die de e-mail van de geassocieerde gebruiker zal bevatten.
  • 'rfid': is de attribuutkolom 'varchar' die de code zal bevatten van de RFID-kaart die u gebruikt.

(Ik zal de variabelen in het Spaans gebruiken, want het is mijn moedertaal en ik hou van c:) Nu kunnen we onze database probleemloos configureren, daarom maken we een ' arduino '-aanroep MySQL. U moet de volgende code typen:

mysqladmin -u root -p maak arduino

We vragen om het wachtwoord dat we eerder bij de installatie hebben ingevoerd, we zullen het indienen om het maken van de basis te voltooien. Als dit allemaal is voltooid, voeren we de query in MySQL in, u moet de volgende code in de console typen:

mysql -root -p

Wederom vragen we om het wachtwoord, deze moet u opnieuw indienen. Eenmaal binnen de MySQL-consoleopdracht, zou de aanwijzer ('mysql>') klaar moeten zijn om te typen. Het eerste dat we zullen doen, is de basis voor 'arduino'-gegevens verplaatsen om eraan te werken. Dit doet u door de volgende opdracht in de MySQL-console te typen:

GEBRUIK arduino

We denken dat de naamtabel 'usuariosrfid' in de database voor dit project zal gebruiken, typ deze code in de MySQL-console:

  1. MAAK TABEL `usuariosrfid` (
  2. `id` int(255) NIET NULL AUTO_INCREMENT,
  3. `nombre` varchar(300) NIET NULL,
  4. `apellido` varchar(300) NIET NULL,
  5. `correo` varchar(300) NIET NULL,
  6. `rfid` varchar(300) NIET NULL,
  7. PRIMAIRE SLEUTEL (`id`)
  8. ) MOTOR=MyISAM STANDAARD CHARSET=latin1 AUTO_INCREMENT=0;

* Onthoud dat wanneer u op de ENTER-toets drukt aan het einde van de opdrachtregel in de MySQL-console, deze niet wordt uitgevoerd totdat u de ';' vindt Daarom staat aan het einde van de code ';' Om de installatie en configuratie van MySQL te voltooien, vullen we enkele testvelden in onze basis. Typ de volgende regels:

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

Ga nu verder met het maken van de tabel 'ControlUsuarios', waarin alle RFID-codes die door de lezer passeren zullen worden opgenomen, deze tabel bestaat uit 3 velden, 'id', 'rfid', 'date'.

  • 'id' is het veld of de attribuut int-kolom die de id van elk record voor indexering zal bevatten.
  • 'rfid'-attribuut is de kolom 'varchar' die de RFID-tagcode bevat die door de lezer is gelezen.
  • 'date' is de attribuutkolom 'varchar' die de datum zal bevatten waarop de kaart is gelezen.

Om de tabel 'ControlUsuarios' te maken, voeren we de volgende code in de MySQL-console in:

  1. MAAK TABEL `ControlUsuarios` (
  2. `id` int(255) NIET NULL AUTO_INCREMENT,
  3. `rfid` varchar(300) NIET NULL,
  4. `fecha` varchar(300) NIET NULL,
  5. PRIMAIRE SLEUTEL (`id`)
  6. ) MOTOR=MyISAM STANDAARD CHARSET=latin1 AUTO_INCREMENT=0;

Typ tot slot 'exit;' in de console om de MySQL-query af te sluiten en terug te keren naar SHH zodat we kunnen beginnen met PHP5.

Stap 5: Installatie van PHP5

Installatie van PHP5
Installatie van PHP5

Ga verder met de installatie en configuratie van PHP5. Deze installatie is eenvoudiger dan MySQL, dus het zou hen niets moeten kosten. Installeer eerst het opkg-pakket van de Arduino Yun downloaden en installeren, dus typ in de SSH-console van Arduino dit:

opkg installeer php5 php5-cgi

Eenmaal gedownload en PHP5 geïnstalleerd op onze Arduino Yun, dus we hebben het rootbestand uHTTPd geconfigureerd, de http-server die Arduino standaard brengt, raad ik aan om alleen deze http-server te gebruiken omdat deze veelzijdiger en toegankelijker is qua configuratie, niet Apache of Lighttpd zijn moeilijker om in te stellen wanneer u nieuw bent in dit veld. Gebruik hiervoor de bestandseditor 'vi' SSH, hiervoor moet je minimale kennis hebben om deze editor te gebruiken. Begin deze code in de console te typen om toegang te krijgen tot het instellingenbestand uHTTPd:

vi /etc/config/uhttpd

Druk op 'i' om het bestand te bewerken en ga vervolgens naar de regel code die u hebt geschreven '# list interpreter. "php = / usr / bin / php-cgi"'. U moet het teken '#' aan het begin van de regel verwijderen en vervolgens op de escape-toets (toets 'ESC') drukken. Als u klaar bent, typt u het commando ': wq' om het bestand op te slaan en de. U moet de server uHTTPd opnieuw opstarten, hiervoor typt u in de opdrachtconsole van SSH de volgende code:

/etc/init.d/uhttpd herstart

Stap 6: Installatie van de Conector MySQL voor PHP5 en Python

Installatie van de Conector MySQL voor PHP5 en Python
Installatie van de Conector MySQL voor PHP5 en Python

Ga verder met de installatie en configuratie van de modules om de MySQL-database te verbinden met PHP en Python. Laten we beginnen met de PHP-connector. Typ de volgende code:

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

Eenmaal klaar, hoeft de server uHTTPd niet opnieuw te worden opgestart, klaar voor onmiddellijk gebruik. Ga nu verder met de connector voor Python, daarvoor moet je de volgende code invoeren:

opkg installeer python-mysql

Met deze laatste stap zullen we onze Arduino Yun klaar hebben voor ons project met de kaartlezer ID-20 RFID 125khz. Sluit dit deel af met feedback over wat we hebben gedaan:

  • We hebben de MySQL-server op onze Arduino Yun geïnstalleerd en vervolgens geconfigureerd, eindigend met het invoegen van testgegevens.
  • Installeer de PHP aanvulling op onze server.
  • We eindigden met de installatie en configuratie van MySQL Connector voor zowel PHP als Python.

Stap 7: Codes

In dit gebied bespreken we de programmeercodes die voor dit project moeten worden gebruikt. We vertrekken met Python-code, die is verdeeld in twee bestanden: 'comprobar.py', die verbinding maakt met de database en Yun Arduino zoekt als het resultaat erin staat, en het bestand 'control. py', verantwoordelijk voor het opnemen van elke kaart die wordt gelezen door de lezer ID-20, al dan niet in de database van geregistreerde gebruikers. Ga dan verder met de beschrijving van de PHP-bestanden, zijn: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', ' guardar.php '' consulta.php ', ' configuratie.php '. Voor deze bestanden zijn beide overbodig omdat ze gemakkelijk te begrijpen zijn. Eindig ten slotte met de code die zal verschijnen als onze Arduino-schets.

Stap 8: Bestanden Python

Bestanden Python
Bestanden Python

Zoals eerder vermeld, functioneerden onze Python-scripts met de bibliotheek of klasse 'MySQLdb', die al eerder is geïnstalleerd. Begin met het maken van een bestand met '.py' genaamd 'comprobar.py' in onze editor, ik raad aan om deze gevallen te gebruiken voor het programmeren in Python, de editor Sublime Text 3, die je kunt downloaden op hun website www.sublimetext.com. Laten we beginnen met het importeren van de bibliotheek om verbinding te maken met onze MySQL-database, de bibliotheek 'sys' waarmee we kunnen communiceren met onze Arduino Yun:

  1. importeer MySQLdb
  2. import systeem

Nadat deze bibliotheken of klassen zijn geïmporteerd, voegen we variabelen toe aan uw code, dit zijn de verbindingsgegevens uit onze MySQL-database, bone:

  1. host = "127.0.0.1" # komt overeen met het adres van onze MySQL-server.
  2. user = "your-seat" # is de gebruiker van onze database.
  3. passw = "uw-wachtwoord" is voor het wachtwoord van de gebruiker. base = "arduino" # Dit is de naam van de database die u gebruikt.

Begin nu met de basisscriptcodes:

  1. terwijl waar:
  2. db= MySQLdb.connect (host, gebruiker, wachtwoord, basis)
  3. cur = db.cursor()
  4. resultado = cur.execute("""SELECT * FROM usuariosrfid WAAR rfid ZOALS %s BESTEL DOOR id""", (sys.argv[1],))
  5. als (resultaat == 1):
  6. afdrukken 1
  7. sys.exit(1)
  8. anders:
  9. afdrukken 2
  10. sys.exit(1)

Als we ons realiseren, in het oordeel 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' commando om onze query uit te voeren, vergelijk de variabele '(sys.argv [1])' wat de code is van de Arduino RFID-kaart met alle veldgegevens 'rfid'-tabel 'usuariosrfid', die, bij het vinden van gelijkheidscode van de Arduino en de of codes die zijn opgeslagen in de database, zal retourneer 1, als dit niet waar is en er geen gelijkheid is tussen de code van de Arduino en een deel van de basis, zullen we 2 retourneren. Deze nummers worden ontvangen door de Arduino. We gaan verder met het volgende bestand 'control.py. Dit bestand werkt op dezelfde manier als hierboven, alleen met een nasmaak op een tafel, deze records die zijn opgeslagen, worden verzameld door de lezer ID-20 die is aangesloten op onze Arduino Yun, zodat we alle geregistreerde gebruikers kunnen behouden die onze RFID-lezer gebruiken.

Stap 9: Bestanden PHP

Ga dan verder met de bestanden. ' Php' die de map van onze server houdt, onthoud dat het nodig is dat deze bestanden, eenmaal klaar, worden opgeslagen in de sketch van ons project, dat automatisch de IDE Arduino genereert, je moet ook onthouden, hoewel ik anticipeer dit, dat wanneer we naar onze Arduino-schets Yun gaan, we uploaden via Wi-Fi, dus ik laat het op dezelfde pagina handleiding Arduino, www.arduino. cc / nl / Guide / Arduino Yun # toc14, die er meer over uitlegt, en hoe je een MicroSD-kaart moet voorbereiden voor dit type project waar de bestanden op de server moeten worden opgeslagen. De PHP-bestanden zijn 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php' 'consulta.php', 'configuracion.php', die zal worden gehyperlinkt naar de andere, om een basismenu altijd actief en toegankelijk te houden. Leg gewoon het bestand 'configuracion.php' uit, dat fungeert als connector met onze database. In onze editor plannen we de volgende code in het bestand:

  1. <? php
  2. / / Gegevensserver en database
  3. $ server = "lokale host";
  4. $ gebruikersnaam = "uw stoel";
  5. $ wachtwoord = "wachtwoord";
  6. $ database_name = "arduino";

Dit zijn de gegevens die verbinding moeten maken met onze database in de Arduino zullen dezelfde zijn die we gebruiken in onze Python-scripts. Voltooi het programmeren van de connect-instructie, die ons script gebruikte:

  1. $conexion=mysql_connect($server, $gebruikersnaam, $wachtwoord) or die("Problemas al tratar de establecer la conexion");
  2. $bd_sel=mysql_select_db($database_name) or die("Problemas al seleccionar la base de datos");
  3. ?>

De andere bestanden zijn bijgevoegd.

Stap 10: Eindelijk, het programma van de Arduino YÚN

We zijn bij het grootste deel van deze tutorial gekomen, het programmeren van onze Arduino Yun, geen details zullen alle code benadrukken omdat het vrij uitgebreid is, vermeld alleen de volgende belangrijke punten:

  • De code bestaat uit 6 hoofdfuncties en 13 secundaire functies, die slechts een ondersteuning zijn voor het gebruik van het seriële LCD-scherm.
  • Worden slechts drie klassen geïmporteerd, 'SoftwareSerial.h', waarmee we Serial Attached zullen invoeren om verbinding te maken met de ID-20 en Serial LCD, de hoofdklasse 'Bridge.h' waarmee we de verbinding tussen Linux en ATMEGA32U4 zullen maken, en de klasse 'Process.h' zal dienen voor consultatieprocessen in Linux.
  • Definieer slechts drie pinnen, die anderen vrij gebruiken.

De code is bijgevoegd

Stap 11: Gelukkig nieuwjaar

Ik ga hier nauwgezet mee verder om je van dienst te zijn en je te helpen meer informatie te krijgen over de Arduino Yun. Laat alle bestanden aan het einde bijgevoegd. Voor sprekers van de Spaanse taal verlaat ik deze tutorial maar in het Spaans met de nodige bestanden. Ik wens je een gelukkig nieuwjaar, geniet ervan en veel succes in 2014!

Aanbevolen: