Advertisement
Villalba2006

POST_45

Nov 25th, 2016
11,373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.38 KB | None | 0 0
  1. /*  TITULO: Control de acceso con el módulo RFID RC522.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa controlamos unos LEDS y un zumbador mediante mediante tecnología inalámbrica
  14.     RFID y NFC, de la siguiente manera:
  15.     - Cuando Acercamos una tarjeta MIFARE de 1K al módulo RFID RC522 se encenderá el LED
  16.       verde durante 3 segundos.
  17.     - Si acercamos el llavero se encenderá el LED rojo durante 3 segundos.
  18.     - Por último, si acercamos nuestro Smartphone con el NFC activado, se encenderá el LED rojo
  19.       durante 3 segundos a la vez que se activa el zumbador.
  20.    
  21.    
  22.     ESQUEMA DE CONEXION
  23.    
  24.                                       +-----+
  25.          +----[PWR]-------------------| USB |--+
  26.          |                            +-----+  |
  27.          |         GND/RST2  [ ][ ]            |
  28.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  29.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  30.          |                             AREF[ ] |
  31.          |                              GND[ ] |
  32.          | [ ]N/C                    SCK/13[ ] |   SCK módulo RFID RC522
  33.          | [ ]IOREF                 MISO/12[ ] |   MISO módulo RFID RC522
  34.          | [ ]RST                   MOSI/11[ ]~|   MOSI módulo RFID RC522
  35.          | [ ]3V3    +---+               10[ ]~|   SDA módulo RFID RC522
  36.          | [ ]5v    -| A |-               9[ ]~|   RST módulo RFID RC522
  37.          | [ ]GND   -| R |-               8[ ] |   LED_Verde(+)
  38.          | [ ]GND   -| D |-                    |
  39.          | [ ]Vin   -| U |-               7[ ] |   LED_Rojo(+)
  40.          |          -| I |-               6[ ]~|   Zumbador(+)
  41.          | [ ]A0    -| N |-               5[ ]~|  
  42.          | [ ]A1    -| O |-               4[ ] |  
  43.          | [ ]A2     +---+           INT1/3[ ]~|  
  44.          | [ ]A3                     INT0/2[ ] |  
  45.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  46.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  47.          |            [ ] [ ] [ ]              |
  48.          |  UNO_R3    GND MOSI 5V  ____________/
  49.           \_______________________/
  50.  
  51.   NOTAS:
  52.  
  53.    - Alimentación del módulo RFID RC522:
  54.      - GND --> GND de Arduino.
  55.      - +3.3V --> +3.3V de Arduino.
  56.    - Cátodo(-) de los LEDS a GND a través de una R=220 omhs (diferente para cada uno).
  57.    - Zumbador(-) a GND.
  58.  
  59. */
  60.  
  61.   // Incluimos librerías necesarias
  62.   #include <SPI.h>
  63.   #include <RFID.h>
  64.  
  65.   #define SS_PIN 10 // Pin digital para el pin SDA del módulo RFID RC522
  66.   #define RST_PIN 9 // Pin digital para el pin RST del módulo RFID RC522
  67.  
  68.   // Declaramos el objeto de tipo RFID
  69.   RFID rfid(SS_PIN, RST_PIN);
  70.  
  71.   int LED_Verde = 8; // Pin digital para el LED de color verde
  72.   int LED_Rojo = 7; // Pin digital para el LED de color rojo
  73.   int zumbador = 6; // Pin digital para el Zumbador piezoeléctrico
  74.   int numero_serie[5]; // Número de serie de la tarjeta que nuestro sensor RFID detectará
  75.   // Números de serie válidos correspondientes a los números de serie de las dos tarjetas MIFARE.
  76.   int numero_serie_valido[2][5] = {{20,182,242,95,15},{176,144,83,157,238}};
  77.  
  78.   // Variables auxiliares
  79.   int i = 0 ;
  80.   int valido = 0;
  81.  
  82.   void setup()
  83.   {
  84.     Serial.begin(9600); // Comienzo de la comunicación serie
  85.    
  86.     pinMode(LED_Verde, OUTPUT); // Pin digital 8 como salida
  87.     pinMode(LED_Rojo, OUTPUT); // Pin digital 7 como salida
  88.     pinMode(zumbador, OUTPUT); // Pin digital 6 como salida
  89.    
  90.     SPI.begin(); // Comienzo de la comunicación SPI
  91.     rfid.init();   // Activación del lector RFID
  92.   }
  93.  
  94.   void loop()
  95.   {
  96.     i=0;
  97.    
  98.     // Si hay una tarjeta o llavero RFID presente
  99.     if (rfid.isCard())
  100.     {
  101.       // Si se ha podido leer el número de serie de la tarjeta o del llavero RFID
  102.       if (rfid.readCardSerial())
  103.       {
  104.         // Guardamos y presentamos por el monitor serie el número de serie leído
  105.         Serial.print("Numero de serie: ");
  106.         for(int i=0; i<=4 ; i++)
  107.         {
  108.           numero_serie[i] = rfid.serNum[i];
  109.           Serial.print(numero_serie[i]);
  110.           if(i<=3)
  111.           {
  112.             Serial.print("/");
  113.           }        
  114.         }            
  115.         Serial.print(" --> ");
  116.         delay(500);
  117.        
  118.         // Comparamos el número de serie leído con los 2 números de serie válidos      
  119.         for(int j=0; j<=5; ) // El número de serie tiene 5 valores
  120.         {
  121.           if((numero_serie[j]) == (numero_serie_valido[i][j]))
  122.           {
  123.             j++;
  124.             valido++;
  125.           }    
  126.           else
  127.           {
  128.             i++;
  129.             j=0;
  130.           }
  131.    
  132.           if(i >= 2) // Números de serie válidos, en este caso 2
  133.           {
  134.             j=6;
  135.           }
  136.         }
  137.      
  138.         // Si el número de serie leído coincide con alguno de los 2 números de serie válidos  
  139.         if (valido==5)
  140.         {
  141.           usuario_valido();
  142.         }
  143.         // Si el número de serie leído no coincide con ninguno de los 2 números de serie válidos  
  144.         else
  145.         {
  146.           usuario_no_valido();
  147.         }
  148.         valido = 0;
  149.       }
  150.     }
  151.     // Se cierra la secuencia RFID
  152.     rfid.halt();
  153.   }
  154.  
  155.   // Función que se ejecuta cuando el usuario es válido
  156.   void usuario_valido()
  157.   {
  158.     Serial.println("Usuario valido!!!");
  159.     digitalWrite(LED_Verde,HIGH); // LED Verde encendido
  160.     digitalWrite(LED_Rojo,LOW);// LED Rojo apagado
  161.     delay(3000);
  162.     digitalWrite(LED_Verde,LOW);// LED Verde apagado
  163.   }
  164.  
  165.   // Función que se ejecuta cuando el usuario no es válido
  166.   void usuario_no_valido()
  167.   {
  168.     Serial.println("Usuario no valido!!!");
  169.     // Solo se ejecuta si acercamos el NFC del Smartphone y está activado
  170.     if(numero_serie[0] == 8) // Primer dígito del número de serie del NFC de tu Smartphone
  171.     {
  172.       digitalWrite(zumbador,HIGH);// Zumbador encendido
  173.       numero_serie[0] = 3;
  174.     }  
  175.     digitalWrite(LED_Rojo,HIGH);// LED Rojo encendido
  176.     digitalWrite(LED_Verde,LOW);// LED Verde apagado
  177.     delay(3000);
  178.     digitalWrite(LED_Rojo,LOW); // LED Rojo apagado
  179.     digitalWrite(zumbador,LOW); // Zumbador apagado
  180.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement