Scheda di sviluppo NRF-Nano V3.0, CH340, ATMega328p con
zoom_out_map
chevron_left chevron_right

Le immagini dei prodotti sono solo a scopo informativo e potrebbero presentare piccole differenze, a seconda del lotto e del fornitore. Le specifiche e i prezzi dei prodotti potrebbero essere soggetti a modifiche senza preavviso. Facciamo del nostro meglio per aggiungere specifiche quanto più precise e corrette possibili alla pagina del prodotto, ma è possibile che non siano del tutto corrette. Se identifichi un caso del genere, ti preghiamo di segnalarcelo.

Il prodotto è destinato agli specialisti e richiede personale qualificato e autorizzato. Il prodotto non include istruzioni di montaggio/uso . La messa in funzione del prodotto da parte di persone non qualificate comporta la perdita della garanzia secondo i Termini e Condizioni presenti sul sito.

Le specifiche tecniche indicate (corrente, potenza, ecc.) rappresentano valori massimi consentiti in condizioni ideali di funzionamento. Per un utilizzo sicuro e una durata ottimale, si raccomanda di utilizzare il prodotto in regime continuo a non più del 50% dei valori massimi specificati.

Scheda di sviluppo NRF-Nano V3.0, CH340, ATMega328p con NRF24L01, tipo C

Scheda di sviluppo compatta compatibile con Arduino Nano, ideale per progetti IoT e comunicazioni wireless, integra il transceiver NRF24L01 per collegamenti radio veloci e stabili, utilizza un ATMega328P a 16 MHz con logica a 5 V, mantiene la piedinatura identica a quella di Nano V3 per una facile integrazione, programmazione e alimentazione tramite USB Type-C con CH340G.

13,76 € Tasse incluse

11,38 € Tasse escluse

(1/5) su un total di 1 valutazioni
Leggi le recensioni

Spedito entro mercoledì 11 novembre

Acquistando questo prodotto guadagni 0,69 € in punti fedeltà.

Garanzia: 24 mesi per le persone fisiche
SPEDIZIONE INTERNAZIONALE
Spedizione veloce gratuita per ordini superiori a 100EUR nella maggior parte de paesi UE.
SPEDIZIONE VELOCE 24 ORE
Spediamo dal nostro magazzino entro 24 ore
PUNTI FEDELTÀ
Ricevi punti a ogni ordine, per un valore del 5%.

La scheda di sviluppo NRF-Nano V3.0 combina sullo stesso circuito stampato un microcontrollore ATmega328P compatibile con Arduino Nano V3 e un ricetrasmettitore radio nRF24L01+ da 2,4 GHz, con antenna stampata. È adatta per reti di sensori wireless, telecomandi, automazioni domestiche, moduli di trasmissione dati tra due o più schede e qualsiasi progetto in cui hai bisogno di un microcontrollore e di un collegamento radio in formato Nano.

Il microcontrollore ATmega328P funziona a 16 MHz, con 32 KB di memoria Flash (di cui 2 KB occupati dal bootloader), 2 KB di SRAM e 1 KB di EEPROM, mentre la logica è a 5 V. La comunicazione con il computer avviene tramite il convertitore USB-seriale CH340G, e il connettore USB Type-C serve sia per la programmazione sia per l'alimentazione. La radio nRF24L01+ è collegata al microcontrollore tramite SPI, con CE su D7 e CSN su D8, mentre i pin D7, D8, D11, D12 e D13 non possono più essere usati per altre funzioni.

Tra le caratteristiche principali ci sono il connettore USB Type-C, il convertitore USB-seriale CH340G, l'antenna stampata della radio, il pulsante RESET, il regolatore da 3,3 V che alimenta la radio, il LED di test collegato a D13 e due file da 15 pin ciascuna con la stessa disposizione del Nano V3 standard. L'alimentazione avviene a 5 VDC tramite USB Type-C oppure a 7 - 12 VDC (consigliato 9 VDC) sul pin VIN.

La scheda si programma da Arduino IDE come Arduino Nano ed è compatibile con le librerie e gli sketch di Arduino Nano V3. Tramite radio comunica con altre schede NRF-Nano o con qualsiasi modulo nRF24L01+ collegato ad Arduino, ESP32, STM32 o Raspberry Pi, mentre via USB può essere collegata al computer.

 

Specifiche:

Tensione di alimentazione: 7 - 12 VDC (consigliato 9 VDC) sul pin VIN oppure 5 VDC tramite USB Type-C

Corrente per pin IO: 40 mA

Tensione logica: 5 V

Processore: ATmega328P

Integrato aggiuntivo: Ricetrasmettitore nRF24L01+ (2.4 GHz)

Driver USB-seriale: CH340G

Connettore USB: Type-C

Pin digitali I/O: 14, di cui 6 PWM

Pin di ingresso analogici: 6

Memoria Flash: 32 KB, di cui 2 KB usati per il bootloader

SRAM: 2 KB

EEPROM: 1 KB

Frequenza: 16 MHz

Pin radio: CE = D7, CSN = D8, MOSI = D11, MISO = D12, SCK = D13

Dimensioni: 48 x 19 mm

 

Layout:

Element Funzione
Connettore USB Type-C Alimenta la scheda a 5 V e la collega al computer per la programmazione e la comunicazione seriale tramite CH340G.
Microcontrollore ATmega328P Esegue il programma utente e controlla la radio tramite SPI.
Antenna stampata Antenna della radio nRF24L01+ per la banda 2.4 GHz, realizzata direttamente sul circuito stampato della scheda.
Radio nRF24L01+ Ricetrasmettitore integrato, collegato al microcontrollore tramite CE = D7, CSN = D8 e SPI su D11, D12, D13.
Pulsante RESET Una pressione breve resetta il microcontrollore e riavvia il programma. Dopo il reset si avviano il bootloader e poi il programma caricato.
LED di test D13 Si accende quando il pin D13 è HIGH e si spegne quando è LOW. Poiché D13 è anche la linea SCK della radio, il LED può lampeggiare durante l'attività radio.
Convertitore CH340G (sul retro della scheda) Convertitore USB-seriale usato per la programmazione e per il monitor seriale.
Regolatore AMS1117-3.3 (sul retro della scheda) Fornisce i 3.3 V necessari alla radio nRF24L01+.
Barrette di pin Due file da 15 pin ciascuna, con la stessa disposizione del Nano V3.

 

Pinout:

Pinout placa de dezvoltare NRF-Nano V3.0 ATmega328P cu nRF24L01+, CH340, USB Type-C

Connettore Pin Funzione
Fila VIN / D13 VIN Ingresso di alimentazione 7 - 12 VDC (consigliato 9 VDC)
Fila VIN / D13 GND Massa
Fila VIN / D13 RST Reset (a livello LOW resetta il microcontrollore)
Fila VIN / D13 5V Tensione di 5 V
Fila VIN / D13 A7, A6 Ingressi analogici (solo ingresso analogico)
Fila VIN / D13 A5 - A0 Ingressi analogici, utilizzabili anche come pin digitali (A4 = SDA, A5 = SCL per I2C)
Fila VIN / D13 REF Riferimento analogico esterno
Fila VIN / D13 3V3 Tensione di 3.3 V
Fila VIN / D13 D13 Pin digitale, SCK SPI (usato dalla radio), LED di test
Fila TX1 / D12 TX1 Trasmissione seriale (D1)
Fila TX1 / D12 RX0 Ricezione seriale (D0)
Fila TX1 / D12 RST Reset
Fila TX1 / D12 GND Massa
Fila TX1 / D12 D2 Pin digitale, interrupt esterno INT0
Fila TX1 / D12 D3 Pin digitale con PWM, interrupt esterno INT1
Fila TX1 / D12 D4 Pin digitale
Fila TX1 / D12 D5 Pin digitale con PWM
Fila TX1 / D12 D6 Pin digitale con PWM
Fila TX1 / D12 D7 CE della radio nRF24L01+ (occupato)
Fila TX1 / D12 D8 CSN della radio nRF24L01+ (occupato)
Fila TX1 / D12 D9 Pin digitale con PWM
Fila TX1 / D12 D10 Pin digitale con PWM, SS SPI
Fila TX1 / D12 D11 Pin digitale con PWM, MOSI SPI (usato dalla radio)
Fila TX1 / D12 D12 MISO SPI (usato dalla radio)

 

Pin ATmega328P Pin nRF24L01+ Funzione
D7 CE Abilitazione radio (modalità ricezione o trasmissione)
D8 CSN Selezione del chip SPI
D11 MOSI Dati dal microcontrollore alla radio
D12 MISO Dati dalla radio al microcontrollore
D13 SCK Clock SPI

 

Utilizzo:

Collegate la scheda al computer tramite un cavo USB-A a USB Type-C che consenta il trasferimento dati.

Se la scheda non viene riconosciuta con l'ultima versione del driver CH340 (2023), installate il driver dalla sezione Download.

In Arduino IDE selezionate la scheda Arduino Nano e il processore ATmega328P; se il caricamento del programma fallisce, scegliete il processore ATmega328P (Old Bootloader).

Alimentate la scheda tramite USB Type-C a 5 VDC, oppure sul pin VIN a 7 - 12 VDC (consigliato 9 VDC), rispettando la polarità.

Non applicate ai pin I/O tensioni superiori a 5 V e non superate 40 mA su un singolo pin.

Per la comunicazione radio installate la libreria RF24 e create l'oggetto radio con i pin CE = 7 e CSN = 8, cioè RF24 radio(7, 8).

Non usate i pin D7, D8, D11, D12 e D13 per altre funzioni, poiché sono occupati dalla radio.

Premete brevemente il pulsante RESET per riavviare il programma; dopo il caricamento di un nuovo programma la scheda si avvia automaticamente.

Per testare il collegamento radio usate due schede NRF-Nano con lo stesso canale radio e con indirizzi invertiti tra loro, quindi osservate il risultato sul monitor seriale.

Per risultati stabili alimentate la scheda con un'alimentazione affidabile, tenete l'antenna stampata lontana da parti metalliche ed evitate di coprire la zona dell'antenna con custodie metalliche o cavi.

9159
Tensione di alimentazione
7-12 V DC (recomandat 9 V DC) pe VIN sau 5 V DC prin USB Type-C
Dimensioni
48 x 19 mm
Frequenza di lavoro
2.4 GHz
Tensione logica
5 V
Tipo di connettore
Type-C
Memoria Flash
32 KB
Circuito integrato
nRF24L01+ (2.4 GHz), CH340G
Processore
ATmega328P
Memoria SRAM
2 KB
Numero di pin I/O digitali
14, din care 6 PWM
Frequenza del processore
16 MHz
Numero di pin analogici
6

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  NRF-Nano V3.0 radio self-check

  Board in Arduino IDE: Arduino Nano (Tools > Board > Arduino AVR Boards > Arduino Nano)
  Processor: ATmega328P (if upload fails, use ATmega328P (Old Bootloader))
  Board package: Arduino AVR Boards (comes with Arduino IDE)

  Wiring: none, the board is powered and programmed through the USB Type-C connector.
  Built-in radio nRF24L01+: CE = D7, CSN = D8, MOSI = D11, MISO = D12, SCK = D13

  Library to install from Library Manager: RF24 by TMRh20 (version 1.4.0 or newer)
  SPI library comes with Arduino IDE.

  Open the Serial Monitor at 9600 baud. The sketch checks that the radio answers
  and prints its configuration.
*/

#include <SPI.h>
#include <RF24.h>
#include <printf.h>

// Radio pins on NRF-Nano V3.0
const uint8_t PIN_CE = 7;
const uint8_t PIN_CSN = 8;

RF24 radio(PIN_CE, PIN_CSN);

void setup() {
  // Start the serial monitor and enable printf for printDetails()
  Serial.begin(9600);
  printf_begin();
  Serial.println();
  Serial.println(F("NRF-Nano V3.0 radio self-check"));

  // Start the radio
  if (!radio.begin()) {
    Serial.println(F("Radio not responding. On older RF-Nano V1 or V2 try RF24 radio(10, 9)."));
    while (true) {
      // Stop here
    }
  }

  // Basic radio configuration
  radio.setPALevel(RF24_PA_LOW);
  radio.setChannel(76);
  radio.setDataRate(RF24_1MBPS);

  // Check the SPI connection to the nRF24L01+ chip
  if (radio.isChipConnected()) {
    Serial.println(F("nRF24L01+ chip detected."));
  } else {
    Serial.println(F("nRF24L01+ chip NOT detected."));
  }

  // Print all radio registers
  radio.printDetails();
}

void loop() {
  // Print a heartbeat once per second to show the program is running
  Serial.print(F("Running, channel = "));
  Serial.println(radio.getChannel());
  delay(1000);
}

Questo tutorial utilizza la scheda NRF-Nano V3.0 come scheda di sviluppo a sé stante, programmata dall'Arduino IDE come Arduino Nano, senza altra scheda Arduino. La scheda combina un microcontrollore ATmega328P con un radio nRF24L01+ a 2.4 GHz, quindi si usa per telecomandi, reti di sensori e qualsiasi progetto in cui due o più schede devono scambiare dati senza fili.

Realizzeremo un test radio con due schede identiche. Su ogni scheda si collegano un pulsante e un LED, e ogni scheda invia lo stato del proprio pulsante e accende il LED dell'altra scheda. L'alimentazione e la programmazione avvengono tramite USB Type-C dal computer.

Scheda di sviluppo NRF-Nano V3.0, CH340, ATMega328p con NRF24L01, Type C

Come funziona:

La scheda ha due parti che collaborano. Il microcontrollore ATmega328P esegue il programma, mentre il radio nRF24L01+ trasmette e riceve pacchetti nella banda a 2.4 GHz. I due comunicano tramite SPI, con CE su D7, CSN su D8, MOSI su D11, MISO su D12 e SCK su D13. Per questo motivo questi cinque pin non possono essere usati per altro.

Il radio lavora su canali da 1 MHz, numerati da 0 a 125. La frequenza di un canale si calcola così: frequenza = 2400 MHz + numero del canale. Per il canale 76 utilizzato nel programma risulta 2400 + 76 = 2476 MHz. Le due schede devono usare lo stesso canale e la stessa velocità di trasferimento.

Ogni scheda ha un indirizzo di 5 byte. La scheda A invia all'indirizzo della scheda B e ascolta sul proprio indirizzo. La scheda B fa il contrario. Il radio usa la conferma automatica dei pacchetti, quindi la funzione write() restituisce true solo se l'altra scheda ha ricevuto il pacchetto. Un pacchetto può avere al massimo 32 byte, e noi inviamo un solo byte con lo stato del pulsante.

Il pulsante viene letto con INPUT_PULLUP. La resistenza interna collega il pin a 5 V, mentre alla pressione il pulsante collega il pin a GND, quindi la lettura è LOW quando il pulsante è premuto. Il LED ha una resistenza da 220 ohm in serie. La corrente nel LED è circa (5 V - 2 V) / 220 ohm = 14 mA, sotto il limite di 40 mA di un pin.

Collegamento:

Alimentate la scheda tramite USB Type-C da una porta USB del computer, a 5 V. La logica della scheda è a 5 V, mentre il radio è alimentato internamente a 3.3 V dal regolatore presente sulla scheda, quindi non serve un convertitore di livello né un'alimentazione separata per il radio. Montate gli stessi componenti su entrambe le schede.

Pin del prodotto Si collega a Ruolo
USB Type-C Porta USB del computer (cavo USB-A a USB Type-C) Alimentazione 5 V e programmazione
D2 Pulsante 6x6 mm, pin 1 Ingresso con INPUT_PULLUP, legge LOW alla pressione
GND Pulsante 6x6 mm, pin 2 Massa del pulsante
D3 Resistenza 220 ohm, terminale 1 Uscita digitale per il LED
Resistenza 220 ohm, terminale 2 LED rosso 5 mm, anodo (gamba lunga) Limitazione della corrente del LED
GND LED rosso 5 mm, catodo (gamba corta) Massa del LED

Collegamento NRF-Nano V3.0 con pulsante su D2 e LED con resistore 220 Ω su D3, alimentazione tramite USB Type-C

Pulsanti, regolazioni e indicatori:

Elemento Cosa fa Come si usa
Pulsante RESET Resetta il microcontrollore ATmega328P Premetelo brevemente per riavviare il programma dall'inizio
LED di test D13 Si accende quando il pin D13 è HIGH Usatelo come indicatore dell'attività su D13. Poiché D13 è la linea SCK del radio, in questo programma potete percepire quando il radio lavora

Il pulsante RESET non ha una pressione lunga con altre funzioni. Premetelo una volta dopo aver collegato il montaggio e vedrete sul monitor seriale il messaggio di avvio, che conferma che il programma è ripartito.

Il LED di test su D13 non richiede regolazioni. In questo tutorial non lo comandiamo dal programma, e può lampeggiare leggermente perché D13 trasporta il clock SPI del radio. Questo è normale.

Il pulsante su D2 e il LED su D3 sono i componenti montati da voi. All'avvio il pulsante deve essere libero (lettura HIGH) e il LED spento. Premendo il pulsante su una scheda, deve accendersi il LED dell'altra scheda.

Scheda e librerie:

Nell'Arduino IDE scegliete Strumenti > Scheda > Arduino AVR Boards > Arduino Nano. Il pacchetto Arduino AVR Boards è incluso nell'Arduino IDE e non va installato separatamente. In Strumenti > Processore scegliete ATmega328P, e se il caricamento dà errore, scegliete ATmega328P (Old Bootloader). In Strumenti > Porta scegliete la nuova porta seriale apparsa.

Installate dal Gestore librerie la libreria RF24 di TMRh20, versione 1.4.0 o successiva. La libreria SPI è inclusa nell'Arduino IDE e non va installata.

Codice:

Lo stesso programma si carica su entrambe le schede. L'unica differenza è il valore di NODE_ID all'inizio, che è 0 per la prima scheda e 1 per la seconda.

/*
  NRF-Nano V3.0 radio test: two boards, each sends its button state
  and lights the LED of the other board.
  Board in Arduino IDE: Arduino Nano (Tools > Board > Arduino AVR Boards > Arduino Nano)
  Processor: ATmega328P (if upload fails, use ATmega328P (Old Bootloader))
  Board package: Arduino AVR Boards (comes with Arduino IDE)
  Library to install from Library Manager: RF24 by TMRh20 (version 1.4.0 or newer)
  SPI library comes with Arduino IDE.
  Wiring on each board:
    D2  -> push button pin 1 (button pin 2 -> GND), INPUT_PULLUP
    D3  -> resistor 220 ohm -> LED anode (LED cathode -> GND)
  Built-in radio nRF24L01+: CE = D7, CSN = D8, MOSI = D11, MISO = D12, SCK = D13
  Upload this same sketch to both boards.
  Set NODE_ID to 0 for the first board and to 1 for the second board.
*/
#include <SPI.h>
#include <RF24.h>
// Identity of this board: 0 for the first board, 1 for the second board
#define NODE_ID 0
// Pin definitions
const uint8_t PIN_BUTTON = 2;   // Push button to GND, read with internal pull-up
const uint8_t PIN_LED = 3;      // LED through 220 ohm resistor
const uint8_t PIN_CE = 7;       // Radio CE pin on NRF-Nano V3.0
const uint8_t PIN_CSN = 8;      // Radio CSN pin on NRF-Nano V3.0
// Timing settings in milliseconds
const unsigned long SEND_INTERVAL_MS = 100;    // How often the button state is sent
const unsigned long LINK_TIMEOUT_MS = 1000;    // Link is lost after this time without packets
const unsigned long PRINT_INTERVAL_MS = 500;   // How often the status is printed
// Radio object
RF24 radio(PIN_CE, PIN_CSN);
// One address for each board (5 characters plus the end of string)
const byte addresses[][6] = {"NODE0", "NODE1"};
// State variables
uint8_t localState = 0;        // 1 when the local button is pressed
uint8_t remoteState = 0;       // 1 when the button of the other board is pressed
bool lastSendOk = false;       // Result of the last transmission
bool everReceived = false;     // True after the first packet is received
unsigned long lastSend = 0;
unsigned long lastReceive = 0;
unsigned long lastPrint = 0;
// Prints the current status on the serial monitor
void printStatus() {
  bool linkOk = everReceived && (millis() - lastReceive < LINK_TIMEOUT_MS);
  Serial.print(F("Local: "));
  Serial.print(localState ? F("PRESSED") : F("RELEASED"));
  Serial.print(F(" | Sent: "));
  Serial.print(lastSendOk ? F("OK") : F("FAILED"));
  Serial.print(F(" | Remote: "));
  Serial.print(remoteState ? F("PRESSED") : F("RELEASED"));
  Serial.print(F(" | Link: "));
  Serial.println(linkOk ? F("OK") : F("LOST"));
}
void setup() {
  // Start the serial monitor
  Serial.begin(9600);
  // Configure the button with pull-up and the LED as output
  pinMode(PIN_BUTTON, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_LED, LOW);
  // Start the radio and stop if it does not answer
  if (!radio.begin()) {
    Serial.println(F("Radio not responding. Check CE and CSN pins."));
    while (true) {
      // Wait here forever
    }
  }
  // Radio settings, they must be the same on both boards
  radio.setPALevel(RF24_PA_LOW);   // Low power is enough for a bench test
  radio.setChannel(76);            // 2400 + 76 = 2476 MHz
  // This board writes to the other board and listens on its own address
  const uint8_t ownIndex = NODE_ID;
  const uint8_t peerIndex = 1 - NODE_ID;
  radio.openWritingPipe(addresses[peerIndex]);
  radio.openReadingPipe(1, addresses[ownIndex]);
  // Listen by default
  radio.startListening();
  Serial.print(F("Radio ready on channel 76, node "));
  Serial.println(NODE_ID);
}
void loop() {
  unsigned long now = millis();
  // Read the button and send its state at a fixed interval
  if (now - lastSend >= SEND_INTERVAL_MS) {
    lastSend = now;
    localState = (digitalRead(PIN_BUTTON) == LOW) ? 1 : 0;  // LOW means pressed
    radio.stopListening();                                   // Switch to transmit mode
    lastSendOk = radio.write(&localState, sizeof(localState));
    radio.startListening();                                  // Back to receive mode
  }
  // Read every packet that arrived
  while (radio.available()) {
    radio.read(&remoteState, sizeof(remoteState));
    lastReceive = millis();
    everReceived = true;
  }
  // Turn the LED on only while the link is alive and the remote button is pressed
  bool linkOk = everReceived && (millis() - lastReceive < LINK_TIMEOUT_MS);
  digitalWrite(PIN_LED, (linkOk && remoteState) ? HIGH : LOW);
  // Print the status from time to time
  if (now - lastPrint >= PRINT_INTERVAL_MS) {
    lastPrint = now;
    printStatus();
  }
}

Come funziona il codice:

All'inizio definiamo NODE_ID, i pin PIN_BUTTON (D2), PIN_LED (D3), PIN_CE (D7) e PIN_CSN (D8), e gli intervalli di tempo SEND_INTERVAL_MS, LINK_TIMEOUT_MS e PRINT_INTERVAL_MS. L'oggetto radio viene creato con RF24 radio(PIN_CE, PIN_CSN), e l'array addresses contiene gli indirizzi delle due schede.

In setup() avviamo la porta seriale a 9600 baud, configuriamo il pulsante con INPUT_PULLUP e il LED come uscita, poi avviamo il radio con radio.begin(). Se il radio non risponde, il programma mostra un messaggio e si ferma. Poi impostiamo il canale 76, il livello di potenza RF24_PA_LOW, l'indirizzo di scrittura dell'altra scheda con openWritingPipe() e l'indirizzo proprio di lettura con openReadingPipe(). Alla fine chiamiamo startListening(), quindi la scheda ascolta per impostazione predefinita.

In loop() inviamo lo stato del pulsante ogni SEND_INTERVAL_MS. Prima leggiamo il pulsante nella variabile localState, che vale 1 se il pulsante è premuto. Fermiamo l'ascolto con stopListening(), inviamo il byte con write(), memorizziamo il risultato in lastSendOk e riprendiamo l'ascolto.

Finché radio.available() è vero leggiamo il pacchetto in remoteState e memorizziamo il momento della ricezione in lastReceive. Il LED su D3 segue lo stato remoteState, e se non riceviamo nulla per più di LINK_TIMEOUT_MS, il LED si spegne per sicurezza. Ogni PRINT_INTERVAL_MS la funzione printStatus() mostra lo stato del pulsante locale, il risultato dell'invio, lo stato del pulsante dell'altra scheda e lo stato del collegamento.

Risultato:

Aprite Strumenti > Monitor seriale e impostate la velocità a 9600 baud. Dopo l'avvio, le due schede mostrano il loro stato ogni mezzo secondo. Quando premete il pulsante di una scheda, si accende il LED dell'altra, e la riga sul monitor seriale mostra RELEASED o PRESSED.

Radio ready on channel 76, node 0
Local: RELEASED | Sent: FAILED | Remote: RELEASED | Link: LOST
Local: RELEASED | Sent: OK | Remote: RELEASED | Link: OK
Local: RELEASED | Sent: OK | Remote: RELEASED | Link: OK
Local: PRESSED | Sent: OK | Remote: RELEASED | Link: OK
Local: PRESSED | Sent: OK | Remote: RELEASED | Link: OK
Local: RELEASED | Sent: OK | Remote: PRESSED | Link: OK
Local: RELEASED | Sent: OK | Remote: PRESSED | Link: OK
Local: RELEASED | Sent: OK | Remote: RELEASED | Link: OK

Problemi frequenti:

La scheda non appare come porta seriale. La causa è di solito un cavo che serve solo a caricare, oppure il driver CH340. Usate un cavo USB-A a USB Type-C con trasferimento dati, e se la porta continua a non apparire, installate il driver dalla sezione Download, perché l'ultima versione del 2023 potrebbe essere incompatibile con la scheda.

Il caricamento si interrompe con l'errore avrdude not in sync. La scheda ha un bootloader più vecchio. Scegliete in Strumenti > Processore la variante ATmega328P (Old Bootloader) e caricate di nuovo.

Sul monitor seriale appare il messaggio che il radio non risponde. Verificate di usare RF24 radio(7, 8), che è corretto per la V3.0. Le schede più vecchie RF-Nano V1 e V2 usano CE su D10 e CSN su D9, quindi per loro provate RF24 radio(10, 9). Verificate anche di non aver collegato nulla su D7, D8, D11, D12 o D13.

Lo stato del collegamento è sempre LOST. Verificate che su le due schede NODE_ID sia diverso (0 e 1), che entrambe usino il canale 76 e che entrambe siano alimentate. Avvicinate le schede a qualche metro e allontanatele da oggetti metallici.

Il LED è sempre spento o sempre acceso. Verificate la polarità del LED (anodo verso la resistenza) e che il pulsante sia montato in diagonale, con un pin su D2 e l'altro su GND. Con INPUT_PULLUP il pulsante deve leggere LOW solo quando è premuto.

Il radio si ferma o si riavvia in modo casuale. Il radio è sensibile a un'alimentazione instabile. Usate una porta USB diretta del computer oppure un alimentatore buono, non un hub con alimentazione debole.

Limitazioni e consigli:

I pin D7, D8, D11, D12 e D13 sono occupati dal radio, quindi per i sensori restano liberi D2 - D6, A0 - A7 (A6 e A7 sono solo ingressi analogici) e i pin seriali D0 e D1. Ogni pin I/O sopporta al massimo 40 mA, quindi relè e motori si comandano tramite transistor o moduli dedicati.

Un pacchetto radio ha al massimo 32 byte, e la portata dipende dall'ambiente, dagli ostacoli e dalla potenza impostata. La potenza RF24_PA_LOW è sufficiente per i test sul banco, mentre per distanze maggiori potete aumentare il livello con setPALevel(), purché l'alimentazione sia stabile.

Partendo da questo montaggio potete realizzare un telecomando con più pulsanti, un sensore di temperatura che invia valori a una scheda centrale, oppure una rete a stella in cui una scheda riceve su più indirizzi da più trasmettitori.

Potrebbe anche piacerti