Minoristas en línea autorizados:

Comprar en EE. UU. Comprar en el Reino Unido Comprar en Alemania Comprar en Italia Comprar en Francia Comprar en España ここでご購入を!

Un lector RFID es un dispositivo muy popular en los sistemas de seguridad. Puede leer la identificación de una tarjeta RFID y enviarla a un sistema informático.

En esta lección, utilizaremos el lector RFID OSOYOO para crear un sistema de verificación de seguridad simple. Este lector RFID utilizará un nuevo protocolo de comunicación llamado SPI para enviar datos al Pico. Después de completar esta lección, habrás aprendido sobre tres tipos de protocolos de comunicación: SPI, I2C y Serial (RS232). La comparación de velocidad entre estos tres métodos es la siguiente: SPI > I2C > Serial.

Dado que utilizaremos muchos pines en este proyecto, hemos incluido el mapa de pines del Pico aquí para ayudar a los usuarios a localizar los pines adecuados.

  1. Tarjeta Raspberry Pi Pico y cable microUSB
  2. Una computadora para ejecutar el entorno de desarrollo Thonny Python
  3. Una placa de pruebas (breadboard)
  4. 2 LED
  5. 2 resistencias de 220 Ω
  6. Un zumbador habilitado para negativo
  7. 1 lector RFID OSOYOO
  8. Algunos cables de puente (jumper wires)

En el gráfico del circuito anterior, se puede ver que:

Pico Pins Pins RFID
GP5 SDA
GP6 SCK
GP7 MOSI
GP4 MISO
IRQ
GND GND
GP18 RST
3.3V 3.3V
Pico Pins Dispositivos
GP14 LED rojo a través de una resistencia de 220 ohmios
GP15 LED verde a través de una resistencia de 220 ohmios
GP16 Clavija de E/S del zumbador

Puedes descargar el código Python de la lección 7 desde https://osoyoo.com/driver/pico/lesson7/pico-lesson7.zip.

Luego, puedes usar Thonny para abrir pico-lesson7.py y cargarlo en el Pico.

Aquí está el código completo con comentarios.

import time
from machine import I2C, Pin, SPI #import I2C,Pin,SPI library
from mfrc522 import MFRC522 #import RFID reader library
buzzer= Pin(16, Pin.OUT) #set buzzer to GP16
buzzer.value(1)
true = Pin(15, Pin.OUT)  #set Green LED to GP15
false = Pin(14, Pin.OUT) #set Red LED to GP14
sck = Pin(6, Pin.OUT)    #set RFID sck to GP6
mosi = Pin(7, Pin.OUT)   #set RFID mosi to GP7
miso = Pin(4, Pin.OUT)   #set RFID miso to GP4 
sda = Pin(5, Pin.OUT)    #set RFID sda to GP5 
rst = Pin(18, Pin.OUT)   #set RFID rst to GP18
spi = SPI(0, baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso) #initial SPI 
card1 = "0xe58a6223" #change this value to match your testing RFID card 1
card2 = "0xf765bd60" #change this value to match your testing RFID card 2

while True:
    rdr = MFRC522(spi, sda, rst) #initialize reader
    (stat, tag_type) = rdr.request(rdr.REQIDL) #read card ud
    if stat == rdr.OK:
        (stat, raw_uid) = rdr.anticoll()
        if stat == rdr.OK:
            uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
            print(uid)
            if uid == card1: #if ID matches card 1, buzzer beep once, turn on Green LED
                print("card 1 detected!")
                buzzer.value(0)
                time.sleep(0.3)
                buzzer.value(1)
                true.value(1)
                time.sleep(1)
                true.value(0)
                time.sleep(1)
            elif uid == card2:
                print("card 2 detected!")  #if ID matches card 2, buzzer beep twice, turn on Green LED
                buzzer.value(0)
                time.sleep(0.3)
                buzzer.value(1)
                time.sleep(0.3)
                buzzer.value(0)
                time.sleep(0.3)
                buzzer.value(1)
                true.value(1)
                time.sleep(1)
                true.value(0)
                time.sleep(1)
            else:  #if ID doesn't match any card, long beep, turn on Red LED
                print("invalid card!")
                buzzer.value(0)
                time.sleep(2)
                buzzer.value(1)
                false.value(1)
                time.sleep(0.1)
                false.value(0)
                time.sleep(0.1)
                false.value(1)
                time.sleep(0.1)
                false.value(0)
                time.sleep(0.1)
                false.value(1)
                time.sleep(0.1)
                false.value(0)
                time.sleep(1)


Paso 1: Conecta la placa Pico a uno de los puertos USB de tu PC.
Paso 2: Si no has instalado el software Thonny o no sabes cómo usar el entorno de desarrollo Thonny, lee la lección 1.

Paso 3: Ahora abre el entorno de desarrollo Thonny Python y haz clic en “Run” para seleccionar MicroPython para Raspberry Pi Pico como intérprete.

Además, selecciona el puerto COM al que está conectada tu placa Pico.

Después, haz clic en “OK” para guardar la configuración.

Paso 4: Descarga el código desde https://osoyoo.com/driver/pico/lesson7/pico-lesson7.zip, guárdalo en tu PC local y descomprime el archivo. Encontrarás dos archivos: mfrc522.py y pico-lesson7.py. Usa Thonny para abrir el archivo de la biblioteca mfrc522.py.

Paso 5: Luego haz clic en “File” -> “Save as”.

Paso 6: Selecciona “Raspberry Pi Pico” como destino.

Paso 7: Escribe el nombre del archivo como “mfrc522.py”. Después, haz clic en “OK” para guardar la configuración.

Luego usa Thonny para abrir otro archivo, pico-lesson7.py, haz clic en el botón ► para ejecutar el código Python. Necesitarás preparar tres tarjetas RFID diferentes.

Toca cada tarjeta en el lector y verás su ID, como “0xd71d9a52” y “invalid card”, en la ventana de la consola. Además, el LED rojo se encenderá y el zumbador emitirá un pitido largo. Esto se debe a que los IDs de tus tarjetas actuales no coinciden con los IDs en las líneas 14 y 15. Cambia las líneas 14 y 15 por los IDs de tu tarjeta 1 y tarjeta 2, luego haz clic en el botón ► para ejecutar de nuevo.

Ahora verás que cuando pongas la tarjeta 1 en el lector, se activará el mensaje “tarjeta 1 detectada”, un pitido corto y una luz verde. Cuando pongas la tarjeta 2 en el lector, la ventana de la consola mostrará “tarjeta 2 detectada”, dos pitidos cortos y una luz verde.

Después de que se complete la operación, presiona Ctrl+C para finalizar el comando.

APRENDE MÁS SOBRE LAS PIEZAS SKU:2021005900

No. Fotografía Nombre del producto Enlace
1 Placa Raspberry Pi Pico https://osoyoo.store/products/raspberry-pi-pico-flexible-microcontroller-board-based-on-the-raspberry-pi-rp2040-dual-core-arm-cortex-m0-processor-1-pc?variant=39875307864175
2 Servomotor https://osoyoo.store/products/micro-servo-sg90-blue-for-arduino-v2-0-robot-carmodel-lacc200610?variant=31648847560815
3 Módulo sensor de infrarrojos https://osoyoo.store/products/hc-sr501-pir-motion-sensor-for-arduino?variant=31957812838511
4 Módulo y tarjeta RFID https://osoyoo.store/products/osoyoo-rfid-module?variant=31970646130799
5 Pulsadores y sombreros https://osoyoo.store/products/push-button-and-hats-5pcs?variant=39879253131375
6 LED (6 blancos, 6 rojos, 6 amarillos, 6 verdes) https://osoyoo.store/products/led-packs-for-arduino?variant=31957816442991
7 Módulo zumbador piezoeléctrico https://osoyoo.store/products/piezo-buzzer-module-1pcs?variant=39879251656815
8 Pantalla LCD I2C (16×2) https://osoyoo.store/products/i2c-lcd1602-display?variant=39875437101167
9 Destornillador Philips https://osoyoo.store/products/phillips-screwdriver?variant=31930635780207https://osoyoo.store/products/single-channel-relay-module-for-arduino-raspberry-pi?variant=31955954401391
10 Protoboard sin soldadura para prototipos https://osoyoo.store/products/solderless-prototype-breadboard-1pcs?variant=39879255457903
11 Potenciómetro (resistencia ajustable de 10K) https://osoyoo.store/products/potentionmeter-10k-adjustable-resistor-3pcs?variant=39879281016943
12 40Pin M to M Jumper Wires https://osoyoo.store/products/40pin-m-to-m-jumper-wires?variant=39879256539247
13 20Pin M to F Jumper wires 15cm https://osoyoo.store/products/20pin-15cm-female-to-female-cable?variant=31930663305327