Innholdsfortegnelse:

Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trinn (med bilder)
Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trinn (med bilder)

Video: Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trinn (med bilder)

Video: Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python: 11 trinn (med bilder)
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, November
Anonim
Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python
Kontroller tilgang til Arduino YÚN med MySQL, PHP5 og Python

Hei venner!

Som du vet, i september ble det nye premiere -skjoldet til Arduino, Arduino YUN. Denne lille vennen har et innebygd Linux -system som vi kan kjøre alt du kan tenke deg (i hvert fall så langt). Selv om det er veldig lite informasjon om dette nye brettet, kan avgang i guiden som gir Arduino -siden (som vil koble til senere), pluss litt kunnskap om mange Linux, utføre et stort prosjekt med Control Access. Denne gangen vil jeg forklare hvordan du gjør dette prosjektet, men på en tilstrekkelig måte gjennom hele Arduino. Dette fungerer, takket være en databaseserver MySQL som vil bosette seg i vår YUN, denne databasen vil lagre to tabeller, en for brukere som er tilknyttet en bestemt RFID og en annen tabell for å holde oversikt over alle kort som har passert gjennom leseren vår. Mens vi bruker programmeringsspråk PHP og Python -skript for å utføre noen grunnleggende og arbeide med dataene våre. Dessuten bruker vi maskinvaren overhead, en leser ID-20 ved siden av en seriell LCD med 16 tegn, pluss en RGB LED som vil være informantstatene våre. Vi kan bruke denne tilgangskontrollen alt vi kan tenke oss, endre og legge til et relé eller en annen idé. Den kan brukes på alt du har kort og vil ha en plate. Husk at dette dokumentet er gratis publisering, kommersiell bruk og unntatte endringer er ikke tillatt. Jeg håper det er en langt mer omfattende vei for elektronisk åpen kildekode. Så vi går til neste trinn, partene trenger!

Trinn 1: Delene

Delene
Delene
Delene
Delene
Delene
Delene

For å gjøre dette prosjektet må 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 aktivert LCD -ryggsekk https:// www. sparkfun.com/products/258 $ 16,95 * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1,95 * summer https://www.sparkfun.com/products/7950 $ 1,95 * Somes Header Pin and wire $ 5,00 ca.. Alt i alt, hvis du kjøper i butikken Sparkfun, vil alt være nær $ 150. Hvis du bor i Latin -Amerika, vil jeg anbefale å kjøpe delene i www.olimex.cl, er en veldig god chilensk elektronikkbutikk.

Trinn 2: Monteringen

Samlingen
Samlingen
Samlingen
Samlingen
Samlingen
Samlingen

Få forbindelser å gjøre, og forklar kort. For RGB LED må den røde LED -pinnen være på pin 9 på Arduino, pin den grønne LED -lampen skal gå på Arduino pin 8 og pin den blå LED'en skal være på pin 7 på Arduino. For ID-20 må du koble følgende pins som angitt i tabellen i respektive rekkefølge, pin reader til Arduino pin: Pin ID-20 til pin Arduino ID-20 / Arduino PIN 1-GND PIN 2-5V PIN 7 - GND PIN 9- PIN 10 PIN 10- BUZZER PIN 11- 5V Og til slutt, for den serielle LCD-kontakten er det bare nødvendig med 5v og GND pins på Arduino, mens LCD Serial RX pin går til pin 11 av Arduino.

Trinn 3: Programmering av Arduino Yun

Programmering av Arduino Yun
Programmering av Arduino Yun

For å lage prosjektet vårt må vi starte med delen av programvaren, installere noen filer på vår Arduino opkg Yun:

  • MySQL -server
  • PHP5
  • MySQLdb for Python 2.7
  • Mod av PHP5 til MySQL

Husk at som standard i Bridge kommer installert Python 2.7, så du trenger aldri å installere noen oppdatering for dette. Begynn å logge SSH tør å gå inn i vår Arduino Yun, når du har startet dem, skriver du inn følgende kommando for å oppdatere listen over applikasjoner opkg:

opkg oppdatering

Trinn 4: Installasjon av MySQL

Installasjon av MySQL
Installasjon av MySQL

Nå vil vi etablere installasjonen og konfigurasjonen av MySQL Server, skriv inn følgende kommandoer i konsollen:

  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 –-force
  6. /etc/init.d/mysqld start
  7. /etc/init.d/mysqld aktivere
  8. mysqladmin -u rotpassord 'tu-nueva-clave'

Når du er ferdig med å skrive inn kodene våre og startet MySQL -serveren, bør du konfigurere databasen som skal manipuleres. Men før vi begynner å skrive kodene, må vi forstå feltene som bærer bordet vårt. Styret skal bestå av 5 kurs, 'id', 'navn', 'navn', 'e -post', 'rfid' for å markedsføre noen av dem. Jeg skal gi en kort forklaring av bruken av dem.

  • 'id': vil feltet eller attributten int kolonne som vil fortelle oss nummeret som er tilordnet bruker -ID, dette nummeret tilordnes av den samme databasen og vil være måten å indeksere våre poster på.
  • 'nombre': attributtkolonnen vil være 'varchar' kan angis med navnet som kortbrukeren vår er identifisert med.
  • 'apellido': attributtkolonnen vil være 'varchar' kan angis med etternavnet som brukeren vår er knyttet til.
  • 'correo': er attributtkolonnen 'varchar' som inneholder e-posten til den tilknyttede brukeren.
  • 'rfid': er attributtkolonnen 'varchar' som inneholder koden til RFID -kortet du bruker.

(Jeg vil bruke variablene på spansk, fordi det er morsmålet mitt og jeg liker c:) Nå kan vi konfigurere databasen vår uten problemer, derfor lager vi et 'arduino' kall MySQL. Du må skrive inn følgende kode:

mysqladmin -u root -p lage arduino

Vi ber om passordet vi skrev inn tidligere i installasjonen, vi sender det inn for å fullføre opprettelsen av basen. Ferdig med alt dette, vi skriver inn spørringen til MySQL, du bør skrive følgende kode i konsollen:

mysql -rot -p

Igjen ber vi om passordet, du må sende det inn igjen. Når vi er inne i MySQL -konsollkommandoen, skal vi pekeren ('mysql>') vises klar til å skrive. Det første vi vil gjøre er å flytte basen for 'arduino' data for å jobbe med det. Dette gjøres ved å skrive følgende kommando på MySQL -konsollen:

BRUK arduino

Vi tror navnetabellen 'usuariosrfid' i databasen vil bruke for dette prosjektet, skriv inn denne koden i MySQL -konsollen:

  1. LAG TABELL `usuariosrfid` (
  2. `id` int (255) IKKE NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) IKKE NULL,
  4. `apellido` varchar (300) IKKE NULL,
  5. `correo` varchar (300) IKKE NULL,
  6. `rfid` varchar (300) IKKE NULL,
  7. PRIMÆR NØKKEL (`id ')
  8. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Husk at når du trykker på ENTER -tasten på slutten av kommandolinjen i MySQL -konsollen, kjøres den ikke før du finner ';' Derfor er slutten av koden ';' For å fullføre installasjonen og konfigurasjonen av MySQL fyller vi noen testfelt i basen vår. Skriv inn følgende linjer:

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

Fortsett nå med opprettelsen av tabellen 'ControlUsuarios', som vil inneholde alle RFID -koder som passerer leseren, denne tabellen består av 3 felt, 'id', 'rfid', 'date'.

  • 'id' er feltet eller attributten int -kolonnen som vil inneholde id -en for hver post for indeksering.
  • 'rfid' -attributtet er kolonnen 'varchar' som inneholder RFID -tag -koden ble lest av leseren.
  • 'date' er attributtkolonnen 'varchar' som inneholder datoen kortet ble lest.

For å lage tabellen 'ControlUsuarios', skriver vi inn følgende kode i MySQL -konsollen:

  1. OPPRETT TABELL `ControlUsuarios` (
  2. `id` int (255) IKKE NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) IKKE NULL,
  4. `fecha` varchar (300) IKKE NULL,
  5. PRIMÆR NØKKEL (`id ')
  6. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Skriv til slutt 'exit;' i konsollen for å gå ut av MySQL -spørringen, og gå tilbake til SHH, slik at vi kan starte med PHP5.

Trinn 5: Installasjon av PHP5

Installasjon av PHP5
Installasjon av PHP5

Fortsett med installasjonen og konfigurasjonen av PHP5. Denne installasjonen er enklere enn MySQL, så det bør ikke koste dem noe. Installer først opkg -pakken fra Arduino Yun som laster ned og installerer, så skriv inn SSH -konsollen til Arduino dette:

opkg installer php5 php5-cgi

Når den er lastet ned og PHP5 installert på vår Arduino Yun, så vi konfigurerte root -filen uHTTPd, http -serveren som bringer Arduino -standard, anbefaler jeg at du bare bruker denne http -serveren fordi den er mer allsidig og tilgjengelig i konfigurasjonen, ikke Apache eller Lighttpd er vanskeligere å sette opp når du er ny på dette feltet. For å konfigurere dette, bruk filredigereren 'vi' SSH, for dette må du ha minimum kunnskap for å bruke denne editoren. Begynn å skrive denne koden i konsollen for å få tilgang til innstillingsfilen uHTTPd:

vi/etc/config/uhttpd

Trykk på 'i' for å redigere filen, og gå deretter til kodelinjen du har skrevet '# list tolk. "php = / usr / bin / php-cgi" '. Du må slette tegnet '#' ut i begynnelsen av linjen, og deretter trykke på Escape (tasten 'ESC') -tasten. Når du er klar, må du skrive inn kommandoen ': wq' for å lagre filen og gå ut av. Du må starte serveren uHTTPd på nytt. For dette må du skrive inn følgende kommando i SSH -kommandokonsollen:

/etc/init.d/uhttpd start på nytt

Trinn 6: Installer Conector MySQL for PHP5 og Python

Installere Conector MySQL for PHP5 og Python
Installere Conector MySQL for PHP5 og Python

Fortsett med installasjonen og konfigurasjonen av modulene for å koble MySQL -databasen til PHP og Python. La oss starte med PHP -kontakten. Skriv inn følgende kode:

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

Når den er klar, trenger den ikke starte serveren uHTTPd på nytt, klar for umiddelbar bruk. Fortsett nå med kontakten for Python, for det må du skrive inn følgende kode:

opkg installer python-mysql

Med dette siste trinnet vil vi ha vår Arduino Yun klar for prosjektet vårt med kortleseren ID-20 RFID 125khz. Avslutt denne delen med tilbakemelding på det vi har gjort:

  • Vi installerte MySQL -serveren på vår Arduino Yun, deretter konfigurerte vi den og avsluttet med innsetting av testdata.
  • Installer PHP -komplementet til serveren vår.
  • Vi avsluttet installasjonen og konfigurasjonen av MySQL Connector for både PHP og Python.

Trinn 7: Koder

I dette området diskuterer vi programmeringskodene som skal brukes for dette prosjektet. Vi forlater med Python -kode, som er delt inn i to filer: 'comprobar.py', som vil koble seg til databasen og søke Yun Arduino hvis resultatet er i den, og filen 'kontroll. py ', ansvarlig for registrering av kort som leses av leser-ID-20, enten i databasen over registrerte brukere. Fortsett deretter med beskrivelsen av PHP -filene: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. For disse filene redundaremos både fordi de er enkle å forstå. Endelig avslutt med koden som vil gå opp som vår Arduino -skisse.

Trinn 8: Filer Python

Filer Python
Filer Python

Som nevnt tidligere fungerte våre Python -skript med biblioteket eller klassen 'MySQLdb', som allerede er installert tidligere. Start med å lage en fil med '.py' kalt 'comprobar.py' i vår editor, jeg anbefaler å bruke disse sakene for programmering i Python, editoren Sublime Text 3, som du kan laste ned på deres nettsted www.sublimetext.com. La oss starte med å importere biblioteket for å koble til vår MySQL -database, bibliotekets 'sys' som lar oss kommunisere med vår Arduino Yun:

  1. importer MySQLdb
  2. importer sys

Når vi har importert disse bibliotekene eller klassene, legger vi til variabler i koden din, som vil være tilkoblingsdataene fra vår MySQL -database, bein:

  1. host = "127.0.0.1" # tilsvarer adressen til vår MySQL -server.
  2. user = "your-seat" # er brukeren av databasen vår.
  3. passw = "ditt passord" er for brukerens passord. base = "arduino" # Dette er navnet på databasen du bruker.

Start nå med baseskriptkodene:

  1. mens det er sant:
  2. db = MySQLdb.connect (vert, bruker, passw, base)
  3. cur = db.markør ()
  4. resultado = cur.execute ("" "SELECT * FRA usuariosrfid HVOR rfid LIKER %s ORDER BY id" "", (sys.argv [1],))
  5. hvis (resultado == 1):
  6. skrive ut 1
  7. sys.exit (1)
  8. ellers:
  9. skrive ut 2
  10. sys.exit (1)

Hvis vi innser, i dommen 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' kommando for å utføre spørringen vår, sammenlign variabelen '(sys.argv [1])' som er koden fra Arduino RFID -kortet med alle feltdataene 'rfid' tabellen 'usuariosrfid', som, ved å finne likhetskode fra arduinoen eller eller kodene som er lagret i databasen, vil return 1, hvis dette ikke er sant og det ikke er likhet mellom koden fra arduinoen og noen av basen, returnerer vi 2. Disse tallene vil bli mottatt av Arduinoen. Vi fortsetter med den neste filen 'control.py. Denne filen fungerer på samme måte som ovenfor, bare med et ettersmak på et bord. Disse postene har lagret skal samles av leser-ID-20 koblet til vår Arduino Yun, slik at vi kan beholde alle registrerte brukere som bruker vår RFID-leser.

Trinn 9: Filer PHP

Fortsett deretter med filene. 'Php' som vil beholde mappen fra serveren vår, for å gjøre dette må du huske at det er nødvendig at disse filene når de er klare, blir lagret i prosjektet vårt, som automatisk genererer IDE Arduino, du må også huske, selv om jeg regner med dette, at når vi går opp til vår Arduino -skisse Yun, laster vi opp via Wi -Fi, så jeg lar den ligge på samme side manuell Arduino, www.arduino. cc / no / Guide / Arduino Yun # toc14, som forklarer mer om det, og hvordan du bør gå forberedt MicroSD -kort for denne typen prosjekter der filene skal lagres på serveren. PHP -filene vil være 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', som vil bli hyperkoblet til den andre, for å opprettholde en grunnleggende meny som alltid er tilgjengelig og tilgjengelig. Bare forklar filen 'configuracion.php', som fungerer som en kontakt med databasen vår. I vår redaktør planlegger vi følgende kode i filen:

  1. <? php
  2. / / Dataserver og database
  3. $ server = "localhost";
  4. $ brukernavn = "setet ditt";
  5. $ password = "password";
  6. $ database_name = "arduino";

Dette er dataene som må kobles til databasen vår i arduinoen, vil være de samme som vi bruker i våre Python -skript. Fullfør programmeringen av connect -setningen, som brukte skriptet vårt:

  1. $ conexion = mysql_connect ($ server, $ brukernavn, $ passord) 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. ?>

De andre filene er vedlagt.

Trinn 10: Til slutt, programmet til Arduino YÚN

Vi kom til hoveddelen av denne opplæringen, og programmerte vår Arduino Yun. Ingen detaljer vil fremheve hele koden, da den er ganske omfattende, bare nevne følgende viktige punkter:

  • Koden består av 6 hovedfunksjoner og 13 sekundære funksjoner, som bare er støtte for bruk av den serielle LCD -skjermen.
  • Bli importert bare tre klasser, 'SoftwareSerial.h', som vi vil legge inn Serial Attached for å koble til ID-20 og Serial LCD, hovedklassen 'Bridge.h' som vi vil gjøre forbindelsen mellom Linux og ATMEGA32U4, og 'Process.h' -klassen vil tjene til konsultasjonsprosesser i Linux.
  • Definer bare tre pins, som bruker andre være gratis.

Koden er vedlagt

Trinn 11: Godt nytt år

Jeg fortsetter dette grundig for å tjene deg og hjelpe deg med å få mer informasjon om Arduino Yun. La alle filene være vedlagt til slutten. For høyttalere i spansk språk, forlater jeg denne opplæringen, men på spansk med de nødvendige filene. Jeg håper du får et godt nytt år, nyt det og suksess i 2014!

Anbefalt: