Innehållsförteckning:

Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: 11 steg (med bilder)
Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: 11 steg (med bilder)

Video: Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: 11 steg (med bilder)

Video: Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python: 11 steg (med bilder)
Video: Управление голым реле и управление им с помощью Arduino для нагрузки переменного / постоянного тока 2024, Juli
Anonim
Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python
Kontrollera åtkomst till Arduino YÚN med MySQL, PHP5 och Python

Hej kompisar!

Som ni vet, i september den nya premiärskölden för Arduino, Arduino YUN. Denna lilla vän har ett inbäddat Linux -system som vi kan köra allt du kan tänka dig (åtminstone hittills). Även om det finns väldigt lite information om denna nya tavla, kan avgång i guiden som ger Arduino -sidan (som länkar senare), plus lite kunskap om många Linux, genomföra ett större projekt med Control Access. Den här gången kommer jag att förklara hur man gör detta projekt, men på ett sätt som är tillräckligt särskilt genom hela vår Arduino. Detta fungerar, tack vare en databasserver MySQL som kommer att bosätta sig i vår YUN, denna databas kommer att lagra två tabeller, en för användare som är associerade med en viss RFID och en annan tabell för att föra register över alla kort som har passerat genom vår läsare. Medan vi använder programmeringsspråk PHP och Python -skript för att utföra några grundläggande och arbeta med våra data. Dessutom, hårdvaruomkostnaderna, använder vi en läsar-ID-20 bredvid en seriell LCD-skärm med 16 tecken, plus en RGB-LED som kommer att vara vår informantstater. Vi kan använda denna åtkomstkontroll allt vi kan tänka oss, ändra och lägga till ett relä eller en annan idé. Den kan användas på allt där du har kort och vill ha en post. Kom ihåg att detta dokument är gratis publicering, kommersiell användning och undantagna ändringar är inte tillåtna. Jag hoppas att det är en långt mer omfattande väg för elektronik med öppen källkod. Så vi går till nästa steg, parterna behöver!

Steg 1: Delarna

Delarna
Delarna
Delarna
Delarna
Delarna
Delarna

För att göra detta projekt måste vi ha: * 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 Reader Breakout https://www.sparkfun.com/products/8423 $ 0,95 * Basic 16x2 Character LCD 5V https://www.sparkfun.com/products/790 $ 16,95 * Seriell aktiverad LCD -ryggsäck https:// www. sparkfun.com/products/258 $ 16,95 * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1,95 * Buzzer https://www.sparkfun.com/products/7950 $ 1,95 * Somes Header Pin and wire $ 5,00 ca.. Sammantaget, om du köper i butiken Sparkfun, kommer allt att vara nära $ 150. Om du bor i Latinamerika, skulle jag rekommendera att köpa delarna i www.olimex.cl, är en mycket bra chilensk elektronikbutik.

Steg 2: Monteringen

Monteringen
Monteringen
Monteringen
Monteringen
Monteringen
Monteringen

Några anslutningar att göra, med en kort förklaring. För RGB -LED måste den röda LED -stiften vara på stift 9 på Arduino, stift den gröna lysdioden ska gå på Arduino -stift 8 och stift den blå lysdioden ska vara på stift 7 på Arduino. För ID-20 måste du ansluta följande stift som anges i tabellen i respektive ordning, stiftläsare till Arduino-stift: Stift ID-20 till stift Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V Och slutligen, för den seriella LCD-kontakten är det bara nödvändigt att 5v och GND-stiften på Arduino, medan LCD Serial RX-stiftet går till pin 11 av Arduino.

Steg 3: Programmering av Arduino Yun

Programmering av Arduino Yun
Programmering av Arduino Yun

För att göra vårt projekt måste vi börja med den del av programvaran, installera några filer på vår Arduino opkg Yun:

  • MySQL -server
  • PHP5
  • MySQLdb för Python 2.7
  • Mod av PHP5 till MySQL

Kom ihåg att som standard i Bridge kommer installerad Python 2.7, så du behöver aldrig installera någon uppdatering för detta. Börja logga SSH våga gå in i vår Arduino Yun, när du har startat dem skriver du följande kommando för att uppdatera listan över applikationer opkg:

opkg uppdatering

Steg 4: Installation av MySQL

Installation av MySQL
Installation av MySQL

Nu kommer vi att etablera installationen och konfigurationen av MySQL Server, skriv följande kommandon i konsolen:

  1. opkg installera 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 aktivera
  8. mysqladmin -u root-lösenord 'tu-nueva-clave'

När du har skrivit in våra koder och startat MySQL -servern bör du konfigurera databasen som ska manipuleras. Men innan vi börjar skriva koderna måste vi förstå fälten som bär vårt bord. Styrelsen ska bestå av 5 kurser, 'id', 'namn', 'namn', 'e -post', 'rfid' för att marknadsföra några av dem. Jag ska ge en kort förklaring av deras användning.

  • 'id': kommer fältet eller attribut int -kolumnen som berättar numret som tilldelats användar -ID, detta nummer tilldelas av samma databas och kommer att vara sättet att indexera våra poster.
  • 'nombre': attributkolumnen kommer att vara 'varchar' kan anges med namnet som vår kortanvändare identifieras med.
  • 'apellido': attributkolumnen kommer att vara 'varchar' kan anges med det efternamn som vår användare är associerad med.
  • 'correo': är attributkolumnen 'varchar' som innehåller e-postmeddelandet tillhörande användare.
  • 'rfid': är attributkolumnen 'varchar' som innehåller koden för det RFID -kort du använder.

(Jag kommer att använda variablerna på spanska, eftersom det är mitt modersmål och jag gillar c:) Nu kan vi konfigurera vår databas utan problem, därför skapar vi ett "arduino" -samtal MySQL. Du måste skriva följande kod:

mysqladmin -u root -p skapa arduino

Vi ber om lösenordet vi angav tidigare i installationen, vi skickar in det för att slutföra skapandet av basen. Avslutade allt detta, vi anger frågan till MySQL, du bör skriva följande kod i konsolen:

mysql -root -p

Återigen ber vi om lösenordet, du måste skicka det igen. Väl inne i MySQL -konsolkommandot ska vi pekaren ('mysql>') visas redo att skriva. Det första vi kommer att göra är att flytta basen för "arduino" -data för att arbeta med det. Detta görs genom att skriva följande kommando på MySQL -konsolen:

ANVÄND arduino

Vi tror att namntabellen 'usuariosrfid' i databasen kommer att användas för detta projekt, skriv den här koden i MySQL -konsolen:

  1. SKAPA TABELL `usuariosrfid` (
  2. `id` int (255) INTE NULL AUTO_INCREMENT,
  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. PRIMÄR KEY ('id')
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Kom ihåg att när du trycker på ENTER -tangenten i slutet av kommandoraden i MySQL -konsolen kommer den inte att köras förrän du hittar ';' Därför är i slutet av koden ';' För att slutföra installationen och konfigurationen av MySQL fyller vi några testfält inom vår bas. Skriv in följande rader:

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

Fortsätt nu med skapandet av tabellen 'ControlUsuarios', som kommer att rymma alla RFID -koder som passerar läsaren, denna tabell består av tre fält, 'id', 'rfid', 'date'.

  • 'id' är fältet eller attribut int -kolumnen som innehåller id för varje post för indexering.
  • "rfid" -attributet är kolumnen "varchar" som innehåller RFID -taggkoden lästes av läsaren.
  • "datum" är attributkolumnen "varchar" som innehåller datumet då kortet lästes.

För att skapa tabellen 'ControlUsuarios' anger vi följande kod i MySQL -konsolen:

  1. SKAPA TABELL `ControlUsuarios` (
  2. `id` int (255) INTE NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NOT NULL,
  4. `fecha` varchar (300) NOT NULL,
  5. PRIMÄR KEY ('id')
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Slutligen skriver du "exit;" i konsolen för att avsluta MySQL -frågan och återgå till SHH så att vi kan börja med PHP5.

Steg 5: Installation av PHP5

Installation av PHP5
Installation av PHP5

Fortsätt med installationen och konfigurationen av PHP5. Denna installation är enklare än MySQL, så det borde inte kosta dem något. Installera först opkg -paketet från Arduino Yun som laddar ner och installerar, så skriv in SSH -konsolen för Arduino detta:

opkg installera php5 php5-cgi

När vi väl har laddat ner och PHP5 installerat på vår Arduino Yun, så vi konfigurerade root -filen uHTTPd, http -servern som ger Arduino -standard, rekommenderar jag att du bara använder den här http -servern eftersom den är mer mångsidig och tillgänglig i konfigurationen, inte Apache eller Lighttpd är svårare att konfigurera när du är ny inom detta område. För att konfigurera detta, använd filredigeraren 'vi' SSH, för detta måste du ha minsta kunskap för att använda den här redigeraren. Börja skriva den här koden i konsolen för att komma åt inställningsfilen uHTTPd:

vi/etc/config/uhttpd

Tryck på 'i' för att redigera filen och gå sedan till kodraden du har skrivit '# list tolk. "php = / usr / bin / php-cgi" '. Du måste radera tecknet '#' i början av raden, tryck sedan på Escape (tangenten 'ESC'), när du är klar måste du skriva kommandot ': wq' för att spara filen och lämna. Du måste starta om servern uHTTPd, för detta bör du skriva in kommandokonsolen för SSH följande kod:

/etc/init.d/uhttpd starta om

Steg 6: Installera Conector MySQL för PHP5 och Python

Installation av Conector MySQL för PHP5 och Python
Installation av Conector MySQL för PHP5 och Python

Fortsätt med installationen och konfigurationen av modulerna för att ansluta MySQL -databasen med PHP och Python. Låt oss börja med PHP -kontakten. Ange följande kod:

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

När den är klar behöver den inte starta om servern uHTTPd, redo för omedelbar användning. Fortsätt nu med kontakten för Python, för det måste du ange följande kod:

opkg installera python-mysql

Med det här sista steget kommer vi att ha vår Arduino Yun redo för vårt projekt med kortläsaren ID-20 RFID 125khz. Avsluta den här delen med feedback på vad vi har gjort:

  • Vi installerade MySQL -servern på vår Arduino Yun, konfigurerade den sedan och slutade med en infogning av testdata.
  • Installera PHP -komplementet till vår server.
  • Vi slutade med installationen och konfigurationen av MySQL Connector för både PHP och Python.

Steg 7: Koder

På detta område diskuterar vi de programmeringskoder som ska användas för detta projekt. Vi lämnar med Python -kod, som är uppdelad i två filer: 'comprobar.py', som kommer att ansluta till databasen och söka Yun Arduino om resultatet finns i den, och filen 'kontroll. py ', ansvarig för att spela in kort som läses av läsar-ID-20, oavsett om de är registrerade användares databas eller inte. Fortsätt sedan med beskrivningen av PHP -filerna: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Redundaremos för dessa filer både för att de är lätta att förstå. Slutligen sluta med koden som kommer att gå upp som vår Arduino -skiss.

Steg 8: Filer Python

Filer Python
Filer Python

Som tidigare nämnts fungerade våra Python -skript med biblioteket eller klassen 'MySQLdb', som redan är installerat tidigare. Börja med att skapa en fil med '.py' som heter 'comprobar.py' i vår editor, jag rekommenderar att du använder dessa fall för programmering i Python, editoren Sublime Text 3, som du kan ladda ner på deras webbplats www.sublimetext.com. Låt oss börja med att importera biblioteket för att ansluta till vår MySQL -databas, bibliotekets 'sys' som gör att vi kan kommunicera med vår Arduino Yun:

  1. importera MySQLdb
  2. importera sys

När vi väl har importerat dessa bibliotek eller klasser lägger vi till variabler i din kod, som kommer att vara anslutningsdata från vår MySQL -databas, ben:

  1. host = "127.0.0.1" # motsvarar adressen till vår MySQL -server.
  2. user = "your-seat" # är användaren av vår databas.
  3. passw = "ditt-lösenord" är för användarens lösenord. base = "arduino" # Detta är namnet på databasen du använder.

Börja nu med basskriptkoderna:

  1. medan det är sant:
  2. db = MySQLdb.connect (värd, användare, lösenord, bas)
  3. cur = db.markör ()
  4. resultado = cur.execute ("" "SELECT * FRÅN usuariosrfid VAR rfid LIKER %s ORDER BY id" "", (sys.argv [1],))
  5. om (resultado == 1):
  6. skriva ut 1
  7. sys.exit (1)
  8. annan:
  9. skriva ut 2
  10. sys.exit (1)

Om vi inser, i domen 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' kommandot för att utföra vår fråga jämför variabeln '(sys.argv [1])' som är koden från Arduino RFID -kortet med alla fältdata 'rfid' -tabellen' usuariosrfid ', som, om man hittar jämlikhetskod från arduino och eller koder lagrade i databasen, kommer return 1, om detta inte är sant och det inte finns någon likhet mellan koden från arduino och en del av basen, kommer vi att returnera 2. Dessa nummer kommer att tas emot av Arduino. Vi fortsätter med nästa fil 'control.py. Denna fil fungerar på samma sätt som ovan, bara med en eftersmak på ett bord, dessa poster har sparats ska samlas in av läsarens ID-20 ansluten till vår Arduino Yun, så att vi kan behålla alla registrerade användare som använder vår RFID-läsare.

Steg 9: Filer PHP

Fortsätt sedan med filerna. 'Php' som kommer att hålla mappen från vår server, för att göra detta kom ihåg att det är nödvändigt att dessa filer när de är klara sparas i skiten vårt projekt, som automatiskt genererar IDE Arduino, du måste också komma ihåg, även om jag förutse detta, att när vi går upp till vår Arduino -skiss Yun, laddar vi upp via Wi -Fi, så jag lämnar den på samma sida manual Arduino, www.arduino. cc / sv / Guide / Arduino Yun # toc14, som förklarar mer om det, och hur du ska gå förberett MicroSD -kort för denna typ av projekt där filerna ska lagras på servern. PHP -filerna kommer att vara 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', som kommer att länkas till den andra, för att behålla en grundläggande meny som alltid är igång och tillgänglig. Förklara bara filen 'configuracion.php', som fungerar som en anslutning till vår databas. I vår redaktör schemalägger vi följande kod i filen:

  1. <? php
  2. / / Dataserver och databas
  3. $ server = "localhost";
  4. $ användarnamn = "din plats";
  5. $ password = "password";
  6. $ database_name = "arduino";

Detta är de data som måste ansluta till vår databas i arduino kommer att vara samma som vi använder i våra Python -skript. Slutför programmeringen av connect -satsen, som använde vårt skript:

  1. $ conexion = mysql_connect ($ server, $ användarnamn, $ lösenord) eller die ("Problemas al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) eller die ("Problemas al seleccar la base de datos");
  3. ?>

Övriga filer bifogas.

Steg 10: Slutligen, programmet för Arduino YÚN

Vi kom till huvuddelen av denna handledning, programmering av vår Arduino Yun, inga detaljer kommer att markera hela koden eftersom den är ganska omfattande, bara nämna följande viktiga punkter:

  • Koden består av 6 huvudfunktioner och 13 sekundära funktioner, som endast är ett stöd för användning av den seriella LCD -skärmen.
  • Importeras endast tre klasser, 'SoftwareSerial.h', som vi kommer att mata in Serial Attached för att ansluta till ID-20 och Serial LCD, huvudklassen 'Bridge.h' som vi kommer att göra anslutningen mellan Linux och ATMEGA32U4, och klassen 'Process.h' fungerar för konsultationsprocesser i Linux.
  • Definiera bara tre stift, som använder andra vara gratis.

Koden bifogas

Steg 11: Gott nytt år

Jag fortsätter detta noggrant för att hjälpa dig och hjälpa dig att få mer information om Arduino Yun. Lämna alla filer bifogade till slutet. För talare av spanska språket lämnar jag denna handledning men på spanska med nödvändiga filer. Jag hoppas att du får ett gott nytt år, njut av det och lyckas 2014!

Rekommenderad: