Lecteur NFC 13.56 Mhz
|
Badge ou carte RFID de type Mifare
|
Le module NFC Grove, basé sur le circuit PN532, permet de lire et écrire des cartes ou badges RFID de type Mifare.
Le NFC (Near Field Communication) est une technologie permettant d'établir une liaison sans contact à courte distance et est issue de la technologie RFID
Alimentation: 3,3 Vcc Fréquence: 13,56 MHz Antenne déportée Portée de communication: 28 mm maxi Interface Uart par défaut
|
Exemple, structure mémoire de badge Mifare classic 1k
Télécharger la bibliothèque : pi_pico_nfc_grove.zip
Installer la bibliothèque sur la Raspberry Pi Pico (voir le tutoriel)
Raspberry Pi Pico MicroPython NFC RFID 13.56 Mhz Grove
Programme qui permet de lire et écrire sur un badge RFID 13.56 MHz
from pi_pico_nfc_grove import * from machine import Pin, UART
# Création d'un objet uart0 uart0 = UART(0, baudrate=115200) uart0.init(115200, bits=8, parity=None, stop=1, tx=Pin(0), rx=Pin(1) ) # paramètres de la liaison série
# création d'un objet Pn532_uart nfc = Pn532_uart(uart0)
# Configuration du PN532 pour communiquer avec les cartes MiFare # Carte de 16 secteurs (0 à 15) de 4 blocs (de 0 à 63) nfc.SAM_configuration()
# Attente carte valable présente print("Attente carte NFC", end="") uid = None while uid is None: uid = nfc.read_passive_target(timeout=500) print(".", end="") print("") print("Trouvé carte UID = ", [(hex(i)) for i in uid])
# Lecture du 1er bloc du secteur 2 (bloc 8) # Il faut s'authentifier sur un secteur pour y accéder avec la clé par défaut 0xFFFFFFFFFFFF cle = b"\xFF\xFF\xFF\xFF\xFF\xFF" authentification = nfc.mifare_classic_authenticate_block(uid, 8, MIFARE_CMD_AUTH_B, cle) print([hex(x) for x in nfc.mifare_classic_read_block(8)])
# Ecritue du 1er bloc du secteur 2 (bloc 8) # Il faut s'authentifier sur un secteur pour y accéder avec la clé par défaut 0xFFFFFFFFFFFF # Attention, destruction du secteur si écriture sur le 4ème bloc (blocs 3, 7, 11, 15...) data = bytearray(16) data[0:16] = b"\x08\xFF\x00\xFF\xFF\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" nfc.mifare_classic_write_block(8, data) print(nfc.mifare_classic_read_block(8)) print([hex(x) for x in nfc.mifare_classic_read_block(8)])
|
Créé avec HelpNDoc Personal Edition: Créer des livres électroniques EPub facilement