Condensadores Planos
Condensadores Planos
Condensadores Planos
INGENIERÍA DE
TECNOLOGÍAS DE
TELECOMUNICACIÓN
PROGRAMACIÓN DE
SISTEMAS
EMPOTRADOS Y DE
TIEMPO REAL
4º CURSO
FECHA: 05/04/2016
PROYECTO DE
CONTROL DE
ASISTENCIA IGNACIO JUSTICIA
RAMOS
1
Índice
1. INTRODUCCIÓN .................................................................................................. 2
2. TRABAJO TEÓRICO. TECNOLOGÍA RFID ................................................... 2
2.1. ¿Qué es la tecnología RFID? ..................................................................................... 2
2.2. Un poco de historia .................................................................................................... 3
2.3. ¿Cómo funciona? ....................................................................................................... 4
2.3.1. Etiquetas RFID ................................................................................................... 4
2.3.2. Lector RFID........................................................................................................ 6
2.3.3. Subsistema de procesamiento de datos o middleware RFID .............................. 7
2.3.4. Programadores RFID .......................................................................................... 8
2.4. Rangos de frecuencia ................................................................................................. 8
2.5. Comparación de RFID con otras tecnologías ............................................................ 9
3. TRABAJO PRÁCTICO. CONTROL DE ASISTENCIA ................................ 11
3.1. Funcionalidad y alcanzabilidad ............................................................................... 11
3.2. Arquitectura ............................................................................................................. 12
3.3. Descripción hardware .............................................................................................. 13
3.4. Desarrollo/Realización del proyecto ....................................................................... 16
3.5. Manual de usuario ................................................................................................... 18
4. CONCLUSIÓN ......................................................................................................... 20
5. BIBLIOGRAFÍA ...................................................................................................... 20
6. ANEXO ...................................................................................................................... 21
1. INTRODUCCIÓN
La principal ventaja de RFID en comparación con los códigos de barras es que estos
no poseen la capacidad de ser reprogramados y, además, la cantidad de datos de
información que caben en ellos es muy inferior (en comparación con los 2 Kbytes de
datos que consiguen almacenar las etiquetas RFID).
La tecnología RFID supone claramente una evolución tecnológica. Siguiendo con
la comparación entre los tradicionales códigos de barras y RFID, esta última incorpora la
notable mejora de que la visión directa entre las dos partes que se comunican no es
necesaria. Esto es posible gracias a la utilización de unos chips constituidos de silicio
situados en las tarjetas, que son los encargados de transmitir los datos que almacenan al
lector sin el requisito de visión directa entre la tarjeta y el lector. Por el contrario, los
códigos de barras necesitan la visión directa entre las dos partes, pues se basan en la
lectura mediante infrarrojos.
Probablemente su origen se remonta a los años 20, aunque parece que ya se empezó
a utilizar durante la Segunda Guerra Mundial, donde comenzó su uso para que los aviones
se identificasen como “amigos” ante sus propios efectivos. Hasta entonces en aquella
época, el uso del radar permitía la detección de aviones a kilómetros de distancia, pero no
su identificación. Así, el ejército alemán descubrió que si los pilotos balanceaban sus
aviones al volver a la base, cambiaba la señal de radio reflejada de vuelta. Este método
hacía distinguir a los aviones alemanes de los aliados y se convirtió en el primer
dispositivo de RFID pasiva.
Partiendo de esa idea, la cual hacía posible la identificación de objetos sin necesidad
de dos elementos activos en transmisión (sino uno solo, el situado en la base militar), con
el paso del tiempo y mediante un proceso de investigación se llegó al primer sistema
RFID. El sistema, que pertenecía a una empresa norteamericana, no fue comercializado
hasta finales de los años 70, y permitía la identificación de aviones y demás equipamiento
militar a distancia y sin la necesidad de visión directa entre el avión y el campamento
militar.
Los componentes que integran la tecnología RFID pueden resumirse en cuatro: las
etiquetas, los lectores de etiquetas, el software que procesa la información y los
programadores.
Las etiquetas o tags RFID son unos elementos pequeños y normalmente pasivos
que se incorporan en los objetos con que se quieran tratar. Estos elementos permiten
almacenar y enviar información a un lector mediante ondas de radio. Si por ejemplo
estuviésemos ante un sistema que tiene que identificar los productos del inventario de un
comercio, encontraríamos las etiquetas incorporadas en los mismos.
Como se puede apreciar en las dos siguientes imágenes, la parte que más espacio
ocupa de la etiqueta es la antena (en forma de espiral).
Las etiquetas actualmente tienen precios muy bajos, formas muy diferentes
(etiquetas adhesivas, disco de plástico, chapa PVC, ampolla de vidrio, cilindro de
plástico, llaveros, brazaletes, etc.) y dimensiones de hasta 0.4 mm2, por lo que están
preparadas para su integración en todo tipo de objetos. En la siguiente imagen se muestran
los principales tipos de etiquetas pasivas:
En cuanto a su pasividad, esta se refiere a que no necesitan alimentación eléctrica
interna. Es decir, las etiquetas son alimentadas por el dispositivo que escribe o lee en
ellas, lo cual es una gran ventaja. A ese dispositivo, que es activo, se le conoce como
lector RFID.
Aunque hasta ahora nos hemos centrado en las etiquetas pasivas, cierto es que
existen además otros tipos de etiquetas clasificadas según su fuente de energía: activas y
semipasivas (o asistidos por batería). Veamos las diferencias entre ellas:
Pasivas:
o No requieren batería o fuente de alimentación interna, sino que se alimentan
directamente del lector RFID.
o La señal respuesta tiene un tiempo de vida bastante corto y su radio de
emisión puede llegar como mucho a 6 metros.
o El punto anterior es una ventaja pues permite instalarlas en ambientes difíciles
(cerca del agua, lugares con poco espacio, etc).
o Son menos fiables.
o Son las más extendidas.
o Bajo coste (entre 10 céntimos y 1 euro).
Activas:
o Fuente autónoma de energía (por ejemplo, una pila).
o Son más fiables, pues tienen una tasa de error inferior a la de las pasivas.
o Capacidad para transmitir señales a mayor potencia.
o Pueden funcionar a distancias mayores (hasta varios kilómetros).
o Poseen una mayor sensibilidad a las señales que reciben que una etiqueta
pasiva.
o Vida útil más corta.
o Pueden integrar sensores: temperatura, vibración, luz, radiación, etc.
o Capacidad de almacenamiento mayor: entre 4 y 32 kBytes.
o Precio elevado: entre 30 y 90€.
Semipasivas
o Pequeña fuente autónoma de energía. En este caso, se utiliza para alimentar
el microchip y no para transmitir la señal.
o La señal se envía al lector RFID al igual que se hace en el caso de las etiquetas
pasivas. El hecho de que el circuito integrado esté constantemente
alimentado, le da la posibilidad de tener mejores tiempos de respuesta.
La tarea del lector es enviar constantemente señales con la intención de ver si hay
alguna etiqueta RFID cerca de él. Al captar una señal de una etiqueta, obtiene la
información de la misma y los envía al Middleware RFID.
A la vista de las características de cada tarjeta, es inmediato pensar que RFID ofrece
un amplio rango de posibilidades. La tecnología se adapta muy bien a las necesidades de
cada aplicación, pudiendo emplear diferentes tipos de tarjetas.
Cabe destacar que en el caso en que la distancia de lectura es mayor, las tarjetas no
son pasivas sino activas. Esto quiere decir que para esa frecuencia se pueden alcanzar
distancias superiores a 100 metros, pero los dos extremos de la comunicación son
transmisores/receptores activos (lectores RFID más potentes).
Tarjeta T555
Estas tarjetas RFID trabajan a una frecuencia de 125KHz. Entre sus características
destacan:
Son de lectura y escritura (R/W).
Compatibles con T55xx.
Capacidad para 28 bytes (estructurados en 7 bloques de 4 bytes).
3.4. Desarrollo/Realización del proyecto
En este apartado se analiza el código del programa Arduino. Para ello, primero
vamos a hacer un esquema lógico del programa, explicando cómo funciona a grandes
rasgos.
En cuanto a las librerías, solo necesitamos una: “Keyboard.h”. Se necesita dicha
librería para poder capturar las pulsaciones del teclado. Esto es así porque el programa se
divide en dos subprogramas y empleamos las teclas ‘1’ y ‘2’ para ejecutar uno u otro. Los
subprogramas en cuestión son:
[1] Programa para pasar el control de asistencia: es el que usará el profesor para
ver qué estudiantes han asistido a clase.
[2] Programa para guardar alumnos: consiste en que los alumnos acercan sus
tarjetas al lector RFID, de manera que el programa les asocia un número de
identificación. Es decir, este subprograma se encarga de inicializar las tarjetas.
Primeramente veamos qué datos miembro o variables globales tiene el programa:
byte valueToStore: esta variable se utiliza para guardar un número de
identificación de cada alumno en la tarjeta correspondiente.
int led: especifica el pin donde irá conectado el LED. Concretamente se trata del
pin 13.
byte block1_byte1, block1_byte2, block1_byte3, block1_byte4,
block2_byte1, block2_byte2, block2_byte3, block2_byte4,
…
block7_byte1, block7_byte2, block7_byte3, block7_byte4:
Cada byte se corresponde con un byte de la tarjeta RFID. Al principio del
programa se inicializan todas estas variables al valor 0x00, y cuando se lee una
tarjeta se modifica dicho valor por el que contenga realmente la tarjeta.
int val: variable temporal para almacenar lo que se lee en un instante
determinado.
char inChar: es otra variable temporal para guardar el carácter de entrada que se
pulsa mediante el teclado.
Programa de control de asistencia: para arrancarlo hay que pulsar la tecla ‘1’.
Este programa es más sencillo que el anterior.
Al iniciarse entra en un bucle infinito a la espera de que una tarjeta se aproxime,
mostrando por pantalla el mensaje “Esperando identificación, aproxime su tarjeta”.
Cuando se encuentra una tarjeta, las variables que representan los bloques de bytes de la
tarjeta se rellenan con los valores que esta contiene. Para ello se utiliza lo siguiente:
blockX_byteY = Serial.read();
Una vez se han leído todos los bloques hemos de comprobar el checksum. Basta
hacer un Serial.read(), sin la necesidad de almacenar el valor recibido si no se quiere
comprobar el checksum.
Por último, empleamos bucles if y else if para ver de qué alumno es la tarjeta que
se ha acercado comprobando el número de identificador, y mostramos el mensaje por
pantalla: “Se ha registrado su asistencia, + nombre_del_alumno”.
3.5. Manual de usuario
Por último mostramos la salida del programa [2] de Guardar alumnos, en el que
hemos almacenado los identificadores de tres alumnos a modo de ejemplo. Estos alumnos
están previamente cargados en el código del programa.
4. CONCLUSIÓN
5. BIBLIOGRAFÍA
Cooking Hacks. RFID 125KHz Module for Arduino and Raspberry Pi:
https://www.cooking-hacks.com/documentation/tutorials/rfid-125-khz-module-
arduino-raspberry-pi-tutorial/
Fritzing:
http://fritzing.org/home/
Arduino DUE:
https://www.arduino.cc/en/Main/ArduinoBoardDue
6. ANEXO
Código Arduino del programa desarrollado:
#include "Keyboard.h"
byte valueToStore = 0x00;
int led = 13;
byte block1_byte1 = 0x00;
byte block1_byte2 = 0x00;
byte block1_byte3 = 0x00;
byte block1_byte4 = 0x00;
int val = 0;
char inChar = 0;
void setup() {
pinMode(led, OUTPUT);
// open the serial port:
Serial.begin(19200);
// initialize control over the keyboard:
Keyboard.begin();
Serial.write(0xFF);
Serial.write(0x01);
Serial.write(0x09);
Serial.write(0x87);
Serial.write(0x01);
Serial.write(0x01);
Serial.write(0x07);
Serial.write((byte)0x00);
Serial.write(0x10);
Serial.write(0x20);
Serial.write(0x30);
Serial.write(0x40);
Serial.write(0x3A);
delay(500);
while (Serial.available() > 0)
{ Serial.read(); }
Serial.println();
Serial.println();
Serial.println("PROGRAMA DE CONTROL DE ASISTENCIA");
Serial.println();
Serial.println("Por favor, seleccione un modo de operacion");
Serial.println("[1] Control de asistencia");
Serial.println("[2] Guardar alumnos");
}
void loop() {
if (Serial.available() > 0) {
inChar = Serial.read();
Serial.println(inChar);
}
if (inChar == '1') {
Serial.println("***************************************************************");
Serial.println("***** Modo de control de asistencia iniciado *****");
Serial.println("***************************************************************");
while (true) {
val = Serial.read();
while (val != 0xff) {
Serial.println("Esperando identificacion, aproxime su tarjeta");
val = Serial.read();
delay(500);
}
// Serial.read(); // we read ff
Serial.read(); // we read 01
Serial.read(); // we read 1d
Serial.read(); // we read 10
}
}
}
void writeTag(byte block, byte data0, byte data1, byte data2, byte data3) {
byte checksum = 0x01 + 0x06 + 0x20 + block + data0 + data1 + data2 + data3;
Serial.write(0xFF);
Serial.write(0x01);
Serial.write(0x06);
Serial.write(0x20);
Serial.write(block);
Serial.write(data0);
Serial.write(data1);
Serial.write(data2);
Serial.write(data3);
Serial.write(checksum);
delay(2000);
while (Serial.available() > 0) {
Serial.read();
}
}
bool getTag() {
val = Serial.read(); // we read ff
if (val > 0) {
Serial.read(); // we read 01
Serial.read(); // we read 0d
Serial.read(); // we read 10
Serial.println();
return true;
} else {
return false;
}
}