meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
electronica:esp8266:rfid [2016/10/02 23:13] – [Lector RFID] lcelectronica:esp8266:rfid [2023/01/18 14:36] (actual) – editor externo 127.0.0.1
Línea 3: Línea 3:
 En esta práctica vamos a utilizar un ESP8266-12E y el módulo RC522, para construirnos un lector de tarjetas de identificación por radio frecuencia **(RFID)** En esta práctica vamos a utilizar un ESP8266-12E y el módulo RC522, para construirnos un lector de tarjetas de identificación por radio frecuencia **(RFID)**
  
-Lo primero es saber que dependiendo del modelos de ESP que utilicemos tenemos que usar un pin u otro. La tabla con las equivalencias es la siguiente:+{{:electronica:esp8266:rfid-rc522_-_pin_layout.png?500|}} 
 + 
 +Lo primero que tenemos que tener en cuenta es que dependiendo del modelos de Arduino que utilicemos tenemos que usar un pin u otro. La tabla con las equivalencias es la siguiente:
    
-^Módulo RC522^ESP8266-12E^ESP8266^ +^Módulo RC522^ESP8266-12E^ESP8266^Arduino 
-|1-> Vcc| | |  +|1-> Vcc|3V3 |3V3 | 3V3
-|2-> RST|D8|D4| +|2-> RST|D8|D4|D9
-|3-> GND| | |  +|3-> GND|GND|GND|GND|  
-|4-> IRQ| | | +|4-> IRQ| | | 
-|5-> MISO|D12|D6| +|5-> MISO|D12|D6|D12
-|6->MOSI|D11|D7| +|6-> MOSI|D11|D7|D11
-|7->SCK|D13|D5| +|7-> SCK|D13|D5|D13
-|8->SDA|D10|D8|+|8-> SDA|D10|D8|D10| 
 + 
 +El circuito quedaría de la siguiente forma: 
 +{{ :electronica:esp8266:esp8266_rfid_bb.png?600 |}} 
 + 
 + 
 +El código para comprobar que se leen las etiquetas  
 + 
 +<sxh c> 
 +// 
 +#include <WiFiClientSecure.h> 
 +#include <ESP8266WiFi.h> 
 +#include <SPI.h> 
 +#include <MFRC522.h> 
 + 
 +#define SS_PIN 15 
 +#define RST_PIN 2 
 +  
 +MFRC522 rfid(SS_PIN, RST_PIN); 
 + 
 +MFRC522::MIFARE_Key key;  
 +// Init array that will store new NUID  
 +byte nuidPICC[3]; 
 + 
 +void setup()  
 +{  
 +  Serial.begin(9600); 
 +  SPI.begin();          // Init SPI bus 
 +  rfid.PCD_Init();      // Init MFRC522  
 + 
 +  for (byte i = 0; i < 6; i++)  
 +    {  key.keyByte[i] = 0xFF; 
 +    } 
 + 
 +  Serial.println(F("Este código escanea el NUID de etiquetas MIFARE Classsic.")); 
 +  Serial.print(F("Usar la siguiente llave:")); 
 +  printHex(key.keyByte, MFRC522::MF_KEY_SIZE); 
 +
 +// ------------------------------------------------------------------ 
 +void printHex(byte *buffer, byte bufferSize) { 
 +  for (byte i = 0; i < bufferSize; i++) { 
 +    Serial.print(buffer[i] < 0x10 ? " 0" : " "); 
 +    Serial.print(buffer[i], HEX); 
 +  } 
 +
 +void printDec(byte *buffer, byte bufferSize) { 
 +  for (byte i = 0; i < bufferSize; i++) { 
 +    Serial.print(buffer[i] < 0x10 ? " 0" : " "); 
 +    Serial.print(buffer[i], DEC); 
 +  } 
 +
 +//------------------------------------------------------------------ 
 + 
 +void loop() { 
 + 
 +  // Buscamos tarjetas 
 +  if ( ! rfid.PICC_IsNewCardPresent()) 
 +    return; 
 + 
 +  // SI la encuentra la leemos 
 +  if ( ! rfid.PICC_ReadCardSerial()) 
 +    return; 
 + 
 +  Serial.print(F("PICC type: ")); 
 +  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); 
 +  Serial.println(rfid.PICC_GetTypeName(piccType)); 
 + 
 +  // Check is the PICC of Classic MIFARE type 
 +  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&   
 +    piccType != MFRC522::PICC_TYPE_MIFARE_1K && 
 +    piccType != MFRC522::PICC_TYPE_MIFARE_4K)  
 +      { 
 +        Serial.println(F("La etiqueta no es del tipo MIFARE Classic.")); 
 +        return; 
 +      } 
 + 
 +  if (rfid.uid.uidByte[0] != nuidPICC[0] ||  
 +    rfid.uid.uidByte[1] != nuidPICC[1] ||  
 +    rfid.uid.uidByte[2] != nuidPICC[2] ||  
 +    rfid.uid.uidByte[3] != nuidPICC[3] )  
 +    { 
 +        Serial.println(F("Una nueva tarjeta ha sido detectada.")); 
 +     
 +        Serial.println(F("El NUID de la etiqueta es:")); 
 +        Serial.print(F("En hex: ")); 
 +        printHex(rfid.uid.uidByte, rfid.uid.size); 
 +        Serial.println(); 
 +        Serial.print(F("En decimal: ")); 
 +        printDec(rfid.uid.uidByte, rfid.uid.size); 
 +        Serial.println(); 
 +      
 +       rfid.PICC_HaltA(); 
 +       rfid.PCD_StopCrypto1(); 
 +    } 
 +    delay(600); 
 +
 +</sxh> 
 + 
 +==== Referencias ==== 
 +  * http://www.prometec.net/arduino-rfid/ 
 +  * https://github.com/miguelbalboa/rfid