Authorized Online Retailers:

Buy from USA Buy from UK Buy from DE Buy from IT Buy from FR Buy from ES Buy from JP

Il lettore RFID è un dispositivo molto popolare nel sistema di sicurezza. Può leggere l’ID di una carta RFID e inviarlo al sistema informatico.

In questa lezione, useremo il lettore RFID OSOYOO per realizzare un semplice sistema di verifica della sicurezza. Questo RFID userà un nuovo protocollo di comunicazione SPI per inviare dati a Pico.  Quindi, dopo questa lezione, avete imparato tre tipi di protocolli di comunicazione: SPI, I2C e Seriale (RS232). Il confronto di velocità tra questi tre metodi sono: SPI > I2C > Seriale.

Dato che useremo molti pin in questo progetto, abbiamo messo la mappa dei pin di Pico qui per aiutare l’utente a trovare la corretta posizione dei pin.

  1. Scheda Raspberry Pi Pico e cavo microUSB
  2. Un computer per eseguire l’IDE Thonny Python
  3. Una breadboard
  4. LED x 2 pc
  5. Resistenza da 220 Ω x 2 pezzi
  6. Buzzer abilitato al negativo
  7. Lettore OSOYOO RFID x 1 pz
  8. Alcuni fili di ponticello

Nel grafico del circuito di cui sopra, si può vedere che:

Pico Pins RFID Pins
GP5 SDA
GP6 SCK
GP7 MOSI
GP4 MISO
IRQ
GND GND
GP18 RST
3.3V 3.3V
Pico Pins Dispositivo
GP14 LED rosso tramite resistenza da 220ohm
GP15 LED verdetramite resistenza da 220ohm
GP16 Buzzer I/O pin

Potete scaricare il codice python della lezione 7 da https://osoyoo.com/driver/pico/lesson7/pico-lesson7.zip

Potete usare Thonny per aprire pico-lesson7.py e caricarlo su Pico in seguito.
Ecco il codice completo con i commenti:

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)


Step 1: Collegare la scheda Pico a una delle porte USB del PC
Step 2:Se non avete installato il software Thonny o non sapete come usare Thonny IDE, leggete la lezione 1

Step 3: Ora aprite l’IDE Thonny Python, cliccate su Run per selezionare MicroPython per Raspberry Pi Pico come interprete:

Seleziona anche la porta COM a cui è collegata la tua scheda Pico:

Dopo di che, cliccate su OK per salvare l’impostazione.

Step 4: Ora scaricate il codice da https://osoyoo.com/driver/pico/lesson7/pico-lesson7.zip, salvatelo sul vostro PC locale, poi decomprimete il file. Troverai due file mfrc522.py e pico-lesson7.py. Usa Thonny per aprire il file mfrc522.py Library

Step 5 Poi File -> Save as

Step 6 Poi seleziona Raspberry Pi Pico come destinazione.

Step 7 ,Scrivete il nome del file: mfrc522.py. Dopo di che, cliccate su OK per salvare l’impostazione.

Poi usa Thonny per aprire un altro file pico-lesson7.py, clicca il piccolo pulsante ► per eseguire il codice Python.

È necessario preparare 3 diverse carte RFID. Tocca ogni carta sul lettore, vedrai il suo ID come 0xd71d9a52 e “carta non valida” nella finestra della Shell. Anche il LED rosso è acceso e il cicalino ha un lungo segnale acustico. Questo è dovuto al fatto che i vostri attuali ID delle carte non corrispondono a nessun ID nella linea 14,15. Per favore cambiate la linea 14,15 con l’ID della vostra carta 1 e carta 2, poi cliccate sul pulsante ► per eseguire di nuovo..

Ora vedrete che la scheda 1 mostrerà il messaggio “card 1 detected”, 1 breve segnale acustico e una luce verde.
Quando metti la carta 2 al lettore, la finestra della Shell mostrerà “card 2 detected”, 2 brevi bip e luce verde.

SCOPRI DI PIÙ CIRCA I COMPONENTI SKU:2021005900

No. Immagine Nome Prodotto Link
1 Scheda 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 Servo motore https://osoyoo.store/products/micro-servo-sg90-blue-for-arduino-v2-0-robot-carmodel-lacc200610?variant=31648847560815
3 Modulo Infrared Sensor https://osoyoo.store/products/hc-sr501-pir-motion-sensor-for-arduino?variant=31957812838511
4 Modulo RFID e carta https://osoyoo.store/products/osoyoo-rfid-module?variant=31970646130799
5 Pulsanti e capucci https://osoyoo.store/products/push-button-and-hats-5pcs?variant=39879253131375
6 LED(6 x Bianco, 6 x Rosso, 6 x Giallo, 6x Verde) https://osoyoo.store/products/led-packs-for-arduino?variant=31957816442991
7 Servo motore https://osoyoo.store/products/sg90-micro-servo-for-arduino-raspberry-pi-robot?variant=31957821096047
8 Piezo Buzzer Module https://osoyoo.store/products/piezo-buzzer-module-1pcs?variant=39879251656815
9 Display I2C LCD(16×2) https://osoyoo.store/products/i2c-lcd1602-display?variant=39875437101167
10 Cacciavite Philips https://osoyoo.store/products/phillips-screwdriver?variant=31930635780207https://osoyoo.store/products/single-channel-relay-module-for-arduino-raspberry-pi?variant=31955954401391
11 Breadboard per prototipi senza saldature https://osoyoo.store/products/solderless-prototype-breadboard-1pcs?variant=39879255457903
12 Ptenziomentro (10K Resistenza regolabile) https://osoyoo.store/products/potentionmeter-10k-adjustable-resistor-3pcs?variant=39879281016943
13 40Pin M to M Fili Jumper https://osoyoo.store/products/40pin-m-to-m-jumper-wires?variant=39879256539247
14 20Pin M to F Flli Jumper 15cm https://osoyoo.store/products/20pin-15cm-female-to-female-cable?variant=31930663305327