Placa dezvoltare NRF Nano V3 CH340 Type C
zoom_out_map
chevron_left chevron_right

Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.

Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.

Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.

Placa dezvoltare NRF-Nano V3.0, CH340, ATMega328p cu NRF24L01, Type C

Placa de dezvoltare compacta compatibila Arduino Nano, ideala pentru proiecte IoT si comunicatie wireless, integreaza transceiver NRF24L01 pentru legaturi radio rapide si stabile, foloseste ATMega328P la 16MHz cu logica 5V, pastreaza pinout identic cu Nano V3 pentru integrare usoara, programare si alimentare prin USB Type C cu CH340G.

13,76 € Cu TVA

11,38 € Fara TVA

(1/5) din 1 total recenzii
Citeste recenziile
1-2 zile
check In Stoc

Expediere estimata: miercuri 11 noiembrie

Ai gasit mai ieftin? Spune-ne! (autentifica-te pentru a trimite o solicitare)

Cumparand acest produs primesti 0,69 € in puncte de fidelitate.

Garantie: 24 luni pentru persoane fizice
LIVRARE GRATUITA
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
EXPEDIERE RAPIDA
Produsele sunt expediate din stoc propriu
PUNCTE FIDELITATE
Primesti puncte la fiecare comanda, in valoare de 5%

Placa de dezvoltare NRF-Nano V3.0 combina pe acelasi circuit imprimat un microcontroler ATmega328P compatibil Arduino Nano V3 si un transceiver radio nRF24L01+ de 2.4 GHz, cu antena imprimata. Este potrivita pentru retele de senzori fara fir, telecomenzi, automatizari de casa, module de transmisie date intre doua sau mai multe placi si orice proiect in care ai nevoie de microcontroler si de legatura radio intr-un format Nano.

Microcontrolerul ATmega328P ruleaza la 16 MHz, cu 32 KB memorie Flash (din care 2 KB sunt ocupati de bootloader), 2 KB SRAM si 1 KB EEPROM, iar logica este de 5 V. Comunicatia cu calculatorul se face prin convertorul USB-serial CH340G, iar mufa USB Type-C serveste atat la programare, cat si la alimentare. Radioul nRF24L01+ este legat de microcontroler prin SPI, cu CE pe D7 si CSN pe D8, iar pinii D7, D8, D11, D12 si D13 nu mai pot fi folositi pentru alte functii.

Printre caracteristicile principale se numara mufa USB Type-C, convertorul USB-serial CH340G, antena imprimata a radioului, butonul RESET, regulatorul de 3.3 V care alimenteaza radioul, LED-ul de test conectat la D13 si doua randuri de cate 15 pini cu aceeasi dispunere ca la Nano V3 standard. Alimentarea se face la 5 VDC prin USB Type-C sau la 7 - 12 VDC (recomandat 9 VDC) pe pinul VIN.

Placa se programeaza din Arduino IDE ca Arduino Nano si este compatibila cu bibliotecile si schitele Arduino Nano V3. Prin radio comunica cu alte placi NRF-Nano sau cu orice modul nRF24L01+ conectat la Arduino, ESP32, STM32 sau Raspberry Pi, iar prin USB poate fi conectata la calculator.

 

Specificatii:

Tensiune alimentare: 7 - 12 VDC (recomandat 9 VDC) pe pinul VIN sau 5 VDC prin USB Type-C

Curent per pin IO: 40 mA

Tensiune logica: 5 V

Procesor: ATmega328P

Integrat suplimentar: Transceiver nRF24L01+ (2.4 GHz)

Driver USB la Serial: CH340G

Conector USB: Type-C

Pini digitali I/O: 14, din care 6 PWM

Pini analogici input: 6

Memorie Flash: 32 KB, din care 2 KB folositi pentru bootloader

SRAM: 2 KB

EEPROM: 1 KB

Frecventa: 16 MHz

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

Dimensiuni: 48 x 19 mm

 

Layout:

Element Functie
Mufa USB Type-C Alimenteaza placa la 5 V si o conecteaza la calculator pentru programare si comunicatie seriala prin CH340G.
Microcontroler ATmega328P Executa programul utilizatorului si comanda radioul prin SPI.
Antena imprimata Antena radioului nRF24L01+ pentru banda de 2.4 GHz, realizata direct pe cablajul placii.
Radio nRF24L01+ Transceiver integrat, legat de microcontroler prin CE = D7, CSN = D8 si SPI pe D11, D12, D13.
Buton RESET O apasare scurta reseteaza microcontrolerul si reporneste programul. Dupa resetare pornesc bootloaderul si apoi programul incarcat.
LED de test D13 Se aprinde cand pinul D13 este HIGH si se stinge cand este LOW. Deoarece D13 este si linia SCK a radioului, LED-ul poate palpai la activitatea radio.
Convertor CH340G (pe spatele placii) Convertor USB-serial folosit la programare si la monitorul serial.
Regulator AMS1117-3.3 (pe spatele placii) Furnizeaza cei 3.3 V necesari radioului nRF24L01+.
Barete de pini Doua randuri de cate 15 pini, cu aceeasi dispunere ca la Nano V3.

 

Pinout:

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

Conector Pin Functie
Rand VIN / D13 VIN Intrare de alimentare 7 - 12 VDC (recomandat 9 VDC)
Rand VIN / D13 GND Masa
Rand VIN / D13 RST Reset (la nivel LOW reseteaza microcontrolerul)
Rand VIN / D13 5V Tensiune de 5 V
Rand VIN / D13 A7, A6 Intrari analogice (doar intrare analogica)
Rand VIN / D13 A5 - A0 Intrari analogice, utilizabile si ca pini digitali (A4 = SDA, A5 = SCL pentru I2C)
Rand VIN / D13 REF Referinta analogica externa
Rand VIN / D13 3V3 Tensiune de 3.3 V
Rand VIN / D13 D13 Pin digital, SCK SPI (folosit de radio), LED de test
Rand TX1 / D12 TX1 Transmisie serial (D1)
Rand TX1 / D12 RX0 Receptie serial (D0)
Rand TX1 / D12 RST Reset
Rand TX1 / D12 GND Masa
Rand TX1 / D12 D2 Pin digital, intrerupere externa INT0
Rand TX1 / D12 D3 Pin digital cu PWM, intrerupere externa INT1
Rand TX1 / D12 D4 Pin digital
Rand TX1 / D12 D5 Pin digital cu PWM
Rand TX1 / D12 D6 Pin digital cu PWM
Rand TX1 / D12 D7 CE al radioului nRF24L01+ (ocupat)
Rand TX1 / D12 D8 CSN al radioului nRF24L01+ (ocupat)
Rand TX1 / D12 D9 Pin digital cu PWM
Rand TX1 / D12 D10 Pin digital cu PWM, SS SPI
Rand TX1 / D12 D11 Pin digital cu PWM, MOSI SPI (folosit de radio)
Rand TX1 / D12 D12 MISO SPI (folosit de radio)

 

Pin ATmega328P Pin nRF24L01+ Functie
D7 CE Activare radio (mod receptie sau transmisie)
D8 CSN Selectie cip SPI
D11 MOSI Date de la microcontroler la radio
D12 MISO Date de la radio la microcontroler
D13 SCK Ceas SPI

 

Utilizare:

Conectati placa la calculator printr-un cablu USB-A la USB Type-C care permite transfer de date.

Daca placa nu este recunoscuta cu ultima versiune a driverului CH340 (2023), instalati driverul din sectiunea Download.

In Arduino IDE selectati placa Arduino Nano si procesorul ATmega328P, iar daca incarcarea programului esueaza, alegeti procesorul ATmega328P (Old Bootloader).

Alimentati placa fie prin USB Type-C la 5 VDC, fie pe pinul VIN la 7 - 12 VDC (recomandat 9 VDC), respectand polaritatea.

Nu aplicati pe pinii I/O tensiuni peste 5 V si nu depasiti 40 mA pe un pin.

Pentru comunicatia radio instalati biblioteca RF24 si creati obiectul radio cu pinii CE = 7 si CSN = 8, adica RF24 radio(7, 8).

Nu folositi pinii D7, D8, D11, D12 si D13 pentru alte functii, deoarece sunt ocupati de radio.

Apasati scurt butonul RESET pentru a reporni programul, iar dupa incarcarea unui program nou placa porneste automat.

Pentru a testa legatura radio folositi doua placi NRF-Nano cu acelasi canal radio si cu adrese inversate intre ele, apoi urmariti rezultatul pe monitorul serial.

Pentru rezultate stabile alimentati placa dintr-o sursa buna, tineti antena imprimata departe de piese metalice si evitati sa acoperiti zona antenei cu carcase metalice sau fire.

9159
Tensiune de alimentare
7-12 V DC (recomandat 9 V DC) pe VIN sau 5 V DC prin USB Type-C
Dimensiuni
48 x 19 mm
Frecventa de lucru
2.4 GHz
Tensiune logica
5 V
Tip conector
Type-C
Memorie Flash
32 KB
Circuit integrat
nRF24L01+ (2.4 GHz), CH340G
Procesor
ATmega328P
Memorie SRAM
2 KB
Numar de pini I/O digitali
14, din care 6 PWM
Frecventa procesor
16 MHz
Numar de pini 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:

Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.

Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.

Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.

 

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]

/*
  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);
}

Acest tutorial foloseste placa NRF-Nano V3.0 ca placa de dezvoltare in sine, programata din Arduino IDE ca Arduino Nano, fara alta placa Arduino. Placa combina un ATmega328P cu un radio nRF24L01+ de 2.4 GHz, deci se foloseste la telecomenzi, retele de senzori si orice proiect in care doua sau mai multe placi trebuie sa schimbe date fara fir.

Vom construi un test radio cu doua placi identice. Pe fiecare placa se conecteaza un buton si un LED, iar fiecare placa trimite starea butonului ei si aprinde LED-ul celeilalte placi. Alimentarea si programarea se fac prin USB Type-C de la calculator.

Placa dezvoltare NRF-Nano V3.0, CH340, ATMega328p cu NRF24L01, Type C

Cum functioneaza:

Placa are doua parti care colaboreaza. Microcontrolerul ATmega328P ruleaza programul, iar radioul nRF24L01+ transmite si receptioneaza pachete in banda de 2.4 GHz. Cele doua comunica prin SPI, cu CE pe D7, CSN pe D8, MOSI pe D11, MISO pe D12 si SCK pe D13. Din acest motiv acesti cinci pini nu pot fi folositi pentru altceva.

Radioul lucreaza pe canale de 1 MHz, numerotate de la 0 la 125. Frecventa unui canal se calculeaza astfel: frecventa = 2400 MHz + numarul canalului. Pentru canalul 76 folosit in program rezulta 2400 + 76 = 2476 MHz. Cele doua placi trebuie sa foloseasca acelasi canal si aceeasi viteza de transfer.

Fiecare placa are o adresa de 5 octeti. Placa A trimite catre adresa placii B si asculta pe adresa ei. Placa B face invers. Radioul foloseste confirmare automata a pachetelor, deci functia write() intoarce true doar daca cealalta placa a primit pachetul. Un pachet poate avea cel mult 32 de octeti, iar noi trimitem un singur octet cu starea butonului.

Butonul este citit cu INPUT_PULLUP. Rezistenta interna leaga pinul la 5 V, iar la apasare butonul il leaga la GND, deci citirea este LOW cand butonul este apasat. LED-ul are o rezistenta de 220 ohmi in serie. Curentul prin LED este aproximativ (5 V - 2 V) / 220 ohmi = 14 mA, sub limita de 40 mA a unui pin.

Conectare:

Alimentati placa prin USB Type-C de la un port USB al calculatorului, la 5 V. Logica placii este de 5 V, iar radioul este alimentat intern la 3.3 V de regulatorul de pe placa, deci nu este nevoie de convertor de nivel si nici de alimentare separata pentru radio. Montati aceleasi componente pe ambele placi.

Pin produs Se conecteaza la Rol
USB Type-C Port USB al calculatorului (cablu USB-A la USB Type-C) Alimentare 5 V si programare
D2 Buton 6x6 mm, pin 1 Intrare cu INPUT_PULLUP, citeste LOW la apasare
GND Buton 6x6 mm, pin 2 Masa butonului
D3 Rezistenta 220 ohmi, capat 1 Iesire digitala pentru LED
Rezistenta 220 ohmi, capat 2 LED rosu 5 mm, anod (piciorul lung) Limitare curent LED
GND LED rosu 5 mm, catod (piciorul scurt) Masa LED-ului

Conectare NRF-Nano V3.0 cu buton pe D2 si LED cu rezistor 220 Ω pe D3, alimentare prin USB Type-C

Butoane, reglaje si indicatoare:

Element Ce face Cum se foloseste
Buton RESET Reseteaza microcontrolerul ATmega328P Apasati scurt pentru a reporni programul de la inceput
LED de test D13 Se aprinde cand pinul D13 este HIGH Il folositi ca indicator al activitatii pe D13. Deoarece D13 este linia SCK a radioului, in acest program poate palpai cand radioul lucreaza

Butonul RESET nu are apasare lunga cu alta functie. Apasati-l o data dupa ce ati conectat montajul si veti vedea pe monitorul serial mesajul de pornire, ceea ce confirma ca programul a repornit.

LED-ul de test de pe D13 nu necesita reglaj. In acest tutorial nu il comandam din program, iar el poate palpai usor pentru ca D13 transporta ceasul SPI al radioului. Acest lucru este normal.

Butonul de pe D2 si LED-ul de pe D3 sunt componentele montate de dumneavoastra. Pornirea se face cu butonul liber (citire HIGH) si LED-ul stins. La apasarea butonului pe o placa trebuie sa se aprinda LED-ul de pe cealalta placa.

Placa si biblioteci:

In Arduino IDE alegeti Tools > Board > Arduino AVR Boards > Arduino Nano. Pachetul Arduino AVR Boards vine odata cu Arduino IDE si nu trebuie instalat separat. La Tools > Processor alegeti ATmega328P, iar daca incarcarea da eroare, alegeti ATmega328P (Old Bootloader). La Tools > Port alegeti portul serial nou aparut.

Instalati din Library Manager biblioteca RF24 de TMRh20, versiunea 1.4.0 sau mai noua. Biblioteca SPI vine cu Arduino IDE si nu trebuie instalata.

Codul:

Acelasi program se incarca pe ambele placi. Singura diferenta este valoarea NODE_ID de la inceput, care este 0 pentru prima placa si 1 pentru a doua.

/*
  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();
  }
}

Cum functioneaza codul:

La inceput definim NODE_ID, pinii PIN_BUTTON (D2), PIN_LED (D3), PIN_CE (D7) si PIN_CSN (D8), precum si intervalele de timp SEND_INTERVAL_MS, LINK_TIMEOUT_MS si PRINT_INTERVAL_MS. Obiectul radio este creat cu RF24 radio(PIN_CE, PIN_CSN), iar tabloul addresses contine adresele celor doua placi.

In setup() pornim portul serial la 9600 baud, configuram butonul cu INPUT_PULLUP si LED-ul ca iesire, apoi pornim radioul cu radio.begin(). Daca radioul nu raspunde, programul afiseaza un mesaj si se opreste. Apoi setam canalul 76, nivelul de putere RF24_PA_LOW, adresa de scriere a celeilalte placi cu openWritingPipe() si adresa proprie de citire cu openReadingPipe(). La final apelam startListening(), deci placa asculta implicit.

In loop() trimitem la fiecare SEND_INTERVAL_MS starea butonului. Mai intai citim butonul in variabila localState, care este 1 daca butonul este apasat. Oprim ascultarea cu stopListening(), trimitem octetul cu write(), memoram rezultatul in lastSendOk si reluam ascultarea.

Cat timp radio.available() este adevarat citim pachetul in remoteState si retinem momentul primirii in lastReceive. LED-ul de pe D3 urmeaza starea remoteState, iar daca nu primim nimic mai mult de LINK_TIMEOUT_MS, LED-ul se stinge ca masura de siguranta. La fiecare PRINT_INTERVAL_MS functia printStatus() afiseaza starea butonului local, rezultatul trimiterii, starea butonului celeilalte placi si starea legaturii.

Rezultat:

Deschideti Tools > Serial Monitor si setati viteza la 9600 baud. Dupa pornire, cele doua placi afiseaza la fiecare jumatate de secunda starea lor. Cand apasati butonul de pe o placa, LED-ul celeilalte se aprinde, iar linia de pe monitorul serial arata RELEASED sau 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

Probleme frecvente:

Placa nu apare ca port serial. Cauza este de obicei un cablu care doar incarca sau driverul CH340. Folositi un cablu USB-A la USB Type-C cu transfer de date, iar daca portul tot nu apare, instalati driverul din sectiunea Download, deoarece ultima versiune din 2023 poate fi incompatibila cu placa.

Incarcarea se opreste cu eroarea avrdude not in sync. Placa are un bootloader mai vechi. Alegeti la Tools > Processor varianta ATmega328P (Old Bootloader) si incarcati din nou.

Pe monitorul serial apare mesajul ca radioul nu raspunde. Verificati ca folositi RF24 radio(7, 8), care este corect pentru V3.0. Placile mai vechi RF-Nano V1 si V2 folosesc CE pe D10 si CSN pe D9, deci pentru ele incercati RF24 radio(10, 9). Verificati si ca nu ati conectat nimic pe D7, D8, D11, D12 sau D13.

Starea legaturii este mereu LOST. Verificati ca pe cele doua placi NODE_ID este diferit (0 si 1), ca ambele folosesc canalul 76 si ca ambele sunt alimentate. Apropiati placile la cativa metri si indepartati-le de obiecte metalice.

LED-ul este mereu stins sau mereu aprins. Verificati polaritatea LED-ului (anodul spre rezistenta) si ca butonul este montat pe diagonala, cu un pin la D2 si celalalt la GND. Cu INPUT_PULLUP butonul trebuie sa citeasca LOW doar cand este apasat.

Radioul se opreste sau se reseteaza aleatoriu. Radioul este sensibil la alimentare instabila. Folositi un port USB direct al calculatorului sau o sursa buna, nu un hub slab alimentat.

Limitari si sfaturi:

Pinii D7, D8, D11, D12 si D13 sunt ocupati de radio, deci pentru senzori raman liberi D2 - D6, A0 - A7 (A6 si A7 sunt doar intrari analogice) si pinii serial D0 si D1. Fiecare pin I/O suporta cel mult 40 mA, deci releele si motoarele se comanda prin tranzistoare sau module dedicate.

Un pachet radio are cel mult 32 de octeti, iar raza de actiune depinde de mediu, de obstacole si de puterea setata. Puterea RF24_PA_LOW este suficienta pentru teste pe masa, iar pentru distante mai mari puteti creste nivelul cu setPALevel(), cu conditia unei alimentari stabile.

Pornind de la acest montaj puteti construi o telecomanda cu mai multe butoane, un senzor de temperatura care trimite valori catre o placa centrala sau o retea in stea, in care o placa receptioneaza pe mai multe adrese de la mai multi emitatori.

Produse Asociate