Taula de continguts:

Control de l'accés a Arduino YÚN amb MySQL, PHP5 i Python: 11 passos (amb imatges)
Control de l'accés a Arduino YÚN amb MySQL, PHP5 i Python: 11 passos (amb imatges)

Vídeo: Control de l'accés a Arduino YÚN amb MySQL, PHP5 i Python: 11 passos (amb imatges)

Vídeo: Control de l'accés a Arduino YÚN amb MySQL, PHP5 i Python: 11 passos (amb imatges)
Vídeo: Управление голым реле и управление им с помощью Arduino для нагрузки переменного / постоянного тока 2024, De novembre
Anonim
Controlar l'accés a Arduino YÚN amb MySQL, PHP5 i Python
Controlar l'accés a Arduino YÚN amb MySQL, PHP5 i Python

Hola amics!

Bé, com ja sabeu, al setembre es presentarà el nou escut d’Arduino, Arduino YUN. Aquest petit amic té un sistema incrustat de Linux amb el qual podem executar qualsevol cosa que se us acudeixi (almenys fins ara). Tot i que hi ha molt poca informació sobre aquest nou tauler, amb sortida a la guia que proporciona la pàgina Arduino (que enllaçarà més endavant), a més d'un petit coneixement de molts Linux, es pot dur a terme un projecte important, un Control Access. Aquesta vegada explicaré com fer aquest projecte, però de manera suficientment particular a través del nostre Arduino. Això funciona, gràcies a un servidor de bases de dades MySQL que s’instal·larà al nostre YUN, aquesta base de dades emmagatzemarà dues taules, una per a usuaris associats a un determinat RFID i una altra taula per guardar registres de totes les targetes que han passat pel nostre lector. Tot i que fem servir llenguatges de programació scripts PHP i Python per realitzar alguns treballs bàsics i treballar amb les nostres dades. A més, a través del maquinari general, fem servir un lector ID-20 al costat d’una pantalla LCD de 16 caràcters, a més d’un LED RGB que serà el nostre informador. Podem utilitzar aquest control d’accés tot el que puguem pensar, modificar i afegir un relé o una altra idea. Es pot utilitzar en qualsevol lloc on tingueu cartes i vulgueu tenir un registre. Recordeu que aquest document és de publicació gratuïta, no es permet l’ús comercial ni les modificacions exemptes. Espero que sigui un camí molt més extens de l'electrònica de codi obert. Així que anem al següent pas, les parts necessiten!

Pas 1: les parts

Les Parts
Les Parts
Les Parts
Les Parts
Les Parts
Les Parts

Per fer aquest projecte, hem de tenir: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * Lector RFID ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 $ * Breakout del lector RFID https://www.sparkfun.com/products/8423 0,95 $ * LCD bàsic de caràcters 16x2 5V https://www.sparkfun.com/products/790 16,95 $ * Motxilla LCD habilitada en sèrie https:// www. sparkfun.com/products/258 16,95 $ * LED RGB 5 mm https://www.sparkfun.com/products/105 1,95 $ * Buzzer https://www.sparkfun.com/products/7950 1,95 $ * Pin de capçalera i filferro Somes 5,00 $ aprox. En total, si compreu a la botiga Sparkfun, tot serà prop de 150 dòlars. Si viviu a Amèrica Llatina, us recomanaria comprar les peces a www.olimex.cl, és una botiga d’electrònica xilena molt bona.

Pas 2: el muntatge

El muntatge
El muntatge
El muntatge
El muntatge
El muntatge
El muntatge

Poques connexions a fer, que expliquen breument. En el cas dels LED RGB, el pin vermell ha d’estar al pin 9 de l’Arduino, el pin verd ha d’estar al pin 8 d’Arduino i el pin blau ha de ser al pin 7 de l’Arduino. Per a l'ID-20, heu de connectar els pins següents, tal com s'indica a la taula, en l'ordre respectiu, el lector de pins al pin Arduino: PIN ID-20 a pin Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - BUZZER PIN 11 - 5V I, finalment, per al connector LCD de sèrie només serà necessari per als pins de 5v i GND de l'Arduino, mentre que el pin LCD Serial RX passa al pin 11 de l'Arduino.

Pas 3: Programació de l'Arduino Yun

Programació de l'Arduino Yun
Programació de l'Arduino Yun

Per tal de fer el nostre projecte, hem de començar amb la part del programari, instal·lar alguns fitxers al nostre Arduino opkg Yun:

  • Servidor MySQL
  • PHP5
  • MySQLdb per a Python 2.7
  • Mod de PHP5 a MySQL

Recordeu que per defecte a Bridge ve instal·lat Python 2.7, de manera que no cal instal·lar mai cap actualització per a això. Comenceu a registrar SSH atreviu-vos a entrar al nostre Arduino Yun; un cop els hàgiu iniciat, escriviu l'ordre següent per actualitzar la llista d'aplicacions opkg:

actualització opkg

Pas 4: Instal·lació de MySQL

Instal·lació de MySQL
Instal·lació de MySQL

Ara establirem la instal·lació i configuració del servidor MySQL, escriviu les ordres següents a la consola:

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

Un cop hàgiu acabat d’introduir els nostres codis i iniciar el servidor MySQL, heu de configurar la base de dades que manipularà. Però abans de començar a escriure els codis, hem d’entendre els camps que contenen la nostra taula. El tauler estarà format per 5 cursos, 'id', 'name', 'name', 'email', 'rfid' per comercialitzar alguns d'ells. Donaré una breu explicació del seu ús.

  • 'id': serà el camp o l'atribut int columna que ens indicarà el número assignat a l'ID d'usuari, aquest número és assignat per la mateixa base de dades i serà la manera d'indexar els nostres registres.
  • "nombre": la columna de l'atribut serà "varchar", que es pot indicar amb el nom amb el qual s'identifica l'usuari de la nostra targeta.
  • 'apellido': la columna de l'atribut serà 'varchar', es pot indicar amb el cognom amb el qual el nostre usuari està associat.
  • 'correo': és la columna d'atribut 'varchar' que contindrà el correu electrònic de l'usuari associat.
  • 'rfid': és la columna d'atribut 'varchar' que contindrà el codi de la targeta RFID que utilitzeu.

(Utilitzaré les variables en castellà, perquè és el meu idioma nadiu i m'agrada c:) Ara podem configurar la nostra base de dades sense problemes, per tant creem una trucada 'arduino' MySQL. Heu d’escriure el codi següent:

mysqladmin -u root -p crea arduino

Demanem la contrasenya que vam introduir anteriorment a la instal·lació, l’enviarem per completar la creació de la base. Acabat tot això, introduïm la consulta a MySQL, haureu d'escriure el següent codi a la consola:

mysql -arrel -p

Novament us demanem la contrasenya, l’heu de tornar a enviar. Un cop a l’ordre de la consola MySQL, el punter ('mysql>') hauria d'aparèixer a punt per escriure. El primer que farem és moure la base perquè les dades 'arduino' hi treballin. Això es fa escrivint l'ordre següent a la consola MySQL:

Feu servir arduino

Creiem que la taula de noms "usuariosrfid" de la base de dades s'utilitzarà per a aquest projecte, escriviu aquest codi a la consola MySQL:

  1. CREA LA TAULA `usuariosrfid` (
  2. `id` int (255) NO NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) NOT NULL,
  4. `apellido` varchar (300) NO NUL,
  5. `correo` varchar (300) NO NUL,
  6. `rfid` varchar (300) NO NUL,
  7. CLAU PRIMÀRIA ("id")
  8. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Recordeu que en prémer la tecla ENTER al final de la línia d'ordres a la consola MySQL, no s'executarà fins que no trobeu el símbol ';' Per tant, al final del codi hi ha ';' Per completar la instal·lació i configuració de MySQL, omplim alguns camps de prova de la nostra base. Escriviu les línies següents:

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

Ara continueu amb la creació de la taula "ControlUsuarios", que allotjarà tots els codis RFID que passen pel lector, aquesta taula consta de 3 camps, "id", "rfid", "data".

  • 'id' és el camp o l'atribut int column que contindrà l'identificador de cada registre per indexar.
  • L'atribut "rfid" és la columna "varchar" que conté el codi de l'etiqueta RFID que el lector ha llegit.
  • 'data' és la columna d'atribut 'varchar' que contindrà la data en què es va llegir la targeta.

Per crear la taula "ControlUsuarios", introduïm el següent codi a la consola MySQL:

  1. CREA LA TAULA `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NO NUL,
  4. `fecha` varchar (300) NO NUL,
  5. CLAU PRIMÀRIA ("id")
  6. ) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Finalment, escriviu "exit;" a la consola per sortir de la consulta MySQL i tornar a SHH per poder començar amb PHP5.

Pas 5: Instal·lació de PHP5

Instal·lació de PHP5
Instal·lació de PHP5

Continueu amb la instal·lació i configuració de PHP5. Aquesta instal·lació és més fàcil que MySQL, de manera que no els hauria de costar res. Primer, instal·leu el paquet opkg des de la descàrrega i instal·lació d’Arduino Yun, així que escriviu la consola SSH d’Arduino:

opkg instal·la php5 php5-cgi

Un cop descarregat i instal·lat PHP5 al nostre Arduino Yun, hem configurat el fitxer arrel uHTTPd, el servidor http que porta Arduino per defecte, us recomano que utilitzeu aquest servidor http perquè és més versàtil i accessible en configuració, no són més difícils Apache o Lighttpd per configurar-lo quan sigui nou en aquest camp. Per configurar-ho, utilitzeu l'editor de fitxers 'vi' SSH, per a això haureu de tenir coneixements mínims per utilitzar aquest editor. Comenceu a escriure aquest codi a la consola per accedir al fitxer de configuració uHTTPd:

vi / etc / config / uhttpd

Premeu 'i' per editar el fitxer i aneu a la línia de codi que heu escrit '# list intèrpret. "php = / usr / bin / php-cgi" '. Heu de suprimir el caràcter "#" al principi de la línia i, a continuació, premeu la tecla d'escapament (tecla "ESC"), un cop estigueu llest, heu d'escriure l'ordre ": wq" per desar el fitxer i sortir del fitxer. Heu de reiniciar el servidor uHTTPd, per a això, heu d'escriure a la consola d'ordres de SSH el codi següent:

/etc/init.d/uhttpd reinicia

Pas 6: Instal·leu el Conector MySQL per a PHP5 i Python

Instal·lació del Conector MySQL per a PHP5 i Python
Instal·lació del Conector MySQL per a PHP5 i Python

Continueu amb la instal·lació i configuració dels mòduls per connectar la base de dades MySQL amb PHP i Python. Comencem pel connector PHP. Escriviu el codi següent:

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

Un cop llest, no caldrà reiniciar el servidor uHTTPd, llest per al seu ús immediat. Ara continueu amb el connector per a Python; per a això, heu d'introduir el codi següent:

opkg install python-mysql

Amb aquest darrer pas, tindrem el nostre Arduino Yun preparat per al nostre projecte amb el lector de targetes ID-20 RFID 125khz. Acabeu aquesta part amb els comentaris del que hem fet:

  • Vam instal·lar el servidor MySQL al nostre Arduino Yun i el vam configurar, acabant amb una inserció de dades de prova.
  • Instal·leu el complement PHP al nostre servidor.
  • Hem acabat amb la instal·lació i configuració del MySQL Connector tant per a PHP com per a Python.

Pas 7: codis

En aquesta àrea, discutim els codis de programació que s’utilitzaran per a aquest projecte. Sortim amb el codi Python, que es divideix en dos fitxers: 'comprobar.py', que es connectarà a la base de dades i buscarà Yun Arduino si el resultat hi és, i el fitxer 'control. py ', responsable de gravar qualsevol targeta llegida pel lector ID-20, sigui o no a la base de dades d'usuaris registrats. A continuació, continueu amb la descripció dels fitxers PHP, que són: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Per a aquests fitxers redundarem tots dos perquè són fàcils d'entendre. Finalment, acabeu amb el codi que pujarà com el nostre esbós Arduino.

Pas 8: fitxers Python

Fitxers Python
Fitxers Python

Com s'ha esmentat anteriorment, els nostres scripts Python funcionaven amb la biblioteca o classe "MySQLdb", que ja s'ha instal·lat anteriorment. Comenceu creant un fitxer amb ".py" anomenat "comprobar.py" al nostre editor, us recomano utilitzar aquests casos per programar a Python, l'editor Sublime Text 3, que podeu descarregar al seu lloc web www.sublimetext.com. Comencem per importar la biblioteca per connectar-nos a la nostra base de dades MySQL, la biblioteca "sys" que ens permetrà comunicar-nos amb el nostre Arduino Yun:

  1. importar MySQLdb
  2. importar sistemes

Un cop importades aquestes llibreries o classes, afegim variables al vostre codi, que seran les dades de connexió de la nostra base de dades MySQL, òssia:

  1. host = "127.0.0.1" # correspon a l'adreça del nostre servidor MySQL.
  2. user = "your-seat" # és l'usuari de la nostra base de dades.
  3. passw = "la vostra contrasenya" és per a la contrasenya de l'usuari. base = "arduino" # Aquest és el nom de la base de dades que utilitzeu.

Ara comenceu pels codis de seqüència base:

  1. mentre que és cert:
  2. db = MySQLdb.connect (amfitrió, usuari, passw, base)
  3. cur = db.cursor ()
  4. resultat = cur.execute ("" "SELECCIONA * DE usuarisrfid WHERE rfid LIKE% s ORDER BY id" "", (sys.argv [1],))
  5. if (resultat == 1):
  6. imprimir 1
  7. sys.exit (1)
  8. en cas contrari:
  9. imprimir 2
  10. sys.exit (1)

Si ens adonem, en el judici 'cur.execute result = ("" "SELECCIONA * DES D'ON rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' per executar la nostra consulta compareu la variable '(sys.argv [1])' que és el codi de la targeta RFID Arduino amb totes les dades de camp 'rfid' taula 'usuariosrfid', que, trobant el codi d'igualtat de l'arduino i els codis o emmagatzemats a la base de dades, tornar 1, si això no és cert i no hi ha igualtat entre el codi de l'arduino i alguns de la base, tornarem 2. Aquests números els rebrà l'Arduino. Continuem amb el següent fitxer 'control.py. Aquest fitxer funciona de la mateixa manera que l'anterior, només conservant un regust a la taula; aquests registres guardats els recollirà el lector ID-20 connectat al nostre Arduino Yun, de manera que podem mantenir tots els usuaris registrats que utilitzin el nostre lector RFID.

Pas 9: fitxers PHP

A continuació, procediu amb els fitxers. "Php" que mantindrà la carpeta del nostre servidor, per fer-ho recordeu que és necessari que aquests fitxers un cop llestos, es guardin al skit del nostre projecte, que genera automàticament l'IDE Arduino, també heu de recordar-ho, tot i que anticipo això, que quan pugem al nostre esbós Arduino Yun, el carregem per Wi-Fi, així que el deixo a la mateixa pàgina del manual Arduino, www.arduino. cc / ca / Guide / Arduino Yun # toc14, que explica més sobre això, i com heu d'anar preparat la targeta MicroSD per a aquest tipus de projecte on els fitxers s'han d'emmagatzemar al servidor. Els fitxers PHP seran 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php "consulta.php", "configuracion.php", que estarà enllaçat amb l'altre, per mantenir un menú bàsic sempre en execució i accessible. Simplement expliqueu el fitxer 'configuracion.php', que funciona com a connector amb la nostra base de dades. Al nostre editor, programem el següent codi al fitxer:

  1. <? php
  2. / / Servidor de dades i base de dades
  3. $ server = "localhost";
  4. $ username = "el vostre seient";
  5. $ password = "contrasenya";
  6. $ database_name = "arduino";

Aquestes són les dades que necessitem per connectar-nos a la nostra base de dades a l’arduino seran les mateixes que fem servir als nostres scripts Python. Acabeu de programar la sentència connect, que utilitzava el nostre script:

  1. $ conexion = mysql_connect ($ server, $ username, $ password) or die ("Problemes per tractar d'establir la connexió");
  2. $ bd_sel = mysql_select_db ($ database_name) o mor ("Problemes a seleccionar la base de dades");
  3. ?>

Els altres fitxers s’adjunten.

Pas 10: Finalment, el programa de l'Arduino YÚN

Arribem a la part principal d’aquest tutorial, programant el nostre Arduino Yun, no hi ha detalls que ressaltaran tot el codi, ja que és bastant extens, només esmentem els següents punts importants:

  • El codi consta de 6 funcions principals i 13 funcions secundàries, que només són un suport per a l’ús de la pantalla LCD de sèrie.
  • S’importaran només tres classes, “SoftwareSerial.h”, amb la qual introduirem Serial Attached per connectar-nos amb l’ID-20 i la Serial LCD, la classe principal “Bridge.h” amb la qual farem la connexió entre Linux i ATMEGA32U4, i la classe 'Process.h' servirà per a processos de consulta a Linux.
  • Definiu només tres pins, que en facin servir d'altres, que siguin gratuïts.

S'adjunta el codi

Pas 11: Bon any nou

Continuo minuciosament per servir-vos i ajudar-vos a obtenir més informació sobre l'Arduino Yun. Deixeu tots els fitxers adjunts al final. Per als parlants de llengua espanyola, deixo aquest tutorial però en castellà amb els fitxers necessaris. Espero que tingueu un feliç any nou, gaudiu-ne i tingueu èxit aquest 2014!

Recomanat: