Tabla de contenido:
- Paso 1: las piezas
- Paso 2: el montaje
- Paso 3: Programación del Arduino Yun
- Paso 4: instalación de MySQL
- Paso 5: Instalación de PHP5
- Paso 6: Instalación del Conector MySQL para PHP5 y Python
- Paso 7: Códigos
- Paso 8: Archivos Python
- Paso 9: Archivos PHP
- Paso 10: Finalmente, el Programa del Arduino YÚN
- Paso 11: ¡Feliz año nuevo
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
¡Hola amigos!
Bueno, como sabéis, en septiembre se estrena el nuevo escudo de Arduino, Arduino YUN. Este pequeño amigo tiene un sistema integrado Linux con el que podemos ejecutar cualquier cosa que se te ocurra (al menos hasta ahora). Si bien hay muy poca información sobre esta nueva placa, con salida en la guía que brinda la página de Arduino (que enlazaré más adelante), además de un poco de conocimiento de muchos Linux, se puede llevar a cabo un proyecto importante como un Control de Acceso. En esta ocasión te explicaré cómo hacer este proyecto, pero de una manera bastante particular a lo largo de nuestro Arduino. Esto funciona, gracias a un servidor de base de datos MySQL el cual se instalará en nuestro YUN, esta base de datos almacenará dos tablas, una para usuarios asociados a un RFID particular y otra tabla para llevar registros de todas las tarjetas que han pasado por nuestro lector. Si bien usamos lenguajes de programación PHP y scripts de Python para realizar algunas tareas básicas y trabajar con nuestros datos. Por otra parte, la sobrecarga del hardware, utilizamos un lector ID-20 junto a un LCD Serial de 16 caracteres, más un LED RGB que serán nuestros estados informantes. Podemos usar este control de acceso todo lo que se nos ocurra, modificar y agregar un relé u otra idea. Se puede usar en cualquier cosa en la que tenga tarjetas y desee un registro. Recuerde que este documento es de publicación gratuita, no se permite el uso comercial ni modificaciones exentas. Espero que sea un camino mucho más extenso de la electrónica de código abierto. Así que vamos al siguiente paso, ¡las fiestas necesitan!
Paso 1: las piezas
Para hacer este proyecto, necesitamos tener: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71.95 * Lector RFID ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34.95 * Lector RFID Breakout https://www.sparkfun.com/products/8423 $ 0.95 * LCD básico de 16x2 caracteres 5V https://www.sparkfun.com/products/790 $ 16.95 * Mochila LCD habilitada en serie 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 * Pin y cable de encabezado Somes $ 5.00 aprox. En total, si compras en la tienda Sparkfun, todo estará cerca de $ 150. Si vives en Latinoamérica, te recomendaría comprar las partes en www.olimex.cl, es una muy buena tienda chilena de electrónica.
Paso 2: el montaje
Pocas conexiones que hacer, se establecen brevemente explicar. Para el LED RGB, el pin del LED rojo debe estar en el pin 9 del Arduino, el pin del LED verde debe ir en el pin 8 de Arduino y el pin del LED azul debe estar en el pin 7 del Arduino. Para el ID-20 debe conectar los siguientes pines como se indica en la tabla en el orden respectivo, lector de pines al pin Arduino: Pin ID-20 al pin Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - BUZZER PIN 11 - 5V Y finalmente, para el conector Serial LCD solo serán necesarios los pines 5v y GND del Arduino, mientras que el pin LCD Serial RX va al pin 11 del Arduino.
Paso 3: Programación del Arduino Yun
Para el propósito de hacer nuestro proyecto, necesitamos comenzar con la parte del software, instalar algunos archivos en nuestro Arduino opkg Yun:
- Servidor MySQL
- PHP5
- MySQLdb para Python 2.7
- Mod de PHP5 a MySQL
Recuerda que por defecto en Bridge viene instalado Python 2.7, por lo que nunca necesitas instalar ninguna actualización para esto. Comienza a registrar SSH atrévete a ingresar a nuestro Arduino Yun, una vez que los iniciaste ingresa el siguiente comando para actualizar la lista de aplicaciones opkg:
actualización de opkg
Paso 4: instalación de MySQL
Ahora estableceremos la instalación y configuración de MySQL Server, ingrese los siguientes comandos en la consola:
- opkg instalar libpthread libncurses libreadline mysql-server
- sed -i 's, ^ datadir. *, datadir = / srv / mysql /, g' /etc/my.cnf
- sed -i 's, ^ tmpdir. *, tmpdir = / tmp /, g' /etc/my.cnf
- mkdir -p / srv / mysql
- mysql_install_db –-force
- /etc/init.d/mysqld inicio
- /etc/init.d/mysqld habilitar
- mysqladmin -u contraseña de root 'tu-nueva-clave'
Una vez que termine de ingresar nuestros códigos e inicie el servidor MySQL, debe configurar la base de datos que manipulará. Pero antes de comenzar a escribir los códigos, debemos comprender los campos que contienen nuestra tabla. El tablero estará compuesto por 5 cursos, 'id', 'name', 'name', 'email', 'rfid' para comercializar algunos de ellos daré una breve explicación de su uso.
- 'id': será el campo o atributo int columna que nos dirá el número asignado al User ID, este número es asignado por la misma base de datos y será la forma de indexar nuestros registros.
- 'nombre': la columna de atributo será 'varchar' puede estar indicada por el nombre con el que se identifica nuestro usuario de tarjeta.
- 'apellido': la columna de atributo será 'varchar' puede estar indicada por el apellido con el que está asociado nuestro usuario.
- 'correo': es la columna de atributo 'varchar' que contendrá el correo electrónico del usuario asociado.
- 'rfid': es la columna de atributo 'varchar' que contendrá el código de la tarjeta RFID que utiliza.
(Usaré las variables en español, porque es mi lengua materna y me gusta c:) Ahora podemos configurar nuestra base de datos sin problema, por lo tanto creamos un 'arduino' llamado MySQL. Debes escribir el siguiente código:
mysqladmin -u root -p crear arduino
Solicitamos la contraseña que ingresamos anteriormente en la instalación, la enviaremos para completar la creación de la base. Terminado todo esto, ingresamos la consulta a MySQL, debes ingresar el siguiente código en la consola:
mysql -root -p
Nuevamente te pedimos la contraseña, debes enviarla nuevamente. Una vez dentro del comando de la consola MySQL, el puntero ('mysql>') debería aparecer listo para escribir. Lo primero que haremos será mover la base para que los datos de 'arduino' funcionen en ella. Esto se hace escribiendo el siguiente comando en la consola MySQL:
USAR arduino
Creemos que la tabla de nombres 'usuariosrfid' en la base de datos se usará para este proyecto, escriba este código en la consola MySQL:
- CREAR TABLA `usuariosrfid` (
- `id` int (255) NOT NULL AUTO_INCREMENT,
- `nombre` varchar (300) NOT NULL,
- `apellido` varchar (300) NOT NULL,
- `correo` varchar (300) NOT NULL,
- `rfid` varchar (300) NOT NULL,
- CLAVE PRIMARIA (`id`)
- ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;
* Recuerde que al presionar la tecla ENTER al final de la línea de comando en la consola MySQL, no se ejecutará hasta que encuentre el ';' Por lo tanto, al final del código está ';' Para completar la instalación y configuración de MySQL, llenamos algunos campos de prueba dentro de nuestra base. Escriba las siguientes líneas:
- INSERT INTO `usuariosrfid` (` id`, `nombre`,` apellido`, `correo`,` rfid`) VALUES
- (1, 'Pedro', 'Suárez', '[email protected]', '1234a-12345-b-123c'),
- (4, 'Matías', 'López', '[email protected]', '987a-9876b-987c');
Ahora continuamos con la creación de la tabla 'ControlUsuarios', la cual albergará todos los códigos RFID que pasan por el lector, esta tabla consta de 3 campos, 'id', 'rfid', 'fecha'.
- 'id' es el campo o atributo int columna que contendrá el id de cada registro para indexar.
- El atributo 'rfid' es la columna 'varchar' que contiene el código de etiqueta RFID que el lector leyó.
- 'fecha' es la columna de atributo 'varchar' que contendrá la fecha en que se leyó la tarjeta.
Para crear la tabla 'ControlUsuarios', ingresamos el siguiente código en la consola MySQL:
- CREAR TABLA `ControlUsuarios` (
- `id` int (255) NOT NULL AUTO_INCREMENT,
- `rfid` varchar (300) NOT NULL,
- `fecha` varchar (300) NOT NULL,
- CLAVE PRIMARIA (`id`)
- ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;
Finalmente escriba 'salir'; en la consola para salir de MySQL Query y regresar a SHH para que podamos comenzar con PHP5.
Paso 5: Instalación de PHP5
Continúe con la instalación y configuración de PHP5. Esta instalación es más fácil que MySQL, por lo que no debería costarles nada. Primero, instale el paquete opkg desde la descarga e instalación de Arduino Yun, así que escriba en la consola SSH de Arduino esto:
opkg instalar php5 php5-cgi
Una vez descargado y PHP5 instalado en nuestro Arduino Yun, así configuramos el archivo raíz uHTTPd, el servidor http que trae Arduino por defecto, te recomiendo que solo uses este servidor http porque es más versátil y accesible en configuración, no Apache o Lighttpd son más difíciles para configurar cuando sea nuevo en este campo. Para configurar esto, utilice el editor de archivos 'vi' SSH, para ello debe tener conocimientos mínimos para utilizar este editor. Comience a escribir este código en la consola para acceder al archivo de configuración uHTTPd:
vi / etc / config / uhttpd
Presione 'i' para editar el archivo, luego vaya a la línea de código que ha escrito '# list interpreter. "php = / usr / bin / php-cgi" '. Debe eliminar el carácter '#' al principio de la línea, luego presionar la tecla escape (tecla 'ESC'), una vez que esté listo, debe escribir el comando ': wq' para guardar el archivo y salir del archivo. Debes reiniciar el servidor uHTTPd, para ello debes ingresar en la consola de comandos de SSH el siguiente código:
/etc/init.d/uhttpd reiniciar
Paso 6: Instalación del Conector MySQL para PHP5 y Python
Continúe con la instalación y configuración de los módulos para conectar la base de datos MySQL con PHP y Python. Comencemos con el conector PHP. Escriba el siguiente código:
- opkg instalar php5-mod-mysql
- sed -i 's,; extensión = mysql.so, extensión = mysql.so, g' /etc/php.ini
Una vez listo, no será necesario reiniciar el servidor uHTTPd, listo para su uso inmediato. Ahora continúa con el conector para Python, para eso debes ingresar el siguiente código:
opkg instalar python-mysql
Con este último paso, tendremos nuestro Arduino Yun listo para nuestro proyecto con el lector de tarjetas ID-20 RFID 125khz. Termine esta parte con comentarios de lo que hemos hecho:
- Instalamos el servidor MySQL en nuestro Arduino Yun, luego lo configuramos, terminando con una inserción de datos de prueba.
- Instale el complemento PHP en nuestro servidor.
- Terminamos con la instalación y configuración de MySQL Connector para PHP y Python.
Paso 7: Códigos
En esta área, discutimos los códigos de programación que se utilizarán para este proyecto. Nos vamos con el código Python, que está dividido en dos archivos: 'comprobar.py', que se conectará a la base de datos y buscará Yun Arduino si el resultado está en ella, y el archivo 'control. py ', responsable de registrar cualquier tarjeta que sea leída por el lector ID-20, esté o no en la base de datos de usuarios registrados. Luego continúe con la descripción de los archivos PHP, son: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Para estos archivos redundaremos ambos porque son fáciles de entender. Finalmente termine con el código que subirá como nuestro boceto de Arduino.
Paso 8: Archivos Python
Como se mencionó anteriormente, nuestros scripts de Python funcionaban con la biblioteca o clase 'MySQLdb', que ya está instalada previamente. Comienza creando un archivo con '.py' llamado 'comprobar.py' en nuestro editor, recomiendo usar estos casos para programar en Python, el editor Sublime Text 3, que puedes descargar en su sitio web www.sublimetext.com. Empecemos importando la librería para conectarnos a nuestra base de datos MySQL, la librería 'sys' que nos permitirá comunicarnos con nuestro Arduino Yun:
- importar MySQLdb
- importar sys
Una vez importadas estas bibliotecas o clases, agregamos variables a su código, que serán los datos de conexión de nuestra base de datos MySQL, hueso:
- host = "127.0.0.1" # corresponde a la dirección de nuestro servidor MySQL.
- user = "your-seat" # es el usuario de nuestra base de datos.
- passw = "su-contraseña" es para la contraseña del usuario. base = "arduino" # Este es el nombre de la base de datos que usa.
Ahora comience con los códigos de secuencia de comandos base:
- mientras que es cierto:
- db = MySQLdb.connect (host, usuario, contraseña, base)
- cur = db.cursor ()
- resultado = cur.execute ("" "SELECT * FROM usuariosrfid DONDE rfid LIKE% s ORDER BY id" "", (sys.argv [1],))
- si (resultado == 1):
- imprimir 1
- sys.exit (1)
- demás:
- imprimir 2
- sys.exit (1)
Si nos damos cuenta, en el juicio 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' comando para ejecutar nuestra consulta comparar la variable '(sys.argv [1])' que es el código de la tarjeta Arduino RFID con todos los datos de campo 'rfid' tabla 'usuariosrfid', que, al encontrar el código de igualdad del arduino y los códigos o almacenados en la base de datos, devuelve 1, si esto no es cierto y no hay igualdad entre el código del arduino y algo de la base, devolveremos 2. Estos números serán recibidos por el Arduino. Continuamos con el siguiente archivo 'control.py. Este archivo funciona de la misma forma que el anterior, solo manteniendo un regusto en una mesa, estos registros que ha guardado serán recolectados por el lector ID-20 conectado a nuestro Arduino Yun, por lo que podremos mantener a todos los usuarios registrados que utilicen nuestro lector RFID.
Paso 9: Archivos PHP
Luego proceda con los archivos. 'Php' que mantendrá la carpeta de nuestro servidor, para hacer esto recuerda que es necesario que estos archivos una vez listos, se guarden en el skit de nuestro proyecto, el cual genera automáticamente el IDE Arduino, también debes recordar, aunque te anticipo esto, que cuando subimos a nuestro boceto de Arduino Yun, lo subimos a través de Wi-Fi, así que lo dejo en la misma página del manual de Arduino, www.arduino. cc / es / Guide / Arduino Yun # toc14, que explica más sobre él, y cómo debe ir preparada la tarjeta MicroSD para este tipo de proyecto donde los archivos deben almacenarse en el servidor. Los archivos PHP serán 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', que estará hipervinculado al otro, para mantener un menú básico siempre activo y accesible. Simplemente explique el archivo 'configuracion.php', que funciona como un conector con nuestra base de datos. En nuestro editor, programamos el siguiente código en el archivo:
- <? php
- / / Servidor de datos y base de datos
- $ servidor = "localhost";
- $ username = "tu-asiento";
- $ contraseña = "contraseña";
- $ nombre_base_datos = "arduino";
Estos son los datos que necesitamos para conectarse a nuestra base de datos en el arduino, serán los mismos que usamos en nuestros scripts de Python. Termine de programar la declaración de conexión, que usó nuestro script:
- $ conexion = mysql_connect ($ server, $ username, $ password) or die ("Problemas al tratar de establecer la conexión");
- $ bd_sel = mysql_select_db ($ database_name) or die ("Problemas al seleccionar la base de datos");
- ?>
Los otros archivos están adjuntos.
Paso 10: Finalmente, el Programa del Arduino YÚN
Llegamos a la parte principal de este tutorial, programando nuestro Arduino Yun, ningún detalle resaltará todo el código ya que es bastante extenso, solo mencionaremos los siguientes puntos importantes:
- El código consta de 6 funciones principales y 13 funciones secundarias, que son solo un soporte para el uso de la pantalla LCD serial.
- Se importarán solo tres clases, 'SoftwareSerial.h', con la que ingresaremos Serial Attached para conectar con el ID-20 y Serial LCD, la clase principal 'Bridge.h' con la que haremos la conexión entre Linux y ATMEGA32U4, y la clase 'Process.h' servirá para procesos de consulta en Linux.
- Defina solo tres pines, que utilicen otros sean libres.
Se adjunta el código
Paso 11: ¡Feliz año nuevo
Continúo esto meticulosamente para servirte y ayudarte a obtener más información sobre Arduino Yun. Deje todos los archivos adjuntos al final. Para los hablantes de español, les dejo este tutorial pero en español con los archivos necesarios. ¡Espero que tengas un feliz año nuevo, disfrútalo y éxito este 2014!