Etiquetas de RFID de lectura con un Arduino (5 / 5 paso)

Paso 5: Boceto Final

Por lo tanto, en este punto, usted debe tener un identificador único su etiqueta de RFID. Vamos a t Inserte el código siguiente. No voy a explicar cómo funciona el código. Os dejo como un ejercicio para usted.

Bueno, recuerdo cuando conectamos ID-12 pin 9 para el RX Arduno. Vamos a liberar el pin RX y trasladar esa conexión al pin digital 4. Eso es todo!

Ahora, tome su identificador único, de los dos últimos caracteres de la rebanada para que se queden con 10 caracteres. Por ejemplo, leo 2900940E9526 como mi identificador. Por lo tanto, voy a utilizar 2900940E95. 26 es el ID suma de comprobación. No te preocupes acerca de esto. Introduzca su identificador en el código de abajo donde dice [identificador Inserte aquí]. También puede agregar su nombre en la [agregar su nombre aquí].

--------------------------------------------------------------------------------------------------------------------------------
/**
* RFID Control de acceso
*
* Parte de este código se inspiró en tutorial RFID de Tom Igoe
De la el código de ejemplo de ID-12 en el patio de Arduino
* Y muy basado en el proyecto de Jonathan Oxer en:
* http://www.practicalarduino.com/projects/medium/rfid-access-control
*/

Configurar la conexión serial con el módulo lector RFID. A fin de
mantener los pines de Arduino TX y RX gratis para la comunicación con un host,
el dibujo utiliza la librería SoftwareSerial aplicar serial
comunicaciones en otros pernos.
#include

Pin de TX del módulo RFID debe conectarse a Arduino.

#define rxPin 4
#define txPin 5

Crear un objeto de serie de software para la conexión con el módulo RFID
SoftwareSerial rfid = SoftwareSerial (rxPin, txPin);

Establecer salidas
#define futureOutput 12
#define ledPin 13

Especificar cuánto tiempo se celebraría la salida.
#define unlockSeconds 2

La base de datos de etiquetas consta de dos partes. La primera parte es una matriz de
valores de etiqueta con cada etiqueta tomando 5 bytes. La segunda es una lista de
nombres con un nombre para cada etiqueta (es decir: Grupo de 5 bytes). Usted puede ampliar
o reducir esto como mejor parezca. Etiquetas 2 y 3 existen sólo por ejemplo.
char * allowedTags [] = {}
"[Inserte identificador aquí]", / / 1 de la etiqueta
"2900940E95", / / 2 de la etiqueta
"ABC123DE45", / / 3 de la etiqueta
};

Lista de nombres para asociar la etiqueta que empareja IDs
char * tagName [] = {}
«[Agrega aquí tu nombre]», / / 1 de la etiqueta
"Marca Trussell", / / 2 de la etiqueta
"Nombre 3", / / 3 de la etiqueta
};

Comprobar el número de etiquetas definidas
int numberOfTags = sizeof(allowedTags)/sizeof(allowedTags[0]);

int incomingByte = 0; Para almacenar los datos entrantes en serie

/**
* Configuración
*/
void setup() {}
pinMode (ledPin, salida);
digitalWrite (ledPin, LOW);
pinMode (futureOutput, salida);
digitalWrite (futureOutput, bajo);

Serial.Begin(9600); Puerto serial para la conexión al host
RFID.Begin(9600); Puerto serie para conexión a módulo RFID

Serial.println ("RFID lector inicializada");
}

/**
* Lazo
*/
void loop() {}
byte i = 0;
byte val = 0;
suma de bytes = 0;
bytesRead byte = 0;
byte tempByte = 0;
byte tagBytes [6]; Etiquetas "Únicos" son sólo 5 bytes pero necesitamos un byte adicional para la suma de comprobación
tagValue Char [10];

Leer desde el módulo RFID. Debido a esta conexión utiliza SoftwareSerial
no existe equivalente a la función Serial.available(), que en este
punto de los bloques de programa mientras se espera un valor del módulo de
Si ((val = rfid.read()) == 2) {/ / cheque de cabecera
bytesRead = 0;
mientras (bytesRead < 12) {/ / leer 10 dígitos + suma de 2 dígitos
Val = rfid.read();

Añadir los primeros 10 bytes (de 0 a 9) el valor crudo de etiqueta
Si (bytesRead < 10)
{
tagValue [bytesRead] = val;
}

Compruebe si se trata de un byte de cabecera o parada antes de completar los 10 dígitos de lectura
Si ((val == 0x0D) || (val == 0x0A) || (val == 0 x 03) || (Val == 0x02)) {
rotura; Dejar de leer
}

Conversión de ASCII/Hex:
Si ((val > = '0') & & (val < = '9')) {}
Val = val - '0';
}
else if ((val > = 'A') & & (val < = 'F')) {}
Val = 10 + val - 'A';
}

Cada dos dígitos hex, añadir un byte para el código:
Si (bytesRead & 1 == 1) {}
Hacer espacio para este dígito hexadecimal cambiando el dígito anterior 4 bits a la izquierda
tagBytes [bytesRead >> 1] = (val | (tempByte << 4));

Si (bytesRead >> 1! = 5) {/ / si estamos en el byte de suma de comprobación,
suma de comprobación ^ = tagBytes [bytesRead >> 1]; Calcular la suma de comprobación... (XOR)
};
} else {}
tempByte = val; Guarde primero el primer dígito hexadecimal
};

bytesRead ++; Listo para leer el siguiente dígito
}

Envía el resultado al host conectado vía USB
Si (bytesRead == 12) {/ / 12 dígitos leer completo
tagValue [10] = '\0'; Null-poner fin a la cadena

Serial.Print ("etiqueta que lea:");
para (i = 0; i < 5; i ++) {}
Agregar un 0 inicial a valores por debajo de 16
Si (tagBytes [i] < 16) {}
Serial.Print("0");
}
Serial.Print (tagBytes [i], hexagonal);
}
Serial.println();

Serial.Print ("suma:");
Serial.Print (tagBytes [5], hexagonal);
¿Serial.println (tagBytes [5] == checksum? "--pasado.": "--error.");

Mostrar el valor de etiqueta raw
Serial.Print ("valor:");
Serial.println(tagValue);

La base de datos de etiqueta de esta etiqueta especial de búsqueda
tagId int = findTag (tagValue);

Sólo el fuego la placa de la huelga si esta etiqueta se encuentra en la base de datos
Si (tagId > 0)
{
Serial.Print ("autorizado tag ID");
Serial.Print(tagId);
Serial.Print (": desbloqueo para");
Serial.println (tagName [tagId - 1]); Obtener el nombre de esta etiqueta de la base de datos
Unlock(); Fuego la placa de la huelga para abrir la cerradura
} else {}
Serial.println ("etiqueta no autorizada");
}
Serial.println(); Línea de separación en blanco en la salida
}

bytesRead = 0;
}
}

/**
* El relé para activar la placa de la huelga para la configuración del fuego
* número de segundos.
*/
{} void unlock()
digitalWrite (ledPin, HIGH);
digitalWrite (futureOutput, HIGH);
Delay(unlockSeconds * 1000);
digitalWrite (futureOutput, bajo);
digitalWrite (ledPin, LOW);
}

/**
* Buscar una etiqueta específica en la base de datos
*/
int findTag (char tagValue [10]) {}
para (int thisCard = 0; thisCard < numberOfTags; thisCard ++) {}
Compruebe si el valor de la etiqueta corresponde a esta fila en la base de datos de la etiqueta
Si (strcmp (tagValue, allowedTags[thisCard]) == 0)
{
La fila en la base de datos comienza en 0, así que añadir 1 al resultado así
que el ID de la tarjeta comienza desde 1 en lugar de otro (0 representa "ninguna coincidencia")
volver (thisCard + 1);
}
}
Si no encontramos la etiqueta de devolución un tag ID de 0 para mostrar que no fue rival
Return(0);
}
--------------------------------------------------------------------------------------------------------------------------------

Artículos Relacionados

Pinzas digitales de lectura con un Arduino / USB

Pinzas digitales de lectura con un Arduino / USB

cómo utilizar un Arduino para leer la señal de un conjunto de pinzas digitales y enviar la lectura por el puerto USB.¿Por qué?Esto podría ser útil para detectar la posición exacta en los sistemas de fabricación casera hecho / hackeado asistido por or
Cerradura de Scure con etiqueta de RFID y PIN

Cerradura de Scure con etiqueta de RFID y PIN

Comprueban en un hotel y una etiqueta de RFID para acceder a su habitación. Si usted perdió su tarjeta y alguien tuvo la tarjeta perdida puede acceder a su habitación. ¿No sería más seguro si otra información como PIN es requerido para abrir la puert
Enviar datos del sensor (DHT11 & BMP180) a ThingSpeak con un Arduino, mediante cable o WiFi (ESP8266)

Enviar datos del sensor (DHT11 & BMP180) a ThingSpeak con un Arduino, mediante cable o WiFi (ESP8266)

Escribí este instructable porque Thingspeak - no importa lo fácil fijar para arriba - tiene algunos obstáculos que me topé y que, a juzgar por las reacciones, otras personas están luchando con así.Cosas que usted necesita:ArduinoEthernetShield WS5100
Hacer un escáner de código de barras portátil con un arduino y un cuecat

Hacer un escáner de código de barras portátil con un arduino y un cuecat

alrededor de la vuelta del siglo, hubo una empresa cuyo modelo de negocio incluido regalando escáneres de código de barras gratuito que emula teclados.    Un mod relativamente fácil para estos escáneres cuecat quita el cifrado y los hizo conveniente
ARD-e: el robot con un Arduino como un cerebro

ARD-e: el robot con un Arduino como un cerebro

cómo crear un robot de código abierto Arduino controlado por menos de $100.Esperemos que después de leer esto instructable usted será capaz de dar su primer paso en robótica. ARD-e cuesta unos $90 a $130 dependiendo de cuánto electrónica repuesto tie
Controlar múltiples LEDs con un Arduino Uno.

Controlar múltiples LEDs con un Arduino Uno.

Este instructable coversssets de instrucciones para el uso de un microcontrolador, llamado el Arduino Uno para crear diferentes secuencias de iluminación de diodos electroluminosos, más popularmente conocida como LED. Las siguientes instrucciones cub
El control de un cerrojo electrónico Schlage con un arduino!

El control de un cerrojo electrónico Schlage con un arduino!

Este instructivo le guiará a través del proceso de desmantelamiento y hacking un cerrojo electrónico Schlage para controlar con un arduino.Paso 1: Comprar la cerradura y descomprimirlo yo tengo la mía a la venta por $99 en Lowe.Saque de la caja y ech
Cómo programar un AVR (arduino) con otro arduino

Cómo programar un AVR (arduino) con otro arduino

este instructables es útil si:* tienes tu arduino con atmega168 y compraste un atmega328 en le tienda de electrónica local. No tiene un bootloader de arduino* usted quiere hacer un proyecto que no usa arduino - sólo un chip AVR regular (como el USBTi
Bailando Tippy con un arduino y paso a paso motor

Bailando Tippy con un arduino y paso a paso motor

El Tippy fue creado completamente por accidente.Decir ya cerca me requeriría sólo hacer algunas cosas.Aquí está un video para entretenimiento:Notas importantes:Este proyecto supone un conocimiento básico de Arduino y soldadura.Los 3 primeros pasos de
Reproducir archivos de sonido audio (wav) con un Arduino

Reproducir archivos de sonido audio (wav) con un Arduino

Reproducir el archivo wav Audio de tu tarjeta SD Audino.Este Instructable le mostrará cómo se puede reproducir un archivo wav en su SdCard a través de un circuito simple a un altavoz.El archivo wav debe ser mono de 8 bits. No he tenido ningún problem
Reproducir archivos de sonido con tu arduino

Reproducir archivos de sonido con tu arduino

Puede reproducir archivos mp3 con tu arduino!¿Cómo? ->Basta con ver este video: http://bit.ly/1LS4IapPaso 1: materialesBasta de estas cosas:-micro sd-Escudo con ranura para tarjeta sd-altavoz-Arduino(uno)-un alambrePaso 2: Suscríbete!Si te gusta este
Reproducir mp3 con tu arduino (fácil)

Reproducir mp3 con tu arduino (fácil)

Puede reproducir archivos mp3 con tu arduino!sólo se necesita un escudo de ethernet y una tarjeta micro sd!Paso 1: materialesBasta de estas cosas:-micro sd-Escudo con ranura para tarjeta sd-altavoz-arduino (utilicé un uno)-un alambrePaso 2: ¿Cómo?Mir
¿Zappelin, o Cómo entrenar su dirigible con un Arduino y IR remoto

¿Zappelin, o Cómo entrenar su dirigible con un Arduino y IR remoto

es sello de vuelo? ¿Un extranjero aleteo?No es un ZAPpelin, un Arduino controlado interior dirigible no rígido, disposición para aprender de las señales de un control remoto IR a lo comando.Este proyecto surgió a la vida en la tercera to17th de Ardui
Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Mientras estudiaba en la Universidad fuimos desafiados como parte de un trabajo de curso en diseño de una caja con control de temperatura muy preciso. Si el proyecto fuera a tener éxito, múltiples cajas debían ser construido y utilizado en un proyect