NRF-Nano V3.0 fejlesztőkártya, CH340, ATMega328p
zoom_out_map
chevron_left chevron_right

A termékfotók tájékoztató jellegűek, és a gyártási tételtől és a beszállítótól függően kisebb eltéréseket mutathatnak. A termék specifikációi és árai előzetes értesítés nélkül változhatnak. Mindent megteszünk, hogy a lehető legpontosabb és leghitelesebb specifikációkat adjuk meg a termékoldalon, de lehetséges, hogy ezek nem teljesen helyesek. Ha ilyen esetet észlel, kérjük, jelentse nekünk.

A termék szakemberek számára készült, és használatához képzett, valamint felhatalmazott személyzet szükséges. A termék nem tartalmaz összeszerelési/használati útmutatót . A termék nem megfelelő képesítéssel rendelkező személyek általi üzembe helyezése a weboldalon található Általános Szerződési Feltételek értelmében a jótállás elvesztését eredményezi.

A megadott műszaki adatok (áram, teljesítmény stb.) ideális működési körülmények között érvényes maximális értékeket jelentenek. A biztonságos használat és az optimális élettartam érdekében javasolt a terméket folyamatos üzemben legfeljebb a megadott maximális értékek 50%-án használni.

NRF-Nano V3.0 fejlesztőkártya, CH340, ATMega328p NRF24L01-gyel, C típus

Kompakt, Arduino Nano-kompatibilis fejlesztőkártya, ideális IoT projektekhez és vezeték nélküli kommunikációhoz, integrált NRF24L01 adó-vevővel a gyors és stabil rádiókapcsolatok érdekében, ATMega328P-t használ 16 MHz-en 5 V-os logikával, a Nano V3-mal megegyező lábkiosztást megtartva az egyszerű integráció, programozás és tápellátás érdekében USB Type-C-n keresztül CH340G-vel.

69,51 lei Adóval együtt

57,45 lei Áfa nélkül

(1/5) kívül 1 összes értékelés
Olvasd el a véleményeket
1-2 zile
check In Stoc

A termék megvásárlásával jár 3,48 lei hűségpont.

Jótállás: 24 hónap magánszemélyeknek
NEMZETKÖZI SZÁLLÍTÁS
Nemzetközi gyors szállítás az EU-n belül. Ingyenes szállítás 100 EUR feletti megrendelések esetén a legtöbb EU-országban.
GYORS KISZÁLLÍTÁS 24 ÓRÁN BELÜL
24 órán belül szállítunk raktárunkból
HŰSÉGPONTOK
Minden rendelés után pontokat kap, a rendelés értékének 5%-ában.

Az NRF-Nano V3.0 fejlesztőpanel egyetlen nyomtatott áramkörön egyesíti az Arduino Nano V3-kompatibilis ATmega328P mikrovezérlőt és egy 2,4 GHz-es nRF24L01+ rádió adó-vevőt nyomtatott antennával. Alkalmas vezeték nélküli szenzorhálózatokhoz, távirányítókhoz, otthonautomatizáláshoz, adatátviteli modulokhoz két vagy több panel között, valamint minden olyan projekthez, ahol Nano formátumú mikrovezérlőre és rádiós kapcsolatra van szükség.

Az ATmega328P mikrovezérlő 16 MHz-en működik, 32 KB Flash memóriával rendelkezik (ebből 2 KB-ot a bootloader foglal el), továbbá 2 KB SRAM-mal és 1 KB EEPROM-mal, a logikai szintje pedig 5 V. A számítógéppel való kommunikáció a CH340G USB-soros átalakítón keresztül történik, a USB Type-C csatlakozó pedig programozásra és tápellátásra is szolgál. Az nRF24L01+ rádió SPI-n keresztül kapcsolódik a mikrovezérlőhöz, CE a D7-en és CSN a D8-on van, így a D7, D8, D11, D12 és D13 lábak más funkciókra már nem használhatók.

A fő jellemzők közé tartozik a USB Type-C csatlakozó, a CH340G USB-soros átalakító, a rádió nyomtatott antennája, a RESET gomb, a rádiót tápláló 3,3 V-os szabályozó, a D13-ra kötött teszt LED, valamint két sor 15-15 tűvel, a standard Nano V3-hoz hasonló kiosztásban. A tápellátás 5 VDC-ről USB Type-C-n keresztül, vagy 7 - 12 VDC-ről (javasolt 9 VDC) a VIN lábon keresztül történik.

A panel Arduino IDE-ből Arduino Nano-ként programozható, és kompatibilis az Arduino Nano V3 könyvtáraival és vázlataival. Rádión keresztül más NRF-Nano panelekhez, illetve bármely nRF24L01+ modulhoz kapcsolható, amely Arduinohoz, ESP32-höz, STM32-höz vagy Raspberry Pi-hez csatlakozik, USB-n keresztül pedig számítógéphez köthető.

 

Specifikációk:

Táplálási feszültség: 7 - 12 VDC (javasolt 9 VDC) a VIN lábon, vagy 5 VDC USB Type-C-n keresztül

IO lábankénti áram: 40 mA

Logikai feszültség: 5 V

Processzor: ATmega328P

Kiegészítő integrált egység: nRF24L01+ transceiver (2,4 GHz)

USB-soros illesztő: CH340G

USB csatlakozó: Type-C

Digitális I/O lábak: 14, ebből 6 PWM

Analóg bemeneti lábak: 6

Flash memória: 32 KB, ebből 2 KB bootloader számára használva

SRAM: 2 KB

EEPROM: 1 KB

Frekvencia: 16 MHz

Rádió lábak: CE = D7, CSN = D8, MOSI = D11, MISO = D12, SCK = D13

Méretek: 48 x 19 mm

 

Elrendezés:

Elem Funkció
USB Type-C csatlakozó 5 V-ról táplálja a panelt, és összeköti a számítógéppel programozáshoz és a CH340G-n keresztüli soros kommunikációhoz.
ATmega328P mikrovezérlő Végrehajtja a felhasználói programot és SPI-n keresztül vezérli a rádiót.
Nyomtatott antenna Az nRF24L01+ rádió 2,4 GHz-es antennája, közvetlenül a panel huzalozásán kialakítva.
nRF24L01+ rádió Integrált transceiver, a mikrovezérlőhöz CE = D7, CSN = D8 és SPI-n keresztül, D11, D12, D13 lábakon keresztül kapcsolódik.
RESET gomb Egy rövid megnyomás alaphelyzetbe állítja a mikrovezérlőt és újraindítja a programot. Reset után a bootloader indul, majd a betöltött program.
D13 teszt LED Akkor világít, amikor a D13 láb HIGH szinten van, és kialszik, amikor LOW. Mivel a D13 egyben a rádió SCK vonala is, a LED a rádiós aktivitás során villoghat.
CH340G átalakító (a panel hátoldalán) USB-soros átalakító, programozáshoz és a soros monitorhoz használva.
AMS1117-3.3 szabályozó (a panel hátoldalán) Biztosítja az nRF24L01+ rádió számára szükséges 3,3 V-ot.
Pin sorok Két sor, egyenként 15 tűvel, a Nano V3-mal azonos kiosztásban.

 

Pinout:

NRF-Nano V3.0 fejlesztőpanel pinout ATmega328P-vel, nRF24L01+, CH340, USB Type-C

Csatlakozó Pin Funkció
VIN / D13 sor VIN 7 - 12 VDC bemeneti tápfeszültség (javasolt 9 VDC)
VIN / D13 sor GND Föld
VIN / D13 sor RST Reset (LOW szintre állítva a mikrovezérlő resetel)
VIN / D13 sor 5V 5 V feszültség
VIN / D13 sor A7, A6 Analóg bemenetek (csak analóg bemenet)
VIN / D13 sor A5 - A0 Analóg bemenetek, digitális lábkent is használhatók (A4 = SDA, A5 = SCL az I2C-hez)
VIN / D13 sor REF Külső analóg referencia
VIN / D13 sor 3V3 3,3 V feszültség
VIN / D13 sor D13 Digitális pin, SPI SCK (a rádió használja), teszt LED
TX1 / D12 sor TX1 Soros adás (D1)
TX1 / D12 sor RX0 Soros vétel (D0)
TX1 / D12 sor RST Reset
TX1 / D12 sor GND Föld
TX1 / D12 sor D2 Digitális pin, INT0 külső megszakítás
TX1 / D12 sor D3 PWM-es digitális pin, INT1 külső megszakítás
TX1 / D12 sor D4 Digitális pin
TX1 / D12 sor D5 PWM-es digitális pin
TX1 / D12 sor D6 PWM-es digitális pin
TX1 / D12 sor D7 Az nRF24L01+ rádió CE lába (foglalt)
TX1 / D12 sor D8 Az nRF24L01+ rádió CSN lába (foglalt)
TX1 / D12 sor D9 PWM-es digitális pin
TX1 / D12 sor D10 PWM-es digitális pin, SPI SS
TX1 / D12 sor D11 PWM-es digitális pin, SPI MOSI (a rádió használja)
TX1 / D12 sor D12 SPI MISO (a rádió használja)

 

ATmega328P pin nRF24L01+ pin Funkció
D7 CE Rádió engedélyezése (vételi vagy adási mód)
D8 CSN SPI chip kiválasztás
D11 MOSI Adatok a mikrovezérlőtől a rádió felé
D12 MISO Adatok a rádiótól a mikrovezérlő felé
D13 SCK SPI órajel

 

Használat:

Csatlakoztassa a panelt a számítógéphez egy USB-A–USB Type-C kábellel, amely támogatja az adatátvitelt.

Ha a panelt a CH340 illesztőprogram legújabb verziója (2023) nem ismeri fel, telepítse az illesztőt a Letöltés szekcióból.

Az Arduino IDE-ben válassza az Arduino Nano lapot és az ATmega328P processzort, ha pedig a program feltöltése sikertelen, válassza az ATmega328P (Old Bootloader) opciót.

A panelt vagy USB Type-C-n keresztül 5 VDC-vel, vagy a VIN lábon 7 - 12 VDC-vel (javasolt 9 VDC) táplálja, ügyelve a polaritásra.

Ne alkalmazzon 5 V-nál nagyobb feszültséget az I/O lábakon, és ne lépje túl a 40 mA-t egyetlen lábon sem.

Rádiós kommunikációhoz telepítse az RF24 könyvtárat, és hozza létre a rádió objektumot CE = 7 és CSN = 8 lábakkal, azaz RF24 radio(7, 8).

Ne használja a D7, D8, D11, D12 és D13 lábakat más funkciókra, mivel ezek a rádió által foglaltak.

Nyomja meg röviden a RESET gombot a program újraindításához, és új program feltöltése után a panel automatikusan elindul.

A rádiókapcsolat teszteléséhez használjon két NRF-Nano panelt ugyanazon rádiócsatornával és egymásra fordított címekkel, majd figyelje az eredményt a soros monitoron.

Stabil működéshez táplálja a panelt jó minőségű forrásból, tartsa a nyomtatott antennát távol fémtárgyaktól, és kerülje, hogy a ház vagy vezetékek eltakarják az antenna környékét.

9159
Tápfeszültség
7-12 V DC (recomandat 9 V DC) pe VIN sau 5 V DC prin USB Type-C
Méretek
48 x 19 mm
Üzemi frekvencia
2.4 GHz
Logikai feszültség
5 V
Csatlakozó típusa
Type-C
Flash memória
32 KB
Integrált áramkör
nRF24L01+ (2.4 GHz), CH340G
Processzor
ATmega328P
SRAM memória
2 KB
Digitális I/O lábak száma
14, din care 6 PWM
Processzor órajele
16 MHz
Analóg lábak száma
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);
}

Ez az útmutató az NRF-Nano V3.0 kártyát használja fejlesztőkártyaként, amelyet az Arduino IDE-ben Arduino Nano-ként programozunk, külön Arduino kártya nélkül. A kártya egy ATmega328P mikrovezérlőt egyesít egy 2.4 GHz-es nRF24L01+ rádióval, ezért távirányítókhoz, szenzorhálózatokhoz és minden olyan projekthez használható, ahol két vagy több kártyának vezeték nélkül kell adatot cserélnie.

Két azonos kártyával egy rádiós tesztet építünk. Mindkét kártyához csatlakoztatunk egy gombot és egy LED-et, és mindegyik kártya elküldi a saját gombjának állapotát, valamint felkapcsolja a másik kártya LED-jét. A tápellátást és a programozást a számítógépről, USB Type-C csatlakozón keresztül végezzük.

NRF-Nano V3.0 fejlesztőkártya, CH340, ATMega328p NRF24L01-gyel, Type C

Működés:

A kártya két részből áll, amelyek együttműködnek. Az ATmega328P mikrovezérlő futtatja a programot, az nRF24L01+ rádió pedig 2.4 GHz-es sávban küld és fogad csomagokat. A kettő SPI-n keresztül kommunikál, a CE a D7-en, a CSN a D8-on, a MOSI a D11-en, a MISO a D12-n és az SCK a D13-on van. Emiatt ez az öt láb más célra nem használható.

A rádió 1 MHz-es csatornákon működik, 0-tól 125-ig számozva. Egy csatorna frekvenciáját így számítjuk: frekvencia = 2400 MHz + a csatorna száma. A programban használt 76-os csatornára ez 2400 + 76 = 2476 MHz. A két kártyának ugyanazt a csatornát és ugyanazt az adatsebességet kell használnia.

Minden kártyának van egy 5 bájtos címe. Az A kártya a B kártya címére küld, és a saját címén figyel. A B kártya fordítva működik. A rádió automatikus csomagnyugtázást használ, ezért a write() függvény csak akkor ad vissza true értéket, ha a másik kártya megkapta a csomagot. Egy csomag legfeljebb 32 bájt lehet, mi viszont csak egy bájtot küldünk a gomb állapotával.

A gombot INPUT_PULLUP móddal olvassuk. A belső ellenállás a lábat 5 V-ra húzza, megnyomáskor pedig a gomb a GND-re köti, ezért nyomva tartott gombnál a beolvasás LOW. A LED-sorba 220 ohmos ellenállás kerül. A LED árama közelítőleg (5 V - 2 V) / 220 ohm = 14 mA, ami a láb 40 mA-es határa alatt van.

Csatlakoztatás:

Csatlakoztassa a kártyát USB Type-C csatlakozón keresztül a számítógép egyik USB-portjához, 5 V-on. A kártya logikai szintje 5 V, a rádiót pedig a kártyán lévő szabályozó belsőleg 3.3 V-ra táplálja, ezért nincs szükség szintillesztőre, és a rádióhoz sem kell külön tápellátás. Mindkét kártyára ugyanazokat az alkatrészeket szerelje fel.

Termék csatlakozó Ehhez csatlakozik Szerep
USB Type-C A számítógép USB-portja (USB-A - USB Type-C kábellel) 5 V tápellátás és programozás
D2 6x6 mm-es gomb, 1. láb INPUT_PULLUP bemenet, megnyomáskor LOW értéket olvas
GND 6x6 mm-es gomb, 2. láb A gomb földelése
D3 220 ohmos ellenállás, 1. vég Digitális kimenet a LED-hez
220 ohmos ellenállás, 2. vég 5 mm-es piros LED, anód (hosszú láb) A LED áramának korlátozása
GND 5 mm-es piros LED, katód (rövid láb) A LED földelése

NRF-Nano V3.0 csatlakoztatása gombbal a D2-n és 220 Ω-os ellenállással rendelkező LED-del a D3-on, tápellátás USB Type-C-n keresztül

Gombok, beállítások és jelzők:

Elem Mit csinál Hogyan használja
RESET gomb Újraindítja az ATmega328P mikrovezérlőt Röviden nyomja meg a program újraindításához az elejétől
D13 teszt LED Akkor világít, ha a D13 láb HIGH Aktivitásjelzőként figyelheti a D13-on. Mivel a D13 a rádió SCK vonala, ezen keresztül látható, mikor dolgozik a rádió

A RESET gombnak nincs hosszú nyomásra más funkciója. Miután összeépítette az áramkört, nyomja meg egyszer, és a soros monitoron megjelenik az indítóüzenet, ami megerősíti, hogy a program újraindult.

A D13-as teszt LED-et nem kell beállítani. Ebben az útmutatóban a programból nem vezéreljük, és halványan villoghat, mert a D13 viszi a rádió SPI órajelét. Ez normális.

A D2-es gomb és a D3-as LED az Ön által felszerelt alkatrészek. Indításkor a gomb legyen szabadon (HIGH olvasás) és a LED kialudva. Gomb megnyomásakor a másik kártya LED-jének fel kell kapcsolnia.

Kártya és könyvtárak:

Az Arduino IDE-ben válassza a Tools > Board > Arduino AVR Boards > Arduino Nano menüpontot. Az Arduino AVR Boards csomag az Arduino IDE-vel együtt érkezik, külön telepíteni nem kell. A Tools > Processor menüben válassza az ATmega328P-t, és ha a feltöltés hibát ad, válassza az ATmega328P (Old Bootloader) lehetőséget. A Tools > Port menüben válassza az újonnan megjelent soros portot.

A Library Managerből telepítse a TMRh20 által készített RF24 könyvtárat, 1.4.0-s vagy újabb verzióban. Az SPI könyvtár az Arduino IDE-vel jön, azt nem kell telepíteni.

A kód:

Ugyanazt a programot töltse fel mindkét kártyára. Az egyetlen különbség a program elején lévő NODE_ID érték, ami az első kártyán 0, a másodikon 1.

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

A kód működése:

Először definiáljuk a NODE_ID-t, a PIN_BUTTON (D2), PIN_LED (D3), PIN_CE (D7) és PIN_CSN (D8) lábakat, valamint a SEND_INTERVAL_MS, LINK_TIMEOUT_MS és PRINT_INTERVAL_MS időközöket. A rádió objektumot a RF24 radio(PIN_CE, PIN_CSN) sorral hozzuk létre, az addresses tömb pedig a két kártya címeit tartalmazza.

A setup() függvényben 9600 baudon elindítjuk a soros portot, a gombot INPUT_PULLUP módba, a LED-et kimenetként állítjuk be, majd elindítjuk a rádiót a radio.begin() hívással. Ha a rádió nem válaszol, a program kiír egy üzenetet és leáll. Ezután beállítjuk a 76-os csatornát, az RF24_PA_LOW teljesítményszintet, a másik kártya írási címét az openWritingPipe() függvénnyel, a saját olvasási címet pedig az openReadingPipe() függvénnyel. Végül meghívjuk a startListening() függvényt, így a kártya alapértelmezés szerint figyel.

A loop() függvényben minden SEND_INTERVAL_MS időnként elküldjük a gomb állapotát. Először a localState változóba olvassuk a gombot, ami 1, ha a gomb meg van nyomva. Leállítjuk a figyelést a stopListening() függvénnyel, a write() függvénnyel elküldjük a bájtot, az eredményt a lastSendOk változóba mentjük, majd újra elindítjuk a figyelést.

Amíg a radio.available() igaz, beolvassuk a csomagot a remoteState változóba, és a lastReceive változóban eltároljuk a fogadás idejét. A D3-as LED a remoteState állapotát követi. Ha LINK_TIMEOUT_MS ideig nem érkezik semmi, a LED biztonsági okból kialszik. PRINT_INTERVAL_MS időnként a printStatus() függvény kiírja a helyi gomb állapotát, a küldés eredményét, a másik kártya gombjának állapotát és a kapcsolat állapotát.

Eredmény:

Nyissa meg a Tools > Serial Monitor menüt, és állítsa a sebességet 9600 baudra. Indítás után a két kártya másodpercenként kétszer kiírja az állapotát. Ha megnyom az egyik kártya gombját, a másik LED-je felkapcsol, a soros monitoron pedig RELEASED vagy PRESSED sor jelenik meg.

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

Gyakori problémák:

A kártya nem jelenik meg soros portként. Ennek oka általában egy csak töltésre használható kábel vagy a CH340 driver. Használjon adatátvitelre alkalmas USB-A - USB Type-C kábelt, és ha a port továbbra sem jelenik meg, telepítse a Download szakaszban található drivert, mert a 2023-as legfrissebb verzió inkompatibilis lehet a kártyával.

A feltöltés az avrdude not in sync hibával leáll. A kártyán régebbi bootloader van. A Tools > Processor menüben válassza az ATmega328P (Old Bootloader) változatot, és töltse fel újra.

A soros monitoron az jelenik meg, hogy a rádió nem válaszol. Ellenőrizze, hogy a V3.0-hoz helyes RF24 radio(7, 8) sort használja. A régebbi RF-Nano V1 és V2 kártyákon a CE a D10-en, a CSN a D9-en van, ezért ezeknél próbálja ki az RF24 radio(10, 9) sort. Ellenőrizze azt is, hogy nincs semmi csatlakoztatva a D7, D8, D11, D12 vagy D13 lábra.

A kapcsolat állapota folyamatosan LOST. Ellenőrizze, hogy a két kártyán a NODE_ID eltérő (0 és 1), mindkettő a 76-os csatornát használja, és mindkettő táplálva van. Vigye közelebb a kártyákat néhány méterre, és távolítsa el őket fémtárgyaktól.

A LED folyamatosan ki van kapcsolva vagy folyamatosan világít. Ellenőrizze a LED polaritását (az anód az ellenállás felé) és hogy a gomb átlósan van beszerelve, az egyik láb a D2-n, a másik a GND-n. INPUT_PULLUP mellett a gombnak csak akkor szabad LOW értéket olvasnia, ha meg van nyomva.

A rádió véletlenszerűen leáll vagy újraindul. A rádió érzékeny az ingadozó tápfeszültségre. Használjon közvetlenül a számítógép USB-portját vagy jó minőségű tápegységet, ne gyengén táplált USB-elosztót.

Korlátok és tanácsok:

A D7, D8, D11, D12 és D13 lábakat a rádió foglalja le, így az érzékelőknek a D2 - D6, az A0 - A7 (az A6 és A7 csak analóg bemenet) és a soros D0 és D1 lábak maradnak szabadon. Minden I/O láb legfeljebb 40 mA-t bír el, ezért a reléket és motorokat tranzisztorokon vagy külön modulokon keresztül vezérelje.

Egy rádiós csomag legfeljebb 32 bájt lehet, a hatótávolság pedig a környezettől, az akadályoktól és a beállított teljesítménytől függ. Az RF24_PA_LOW teljesítmény asztali tesztekhez elegendő, nagyobb távolságokhoz a szintet a setPALevel() függvénnyel emelheti, de csak stabil tápellátás mellett.

Erre a kapcsolásra építve többgombos távirányítót, hőmérsékletszenzort, amely értékeket küld egy központi kártyának, vagy csillag-topológiájú hálózatot is készíthet, ahol egy kártya több adótól fogad több címen.

Ez még talán érdekelhet