.. note::
Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
**Perché unirti?**
- **Supporto esperto**: Risolvi i problemi post-vendita e affronta le sfide tecniche con l'aiuto della nostra community e del nostro team.
- **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime esclusive.
- **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni festive e giveaway**: Partecipa a promozioni festive e giveaway.
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!
.. _ar_rfid:
6.5 - Identificazione a Radiofrequenza
===============================================
L'Identificazione a Radiofrequenza (RFID) si riferisce a tecnologie che utilizzano la comunicazione wireless tra un oggetto (o tag) e un dispositivo interrogante (o lettore) per tracciare e identificare automaticamente tali oggetti. Il raggio di trasmissione del tag è limitato a diversi metri dal lettore. Non è necessariamente richiesta una linea di vista diretta tra il lettore e il tag.
La maggior parte dei tag contiene almeno un circuito integrato (IC) e un'antenna.
Il microchip memorizza informazioni e gestisce la comunicazione a radiofrequenza (RF) con il lettore. I tag passivi non hanno una fonte di energia indipendente e dipendono da un segnale elettromagnetico esterno, fornito dal lettore, per alimentare le loro operazioni.
I tag attivi contengono una fonte di energia indipendente, come una batteria.
Pertanto, possono avere capacità di elaborazione, trasmissione e raggio d'azione maggiori.
* :ref:`cpn_mfrc522`
**Componenti Necessari**
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nome
- ELEMENTI IN QUESTO KIT
- LINK PER L'ACQUISTO
* - Kepler Kit
- 450+
- |link_kepler_kit|
Puoi anche acquistarli separatamente dai link qui sotto.
.. list-table::
:widths: 5 20 5 20
:header-rows: 1
* - SN
- INTRODUZIONE COMPONENTE
- QUANTITÀ
- LINK PER L'ACQUISTO
* - 1
- :ref:`cpn_pico_w`
- 1
- |link_picow_buy|
* - 2
- Cavo Micro USB
- 1
-
* - 3
- :ref:`cpn_breadboard`
- 1
- |link_breadboard_buy|
* - 4
- :ref:`cpn_wire`
- Diversi
- |link_wires_buy|
* - 5
- :ref:`cpn_mfrc522`
- 1
- |link_rfid_buy|
**Schema**
|sch_rfid|
**Cablaggio**
|wiring_rfid|
**Codice**
.. note::
* Qui viene utilizzata la libreria ``MFRC522``, che puoi installare dal **Library Manager**.
.. image:: img/lib_mfrc522.png
La funzione principale è divisa in due:
* ``6.5_rfid_write`` per scrivere informazioni sulla scheda (o chiave).
.. raw:: html
Dopo l'esecuzione, sarai in grado di inserire un messaggio nel monitor seriale, terminandolo con ``#``, e poi scrivere il messaggio sulla scheda avvicinando la scheda (o chiave) al modulo MFRC522.
* ``6.5_rfid_read`` per leggere le informazioni dalla scheda (o chiave).
.. raw:: html
Dopo l'esecuzione, sarai in grado di leggere il messaggio memorizzato sulla scheda (o chiave).
**Come funziona?**
.. code-block:: arduino
#include
#define RST_PIN 0
#define SS_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);
Per prima cosa, istanzia la classe ``MFRC522()``.
Per semplicità d'uso, la libreria ``MFRC522`` è ulteriormente incapsulata con le seguenti funzioni.
* ``void simple_mfrc522_init()`` : Avvia la comunicazione SPI e inizializza il modulo mfrc522.
* ``void simple_mfrc522_get_card()`` : Sospende il programma fino a quando la scheda (o chiave) non viene rilevata, stampa l'UID della scheda e il tipo PICC.
* ``void simple_mfrc522_write(String text)`` : Scrive una stringa sulla scheda (o chiave).
* ``void simple_mfrc522_write(byte* buffer)`` : Scrive informazioni sulla scheda (o chiave), solitamente provenienti dalla porta seriale.
* ``void simple_mfrc522_write(byte section, String text)`` : Scrive una stringa in un settore specifico. ``section`` è impostato su 0 per scrivere nei settori 1-2; ``section`` è impostato su 1 per scrivere nei settori 3-4.
* ``void simple_mfrc522_write(byte section, byte* buffer)`` : Scrive informazioni in un settore specifico, solitamente provenienti dalla porta seriale. ``section`` impostato su 0, scrive nei settori 1-2; ``section`` impostato su 1, scrive nei settori 3-4.
* ``String simple_mfrc522_read()`` : Legge le informazioni nella scheda (o chiave) e restituisce una stringa.
* ``String simple_mfrc522_read(byte section)`` : Legge le informazioni in un settore specifico e restituisce una stringa. ``section`` è impostato su 0, scrive nei settori 1-2; ``section`` è impostato su 1, scrive nei settori 3-4.
Nell'esempio ``6.5_rfid_write.ino``, viene utilizzata la funzione ``Serial.readBytesUntil()``, che è un metodo comune di input seriale.
* `Serial.readBytesUntil `_