Está en la página 1de 28

UNIVERSIDAD TECNICA DE AMBATO

DIRECCIN DE INVESTIGACIN Y DESARROLLO

SISTEMA DE AUTENTICACIN DE USUARIOS


DE AULAS Y LABORATORIOS BASADO EN
SOFTWARE Y HARDWARE LIBRE
CONTROLADO DESDE UNA PLATAFORMA
CLOUD COMPUTING

ENERO, 2016
pg. 1
INFORME

1.- TITULO:

SISTEMA DE AUTENTICACIN DE USUARIOS DE AULAS Y


LABORATORIOS BASADO EN SOFTWARE Y HARDWARE LIBRE
CONTROLADO DESDE UNA PLATAFORMA CLOUD COMPUTING.

2.- OBJETIVOS:

General:
-Implementar un sistema de autenticacin de usuarios de aulas y laboratorios basado
en software y hardware libre controlado desde una plataforma Cloud Computing

Especficos:
- Instalar un servidor LAMP en la Plataforma Cloud Computing.
- Definir la tecnologa de control de autenticacin para usuarios de aulas y
laboratorios.
-Analizar el tipo de comunicacin entre el hardware y software libre para el control de
autenticacin.

1. RESUMEN

En el presente informe, se describe la implementacin de un sistema de autenticacin


de usuarios de aulas y laboratorios, desarrollado en la Facultad de Ingeniera en
Sistemas, Electrnica e Industrial de la Universidad Tcnica de Ambato. La gestin y
registro de los usuarios est supervisado por una plataforma Cloud Computing, en la
que se ha implementado una base de datos que contiene la informacin asociada a la
autenticacin de usuarios. Adems, se ha empleado tecnologa de cdigo abierto con
grandes funcionalidades que permitirn una rpida y fcil integracin de nuevas
tecnologas de autenticacin de usuarios.

2. PALABRAS CLAVES:

Autenticacin, hardware libre, software libre, servidor LAMP.

pg. 2
3. Descripcin del Trabajo

La implementacin del sistema de autenticacin de usuarios de aulas y laboratorios se


desarroll en diferentes etapas:
- Implementacin de un servidor LAMP.
- Seleccin de las tecnologas de autenticacin de usuarios.
- Implementacin de un sistema de registro de usuarios en una base de datos.
- Programacin de indicadores asociado a la autenticacin de usuarios.

En los siguientes apartados, se describen las actividades desarrolladas en cada etapa.

Implementacin de un servidor LAMP

Un servidor LAMP, es un acrnimo de un conjunto de aplicaciones:


Linux+Apache+Mysql+PHP.

En primera instancia se debe instalar la versin ms actual de apache. En la


distribucin de Ubuntu se debe emplear el comando:

sudo apt-get install apache2 y

De esta manera la versin ms actual de apache se instalar en la mquina. El proceso


de instalacin es sencillo. Para que el servidor sea completo, se debe instalar un motor
de base de datos. Uno de los motores ms populares y sencillo de instalar., para ello se
debe digitar el comando:

sudo apt-get install mysql-server mysql-client

En esta parte, el usuario del servicio de base de datos deber elegir una contrasea que
le permita acceder en un futuro al servicio completo de Mysql, figura 1.

Figura 1: Introduccin de la contrasea de Mysql [1]

pg. 3
Para una mayor seguridad se debe introducir dos veces la misma contrasea.
Asimismo, se debe instalar el lenguaje PHP, para ello se emplear el comando

sudo apt-get install php5 y

De esta manera la aversin ms actual de PHP se instalar en el servidor. Cuando el


proceso de instalacin de los diferentes componentes haya finalizado, se deber
emplear el comando:

sudo /etc/init.d/apache2 restart.

Una vez que el servidor haya reiniciado las aplicaciones se ejecutarn con normalidad.
Adems, de haber instalado un motor de base de datos es necesario tener un
administrador de base de datos. Para este caso se emplear phpMyadmin a travs del
comando:

sudo apt-get install phpmyadmin

Una vez ejecutado el comando anterior, se debe elegir el tipo de servidor con la barra
espaciadora del teclado, figura 2.

Figura 2: Eleccin del servidor para phpMyadmin [1].

Una vez aceptado el servidor correcto, se debe dejar por defecto la opcin
dbconfig_common figura 3.

pg. 4
Figura 3: Configuracin de phpmyadmin [1].

De esa manera, el proceso de instalacin de phpmyadmin pedir que se introduzca una


contrasea. La cotrasea que se debe introducir es la misma que se utiliz para
configurar Mysql.
De esa manera quedar instalado phpmyadmin en el servidor de datos.
Para acceder a phpmyadmin se deber digitar en la ip del servidor seguido de
phpmyadmin, figura 4.

Figura 4. Acceso a phpmyadmin.


pg. 5
En este sentido, se crear una base de datos que en principio tendr dos tablas de registro
de informacin

Figura 5: Creacin de la base de datos y tablas.

El proceso de creacin de tablas de datos es fcil empleando el gestor phpmyadmin.

Seleccin de las tecnologas de autenticacin de usuarios.

Existen varias tecnologas y sistemas de autenticacin de usuarios, sin embargo, la presente


propuesta de investigacin impulsa el empleo de tecnologa de cdigo abierto.
De esta manera se ha realizado una comparacin entre las principales plataformas de
hardware libre que permitan una rpida integracin al servidor y motor de base de datos
empleado. Entre las principales plataformas de hardware libre para adquisicin de
informacin estn: Arduino, Raspberry Pi y Galileo de Intel. En los siguientes prrafos se
presenta informacin ms detallada sobre estas plataformas.

Arduino.

Es una plataforma de cdigo abierto que posee un hardware y software flexible. El


hardware permite una rpida escalabilidad a travs de sus diferentes mdulos, y su entorno
de programacin es muy flexible para operar en las diferentes distribuciones de sistemas
operativos como son Windows., MAC, Linux.

pg. 6
Asimismo, Arduino, est basado en microcontroladores ATMEGA 8 y ATMEGA 168 de
ATMEL. Por otra parte, los diagramas de los diferentes mdulos se encuentran publicados
bajo licencia Creative Commons, en este sentido, varios diseadores con experiencia en
circuitos pueden elaborar su propia versin del mdulo. El entorno de programacin de
Arduino es fcil de usar para principiantes y suficientemente prctica para usuarios
avanzados. El lenguaje se puede expandir a travs de libreras desarrolladas en C++,
basado en lenguaje AVR C [2]. En la figura 6, se muestra el modelo Arduino Uno, el ms
popular de esta plataforma.

Figura 6: Arduino UNO.

Raspberry Pi.

Es una unidad de cmputo, prcticamente es un mini computador de bajo costo con un


tamao similar al de una tarjeta de crdito. Es un dispositivo muy popular debido al
soporte que recibe por la comunidad de software libre. Adems, sus funcionalidades son
muy amplias ya que le permiten conectarse a varios perifricos como teclados, monitores,
mouse, dispositivos de audio. En la actualidad existen varios modelos de esta tecnologa,
en la figura 7, se muestra el modelo Raspberry Pi 2, que tiene las capacidades de un
ordenador de escritorio.
Asimismo, en esta placa electrnica se puede instalar un sistema operativo Linux que
permitir el desarrollo de casi cualquier aplicacin. En su interior se encuentra un
procesador ARM de 700Mhz de capacidad y una GPU capaz de decodificar vdeo a
1080p [3,4].

pg. 7
Figura 7: Raspberry Pi 2.

Intel Galileo

Es una placa desarrollada por Intel con una arquitectura compatible con Arduino,
integrado con un procesador propio de Intel el SoC X1000. El tamao de la placa es de
10 cm de longitud por 7 cm de ancho, en su interior se encuentran integrados conectores
USB, jumpers UART, un conector Ethernet, as tambin, el conector de alimentacin [5].
El diseo de Intel a travs de esta innovadora tarjeta llamada Galileo es optimizar el uso
de Arduino con un sistema operativo Linux. Lo que permitir expandir en gran manera
sus funcionalidades, normalmente Arduino puede conectarse con varios mdulos a travs
de las diferentes libreras como Ethernet, Wifi, EEPROM, SPI, Wire. Por otra parte, el
sistema operativo Linux le permite una compatibilidad muy elevada con aplicaciones que
pueden ser desarrolladas en Phyton, Node.js, SSH, Telnet [6]. En la figura 8, se muestra la
tarjeta Intel Galileo.

Figura 8: Intel Galileo Gen 2.

pg. 8
Las tecnologas asociadas al hardware libre evolucionan constantemente, en funcin de
las aplicaciones a desarrollarse se deber tomar en consideracin algunos aspectos que se
presentan en la siguiente tabla:

Tabla 1: Tecnolgias de Hardware Libre

Caractersticas Arduino Raspberry Pi Intel Galileo


Logotipo

Precio $ 29.00 $ 40.00 $ 89.00


Procesador Atmega 2560 ARM 11 Quark SoC
X1000
Clock Speed 16 Mhz 700 Mhz 700 Mhz
Memoria RAM 2 kb 256 Mb 256 Mb
Memoria Flash 32 kb-256kb SD Card 4 Gb SD Card
Memoria 1 4kb No No
EEPROM
Alimentacin 7-12 Vdc 5 Vdc 5 Vdc
Consumo 42 mA (0,3 W) 700 mA (3,5 W) 170 mA (0,85
W)
Puertos Digitales 14-54 14 14
Puertos PWM 6-14 No 6
Entradas 6-16 Ninguna 6
Analgicas
USB 1 Entrada 4, Perifricos 1, Entrada
Programador Arduino IDE Scratch, IDLE Arduino IDE,
Eclipse
SPI 1 1 1
Ethernet Shield 10/100 Mbps 10/100 Mbps
Salida de video No HDMI No
Salida de audio No HDMI, Analog No

pg. 9
En este sentido, el usuario podr elegir el equipo que ms se adapte a sus necesidades.
Para la presente propuesta se ha elegido emplear la plataforma Arduino, debido a sus
grandes prestaciones en el manejo de puertos digitales y anlogos. Asimismo, un punto
a tener en consideracin es que el control y supervisin estar desarrollado en una
plataforma Cloud Computing. De esa manera en el control de autenticacin no es
necesario tener un mini computador con sistema operativo.
Asimismo, la plataforma Arduino cuenta con varios modelos de tarjetas electrnicas.
En el desarrollo de la propuesta se emplear el modelo Arduino Mega 2560, en
funcin del nmero de puertos disponibles para la comunicacin con los diferentes
dispositivos para el sistema de autenticacin y el registro en una base de datos en la
plataforma Cloud Computing.

Implementacin de un sistema de registro de usuarios en una base de datos.

El sistema de registro de usuarios integra una tarjeta electrnica de la plataforma


Arduino basada en el microcontrolador Atmega 2560. Asimismo, esta tarjeta se debe
comunicar con la base de datos que se implement en la plataforma Cloud Computing.
La tecnologa asociada al registro de usuarios es variada, entre las principales se
encuentran: autenticacin de usuarios a travs de tarjetas RFID, a travs de un lector
de cdigo de barras o con reconocimiento facial.
Las tecnologas de autenticacin de usuarios asociadas a los sistemas de lectores de
cdigos de barras o sistemas de reconocimiento facial son sistemas que proveen su
propio software que es de uso comercial, impidiendo su acceso para futuras
modificaciones al no ser un software de cdigo abierto.

Los sistemas de autenticacin por tecnologa RFID alcanzan grandes funcionalidades


en funcin de su bajo costo de implementacin y su operacin es muy sencilla. En este
sentido existen varias experiencias que se han desarrollado para el control e
identificacin de personas o cosas en diferentes entornos. De esta manera en [7], se
desarroll un sistema de censado e identificacin inalmbrico de equipajes de un
aeropuerto en Pereira. En este novedoso sistema aparte de la tecnologa RFID, se
integra el estndar de comunicaciones Zigbee, permitiendo as, que el sistema pueda
adaptarse a las necesidades del entorno de trabajo y a las necesidades del usuario.
Por otra parte, en [8], se presenta un sistema de monitoreo de legumbres
especficamente lechugas. El sistema monitorea principalmente las condiciones de
temperatura y humedad a las que est expuesto este producto en el trayecto
invernadero nevera supermercado. La implementacin de este sistema ha permitido
que las cadenas de supermercados cuenten con un historial de la frescura del producto
que se expende, asimismo, controlar las condiciones del entorno para que el producto
se encuentre en ptimas condiciones.

En el desarrollo de la presente propuesta se emplear la tecnologa RFID para el


control de autenticacin de usuarios por su gran popularidad y su fcil y rpida
operacin. Adems, es una tecnologa muy flexible, integrando varias tecnologas para
la comunicacin con diferentes dispositivos que pueden ser empleaos en varias
aplicaciones.

pg. 10
El sistema de registro de usuarios se realizar integrando un lector de tarjetas RFID,
controlado desde una tarjeta de la plataforma Arduino conectado a la base de datos a
travs del mdulo Ethernet, figura 9.

Figura 9: Dispositivos que integran el sistema de registro de usuarios.

El sistema en implementacin permitir que los usuarios puedan registrarse en forma


directa al pasar la tarjeta por el lector RFID. En prrafos anteriores, se mencion el
empleo de una tarjeta Arduino Mega 2560 por sus elevadas prestaciones al momento
de realizar la comunicacin entre el lector RFID y la base de datos. De esa manera se
realizaron varias pruebas para obtener el registro de las tarjetas RFID en la base de
datos, los mismos que se detallan a continuacin.

En primera instancia, se analiz el tipo de comunicacin que posee el lector RFID-RC


522. El mdulo utiliza 3.3V como tensin de alimentacin y es controlado a travs del
protocolo SPI por lo que es compatible con casi cualquier microcontrolador Arduino.
Este circuito es utilizado para comunicaciones inalmbricas a 13.56 Mhz para escribir
o leer datos de aplicaciones de bajo consumo de energa, bajo costo y tamao reducido
[9].

En la tabla 2, se presenta la conexin del mdulo RFID-RC 522 con los pines de la
tarjeta Arduino.

pg. 11
Tabla 2: Conexin del mdulo RFID-RC522 con Arduino

Mdulo RFID-RC522 Arduino UNO Arduino LEONARDO Arduino MEGA 2560

SDA Digital Pin #10 Digital Pin #10 Digital Pin #53

SCK Digital Pin #13 ICSP Pin # 3 Digital Pin #52

MOSI Digital Pin #11 ICSP Pin # 4 Digital Pin #51

MISO Digital Pin #12 ICSP Pin # 1 Digital Pin #50

IRQ N/A N/A N/A

GND Power GND Power GND Power GND

RST Digital Pin #5 ICSP Pin # 5 Digital Pin#5

3.3 V Power 3.3 V Power 3.3 V Power 3.3 V

De la tabla 2, se puede apreciar que existen varias formas de conectar el lector RFID-
RC522 con las diferentes versiones de Arduino, esto es por los diferentes
microprocesadores que integran estas tarjetas.

La correcta lectura de los cdigo RFID se realiza empleando las conexiones antes
mencionadas. En este caso se emplean las conexiones del Arduino MEGA 2560, en el
anexo 1, se presenta el cdigo desarrollado para la lectura, es necesario aclarar que el pin
RST est definido en el pin 9 del Arduino. Este cambio en la conexin ser detallado ms
adelante.

Una vez compilado y cargado el cdigo en el microcontrolador, este puede realizar la


lectura de los diferentes tags RFID, comprobando as que la lectura es correcta se puede
proceder al registro de los cdigos en la base de datos.

El registro de los cdigos RFID se realizar empleando el mdulo Ethernet propio de


Arduino, este mdulo integra el chip Wiznet 51000 y un conector RJ45 [10]. Este mdulo
es apilable, es decir se puede colocar sobre el Arduino sin dificultades, adems posee una
ranura para una tarjeta de memoria SD, figura 10.

pg. 12
Figura 10: Conexin del mdulo Ethernet Shield con Arduino Mega 2560.

Es necesario indicar que el mdulo Ethernet ocupa el pin 4 para la comunicacin con la
tarjeta SD. En este proyecto no se utilizar una tarjeta de memoria, permitiendo que el pin
4 se puede utilizar para conectar otro dispositivo que se mencionar ms adelante.
En la programacin del microcontrolador Arduino con el mdulo Ethernet se debe incluir
la librera Ethernet. Asmismo, el usuario deber definir la direccin IP del servidor donde
tiene instalado la base de datos, deber definir adems una direccin IP para que el
Arduino pueda establecer la comunicacin con el servidor.
El mdulo Ethernet de Arduino trae marcada en su parte posterior la direccin MAC propia
del mdulo.
En el anexo 2, se presenta el programa que permite el registro de los cdigos RFID en la
base de datos.
El registro en la base de datos se realiza empleando el mtodo GET que permite el envo de
datos a travs de Internet. El mtodo GET es empleado normalmente en el envo y registro
de formularios.
En el lenguaje de programacin de Arduino, se debe emplear la sentencia:
client.print("GET /registros/iot.php?codigo="). En esta lnea, se debe especificar la ruta
de un archivo.php guardado en el servidor que permite el registro en la base de datos.
En la base de datos se debe configurar una tabla con campos que permitan identificar de
manera clara la informacin registrada por parte de los tags RFID.
La sentencia utilizada por Arduino para el registro de los cdigos RFID en la base de datos
permiten identificar la ruta que debe seguir la informacin para su registro. En este sentido,
se puede observar una carpeta llamada registros, esta carpeta est instalada en el servidor
donde adems, se encuentran dos archivos, -config.php, iot.php- necesarios para insertar la
informacin en la base de datos [11].
El archivo config.php, permite establecer la conexin con la base de datos. Es decir en este
archivo, se deber insertar la ruta del host en caso de tratarse de una base de datos externa,
el nombre del usuario que se configur al momento de instalar phpmyadmin, asimismo, la
contrasea que fue establecida en phpmyadmin, y el nombre de la base de datos que
contiene a las tablas de registro, Anexo 3.

pg. 13
El archivo iot.php permite subir la informacin al servidor, con la programacin de
Arduino a travs del mtodo GET, Anexo 4.
El microcontrolador Arduino enva la informacin con el mtodo GET, empleando la
programacin PHP que conecta el microcontrolador con la base de datos del servidor a
travs del puerto 80.
Una vez que se ha realizado la correcta programacin de los archivos .php y del
microcontrolador Arduino, el registro debera realizarse con normalidad.

Programacin de indicadores asociado a la autenticacin de usuarios.

Con el registro funcionando con normalidad es necesario programar indicadores que


permitan al usuario identificar el correcto registro. Los indicadores que se han programado
son dos diodos led de colores rojo y verde que le permitirn al usuario conocer si su
registro se realiz correctamente.

Adems, para una mayor referencia se ha configurado una pantalla Lcd de 16x2 en la que
se desplegar el nombre del usuario en caso de estar registrado en la base de datos, figura
11.

Figura 11: Pantalla LCD 16x2 compatible con Arduino.

En la tabla 3, se presenta las conexiones de los diferentes indicadores con los pines del
microcontrolador Arduino MEGA 2560.

Tabla 3: Especificacin de los pines de conexin con Arduino MEGA 2560

Arduino MEGA 2560 Lector RFID-RC522 Pantalla LCD 16x2

Power 3.3V Power 3.3V -

Power 5V - Pin 2 Vdd

Power GND Power GND Pin 1 Vss

Digital Pin #53 SDA -

Digital Pin #52 SCK -

Digital Pin #51 MOSI -

pg. 14
Digital Pin #50 MISO -

No conectar IRQ -

Digital Pin #9 RST -

Digital Pin #2 - Pin 4 RS

Digital Pin #3 - Pin 6 Enable

Digital Pin #4 - Pin 11 Db 4

Digital Pin #5 - Pin 12 Db 5

Digital Pin #6 - Pin 13 Db 6

Digital Pin #7 - Pin 14 Db 7

Los LED's indicadores de color verde y rojo se conectan a los pines 8 y 13 del
microcontrolador Arduino respectivamente.
De la tabla 3, se puede notar que se ha utilizado los pines 1-7 del microcontrolador
Arduino MEGA 2560 para conectar los pines de los bits ms significativos de la pantalla
LCD.
Asimismo, en la programacin de Arduino se debe incluir la librera LCD propia del
lenguaje de programacin de Arduino.
La librera Ethernet de Arduino permite la escritura y lectura al mismo tiempo de la
informacin que se registra en la base de datos y as poder extraer la respuesta del registro
realizado en forma correcta.
En este sentido, la programacin en el archivo iot.php permite la verificacin de los
usuarios en funcin del registro establecido en la base de datos. Para ello se ha empleado la
sentencia:

$query2= "SELECT cod_rfid, nombre FROM control WHERE cod_rfid = '$codigo'";

La lnea indica una peticin a la base de datos en funcin del campo cod_rfid creado en la
base de datos. En la peticin, tambin se realiza una comparacin con la variable $_codigo
que es el cdigo rfid que ha ledo el microcontrolador Arduino. De esa manera, se realiza la
verificacin y el correcto registro de los usuarios.
Asimismo, el archivo iot.php, est programado para enviar una respuesta al
microcontrolador Arduino en forma directa que permitir desplegar el nombre del usuario
en la pantalla LCD. La lnea de programacin es sencilla, es una respuesta que se realiza en
lenguaje php con la lnea:

echo"valor=" .$row[1]. ";";

La lnea anterior es una respuesta en cdigo php, es decir, muestra la informacin


contenida en la variable $row. En este sentido, se debe considerar la estructura de la
variable $row al momento de establecer la respuesta con la funcin echo.
pg. 15
Por otra parte, la programacin en Arduino aprovecha la funcin .lenght que permite crear
una variable que soporta la cadena de caracteres de los nombres registrados en la base de
datos. Esa variable es del tipo vector y que a travs de la funcin lcd.print() propia de
Arduino. Adems, con la funcin lcd.setCursor(), se puede elegir la fila y la columna en la
que aparecen los caracteres de la pantalla lcd.
En la figura 12, se presenta el nombre de un usuario registrado en forma correcta y que se
despliega a travs de la programacin de Arduino. En el Anexo 5, se presenta el cdigo
final del sistema de registro y autenticacin de usuarios, adems se indica las lneas
empleadas para el despliegue del cdigo de regreso de la base de datos.

Figura 12: Visualizacin del cdigo de regreso en pantalla lcd con Arduino.

Conclusiones y Recomendaciones

Conclusiones:

El registro y autenticacin de usuarios integrado en la plataforma Cloud


Computing permite una mayor administracin de informacin con grandes
prestaciones.

La implementacin de un servidor basado en el sistema operativo Linux


incrementa en gran manera las funcionalidades del sistema de autenticacin de
usuarios, permitiendo una rpida integracin con nuevas tecnologas de
comunicacin.

El empleo de hardware y software libre permite una rpida escalabilidad del


sistema permitiendo un fcil integracin con diferentes dispositivos.

La comunicacin entre el sistema de lectura y la base de datos se realiza en


funcin de la programacin en lenguaje php.

pg. 16
Recomendaciones:

Utilizar las libreras propias de Arduino en la programacin de los diferentes


dispositivos.
Emplear conectores de alta calidad para los dispositivos y mdulos de Arduino.
Revisar adecuadamente los protocolos de comunicacin entre los mdulos de
Arduino y los diferentes dispositivos que se integran al sistema de
autenticacin.

Referencias bibliogrficas

[1] Drupal al Sur, Como instalar un servidor LAMP en Ubuntu 14.04 Disponible en
http://drupalalsur.org/apuntes/como-instalar-un-servidor-lamp-en-ubuntu-1404.
[2] Herrador Enrquez Rafael. Gua de usuario de Arduino. I.T.I Sistemas, Universidad
de Crdoba. Creative Commons Attribution-Noncommercial-Share Alike 3.0, 13 de
noviembre 2009.
[3] What us a Raspberry Pi? (2012, Octubre) IEEE Online. Disponible en:
http://ewh.ieee.org/reg/8/news/articles/sep06/literacy_test.html
[4] Raspberry Pi. (2012) Online. Disponible en: http://www.raspberryshop.es/[5] Intel
Corporation. Intel Galileo Board User Guide. Order Number 330 237 001 US. March
2014
[6] Intel Corporation. Intel Galileo Datasheet. Intel Corporation 2014.
[7] Vega Villafuerte Jaime, Diseo de un sistema para el sensado e identificacin
inlmbrica de equipajes para un aeropuerto. Universidad Tecnolgica de Pereira. 2015
[8] Gmez Arraz M., Diezma B. Correa E. C., Hinojosa A., Barreiro P., y Escalona V.
Registro y anlisis de temperaturas: productos IV gama del campo a la mesa. Universidad
de Chile, Centro de estudios Postcosecha. VIII Congreso Ibrico de Agroingeniera 1-3
Junio 2015.
[9] ELECTRONILAB, Ingeniera y Diseo Electrnico. Mdulo RFID RC522-13.56Mhz.
Online, disponible en: http://electronilab.co/tienda/modulo-rfid-rc522-13-56mhz-rc522-
s50-mifare-one/
[10] Arduino, Arduino Ethernet Shield, Overview. Online, disponible en :
https://www.arduino.cc/en/Main/ArduinoEthernetShiel
[11] Pres Mario. Geeky Theory, Internet de las Cosas [parte 2] Subir los datos a una
base de datos. Online disponible en: https://geekytheory.com/internet-de-las-cosas-parte-2-
subir-los-datos-a-una-base-de-datos/

pg. 17
ANEXOS

Anexo 1: Cdigo de lectura del Mdulo RFID-RC522.

#include <SPI.h>

#include <RFID.h>

#define SS_PIN 53 //cambiamos el pin del 10 al 7 para tener la comunicacion con el ethernet shield (ethernet shield ocupa el pin 10 y
4) En el Mega se cambia al pin 53

#define RST_PIN 9

int led1 =8;

int led2 =13;

RFID rfid(SS_PIN, RST_PIN);

int numero_serie[5]; // aqui guardaremos el nmero que nuestro sensor RFID detectar

//-----------------------------------------------variables, includes,funciones, etc-------------------------------------------------

void setup()

Serial.begin(9600);

SPI.begin();

rfid.init();

pinMode(8, OUTPUT);

pinMode(13, OUTPUT);

void loop()

leer_usuario();

void leer_usuario()

if (rfid.isCard())

if (rfid.readCardSerial())

Serial.print("Numero usuario: "); // guardamos el numero del usuario

for(int i=0; i<=4 ; i++)

numero_serie[i] = rfid.serNum[i];

pg. 18
for(int i=0; i<=4 ; i++) // y lo imprimimos

Serial.print(numero_serie[i]);

Serial.print(" ");

digitalWrite(led1, LOW);

digitalWrite(led2, HIGH);

Serial.println(" "); // espacio para el siguiente cdigo

delay(2000); // para que no se imprima constantemente el mismo numero

rfid.halt();

digitalWrite(led2, LOW);

digitalWrite(led1, HIGH);

pg. 19
Anexo 2: Cdigo de Arduino para el registro de cdigos RFID en la base de datos.

#include <Ethernet.h>

#include <SPI.h>

#include <RFID.h>

#define SS_PIN 9 //cambiamos el pin del 10 al 7 para tener la comunicacion con el ethernet shiel (ethernet shield ocupa los pines 10 y
4)

#define RST_PIN 6

RFID rfid(SS_PIN, RST_PIN);

int numero_serie[5];//aqui se guarda el numero que nuestro sensor RFID Detectara

int led1 =13; //led indicador de color verde

int led2 =8; // led indicador de color rojo

// Configuracion del Ethernet Shield

byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0xAB, 0x04}; // Direccion MAC

byte ip[] = { 172,21,123,210 }; // Direccion IP del Arduino

byte server[] = { 172,21,123,52 }; // Direccion IP del servidor

EthernetClient client;

//float temperatura=22.5;

void setup() {

Serial.begin(9600);

SPI.begin();

rfid.init();

Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield

delay(1000); // Esperamos 1 segundo de cortesia

void loop()

//llamamos la funcion leer usuario

if (rfid.isCard())

if (rfid.readCardSerial())

Serial.print("Numero usuario: "); // guardamos el numero del usuario

for(int i=0; i<=4 ; i++)

numero_serie[i] = rfid.serNum[i];

pg. 20
}

for(int i=0; i<=4 ; i++) // y lo imprimimos

Serial.print(numero_serie[i]);

Serial.print(" ");

Serial.println(" "); // espacio para el siguiente cdigo

digitalWrite(led1, HIGH); //enciende el led verde porque leyo el rfid

digitalWrite(led2, LOW); //apaga el led rojo por la lectura del rfid

delay(500); // para que no se imprima constantemente el mismo numero

Serial.println("Connecting...");

if (client.connect(server, 80)>0) // Conexion con el servidor

client.print("GET /registros/iot.php?codigo="); // Enviamos los datos por GET

for(int i=0; i<=4 ; i++) // y lo imprimimos

client.print(numero_serie[i]);

client.println(" HTTP/1.0");

client.println("User-Agent: Arduino 1.0");

client.println();

Serial.println("Conectado");

else

Serial.println("Fallo en la conexion");

if (!client.connected())

Serial.println("Disconnected!");

client.stop();

client.flush();

delay(2000); // Espero 5 seg antes de tomar otra muestra

Serial.print(" ");

pg. 21
}

rfid.halt();

digitalWrite(led2, HIGH); //enciende el led rojo xq no hay lectura

digitalWrite(led1, LOW); //apaga el led verde xq no hay lectura

pg. 22
Anexo 3: Cdigo del archivo config.php para la conexin de la base de datos.

<?php

$dbhost="localhost";

$dbuser="root";

$dbpass="reward15";

$dbname="Sensores";

$con=mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

?>

pg. 23
Anexo 4: Cdigo del archivo iot.php para el envo de datos con Arduino por el mtodo
GET.

<?php

require("config.php"); //llama al archivo config .php

$codigo=mysqli_real_escape_string($con, $_GET{'codigo'});

$query2= "SELECT cod_rfid, nombre FROM control WHERE cod_rfid = '$codigo'";

$result = mysqli_query($con, $query2);

$row=mysqli_fetch_array($result,MYSQL_BOTH);//guarda los registros de la consulta realizada

if($row){

$query="INSERT INTO registro(codigo) VALUES ('$codigo')";

echo"valor=" .$row[1]. ";";

mysqli_query($con, $query);

mysqli_close($con);

}else{

$error="error";

echo "valor=".$error.";";

?>

pg. 24
Anexo 3: Cdigo Arduino de registro y autenticacin de usuarios con indicador LCD
16x2.

#include <LiquidCrystal.h>

#include <Wire.h>

#include <SPI.h>

#include <Ethernet.h>

#include <RFID.h>

#define SS_PIN 53 //cambiamos el pin del 10 al 7 para tener la comunicacion con el ethernet shiel (ethernet shield ocupa los pines 10
y 4)

#define RST_PIN 9

LiquidCrystal lcd(2,3,4,5,6,7);

RFID rfid(SS_PIN, RST_PIN);

int numero_serie[5];//aqui se guarda el numero que nuestro sensor RFID Detectara

int led1 =13; //led indicador de color verde

int led2 =8; // led indicador de color rojo

// Configuracion del Ethernet Shield

byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0xAB, 0x04}; // Direccion MAC

byte ip[] = { 172,21,123,210 }; // Direccion IP del Arduino

byte server[] = { 172,21,123,52 }; // Direccion IP del servidor

EthernetClient client;

//Variables que neceita para funcionar

String codigo; //Aqu se almacena la respuesta del servidor

String nombre; //Aqu se almacena el nombre que recuperamos de MySQL

boolean fin = false;

boolean pregunta = true;

void setup() {

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

lcd.begin(16,2);

Serial.begin(9600);

SPI.begin();

rfid.init();

Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield

delay(1000); // Esperamos 1 segundo de cortesia

void loop() {

//Comprobamos si tenemos datos en el puerto serie

pg. 25
if (rfid.isCard())

if (rfid.readCardSerial())

Serial.print("Numero usuario: "); // guardamos el numero del usuario

for(int i=0; i<=4 ; i++)

numero_serie[i] = rfid.serNum[i];

for(int i=0; i<=4 ; i++) // y lo imprimimos

Serial.print(numero_serie[i]);

Serial.print(" ");

//lcd.print(numero_serie[i]);

//lcd.print(" ");

Serial.println(" "); // espacio para el siguiente cdigo

digitalWrite(led1, HIGH); //enciende el led verde porque leyo el rfid

digitalWrite(led2, LOW); //apaga el led rojo por la lectura del rfid

delay(500); // para que no se imprima constantemente el mismo numero

Serial.println("Connecting...");

// Comprobar si hay conexin

httpRequest();

// Con esta funcin hacemos la conecion con el servidor

int httpRequest()

if (client.connect(server, 80))

Serial.println("Conectado");

// Enviar la peticin HTTP

//Direccin del archivo php dentro del servidor

client.print("GET /registros/iot.php?codigo=");

for(int i=0; i<=4 ; i++) // y lo imprimimos

pg. 26
client.print(numero_serie[i]);

client.println(" HTTP/1.0");

client.println("User-Agent: Arduino 1.0");

client.println();

Serial.println("Coneccion cerrada");

else

// Si no conseguimos conectarnos

Serial.println("Conexin fallida");

Serial.println("Desconectando");

client.stop();

delay(500);

//Comprobamos si tenemos respuesta del servidor y la

//almacenamos en el string ----> codigo.

//lcd.clear();

rfid.halt();

digitalWrite(led2, LOW); //enciende el led rojo xq no hay lectura

digitalWrite(led1, LOW); //apaga el led verde xq no hay lectura

while (client.available())

char c = client.read();

codigo += c;

//Habilitamos la comprobacin del cdigo recibido

fin = true;

//Si est habilitada la comprobacin del cdigo entramos en el IF

if (fin)

// Serial.println(codigo);

//Analizamos la longitud del cdigo recibido

int longitud = codigo.length();

//Buscamos en que posicin del string se encuentra nuestra variable

int posicion = codigo.indexOf("valor=");

//Borramos lo que haya almacenado en el string nombre

pg. 27
nombre = "";

//Analizamos el cdigo obtenido y almacenamos el nombre en el string nombre

for (int i = posicion + 6; i < longitud; i ++)

if (codigo[i] == ';') i = longitud;

else nombre += codigo[i];

//Deshabilitamos el anlisis del cdigo

fin = false;

//Imprimir el nombre obtenido

Serial.println("Bienvenido: " + nombre);

lcd.print("BIENVENIDO");

lcd.setCursor(0,1);

lcd.print(nombre);

//Cerrar conexin

Serial.println("Desconectarn");

client.stop();

if (nombre.length()> 5 )

delay(200);

digitalWrite(led2, HIGH);

delay(200);

digitalWrite(led2, LOW);

delay(2000);

lcd.clear();

//else nombre += codigo[i];

//Borrar cdigo y salir de la funcin//Direccin IP del servidor

codigo="";

//return 1;

pg. 28

También podría gustarte