Usando il PN532 con il Raspberry Pi

Using the PN532 with the Raspberry Pi

PN532 è un modulo versatile NFC (Near Field Communication) che può essere utilizzato per la lettura e la scrittura di tag NFC, nonché per l'implementazione di sistemi RFID. L'uso della PN532 con un Raspberry Pi consente di integrare le funzionalità NFC nei progetti per applicazioni come controllo di accesso, pagamenti senza contatto e dispositivi IoT. Questa guida ti guida per impostare e utilizzare la PN532 con un Raspberry Pi.


Cosa avrai bisogno

  1. Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
  2. Modulo NFC PN532
  3. Breadboard e fili jumper
  4. Un computer con accesso SSH a Raspberry Pi o una tastiera e un monitoraggio collegati
  5. Python installato su Raspberry Pi

Passaggio 1: Cablaggio della PN532 a Raspberry Pi

The PN532 module supports multiple communication protocols, including I2C, SPI, and UART. This guide uses the I2C interface for simplicity.

Connessioni (modalità I2C)

PIN PN532 Pin di lampone
VCC 3.3V (pin 1)
GND Terra (pin 6)
SDA SDA (PIN 3, GPIO2)
SCL SCL (PIN 5, GPIO3)
Sel0 GND
Sel1 VCC

Nota: I pin SEL0 e SEL1 determinano la modalità di comunicazione. Collegamento di SEL0 a GND e SEL1 a VCC Seleziona la modalità I2C.


Passaggio 2: abilita l'interfaccia I2C su Raspberry Pi

  1. Apri lo strumento di configurazione Raspberry Pi:
    sudo raspi-config
    
  2. Navigare a Opzioni di interfaccia> i2c e abilitarlo.
  3. Riavvia il Raspberry Pi:
    sudo reboot
    

Passaggio 3: installare strumenti e librerie richieste

  1. Aggiorna il tuo Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Installa gli strumenti I2C:
    sudo apt install -y i2c-tools
    
  3. Installa le librerie Python per la comunicazione I2C e la funzionalità PN532:
    pip install adafruit-circuitpython-pn532
    

Passaggio 4: verificare la connessione

  1. Utilizzo i2cdetect Per verificare che il PN532 sia rilevato sul bus I2C:
    sudo i2cdetect -y 1
    
  2. Dovresti vedere il PN532 all'indirizzo 0x24 O 0x48. Se non:
    • Controlla il tuo cablaggio.
    • Assicurarsi che il PN532 sia alimentato.

Passaggio 5: leggere i tag NFC con Python

Il seguente script Python dimostra come leggere i tag NFC usando PN532.

Esempio di codice Python

import board
import busio
from adafruit_pn532.i2c import PN532_I2C

# I2C connection setup
i2c = busio.I2C(board.SCL, board.SDA)
pn532 = PN532_I2C(i2c, debug=False)

# Configure PN532 to read NFC tags
pn532.SAM_configuration()

print("Waiting for an NFC tag...")

while True:
    uid = pn532.read_passive_target(timeout=0.5)
    if uid is not None:
        print(f"Found NFC tag with UID: {uid.hex()}")

Passaggio 6: applicazioni della PN532

  1. Controllo degli accessi: Crea un sistema di blocco della porta basato su NFC.
  2. Pagamenti senza contatto: Simula sistemi di pagamento con schede NFC.
  3. Progetti IoT: Utilizzare i tag NFC per attivare eventi di automazione.
  4. Registrazione dei dati: Scrivi i dati ai tag NFC per scopi di inventario o di tracciamento.

Risoluzione dei problemi

  1. Dispositivo non rilevato:

    • Verificare le connessioni SDA e SCL.
    • Assicurarsi che l'interfaccia I2C sia abilitata su Raspberry Pi.
    • Controllare la configurazione del pin SEL0 e SEL1 per la modalità I2C.
  2. Leggi gli errori:

    • Assicurarsi che il tag NFC sia nel raggio di PN532.
    • Verificare l'interferenza da oggetti metallici o altri dispositivi elettronici.
  3. Errori i2c:

    • Assicurati che non ci siano dispositivi contrastanti sul bus I2C.

Conclusione

Il modulo NFC PN532 è uno strumento versatile per l'aggiunta di funzionalità NFC e RFID ai progetti Raspberry Pi. Seguendo questa guida, è possibile impostare e utilizzare PN532 per applicazioni come controllo di accesso, automazione IoT e scambio di dati senza contatto. Sperimenta la lettura e la scrittura di tag NFC per esplorare il pieno potenziale di questo potente modulo!

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.