Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pous - Diseño de Un Sistema de Fichaje Autónomo para Aulas y Laboratorios
Pous - Diseño de Un Sistema de Fichaje Autónomo para Aulas y Laboratorios
Por último, se comentarán las futuras posibles mejoras del sistema, tanto en las fases
de programación, diseño y montaje, y se finalizará exponiendo las conclusiones
alcanzadas.
Finalment, es comentaran les possibles millores futures del sistema, tant en les fases
de programació, disseny i muntatge, i es finalitzarà exposant les conclusions
aconseguides.
Next, the programming will be treated, the Arduino IDE environment will be used,
making the code necessary for the operation of each of the functionalities of the final
product. In addition, an Application for Android developed using the MIT
(Massachusetts Institute of Technology) tool called AppInventor2 will be programmed
in parallel. Through this Application the attendance record will be enabled, the file will
be obtained and the name of the professor and subject of the record can be edited. As
for the electronic design. A shield plate will be created, which will be connected to the
Arduino, and will contain the electronic components necessary for the operation of the
system.
Next, the physical assembly and installation will be treated in a portable and portable
location, focusing on the problems that have been encountered and on the proposed
solutions.
Finally, the possible future improvements of the system will be discussed, both in the
programming, design and assembly phases, and will be finalized by presenting the
conclusions reached.
A la familia, la cual siempre confía en mí y son un pilar fundamental de mi vida, sin los
cuales todo este viaje no hubiera sido posible.
A mis amigos, con los que podía desconectar del trabajo y siempre están
apoyándome. Particularmente a Joaquín Gumbau Copoví por su ayuda en el apartado
financiero.
Por último, a mis compañeros de carrera, que tras 4 años más que compañeros ahora
son amigos para toda la vida. A todos, muchas gracias.
"La función de un buen software es hacer que lo
complejo aparente ser simple"
-- Grady Booch
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Índice
1. Introducción....................................................................................................................... 1
1.1 Objetivo del proyecto .............................................................................................. 1
1.2 Antecedentes............................................................................................................. 2
1.3 Motivación .................................................................................................................. 2
1.4 Requisitos del sistema............................................................................................ 3
2. Diseño y desarrollo electrónico ................................................................................... 3
2.1 Diseño de hardware y elección de componentes ............................................ 4
2.1.2 Módulo lector de tarjetas RFID / MIFARE ................................................... 6
2.1.3 Módulo reloj en tiempo real (RTC) ............................................................... 7
2.1.4 Módulo Bluetooth ........................................................................................... 10
2.1.5 Módulo para almacenamiento de la asistencia ...................................... 13
2.1.6 Batería del sistema ........................................................................................ 15
2.2 Conexión y pruebas en la placaboard .............................................................. 16
2.3 Diseño de PCB ........................................................................................................ 19
2.4 Desarrollo de software .......................................................................................... 24
2.4.1 Programación en Arduino ............................................................................ 24
2.4.2 Desarrollo aplicación Android con AppInventor2 ................................. 27
3. Manual de usuario .......................................................................................................... 35
4. Líneas futuras ................................................................................................................. 41
5. Presupuesto..................................................................................................................... 43
5.1. Costes de desarrollo y mano de obra ............................................................... 43
5.2. Costes de materiales ............................................................................................. 44
5.3. Valoración del presupuesto ................................................................................ 45
6. Conclusión ................................................................................................................... 46
7. Bibliografía ................................................................................................................... 47
8. Anexos .......................................................................................................................... 49
8.1. Anexo I: Programación Arduino IDE ................................................................. 49
8.2. Anexo II: Programación Appinventor2 ............................................................. 57
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Índice de figuras
Figura 1: Arduino Uno. Fuente:
https://www.google.com/search?q=Arduino+Uno&rlz=1C1CHBF_esES835ES835&sour
ce=lnms&tbm=isch&sa=X&ved=0ahUKEwixjJDswd_iAhUR9BoKHXwaAzsQ_AUIECgB
&biw=1680&bih=907#imgrc=beVctn8gXtURpM: ................................................................... 6
Figura 2: Módulo MFRC522.
Fuente:https://www.google.com/search?q=rfid+mfrc522&rlz=1C1CHBF_esES835ES83
5&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjzgdiggOHiAhULzhoKHTNrAOcQ_AU
IECgB&biw=1680&bih=907#imgrc=8ayrY-80t9EDKM: ........................................................ 7
Figura 3: Módulo DS1302. Fuente:https://www.dx.com/p/rtc-ds1302-real-time-clock-
module-for-Arduino-avr-arm-pic-smd-2062445#.XQAKWogza70 ...................................... 8
Figura 4: Vista anterior (izquierda) y posterior (derecha) RTC DS1307.
Fuente:https://es.aliexpress.com/item/I2C-RTC-DS1307-AT24C32-Real-Time-Clock-
Module-For-AVR-ARM-PIC/2037925259.html ....................................................................... 9
Figura 5: Módulo RTC DS3231. Fuente:https://e-radionica.com/en/rtc-module-
ds1307.html ................................................................................................................................. 9
Figura 6: Módulos HC-05 y HC-06.
Fuente:https://aprendiendoArduino.wordpress.com/tag/hc-05/ ........................................ 11
Figura 7: Divisor de tensión. Fuente:https://programarfacil.com/blog/divisor-de-tension-
en-Arduino-multiplica-tus-entradas-digitales/ ....................................................................... 12
Figura 8: Divisor de tensión pin RX del HC-06. Fuente: propia. ...................................... 13
Figura 9: Módulo microSD. Fuente: https://naylampmechatronics.com/modulos/104-
modulo-micro-sd-card.html ..................................................................................................... 14
Figura 10: shield Ethernet con lector microSD.
Fuente:http://www.maxelectronica.cl/shield-Arduino/4-Arduino-shield-ethernet-
w5100.html ................................................................................................................................ 14
Figura 11: powerbank para alimentación del sistema.
Fuente:https://www.discoazul.com/x-one-powerbank-2600mah-azul.html ..................... 15
Figura 12: Protoboard para comprobación. Fuente:
http://www.tecnovoz.es/CATEGORIA_131 .......................................................................... 16
Figura 13: Diagrama de conexión. Fuente: propia ............................................................. 18
Figura 14: Vista del esquemático de la PCB con proteus. Fuente: propia ..................... 20
Figura 15: Placa PCB cara bottom en Proteus. Fuente: propia...................................... 22
Figura 16: Placa PCB vista arriba. Fuente: propia. ............................................................ 23
Figura 17: Placa PCB vista perfil. Fuente: propia. ............................................................. 24
Figura 18: Selección de la placa Arduino. Fuente: propia. ............................................... 25
Figura 19: vista del Designer View de Appinventor2. Fuente:
http://ai2.Appinventor.mit.edu/ ................................................................................................ 27
Figura 20: Vista del Blocks View de la Appinventor2. Fuente:
http://ai2.Appinventor.mit.edu/ ................................................................................................ 28
Figura 21: Vista de la App en el dispositivo móvil. Fuente: propia. ................................. 29
Figura 22: Diagrama de flujo de botones de Blluetooth. Fuente: propia. ....................... 30
Figura 23: Lista de dispositivos vinculados al Móvil. Fuente: propia .............................. 31
Figura 24: Diagrama de flujo de la detección de las tarjetas. Fuente: propia. .............. 32
Figura 25: Diagrama de flujo de la función delay. Fuente: propia. .................................. 32
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Índice de tablas
Tabla 1: Comparativa entre Arduino Uno, Nano y Mega. Fuente:
https://www.Arduino.cc/en/products.compare (adaptado) ................................................... 5
Tabla 2: Características diferentes módulos RTC. Fuente: realización propia .............. 10
Tabla 3: Conexiones Bluetooth con Arduino. Fuente: propia ........................................... 13
Tabla 4: Conexiones de lso pines del sistema. Fuente: propia ........................................ 17
Tabla 5: Costes de componentes electrónicos ................................................................... 44
Tabla 6: Presupuesto total del proyecto............................................................................... 45
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
1. Introducción
En la actualidad la tecnología está presente en casi todos los lugares de nuestras
vidas. Esta nos ayuda y facilita gran cantidad de tareas, mejora el rendimiento y
clasificación en muchos ámbitos. La tecnología tiene una influencia muy importante en
la sociedad, y el desarrollo tecnológico ha ayudado a realizar avances en otra aéreas
importantes para la humanidad.
Una de las aplicaciones más importante del registro, es tener control e información
sobre la asistencia de un grupo de personas, ya sea en un ámbito laboral o
educacional como es nuestro caso. Este proyecto se basa principalmente en esta
premisa.
El proyecto requiere de una base de datos del fichaje o asistencia de las tarjetas
de los alumnos, con la finalidad de comparar el registro de fichaje con la lista de
alumnos para comprobar su asistencia. También, se requiere de una aplicación
Android para Smartphone para la gestión y obtención de la base de datos, el usuario
podrá configurar el nombre del archivo con la clase perteneciente a la lista de
alumnos, habilitar el registro, obtener el archivo o eliminarlo.
Por otro lado, el proyecto tiene también como objetivo fortalecer y enseñar
conocimientos relacionados con la electrónica que se estudiaron en el grado, pero con
un enfoque más práctico o cara al mundo laboral. Algún ejemplo seria, la
programación con Arduino, diseño y fabricación de PCB y programación de App para
Android.
1
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
1.2 Antecedentes
El control de la asistencia ha estado presente desde hace miles de años. Los seres
humanos siempre han querido controlar la cantidad de gente que acudía a un
determinado lugar, más aun si era de carácter profesional o restringido. Por ello en la
antigüedad en diferentes actos pasaban lista para entrar a actos de la nobleza o
simplemente para entrar a trabajar. Esto empezó a ganar importancia con la revolución
industrial, en la cual, con la entrada de las fábricas, debían tener un control de la gente
que entraba y salía de la misma. Así comenzó el sistema de fichaje que actualmente
utilizan las empresas en sus actividades profesionales.
Hoy en día, se han desarrollado métodos de fichaje como las tarjetas de banda
magnética, aplicaciones software y hasta mediante la huella dactilar del individuo, esto
por mencionar algún ejemplo.
1.3 Motivación
La principal motivación para realizar este proyecto ha sido la gran variedad de campos
de la electrónica que se podía trabajar al realizar este Trabajo Final de Grado.
También porque la mayor parte del proyecto está orientado para la práctica y
aplicación de conocimientos que durante el grado no se pudo profundizar. Otra
motivación es lo práctico que resulta el sistema y su posibilidad de poder implantarlo
en diferentes ámbitos, como el laboral ya que muchas empresas podrían interesarle
este tipo de sistema y más todavía con el reciente cambio del artículo 34 del Estatuto
de los Trabajadores que obliga a estas a llevar un registro de la jornada laboral de sus
trabajadores [2].
2
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
gran motivación para realizar este proyecto. El proyecto ha exigido poner en práctica y
dominar todos estos conceptos para aplicarlos conjuntamente de forma correcta.
Por último, el factor humano ha sido determinante como motivación por poder trabajar
con profesionales que se dedican continuamente a estas disciplinas y aprender de
ellos, tanto técnicos como profesores.
Necesidad de manejabilidad.
Facilidad de la interfaz de usuario, y registro automático de la asistencia.
Características técnicas del sistema.
3
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
2.1.1 Microcontrolador
El microcontrolador es un computador pequeño en un solo circuito integrado. Un
microcontrolador contiene una o más CPU (Central Processing Unit o Unidad Central
de Procesamiento) junto con memoria y periféricos de entrada / salida programables.
La memoria puede ser RAM, NOR flash u OTP ROM que se incluye a menudo en el
chip, así como una pequeña cantidad de RAM. Es el núcleo del sistema, se encarga
de manejar la información, procesarla y actuar respecto a su programación. Por lo
cual, todo microcontrolador necesita de una programa que le indique los procesos que
debe realizar. Con un mismo circuito es posible modificar la programación para realizar
diferentes tareas. El programa es editable por un programador, por tanto esto permite
al sistema ser modular y flexible [3].
Arduino es uno de las placas más utilizadas, a diferencia de otras marcas, porque no
necesita de hardware adicional (programador) para cargar el código en la placa, solo
necesita de un cable USB. Otro punto fuerte de esta plataforma es su IDE que utiliza
una variante simplificada de C++, lo cual resulta sencillo el aprendizaje del programa.
Por último, el diseño de las placas físicas de Arduino separa y ayuda al acceso a las
entradas/salidas del microcontrolador.
4
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
5
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Tras ver los criterios, se escoge el Arduino Uno, la cual es la placa más utilizada y
popular de las placas. También tiene librerías que para otras placas no están del todo
adaptadas.
Por el hecho de que Arduino es una hardware libre [4], existen muchas placas
clonadas, es decir que fabricantes ajenos a Arduino han desarrollado sus propias
placas, normalmente a precio inferior al original. Se pueden utilizar estas placas pero
hay que tener en cuenta que a lo mejor los componentes no son de la calidad de las
originales, ya que de este lugar se suele recortar para mejorar el precio.
6
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Cada tarjeta de la UPV posee un código MIFARE único, el cual está formado de 8
dígitos hexadecimales. Esto será reflejado por 4 bytes en el código. El sistema
registrará cualquier TUI de la UPV en la base de datos del sistema, para más tarde
comparar el código de cada alumno con los registrados. Esto se realiza de esta forma
porque por la ley de protección de datos no se puede obtener cada código MIFARE
relacionado con los alumnos para proteger sus datos personales.
Existen diferentes librerías libres para este tipo de módulo, desarrolladas por
miembros activos de la comunidad de Arduino, las cuales facilitan su programación.
Esta gran variedad de librerías es debido a la popularidad del sensor por sus diversas
opciones de compra disponible a bajos precios. El lector RFID utiliza una frecuencia de
13.56 MHz, que es la frecuencia que usan las tarjetas MIFARE y las TUI de la UPV.
Además, incluyen comunicación por UART, bus SPI y bus I2C. También es un sensor
de tamaño reducido idóneo para nuestra aplicación, por estas características del
módulo es el elegido para el sistema del proyecto.
7
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Los diferentes modelos de RTC contienen un cristal resonador, una batería para
mantener el tiempo, un chip para conseguir la fecha y hora, y demás componentes
electrónicos.
DS1302
DS1307
DS3231
Las principales diferencias entre los módulos se refieren al protocolo utilizado, tamaño
y tipo de memoria interna, dimensiones y consumo de energía. Los módulos DS1307 y
DS3231 utilizan el protocolo I2C, mientras que el DS1302 utiliza un protocolo serie. El
protocolo I2C utiliza 2 pines: el SDA (datos) y el SCL (reloj de sincronismo). El DS1302
utiliza tres pines: SCLK (Reloj de sincronismo), CE (Chip Enable - para habilitar la
transmisión de datos) e I / O (datos).
La gran diferencia es que el I2C señala el inicio y fin de la transmisión de datos por
medio de cambios en el estado lógico en los pines SCL y SDA. Básicamente, si SCL
es a nivel alto y hay una transición de alto a bajo en la SDA, el DS1307 / 3231
reconoce como inicio de la comunicación. Ahora bien, si SCL es a nivel alto y hay una
transición de bajo a alto en la SDA, el DS1307 / 3231 reconoce como el fin de la
comunicación.
El DS1302 dispone de una batería recargable que se carga mientras este alimentado
con una tensión externa, mientras que el DS1307 no dispone de ella. Además, el
DS1307 posee más RAM que el DS1302, también tiene una salida de onda cuadrada
programable. Para este proyecto solo se necesita la salida con la fecha y la hora.
8
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Por otro lado, el DS3231presenta una precisión mayor a sus hermanos, ya que
aumenta/disminuye menos de 1 segundo cada 5/6 días. Esto es gracias a un sensor
de temperatura (precisión de ±3ºC) incorporado en el DS3231 que es capaz de
compensar los cambios de temperatura en el ambiente. [7]
9
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Por otra banda, el sistema esta diseñado para funcionar autónomamente. El usuario
utilizará el sistema solo para obtener el registro de a asistencia y no actualizará la hora
del módulo de reloj, por lo costoso que seria la tarea de cargar el código cada vez.
Aunque en el código, como se verá más adelante, esta la opción de actualizar la hora.
Por todo lo expuesto anteriormente, se opta por el módulo DS3231 por su mayor
precisión respecto a los demás, ya que el usuario no debería actualizar la hora del
reloj hasta en un año que es cuando el reloj presentaría un error mayor de un minuto.
Aunque un minuto se podría considerar aceptable para el proyecto.
Para el reconocimiento de las tarjetas y gestión del fichaje se utiliza la aplicación móvil.
En la cual se podrá visualizar la ID de cada tarjeta detectada, enviar el archivo de
registro, eliminarlo o deshabilitar el registro, también cambiar el nombre del archivo
con el aula y profesor correspondientes a ese fichaje. Para obtener el registro se
necesita una comunicación entre el Arduino y el móvil, la cual se realiza mediante un
módulo bluetooth, ya que está presente en la gran mayoría de dispositivos móviles.
10
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Bluetooth HC-05
Bluetooth HC-06
Estos Módulos HC-05 y hc-06 son muy parecidos. La principal diferencia es que el
HC-05 puede funcionar en modo master y en modo slave, es decir, que puede ser
receptor de enlaces y además puede crear esos enlaces con otros dispositivos
bluetooth. Mientras el HC-06 únicamente puede ser esclavo (slave), por tanto solo
puede ser receptor de los enlaces. Otra forma de diferenciarlos y la más rápida es por
el aspecto físico externo, el HC-05 dispone de 6 pines mientras que el HC-06 dispone
de 4 pines. Los dos pines que tiene demás el HC-05 son para comandos específicos
del módulo, por ejemplo para programar el bluetooth mediante comandos AT. El pin
KEY debe estar en HIGH al encender el módulo. En el caso del HC-06 entra en modo
programación mientras no haya nadie conectado al bluetooth al encenderlo.
11
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Otro aspecto del módulo HC-06 a tener en cuenta es que funciona a 3.3V, en varias
fuentes de información se expone que podría funcionar igualmente con 5V pero se
hará como indica en las características del módulo que expresa su funcionamiento con
3.3V. Para ello, se debe realizar un divisor de tensión para adaptar la tensión de 5V
procedente de la salida TX del Arduino a los 3.3V requeridos por el pin RX del HC-06
del bluetooth.
El divisor de tensión es circuito que permite reducir una tensión de entrada a una
menor de salida para poder adaptarla a diferentes situaciones:
12
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Por último, se debe tener en cuenta que las conexiones RX/TX han de estar cruzadas,
es decir el TX del Arduino con el RX del bluetooth y viceversa.
Bluetooth Arduino
RX TX
TX RX
Una opción son los módulos SD O microSD. Por su menor tamaño, los microSD
suelen ser más utilizados, y como en este proyecto se tenía disponible una tarjeta
microSD, se escoge la microSD.
13
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Aunque estos módulos necesitan cableado aparte y programación extra. Por tanto se
probó utilizar una shield Ethernet para Arduino que incorpora el lector para microSD.
Esta shield es una placa de circuito impreso la cual incorpora todo el cableado y
programación necesaria para hacer funcionar la SD, también tiene pines en la cara
anterior para poder conectarse con el Arduino y pines hembra en la parte superior para
permiten realizar más conexiones. Por su sencillez y su precio asequible se elige para
el proyecto.
14
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
La batería irá conectada al pin Vin del Arduino. Este pin tiene una doble
función:
15
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Este método se utiliza para alimentar el Arduino con fuentes no reguladas de corriente
directa o conjunto de baterías AA o AAA. Es recomendable la alimentación mediante
este pin cuando las baterías proporcionan un voltaje de 6 V, porque no hay diodo de
protección que cause caídas de tensión [16]. Aunque la batería del departamento
proporciona 5V se ha comprobado que funciona correctamente.
16
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Para facilitar la visualización y el conexionado se expresa el uso de los pines con sus
correspondientes componentes en la siguiente tabla:
5 HC-06 TXD
17
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
18
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
El diseño de la PCB está programado con el software ISIS Proteus. El primer paso es
diseñar la base de la placa para que coincida con las medidas del Arduino Uno. Para
ello, se puede incluir una librería en la cual añade una placa en la vista PCB Layout.
En este proyecto se midió manualmente las medidas del Arduino Uno y se creó
manualmente la base de la placa, también se alinearon correctamente las tiras de
pines J1, J2, J3, J4.
Una vez se tiene la base se comienza a añadir el resto de componentes. Para ello, se
tiene que añadir el componente tanto en la parte del Esquemático como en el formato
PCB. Si no está disponible el paquete para PCB de un componente, se debe crear
manualmente siguiendo los siguientes pasos:
19
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Figura 14: Vista del esquemático de la PCB con proteus. Fuente: propia
20
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Módulo Bluetooth HC-06: se crea un paquete con las medidas del bluetooth
para evitar superposiciones con otros componentes y se le incorporan 4 pines
a una distancia de 1mm cada uno, la medida estándar para casi todos los
componentes.
Módulo RTC DS3231. Se crea un paquete con las medidas del DS3231 para
evitar superposiciones y se le incorporan 6 pines para su soldadura.
21
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Si durante el auto-router queda alguna pista sin realizar, se utilizan las vías
para hacer unos agujeros en la placa y mediante un cable soldado por la
cara superior o bottom se realiza la pista faltante.
22
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
23
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
El software elegido para este proyecto es Arduino IDE el cual permite la creación del
código para los diferentes Arduino, en este caso el Arduino Uno.
24
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
25
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
A continuación, se procede a explicar las funciones anteriores dentro del código del
programa Arduino IDE:
26
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Para el guardado de las IDs de las tarjetas se utilizan 3 funciones de usuario, las
cuales son void guardarRegistro(byte TarjetaAdmitida[4]), void activarSD() y void
desactivarSD(). La primera función abre y escribe en un archivo las IDS de las
tarjetas leídas, también escribe la fecha y hora del fichaje de la tarjeta junto a su ID.
Las otras dos funciones son para activar y desactivar la SD.
27
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
La vista del Designer view tiene 4 partes bien diferenciadas. Paleta de componentes
(palette), Visor (Viewer), Componentes (components) y propiedades (properties).
28
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
29
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
30
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
31
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
El specific time del anterior diagrama de flujo es un tiempo configurado como entrada
para la función delay para que diferentes aplicaciones puedan tener diferentes valores.
33
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Por último, se presentan las dos funciones restantes de la aplicación que son Obtener
registro de tarjetas (registro.txt) y Borrar registro de
tarjetas (registro.txt):
34
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
3. Manual de usuario
El manual de usuario es un documento que incluye los aspectos fundamentales de
una materia. Es decir, una guía que ayuda a entender el funcionamiento de programa
o proceso.
A continuación se explican los pasos que debe realizar el usuario para utilizar la
aplicación de forma adecuada:
Para vincular el dispositivo móvil al módulo HC-06 se debe seguir los siguientes pasos:
35
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
El siguiente paso será conectar el dispositivo móvil al módulo bluetooth HC-06 del
sistema para ello se debe seleccionar el botón Conectar Bluetooth, una vez aparezca
la lista de dispositivos vinculados, seleccionar FichajeBluetooth. Para facilitar la
comprensión se resalta en rojo los componentes a seleccionar.
Figura 31: Conexión bluetooth con el Figura 32: Selección del Módulo
módulo HC-06. Fuente: propia. bluetooth HC-06. Fuente: propia.
36
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
37
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
38
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
A continuación, se exponen las dos últimas funciones del sistema que son Obtener el
registro de tarjetas y Borrar el registro de tarjetas. Para ello, se debe seleccionar el
botón correspondiente a cada función y esperar el tiempo de la transmisión o borrado
del archivo, esto puede durar unos pocos segundos. Mientras se esté realizando estas
funciones los botones quedarán iluminados para indicar que se está en proceso.
Figura 36: Función obtener registro Figura 37: Función borrar registro de la
de la App Android. Fuente: propia. App Android. Fuente: propia.
Una vez enviado el archivo para poder visualizarlo en el Smartphone, se debe buscar
en el almacenamiento interno del mismo. Para ello, se debe entrar en el gestor de
archivos del dispositivo, ir al almacenamiento interno, bajar por debajo de las carpetas
del dispositivo móvil y buscar el archivo correspondiente. A continuación se muestra
paso a paso como buscar el archivo de forma gráfica. Hay que tener en cuenta que el
Smartphone utilizado para esta demostración es un Xaomi Redmi Note 5, esta
demostración puede cambiar dependiendo de casa de dispositivo móvil pero será
equiparable.
39
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Figura 41: Búsqueda archivo del Figura 40: Archivo del registro
registro en el almacenamiento encontrado con el nombre
interno. Fuente: propia. correspondiente. Fuente: propia.
40
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
4. Líneas futuras
En este apartado se trataran posibles mejoras que se puedan aplicar a este sistema
tanto en la parte de programación de Arduino, Appinventor o en el diseño y montaje de
la PCB. También se expondrán diferentes fallos del sistema tanto en el software como
en la parte hardware de la placa, para poder corregirlas en futuros proyectos. Además
se tratarán alternativas o mejoras del proyecto a partir del mismo.
Las mejoras en el software son las más importantes y más interesantes ya que tienen
un mayor potencial para mejorar la eficiencia del sistema. Esto es posible sin modificar
la placa PCB realizada porque el Arduino Uno todavía tiene disponible el puerto USB
para su conexión. Primero se expondrán las posibles mejoras en la App Android:
41
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Por lo tanto, se debería tener en cuenta estas mejoras y correcciones de errores para
los futuros proyectos.
42
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
5. Presupuesto
En esta sección se presenta el presupuesto de proyecto, contando con el coste de
diseño, desarrollo de sistema y coste de los materiales.
Concepto Importe
Salario mensual grupo 2 (Técnicos) 1647,32 €
43
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Componentes
Descripción Cantidad (ud.) Precio unitario (€) Importe(€)
Arduino Uno R3 1 8,29 8,29
Módulo Bluetooth
1 4,99 4,99
HC-06
Módulo RTC
1 2,25 2,25
DS3231
Lector RFID
1 7,99 7,99
MFRC522
Resistencia 1 kΩ 3 0,02 0,06
Tira de pines
7 0,12 0,84
hembra
Conector
alimentación 1 0,93 0,93
batería
Placa de circuito
1 4,55 4,55
impreso
Fabricación de
placa de circuito 1 16,53 16,53
impreso
Estaño para
1 0,047 0,94
soldadura (20g)
TOTAL: 59,56 €
44
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
Descripción Importe
Costes de desarrollo y mano de obra 2.581,28 €
Costes de materiales 59,56 €
TOTAL (Sin IVA) 2.640,84 €
IVA (21%) 554,57 €
PRESUPUESTO TOTAL 3.195,416 €
Tabla 6: Presupuesto total del proyecto.
45
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
6. Conclusión
Al desarrollar el proyecto se ha conseguido cumplir los objetivos propuestos: se ha
creado un sistema para la realización de la asistencia a aulas o laboratorios. El fichaje
se realiza bajo el sustento del software Arduino y la App Android, las cuales
interactúan de forma satisfactoria y realizan el fichaje adecuadamente. El archivo del
fichaje se puede obtener tanto por la vía del dispositivo móvil como por la microSD de
la shield Ethernet de Arduino.
Durante el proyecto han surgido algunos contratiempos que se han ido corrigiendo
poco a poco. Esto ha ayudado a ganar experiencia sobre todo en el campo de la
programación la cual requiere de esfuerzo e implicación, tanto en Arduino IDE como
en la programación de la App. También se ha conseguido conocimientos prácticos de
diseño y fabricación de placas PCB.
Este trabajo ha puesto todos los conocimientos de la carrera en juego para realizar el
proyecto, tanto la programación en Arduino, la programación de la App Android, la
electrónica utilizada, el diseño y fabricación de la placa PCB. Otros aspectos muy
otiles del proyecto son más los ambientados en el mundo laboral y profesional, como
enfrentarse a contratiempos, a plazos de entrega, problemas reales en el montaje, etc.
Esta experiencia es muy valiosa y útil para un recién titulado en ingeniería.
El coste del proyecto es considerablemente bajo, este sistema es muy válido como
alternativa para el fichaje de cualquier ámbito tanto académico como profesional, con
más motivo con la nueva ley (mayo de 2019) que obliga a las empresas a realizar el
fichaje de todos sus trabajadores. Aunque en futuros proyectos este presupuesto
podría ser todavía más económico, tanto por materiales más baratos o reducción del
tiempo de los plazos.
46
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
7. Bibliografía
[1] Google, <<Google,>> [En línea] Available:
https://www.google.com/search?rlz=1C1CHBF_esES835ES835&ei=Uf73XKLNEaeelwSx6pXAAg&q=regis
tro+definicion&oq=registro+definicion&gs_l=psy-
ab.3..0i70i249j0l8.4733.6885..7038...1.0..0.97.854.12......0....1..gws-
wiz.......0i71j0i67j0i67i70i249j0i203j0i20i263i70i249j0i20i263.cTWL69xFOc0 [Último acceso: 9 06 2019]
https://naylampmechatronics.com/blog/15_Configuraci%C3%B3n--del-m%C3%B3dulobluetooth-HC-06-
usa.html. [Último acceso: 11 06 2019].
47
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
2600mah-negro.html?gclid=Cj0KCQjwxYLoBRCxARIsAEf16-
sonQrSJVTlgjmccRxcFewGkLEBaZj2UUsJ2nLDDheEc6uRSmKKs94aAk5NEALw_wcB
48
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
8. Anexos
8.1. Anexo I: Programación Arduino IDE
En este Anexo se presenta el código utilizado para el proyecto en Arduino IDE. Es el
programa principal, Fichaje.ino:
//RST D9
//SDA(SS) D8
//MOSI D11
//MISO D12
//SCK D13
#include <SPI.h> // El modulo RC522 usa el protocolo SPI
#include <MFRC522.h> // Libreria para el MIFARE RC522
#include <EEPROM.h> // Para leer y escribir las UIDs de las tarjetas
a la EEPROM
#include <SD.h> // Libreria para SD
#include <SoftwareSerial.h>
#include <Wire.h> // El DS3231 se comunica por protocolo Wire
#include <RtcDS3231.h> / Libreria para el RTC DS3231
RtcDS3231<TwoWire> Rtc(Wire);
//#include "EEPROMAnything.h"
#define wipeB 3
#define RST_PIN 9 // Pin 9 para el reset del RC522
#define SS_RC522_PIN 8 // Pin 8 para el SS (SDA) del
RC522
#define SS_Eth_PIN 10 // Pin 10 para el chip W5100 del shield
Ethernet, fijo por la placa
#define SS_SD_PIN 4 // Pin 4 para el lector de micro SD del
shield Ethernet, fijo por la placa
MFRC522 mfrc522(SS_RC522_PIN,RST_PIN); // Crear instancia del
MFRC522
File miFichero;
void setup() {
Serial.print("compiled: ");
Serial.println(__DATE__ );
Serial.println(__TIME__);
Rtc.Begin();
/////////////////////////////////////////////////Configuración de la
hora del DS3231, utiliza la hora de
compilación//////////////////////////////////////////////////////////
// Una vez compilado la primera vez comentar este código para que se
quede la misma hora y fecha
/*
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
printDateTime(compiled);
Serial.println();
if (!Rtc.IsDateTimeValid())
{
// Common Causes:
// 1) first time you ran and the device wasn't running yet
// 2) the battery on the device is low or even missing
Serial.println("RTC lost confidence in the DateTime!");
// following line sets the RTC to the date & time this sketch was
compiled
// it will also reset the valid flag internally unless the Rtc device
is
// having an issue
Rtc.SetDateTime(compiled);
}
if (!Rtc.GetIsRunning()) {
Serial.println("RTC was not actively running, starting now");
Rtc.SetIsRunning(true);
}
RtcDateTime now = Rtc.GetDateTime();
if (now < compiled) {
Serial.println("RTC is older than compile time! (Updating
DateTime)");
Rtc.SetDateTime(compiled);
}
else if (now > compiled) {
Serial.println("RTC is newer than compile time. (this is expected)");
}
else if (now == compiled) {
Serial.println("RTC is the same as compile time! (not expected but
all is fine)");
}
*/
50
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////
Rtc.Enable32kHzPin(false);
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);
activarSD();
Serial.print(F("Inicializando tarjeta SD..."));
if (!SD.begin(4)) {
Serial.println(F(" fallo! Comprueba la tarjeta SD"));
Serial.println(F("Sin tarjeta SD no puedo continuar"));
} Serial.println(F("Éxito."));
desactivarSD();
ShowReaderDetails();
//fin del Codigo de Vaciado
Serial.println(F("Todo listo"));
Serial.println(F("Esperando tarjetas de alumnos"));
/////////////////////////////////////////////////////////////////////
////Bucle Loop Bucle principal////////////////////////////////
void loop() {
// Detectar tarjeta
successRead = getID();
cardReadbyRC522 = true;
delay(250);
if (registerMode == 1) {
51
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
cardReadbyRC522 = false;
while (BT.available()) {
characterBT = BT.read();
mensajeBT.concat(characterBT); // a menos que se reciba por Bluetooth
receivedBT = true;
}
receivedBT = false;
mensaje = mensajeBT; //hacer que el mensaje sea igual al mensaje
recibido por Bluetooth
while (Serial.available()) {
character = Serial.read();
mensaje.concat(character);
}
mensaje.trim();
if (mensaje == "actReg") {
if (registerMode == 0) {
registerMode = 1;
}
Serial.println(F("Registro activado"));
}
if (mensaje == "desactReg") {
if (registerMode == 1) {
registerMode = 0;
}
Serial.println(F("Registro DESactivado"));
}
if (mensaje == "regsend") {
mensaje = "";
Serial.print(F("Enviando el fichero registro.txt vía Bluetooth...
"));
activarSD();
miFichero = SD.open("registro.txt"); //Abierto para lectura
if (miFichero) {
while (miFichero.available()) {
BT.write(miFichero.read());
52
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
//BT.write("");
miFichero.close();
Serial.println(F("completado, enviando FinRegistro"));
//BT.write(F("FinRegistro"));
}
else {
Serial.println(F("error abriendo registro.txt"));
//BT.write(F("FinRegistro"));
}
desactivarSD();
}
if (mensaje == "regdelete") {
mensaje = "";
activarSD();
if (SD.exists("registro.txt")) {
Serial.print(F("Eliminando el fichero 'registro.txt'... "));
SD.remove("registro.txt");
}
else {
Serial.println("'registro.txt' no existe en la microSD.");
}
desactivarSD();
}
////////////////////////////////////////////////////////// Escribir
fecha y hora /////////////////////////////////////////////////////
void ShowReaderDetails() {
// Obtener la version de software del MFRC522
byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F("Version de Software de MFRC522: 0x"));
Serial.print(v, HEX);
if (v == 0x91) {
Serial.print(F(" = v1.0"));
}
else if (v == 0x92) {
Serial.print(F(" = v2.0"));
}
53
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
else {
Serial.print(F(" (desconocida, comprobar MFRC522 o comunicacion)"));
}
Serial.println("");
// Si se recibe 0x00 or 0xFF probablemente la comunicacion haya
fallado
if ((v == 0x00) || (v == 0xFF)) {
Serial.println(F("ATENCION: Fallo de comunicacion, esta bien
conectado el MFRC522?"));
while (true); // no ir mas alla si no hay lector de tarjetas
}
}
/////////////////////////////////////////////////////////////////////
////// On-Off SD
///////////////////////////////////////////////////////////
void activarSD() {
digitalWrite(SS_RC522_PIN, HIGH); //para desactivar el esclavo RC522
digitalWrite(SS_SD_PIN, LOW); //para activar el esclavo SD
}
void desactivarSD() {
digitalWrite(SS_SD_PIN, HIGH); //para desactivar el esclavo SD
digitalWrite(SS_RC522_PIN, LOW); //para activar el esclavo RC522
}
/////////////////////////////////////////////////////////////////////
////////Guardar tarjeta en
SD///////////////////////////////////////////////
54
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
char datestring[20];
snprintf_P(datestring,countof(datestring),PSTR("%04u-%02u-%02u
%02u:%02u:%02u"),now.Year(),now.Month(),now.Day()
,now.Hour(),now.Minute(),now.Second());// escritura de la fecha y
hora en la variable
Serial.println(datestring);
//guardado del acceso en la SD
activarSD();
miFichero = SD.open("registro.txt", FILE_WRITE);
if (miFichero) { // si existe la variable miFichero
Serial.print(F("Guardando en registro.txt..."));
miFichero.print(datestring); //fecha y hora 3231
miFichero.print(F("-"));
for (int i = 0; i < 4; i++) { //
if (TarjetaAdmitida[i] < 10) { //para anadir 0s a la izquierda si es
menor que 10 el numero
miFichero.print(F("0"));
}
miFichero.print(TarjetaAdmitida[i], HEX);// escritura ID en el
archivo
}
miFichero.print(F("-"));
miFichero.println(StructID.nameSt); //guarda el nombre
miFichero.close();
Serial.println(F(" Éxito!"));
}
else {
Serial.println(F("error abriendo registro.txt"));
}
desactivarSD();
}
///////////////////////////////////////////////////////////Poner 0S
antes si hay
huecos///////////////////////////////////////////////////////////////
//////////////
55
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
}
Serial.println(F(""));
for (int i = 0; i < 4; i++) { //
leadingZeros(readCard[i]);
Serial.print(readCard[i], HEX);// mostrar ID por puerto serie
}
Serial.println("");
56
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
57
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
58
Trabajo Final de Grado – Héctor Pous Casas
Diseño de un sistema de fichaje autónomo
para aulas y laboratorios
59
Trabajo Final de Grado – Héctor Pous Casas