(!) Antes de seguir estas instrucciones asegúrese de entender las Condiciones de Uso de nuestro sitio.
El RDM6300 es un módulo bastante sencillo de utilizar en el entorno de ARDUINO gracias a la librería RDM6300 que se puede descargar de acá.
El módulo tiene tres conectores:
P1 (6 contactos): que contiene los pines para realizar comunicaciones. En este experimento utilizaremos solamente el pin 1 ubicado en la esquina que lo conectaremos al pin 6 del Arduino 101. Básicamente este es el único pin que se conecta al microcontrolador.
P2 (2 contactos) que es donde se conecta la antena (bobina)
P3 (3 contactos) que es donde se alimenta el sistema y donde se pude agregar un LED (todavía no tengo claro para qué exactamente) el punto es que de este solo utilizaremos el pin 2 y 3 que son +5V y GND respectivamente.
El programa que utilizamos simula la apertura de un sistema mediante un pulso a un LED verde conectado al pin 3 de Arduino, y un pulso para cerrar simulado por un LED amarillo conectado al pin 2 del Arduino.
Algo interesante es que el Arduino 101 opera a 3.3V pero es tolerante a señales de 5V lo cual lo hace particularmente versatil (esto también aplica para TinyTILE. Con Arduino UNO también funciona.
Conexiones:
ARDUINO PIN 2 ==> amarillo ====> LED Amarillo ===> Resistencia 150 Ohm ==> GND PIN 3 ==> verde =======> LED Verde ======> Resistencia 150 Ohm ==> GND PIN 6 <== café <======== PIN 1 del conector P1 del RDM6300 (TX) PIN 13 ==> naranja =====> LED Verde ======> Resistencia 150 Ohm ==> GND 5V ======> rojo ========> Puerto + del protoboard GND =====> negro =======> Puerto - del protoboard RDM6300 PIN 2 del conector P3 (Vin) <===== Puerto + del protoboard (operando a 5V) PIN 3 del conector P3 (GND) <===== Puerto - del protoboard PIN 1 del conector P1 (TX) ======> PIN 6 del ARDUINO Conector P2 =====< ANTENA (bobina)
Programa de ejemplo:
La versión oficial de este sketch se puede encontrar acá: https://github.com/janunezc/robotics/tree/master/rfid/rfid_rdm630_open_then_close
(!) También, será necesario que los archivos de la librería RDM6300 estén disponibles para compilar el sketch. Se puede copiar ambos archivos (rdm630.h y rdm630.cpp) en la misma carpeta del sketch, o en la carpeta de librerías del ARDUINO IDE (c:\user\myusername\documents\Arduino\libraries\rdm630\***). Es importante asegurarse que la librería RDM630 solo está copiada una vez en las diferentes rutas.
/*
* Programa escrito por Jose Nunez como ejemplo didáctico del uso del RDM6300 con un ARDUINO 101.
* Use bajo su propio riesgo.
* Ejemplo de dominio público.
*
*/
#include "rdm630.h"
rdm630 rfid(6, 0); //TX-pin of RDM630 connected to Arduino pin 6
int led_yellow_close = 2;
int led_green_open = 3;
int led_signal = 13;
long OPEN_PULSE_WIDTH = 800;
long CLOSE_PULSE_WIDTH = 1000;
long OPEN_STATE_DURATION = 5000;
long CODE_READ_DELAY = 10000;
long codeReadDelayMaxMillis = millis();
void setup()
{
Serial.begin(115200); // start serial to PC
pinMode(led_yellow_close, OUTPUT);
pinMode(led_green_open, OUTPUT);
pinMode(led_signal, OUTPUT);
rfid.begin();
ledSignal(5,500);
setMessage("READY!");
}
void loop()
{
unsigned long rfidTagCode = 0;
if(rfid.available()){
setMessage("RFID Data is available! reading it...");
rfidTagCode = readRFIDCode();
setMessage("Data: " + String(rfidTagCode));
if(millis() > codeReadDelayMaxMillis) {
if(rfidTagCode == 7598635) {
setMessage("OPEN");
openPulse();//This involves a closePulse() call inside the openPulse() function.
codeReadDelayMaxMillis = millis() + CODE_READ_DELAY;
} else {
setMessage("I DONT KNOW YOU!");
closePulse();
}
} else {
setMessage("SkippingNewReads");
delay(500);
}
}
}
void openPulse(){
setMessage("SENDING OPEN PULSE");
digitalWrite(led_green_open, HIGH);
delay(OPEN_PULSE_WIDTH);
digitalWrite(led_green_open,LOW);
setMessage("OPEN PULSE DONE! Waiting for OPEN STATE DURATION...");
delay(OPEN_STATE_DURATION);
setMessage("OPEN STATE COMPLETE");
closePulse();
}
void closePulse(){
setMessage("SENDING CLOSE PULSE");
digitalWrite(led_yellow_close, HIGH);
delay(CLOSE_PULSE_WIDTH);
digitalWrite(led_yellow_close, LOW);
setMessage("CLOSE PULSE DONE!");
}
unsigned long readRFIDCode(){
byte data[6];
byte length;
rfid.getData(data,length);
Serial.println("Data valid");
for(int i=0;i<length;i++){
Serial.print(data[i],HEX);
Serial.print(" ");
}
Serial.println();
//concatenate the bytes in the data array to one long which can be
//rendered as a decimal number
unsigned long result =
((unsigned long int)data[1]<<24) +
((unsigned long int)data[2]<<16) +
((unsigned long int)data[3]<<8) +
data[4];
Serial.print("decimal CardID: ");
Serial.println(result);
return result;
}
void ledSignal(int times, int milliseconds){
for(int i=0; i<times; i++){
digitalWrite(led_signal, HIGH);
delay(milliseconds);
digitalWrite(led_signal, LOW);
delay(milliseconds);
}
}
void addToMessage(String message){
setMessage(message, false);
}
void setMessage(String message){
setMessage(message, true);
}
void setMessage(String message, bool newLine){
String timeStamp = String(millis());
String finalMessage = timeStamp + " - " + message;
if(newLine){
Serial.println(finalMessage);
} else {
Serial.print(message);
}
}
Acá un ejemplo de la ejecución:
Espero que les sea de utilidad.
17,891 total views, 1 views today
Comentarios
Hola no he podido descargar la libreria RDM360. como lo puedo hacer no la encuentro por ninguna parte. si me puedes aydar
Puedes descargar estos dos archivos. https://github.com/janunezc/robotics/blob/master/rfid/libraries/RDM630/rdm630.h
Hola, que alcance tiene este modulo? a que distancia se puede acercar un tag para que lo detecte saludos
Hola Roberto, Un cordial saludo. Según entiendo el módulo tiene una sensibilidad a partir de los 15 cm o menos. Aun así, depende de varios factores, incluyendo el tipo de tarjeta o dispositivo RFID que deba leer. Se estima que para tarjetas RFID pasivas (que no tienen alimentación eléctrica propia) la maxima distancia serían 4 o 5 cm. Saludos, –jn
Muchas gracias!!!
en el sitio aliexpress compre unos un poco mas costosos pero me leen los tags a una distancia de 15 centímetros
Hola, estoy intentando descargar los archivos desde github pero no me aparece el botón para la descarga. Todavia estan disponibles estos archivos?. Muchas gracias
Hola Carlos, En el enlace haces clic derecho en el boton «RAW» y le das «Save link as»