Cerradura RFID conArduino


RFID o identificación por radiofrecuencia (del inglés Radio Frequency Identification) es un sistema de almacenamiento y recuperación de datos remoto que usa  transpondedores RFID con el  propósito de transmitir la identidad de un ente  mediante ondas de radio. Las tecnologías RFID se agrupan dentro de las denominadas Auto ID (automatic identification, o identificación automática).

Las etiquetas RFID  son  dispositivos pequeños, similares a una pegatina que contienen antenas para permitirles recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID.

Una de las grandes ventajas de esta tecnología   es que las etiquetas   son pasivas ,no necesitando por  tanto  alimentación eléctrica   así como tampoco  requieren visión directa entre emisor y receptor.

En el post de  hoy  vamos    a ver como se implementa  establecer un pestillo de puerta que puede abrirse mediante una tarjeta  RFID  programando  una lista de las tarjetas ‘claves’ aceptables que podrían  abrir  la puerta durante un período determinado de tiempo.

Este es proyecto es  sencillo  pero requiere que alterar la  jamba de la puerta lo cual requiere mucha pericia   pero como podemos  en el siguiente vídeo  el resultado  es muy espectacular.

 

 Electrónica necesaria

Estas son las partes recomendadas para este proyecto. Puede usar otro relé de variante, Arduino, o etiqueta RFID compatibles, pero se recomienda el escudo RFIDuino para que el código que veremos funcione sin problemas.

  • Escudo de RFIDuino y antena
  • Geekduino u otro microcontrolador compatible con Arduino
  • Placa de relé RobotGeek
  • Solenoide de cierre una puerta o Una placa electrónica de apertura (nota que estos son partes de ejemplo, no pueden caber su puerta específica. Al seleccionar un cerradura electrónica, asegúrese de elegir uno marcado ‘NO’, o normalmente abierto. Esto significa que cuando el circuito está abierto, la puerta está asegurada, manteniéndole en una situación de interrupción de la energía)
  • Cable del Sensor de 3 pines
  • fuente de alimentación de 6V (para Geekduino)
  • Una adecuada fuente  Alimentación para el solenoide (en el caso del solenoide vinculado, 12V)
  • Cable micro del USB para su Geekduino o el cable de la tarjeta compatible con Arduino
  • Una etiqueta RFID compatible -todas las etiquetas en esta página son compatibles con la RFIDuino
  • Cable de alimentación de doble montaje panel

 

Note que usando un solenoide de cierre de puerta recta necesita energía para abrir la puerta. Si pierde energía, usted se eficazmente bloqueará hacia fuera y no se puede abrir la puerta hasta que la energía se devuelve al sistema pero si usa una  placa electrónica , todavía puede utilizar su clave normal para abrir la puerta en el caso de un apagón.

Obtener sus datos de etiqueta RFID

  1. Conecte su RFIDuino como se muestra en la imagen teniendo en cuenta que el escudo RFdui9no deberá colocarlo encima de su Arduino en la posición exacta en que coinciden ambas placas .De la placa no olvide que ira la antena  RFID  al exterior y  por su puesto su Arduino ira conectado  por usb a su pc para poer  instalarle el firmware
  2. Abra su tablero. Usted puede encontrar este bosquejo bajo RFIDuino_helloworld
    File>Examples>RFIDuino>RFIDuino_helloworld
  3. Usted necesitará asegurarse de que el código se ajusta para el hardware del RFIduino.
    v1.2 escudos (2 pin antena, ‘REV 1.2’ impreso en el tablero) se necesita el siguiente código escudos v1.1 (antena de 4 pines, ningún número de versión impresa en la placa) tendrá el siguiente código

    RFIDuino myRFIDuino(1.2);     //initialize an RFIDuino object for hardware version 1.2
    RFIDuino myRFIDuino(1.1);     //initialize an RFIDuino object for hardware version 1.1

    Ambas líneas de código están disponibles en el dibujo, simplemente quite el comentario de que no necesita.RFIDuino_helloworld

    Si tiene aún dudas sobre qué hardware está usando, vea esta página

  4. Conecte un cable micro del USB de su ordenador  a su Geekduino
  5. Cargue  RFIDuino_helloworld3  en su tarjeta usando el botón de carga en el IDE de Arduino.
  6. Una vez cargado, puede dejar la placa conectada al ordenador  pues  necesita esta conexión para alimentar el tablero y para comunicarse con la computadora
  7. Abra al Monitor serie.
    Tools -> Serial Monitor

    El serial monitor debe ajustarse a los valores predeterminados (‘Fin a No Line’, 9600 baudios)

  8. Pase una etiqueta por la antena de RFIDuino. La luz verde se iluminará y el zumbador hará un ruido.
  9. El Serial Monitor mostrará 5 números. Estos números representan el ID de la etiqueta.
  10. Copie abajo estos números para uso futuro. Puede ser útil escribir el ID en una nota adhesiva y se adhiere a la etiqueta. Nota: se necesita el ID por al menos una etiqueta para el siguiente paso.

 Cableado y programación

  1. Conecte sus componentes como se muestra en le imagen  de arriba  donde como  se puede apreciar se ha añadido una placa de rele  en cuya salida conectaremos un solenoide que alimentaremos con una tensión exterior  y el alimentador  dedicado para suministrar energía  a la placa   Arduino y el Escudo .
  2. Abierta sobre su tablero. Usted puede encontrar este bosquejo bajo RFIDuino_demo3_lockbox_multi
    File>Examples>RFIDuino>RFIDuino_demo3_lockbox_multi
  3. Usted necesitará asegurarse de que el código se ajusta para el hardware del RFIduino.
    v1.2 escudos (2 pin antena, ‘REV 1.2’ impreso en el tablero) se necesita el siguiente código escudos v1.1 (antena de 4 pines, ningún número de versión impresa en la placa) tendrá el siguiente código

    RFIDuino myRFIDuino(1.2);     //initialize an RFIDuino object for hardware version 1.2
    RFIDuino myRFIDuino(1.1);     //initialize an RFIDuino object for hardware version 1.1

    Ambas líneas de código están disponibles en el dibujo, simplemente quite el comentario de que no necesita.RFIDuino_demo3_lockbox_multi

     

  4. Modifique el código para el número de tarjetas que desee por línea edición 58. Por ejemplo, si tienes tres tarjetas, utilice el código
    #define   NUMBER_OF_CARDS 3     //total numer of key cards that the system will respond to.
  5. También necesitará modificar el bosquejo para incluir los identificadores de las etiquetas que desea incluir. Estos identificadores pueden encontrarse usando el bosquejo. Encontrar el bloque de código a partir de en línea 62 – se parece a esto. Ahora inserte el ID para sus etiquetas. Si tenemos tres etiquetas clave, nuestro código podría ser algo así como Hello World
    byte keyTag[NUMBER_OF_CARDS][5] ={
    {0,0,0,0,0},  //Tag 1 //commenting each tag with a description can help you keep track of them
    {0,0,0,0,0},  //Tag 2
    {0,0,0,0,0}, //Tag 3
    {0,0,0,0,0},//Tag 4
    };
    byte keyTag[NUMBER_OF_CARDS][5] ={
    {77,0,44,22,242},  //Tag 1 //commenting each tag with a description can help you keep track of them
    {200,1,4,98,236},  //Tag 2
    {23,64,4,25,1}, //Tag 3
    };
  6. Conecte un cable micro del USB de su ordenador  a su Geekduino
  7. Cargar en su tarjeta usando el int del botón de subir el IDE de Arduino. RFIDuino_demo3_lockbox_multi
  8. Una vez cargado, desconecte el cable USB del ordenador…
  9. Ninguna de las etiquetas ‘clave’ pase por la antena de RFIDuino. La luz verde se iluminará y el zumbador tocar tres notas diferentes. Además, el solenoide se dispara.
  10. Pase cualquier etiqueta que no es la etiqueta de ‘clave’ a través de la antena de RFIDuino. La luz roja se iluminará y el zumbador tocar tres notas monótonos. El solenoide no reaccionará.

 Montaje final

 Una vez que este seguro que lo tiene programado y el seguro libera cuando usted pase la correcta etiqueta de RFID, ya puede montarlo en el marco de una  puerta. En el video  de hecho podemos ver en una puerta de marco de metal con ventanas de cristal, por lo que es mas sencillo instalar  el lector de RFID tras el cristal.
También se  puede montar la antena en una caja resistente a la intemperie para la accesibilidad y mantener el Arduino y otros aparatos electrónicos en el interior por seguridad.

Hay instrucciones con la placa electrónica de apertura que puede ayudar en el montaje  Se recomienda mantener la placa tan al ras como puedas a la pared se monta en y tener cuidado al pasar los cables a través de una pared.

Fuente : instructables.com

 

Servidor para Netduino+


NeonMika.Webserver es un servidor web preconfigurado  para Netduino+  yNetduino 2+   fácil de extender de modo que con un código mínimo (o incluso nulo), puede obtener excelentes resultados controlando todos  los puertos de  su Netduino +, accediendo y cargando archivos, creando servicios web ¡y algunas cosas  más!

El código  fuente esta disponible aun en codeplex en  :https://neonmikawebserver.codeplex.com/documentation  aunque hay  una version para Netduino 3+ en  Github .  A pesar de que el foro  de Netduino se ha mudado al sitio widernesslab.co  se mantiene  información  de NeonMika.Webserver  en el antiguo  foro de Netduino ( http://forums.netduino.com/index.php?/topic/2889-neonmikawebserver/)  asi que tiene más preguntas o desea  mas explicaciones  sobre el código le recomiendo que se dirija a ese sitio.

Si usa el esquema de la cafetera conectada  del que hablábamos  en un post anterior     únicamente puede   usar el pin digital  D2  como salida  y al que  conectaremos  una economica placa de un relé   compatible  con Arduino (5V)

 

Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión  de 5V procedente de la placa Netduino, conectar el pin de datos  D2 a la entrada IN de la placa del  relé  y finalmente conectar la carga ( en este caso un cafetera)  a los contactos de salida del relé

 

Gracias  a neomikaserver podremos controlar fácilmente la cafetera   de una manera muy facil  y rapida pero ademas este servidor destaca por la siguientes  funcionalidades:

  • Acceso a la tarjeta microSD
  • Control de todos  lso puertos GPIO
  • Lectura de todos los puertos GPIO
  • Control   de  su Netduino+  usando métodos existentes como setPWM o setDigitalPinState
  • Permite agregar sus propios métodos similares al servicio web para que pueda expandir NeonMika.Webserver a sus propias necesidades para cada proyecto.

Hay dos directorios de interés para usted:

  • Framework :contiene el código de la biblioteca para un nuevo proyecto usando NeonMika.Webserver. Consulte esta carpeta si desea agregar NeonMika.Webserver a un proyecto existente.
  • Executeable:  contiene un pequeño proyecto creado usando NeonMika.Webserver. Consulte este si desea obtener una primera experiencia con el servidor. ¡Puede ejecutarlo sin escribir ninguna línea de código!

Para probar NeonMika.Webserver y tener algún código de muestra, simplemente siga estos pasos:

  • Simplemente descargue el código y vaya a «Executeables».
  • Implemente el proyecto en su Netduino Plus. Debería comenzar a funcionar.
  • Este proyecto de ejemplo que utiliza NeonMika.Webserver tiene el siguiente método xml agregado al servidor web en tiempo de ejecución: netduinoplus / wave … Conecte los LEDs al Pin 0,1,4,5,8,9 y verá que su LED se enciende uno después el otro.

 

Setup

Como puede ver, solo necesita llamar al constructor para iniciar NeonMika.Webserver.

Server WebServer = new Server(PinManagement.OnboardLED, 80, false, "192.168.0.200", "255.255.255.0", "192.168.0.1", "NETDUINOPLUS");

Los parámetros necesarios son  autoexplicativos:

  • El puerto 
  • DHCP encendido / apagado
  • Dirección IP
  • Máscara de subred
  • Gateway
  • Nombre de red

¡No necesita nada más para ejecutarlo!

Métodos sopurtados?

Aquí hay una lista con todos los métodos web precodificados que puede usar en su navegador o en cualquier otra aplicación para comunicarse con su Netduino:

  • echo (devuelve el valor enviado) ,    ejemplo   netduinoplus / echo? value = [a-Z] , por ejemplo http://192.168.0.2/echo?value=markus devolveria «markus»
  • switchDigitalPin (Cambia el pin seleccionado de verdadero a falso y vis-a-vis) ,ejemplo : -> netduinoplus / switchDigitalPin? pin = [0-13]  es decir  por ejemplo para encender la cafetera seria http://192.168.0.2/setDigitalPin?pin=2&state=true y para apagarla http://192.168.0.2/setDigitalPin?pin=2&state=flase
  • setDigitalPin (Establece el pin digital seleccionado al estado seleccionado), ejemplo -> netduinoplus / setDigitalPin? pin = [0-13] & estado = [verdadero | falso]
  • pwm (establece el PWM del pin para el período y duración enviados, ejemplo -> netduinoplus / pwm? pin = [5 | 6 | 9 | 10] & period = [int] & duration = [int]
  • getAnalogPinValue (Devuelve el valor del pin analógico seleccionado),ejemplo-> netduinoplus / getAnalogPinValue? pin = [0-5]
  • getDigitalPinState (Devuelve el estado de su pin seleccionado (on / off)),ejemplo -> netduinoplus / getDigitalPinState? pin = [0-13]
  • getAllAnalogPinValues ​​(Devuelve el valor de cada pin analógico), ejemplo-> netduinoplus / getAllAnalogPinValues
  • getDigitalPinState (Devuelve el estado de cada pin digital).ejemplo-> netduinoplus / getAllDigitalPinStates
  • getAllPWMValues ​​(Devuelve los valores para todos los puertos PWM), ejemplo-> netduinoplus / getAllPWMValues
  • fileUpload (Carga un archivo en la ruta de la tarjeta SD mediante POST. Debe escribir los datos de archivo (bytes) en el cuerpo POST),ejemplo  -> netduinoplus / upload? path = [a-Z]
  • Respuesta de archivo y directorio: Simplemente escriba netduinoplus / [pathtomyfile] y podrá ver / descargar su archivo. Si la ruta dada es un directorio, se devolverá una vista de directorio

 

Más para fines de prueba, pero también como parte de NeonMika.Webserver:

  • xmlResponselist (le da una lista de todos los métodos XML) , ejemplo -> netduinoplus / xmlResponselist
  • jsonResponselist (Te da una lista de todos los métodos JSON),ejemplo -> netduinoplus / jsonResponselist
  • multipleXML (Ejemplo sobre cómo usar XML anidado), ejemplo -> netduinoplus / multixml

Algunos  ejemplos de uso

Como expandirlo con servicios XML

WebServer.AddResponse(new XMLResponse("wave", new XMLResponseMethod(WebserverXMLMethods.Wave)));

No se ve tan complicado? Eso porque no es complicado.

Este es un ejemplo de cómo escribir un XMLResponse

private void Echo(Request e,Hashtable results)
{
  if(e.Request.GetArguments.Contains("value") == true)
    results.Add("Echo",e.Request.GetArguments["value"]);
  else
    results.Add("ERROR", "No 'value'-parameter transmitted toserver");
}

Todas las XMLResponses deben tener este formato:

  • Valor de retorno:vacío
  • Parámetro: Solicitud (con esto puede acceder al parámetro escrito en la URL)
    Hashtable (aquí usted agrega la respuesta)
  • Si necesita XML apilado, eche un vistazo al método MultiXML en Server.cs

 

Cómo escribir una respuesta JSON:

 

private void ResponseListJSON(Request e, JsonArray j)
{
   JsonObject o;
   foreach(Object k in _Responses.Keys)
   {
     o = newJsonObject();
     o.Add("methodURL", k);
     o.Add("methodName", ((Response)_Responses[k]).Name);
     j.Add(o);
   }
}

Server setup:

Server WebServer = new Server(PinManagement.OnboardLED,80,false,"192.168.0.200","255.255.255.0","192.168.0.2","NETDUINOPLUS"); 
WebServer.AddResponse(newXMLResponse("echo", new XMLResponseMethod(Echo))); 
WebServer.AddResponse(newJSONResponse("jsonResponselist", new JSONResponseMethod(ResponseListJSON)));

 

Cómo acceder a los últimos datos POST:

PostFileReader post = new PostFileReader ();

byte [] postData = post.Read (bufferSize);

 

Mostrar el directorio de archivos:

http://192.168.0.2/SD

 

Archivo de acceso:

http://192.168.0.2/SD/folder/file.txt