NRF-Nano V3.0 Entwicklungsboard, CH340, ATMega328p mit
zoom_out_map
chevron_left chevron_right

Produktbilder dienen ausschließlich zu Informationszwecken und können je nach Charge und Lieferant geringfügige Unterschiede aufweisen. Produktspezifikationen und Preise können ohne vorherige Ankündigung geändert werden. Wir tun unser Bestes, um der Produktseite möglichst genaue und richtige Spezifikationen hinzuzufügen, es ist jedoch möglich, dass diese nicht ganz korrekt sind. Sollten Sie einen solchen Fall feststellen, melden Sie ihn uns bitte.

Das Produkt ist für Fachleute bestimmt und erfordert qualifiziertes und autorisiertes Personal. Dem Produkt liegt keine Montage-/Gebrauchsanleitung bei . Die Inbetriebnahme des Produktes durch nicht qualifizierte Personen führt zum Verlust der Garantie gemäß den AGB auf der Seite.

Die angegebenen technischen Spezifikationen (Strom, Leistung usw.) stellen maximale zulässige Werte unter idealen Betriebsbedingungen dar. Für einen sicheren Betrieb und eine optimale Lebensdauer wird empfohlen, das Produkt im Dauerbetrieb mit höchstens 50 % der angegebenen Maximalwerte zu verwenden.

NRF-Nano V3.0 Entwicklungsboard, CH340, ATMega328p mit NRF24L01, Typ C

Kompaktes, Arduino Nano-kompatibles Entwicklungsboard, ideal für IoT-Projekte und drahtlose Kommunikation, integriert einen NRF24L01-Transceiver für schnelle und stabile Funkverbindungen, verwendet einen ATMega328P mit 16 MHz und 5 V Logik, behält die Pinbelegung identisch zum Nano V3 für einfache Integration, Programmierung und Stromversorgung über USB Typ C mit CH340G bei.

69,51 RON Bruttopreis

57,45 RON zzgl. MwSt.

(1/5) aus 1 Gesamtbewertungen
Lies die Bewertungen

Mit dem Kauf dieses Produkts erhalten Sie 3,48 RON an Treuepunkten.

Garantie: 24 Monate für Privatpersonen
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
TREUEPUNKTE
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.

Die Entwicklungsplatine NRF-Nano V3.0 kombiniert auf derselben Leiterplatte einen mit dem Arduino Nano V3 kompatiblen ATmega328P-Mikrocontroller und einen 2,4-GHz-nRF24L01+-Funktransceiver mit gedruckter Antenne. Sie eignet sich für drahtlose Sensornetzwerke, Fernbedienungen, Hausautomatisierung, Datenübertragungsmodule zwischen zwei oder mehr Platinen und jedes Projekt, bei dem du Mikrocontroller und Funkverbindung in einem Nano-Format benötigst.

Der ATmega328P-Mikrocontroller läuft mit 16 MHz, verfügt über 32 KB Flash-Speicher (davon 2 KB vom Bootloader belegt), 2 KB SRAM und 1 KB EEPROM, und die Logik arbeitet mit 5 V. Die Kommunikation mit dem Computer erfolgt über den USB-Seriell-Wandler CH340G, und die USB-Type-C-Buchse dient sowohl zur Programmierung als auch zur Stromversorgung. Das nRF24L01+-Radio ist über SPI mit dem Mikrocontroller verbunden, mit CE an D7 und CSN an D8, und die Pins D7, D8, D11, D12 und D13 können nicht mehr für andere Funktionen verwendet werden.

Zu den Hauptmerkmalen gehören die USB-Type-C-Buchse, der USB-Seriell-Wandler CH340G, die gedruckte Antenne des Funkmoduls, der RESET-Taster, der 3,3-V-Regler zur Versorgung des Radios, die an D13 angeschlossene Test-LED sowie zwei Reihen mit jeweils 15 Pins in derselben Anordnung wie beim Standard-Nano V3. Die Versorgung erfolgt mit 5 VDC über USB Type-C oder mit 7 - 12 VDC (empfohlen 9 VDC) am VIN-Pin.

Die Platine wird im Arduino IDE als Arduino Nano programmiert und ist mit den Bibliotheken und Sketches des Arduino Nano V3 kompatibel. Über Funk kommuniziert sie mit anderen NRF-Nano-Platinen oder mit jedem nRF24L01+-Modul, das an Arduino, ESP32, STM32 oder Raspberry Pi angeschlossen ist, und über USB kann sie mit dem Computer verbunden werden.

 

Spezifikationen:

Versorgungsspannung: 7 - 12 VDC (empfohlen 9 VDC) am VIN-Pin oder 5 VDC über USB Type-C

IO-Strom pro Pin: 40 mA

Logikspannung: 5 V

Prozessor: ATmega328P

Zusätzlich integriert: nRF24L01+-Transceiver (2,4 GHz)

USB-zu-Seriell-Treiber: CH340G

USB-Anschluss: Type-C

Digitale I/O-Pins: 14, davon 6 PWM

Analogeingänge: 6

Flash-Speicher: 32 KB, davon 2 KB für den Bootloader verwendet

SRAM: 2 KB

EEPROM: 1 KB

Frequenz: 16 MHz

Funk-Pins: CE = D7, CSN = D8, MOSI = D11, MISO = D12, SCK = D13

Abmessungen: 48 x 19 mm

 

Layout:

Element Funktion
USB-Type-C-Buchse Versorgt die Platine mit 5 V und verbindet sie mit dem Computer für Programmierung und serielle Kommunikation über CH340G.
ATmega328P-Mikrocontroller Führt das Benutzerprogramm aus und steuert das Funkmodul über SPI.
Gedruckte Antenne Antenne des nRF24L01+-Funkmoduls für das 2,4-GHz-Band, direkt auf der Leiterplatte realisiert.
nRF24L01+-Funkmodul Integrierter Transceiver, verbunden mit dem Mikrocontroller über CE = D7, CSN = D8 und SPI an D11, D12, D13.
RESET-Taster Ein kurzer Druck setzt den Mikrocontroller zurück und startet das Programm neu. Nach dem Reset starten Bootloader und anschließend das geladene Programm.
D13-Test-LED Leuchtet, wenn der D13-Pin HIGH ist, und erlischt bei LOW. Da D13 auch die SCK-Leitung des Funkmoduls ist, kann die LED bei Funkaktivität blinken.
CH340G-Wandler (auf der Rückseite der Platine) USB-Seriell-Wandler, der für Programmierung und den seriellen Monitor verwendet wird.
AMS1117-3.3-Regler (auf der Rückseite der Platine) Stellt die 3,3 V bereit, die das nRF24L01+-Funkmodul benötigt.
Pinleisten Zwei Reihen mit jeweils 15 Pins, in derselben Anordnung wie beim Nano V3.

 

Pinout:

Pinout der Entwicklungsplatine NRF-Nano V3.0 ATmega328P mit nRF24L01+, CH340, USB Type-C

Connector Pin Funktion
Reihe VIN / D13 VIN Stromeingang 7 - 12 VDC (empfohlen 9 VDC)
Reihe VIN / D13 GND Masse
Reihe VIN / D13 RST Reset (bei LOW setzt es den Mikrocontroller zurück)
Reihe VIN / D13 5V 5-V-Spannung
Reihe VIN / D13 A7, A6 Analogeingänge (nur analoger Eingang)
Reihe VIN / D13 A5 - A0 Analogeingänge, auch als digitale Pins verwendbar (A4 = SDA, A5 = SCL für I2C)
Reihe VIN / D13 REF Externe analoge Referenz
Reihe VIN / D13 3V3 3,3-V-Spannung
Reihe VIN / D13 D13 Digitaler Pin, SPI-SCK (vom Funkmodul verwendet), Test-LED
Reihe TX1 / D12 TX1 Serielle Übertragung (D1)
Reihe TX1 / D12 RX0 Serielle Empfangsleitung (D0)
Reihe TX1 / D12 RST Reset
Reihe TX1 / D12 GND Masse
Reihe TX1 / D12 D2 Digitaler Pin, externer Interrupt INT0
Reihe TX1 / D12 D3 Digitaler Pin mit PWM, externer Interrupt INT1
Reihe TX1 / D12 D4 Digitaler Pin
Reihe TX1 / D12 D5 Digitaler Pin mit PWM
Reihe TX1 / D12 D6 Digitaler Pin mit PWM
Reihe TX1 / D12 D7 CE des nRF24L01+-Funkmoduls (belegt)
Reihe TX1 / D12 D8 CSN des nRF24L01+-Funkmoduls (belegt)
Reihe TX1 / D12 D9 Digitaler Pin mit PWM
Reihe TX1 / D12 D10 Digitaler Pin mit PWM, SPI-SS
Reihe TX1 / D12 D11 Digitaler Pin mit PWM, SPI-MOSI (vom Funkmodul verwendet)
Reihe TX1 / D12 D12 SPI-MISO (vom Funkmodul verwendet)

 

ATmega328P-Pin nRF24L01+-Pin Funktion
D7 CE Funkaktivierung (Empfangs- oder Sendemodus)
D8 CSN SPI-Chipauswahl
D11 MOSI Daten vom Mikrocontroller zum Funkmodul
D12 MISO Daten vom Funkmodul zum Mikrocontroller
D13 SCK SPI-Takt

 

Verwendung:

Verbinden Sie die Platine über ein USB-A-zu-USB-Type-C-Kabel mit Datenübertragung mit dem Computer.

Wenn die Platine mit der neuesten CH340-Treiberversion (2023) nicht erkannt wird, installieren Sie den Treiber aus dem Download-Bereich.

Wählen Sie in der Arduino IDE die Platine Arduino Nano und den Prozessor ATmega328P; falls das Hochladen des Programms fehlschlägt, wählen Sie den Prozessor ATmega328P (Old Bootloader).

Versorgen Sie die Platine entweder über USB Type-C mit 5 VDC oder über den VIN-Pin mit 7 - 12 VDC (empfohlen 9 VDC) und beachten Sie die Polarität.

Legt an den I/O-Pins keine Spannungen über 5 V an und überschreiten Sie 40 mA pro Pin nicht.

Für die Funkkommunikation installieren Sie die RF24-Bibliothek und erstellen Sie das Radio-Objekt mit CE = 7 und CSN = 8, also RF24 radio(7, 8).

Verwenden Sie die Pins D7, D8, D11, D12 und D13 nicht für andere Funktionen, da sie vom Funkmodul belegt sind.

Drücken Sie kurz den RESET-Taster, um das Programm neu zu starten; nach dem Hochladen eines neuen Programms startet die Platine automatisch.

Um die Funkverbindung zu testen, verwenden Sie zwei NRF-Nano-Platinen mit demselben Funkkanal und vertauschten Adressen, und verfolgen Sie das Ergebnis anschließend im seriellen Monitor.

Für stabile Ergebnisse versorgen Sie die Platine mit einer guten Stromquelle, halten Sie die gedruckte Antenne von Metallteilen fern und vermeiden Sie, den Antennenbereich mit Metallgehäusen oder Drähten abzudecken.

9159
Versorgungsspannung
7-12 V DC (recomandat 9 V DC) pe VIN sau 5 V DC prin USB Type-C
Abmessungen
48 x 19 mm
Arbeitsfrequenz
2.4 GHz
Logikspannung
5 V
Steckverbindertyp
Type-C
Flash-Speicher
32 KB
Integrierter Schaltkreis
nRF24L01+ (2.4 GHz), CH340G
Prozessor
ATmega328P
SRAM-Speicher
2 KB
Anzahl digitaler I/O-Pins
14, din care 6 PWM
Prozessortakt
16 MHz
Anzahl analoger Pins
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);
}

Dieses Tutorial verwendet das Board NRF-Nano V3.0 als Entwicklungsboard selbst, programmiert über die Arduino IDE als Arduino Nano, ohne ein weiteres Arduino-Board. Das Board kombiniert einen ATmega328P mit einem Funkmodul nRF24L01+ für 2,4 GHz. Daher wird es für Fernbedienungen, Sensornetze und jedes Projekt verwendet, in dem zwei oder mehr Boards Daten drahtlos austauschen müssen.

Wir bauen einen Funktest mit zwei identischen Boards. An jedes Board wird ein Taster und eine LED angeschlossen. Jedes Board sendet den Zustand seines Tasters und schaltet die LED des anderen Boards ein. Die Stromversorgung und die Programmierung erfolgen über USB Type-C vom Computer.

Entwicklungsboard NRF-Nano V3.0, CH340, ATMega328p mit NRF24L01, Type C

So funktioniert es:

Das Board besteht aus zwei Teilen, die zusammenarbeiten. Der Mikrocontroller ATmega328P führt das Programm aus, und das Funkmodul nRF24L01+ sendet und empfängt Pakete im 2,4-GHz-Band. Beide kommunizieren über SPI, mit CE an D7, CSN an D8, MOSI an D11, MISO an D12 und SCK an D13. Aus diesem Grund können diese fünf Pins nicht für andere Zwecke verwendet werden.

Das Funkmodul arbeitet auf Kanälen mit 1 MHz Abstand, nummeriert von 0 bis 125. Die Frequenz eines Kanals wird wie folgt berechnet: Frequenz = 2400 MHz + Kanalnummer. Für den im Programm verwendeten Kanal 76 ergibt sich 2400 + 76 = 2476 MHz. Die beiden Boards müssen denselben Kanal und dieselbe Übertragungsrate verwenden.

Jedes Board hat eine Adresse mit 5 Bytes. Board A sendet an die Adresse von Board B und hört auf seine eigene Adresse. Board B macht es umgekehrt. Das Funkmodul verwendet eine automatische Paketbestätigung, daher liefert die Funktion write() nur dann true zurück, wenn das andere Board das Paket empfangen hat. Ein Paket kann höchstens 32 Bytes haben, und wir senden nur ein Byte mit dem Zustand des Tasters.

Der Taster wird mit INPUT_PULLUP gelesen. Der interne Widerstand verbindet den Pin mit 5 V, und beim Drücken verbindet der Taster ihn mit GND. Der Messwert ist daher LOW, wenn der Taster gedrückt ist. Die LED hat einen Vorwiderstand von 220 Ohm in Reihe. Der Strom durch die LED beträgt etwa (5 V - 2 V) / 220 Ohm = 14 mA und liegt damit unter der Grenze von 40 mA eines Pins.

Anschluss:

Versorgen Sie das Board über USB Type-C von einem USB-Anschluss des Computers mit 5 V. Die Logik des Boards arbeitet mit 5 V, und das Funkmodul wird intern mit 3,3 V vom Regler auf dem Board versorgt. Daher sind weder ein Pegelwandler noch eine separate Versorgung für das Funkmodul nötig. Bestücken Sie beide Boards mit denselben Bauteilen.

Produktpin Anschluss an Funktion
USB Type-C USB-Anschluss des Computers (Kabel USB-A auf USB Type-C) Stromversorgung 5 V und Programmierung
D2 Taster 6x6 mm, Pin 1 Eingang mit INPUT_PULLUP, liest LOW bei Betätigung
GND Taster 6x6 mm, Pin 2 Masse des Tasters
D3 Widerstand 220 Ohm, Anschluss 1 Digitaler Ausgang für die LED
Widerstand 220 Ohm, Anschluss 2 Rote LED 5 mm, Anode (langes Bein) Strombegrenzung der LED
GND Rote LED 5 mm, Kathode (kurzes Bein) Masse der LED

Anschluss NRF-Nano V3.0 mit Taster an D2 und LED mit Widerstand 220 Ω an D3, Stromversorgung über USB Type-C

Taster, Einstellungen und Anzeigen:

Element Funktion Bedienung
Taster RESET Setzt den Mikrocontroller ATmega328P zurück Kurz drücken, um das Programm von vorn zu starten
Test-LED D13 Leuchtet, wenn der Pin D13 HIGH ist Als Anzeige der Aktivität an D13 verwenden. Da D13 die SCK-Leitung des Funkmoduls ist, kann man in diesem Programm erkennen, wann das Funkmodul arbeitet

Der Taster RESET hat keine Langdruckfunktion mit einer anderen Aufgabe. Drücken Sie ihn einmal, nachdem Sie die Schaltung verbunden haben, und Sie sehen auf dem seriellen Monitor die Startmeldung. Das bestätigt, dass das Programm neu gestartet wurde.

Die Test-LED an D13 braucht keine Einstellung. In diesem Tutorial steuern wir sie nicht über das Programm an, und sie kann leicht flackern, weil D13 den SPI-Takt des Funkmoduls führt. Das ist normal.

Der Taster an D2 und die LED an D3 sind die Bauteile, die Sie montiert haben. Der Start erfolgt mit losgelassenem Taster (Messwert HIGH) und ausgeschalteter LED. Beim Drücken des Tasters an einem Board muss die LED am anderen Board aufleuchten.

Board und Bibliotheken:

In der Arduino IDE wählen Sie Tools > Board > Arduino AVR Boards > Arduino Nano. Das Paket Arduino AVR Boards ist im Lieferumfang der Arduino IDE enthalten und muss nicht separat installiert werden. Unter Tools > Processor wählen Sie ATmega328P. Falls das Hochladen einen Fehler meldet, wählen Sie ATmega328P (Old Bootloader). Unter Tools > Port wählen Sie den neu erschienenen seriellen Port.

Installieren Sie über den Library Manager die Bibliothek RF24 von TMRh20, Version 1.4.0 oder neuer. Die Bibliothek SPI ist im Lieferumfang der Arduino IDE enthalten und muss nicht installiert werden.

Der Code:

Dasselbe Programm wird auf beide Boards geladen. Der einzige Unterschied ist der Wert NODE_ID am Anfang, der 0 für das erste Board und 1 für das zweite Board ist.

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

So funktioniert der Code:

Am Anfang definieren wir NODE_ID, die Pins PIN_BUTTON (D2), PIN_LED (D3), PIN_CE (D7) und PIN_CSN (D8) sowie die Zeitintervalle SEND_INTERVAL_MS, LINK_TIMEOUT_MS und PRINT_INTERVAL_MS. Das Funkobjekt wird mit RF24 radio(PIN_CE, PIN_CSN) erzeugt, und das Feld addresses enthält die Adressen der beiden Boards.

In setup() starten wir die serielle Schnittstelle mit 9600 Baud, konfigurieren den Taster mit INPUT_PULLUP und die LED als Ausgang und starten dann das Funkmodul mit radio.begin(). Antwortet das Funkmodul nicht, zeigt das Programm eine Meldung an und hält an. Danach setzen wir den Kanal 76, die Sendeleistungsstufe RF24_PA_LOW, die Schreibadresse des anderen Boards mit openWritingPipe() und die eigene Leseadresse mit openReadingPipe(). Zum Schluss rufen wir startListening() auf, sodass das Board standardmäßig zuhört.

In loop() senden wir alle SEND_INTERVAL_MS den Zustand des Tasters. Zuerst lesen wir den Taster in die Variable localState, die 1 ist, wenn der Taster gedrückt ist. Wir beenden das Zuhören mit stopListening(), senden das Byte mit write(), speichern das Ergebnis in lastSendOk und nehmen das Zuhören wieder auf.

Solange radio.available() wahr ist, lesen wir das Paket in remoteState und speichern den Empfangszeitpunkt in lastReceive. Die LED an D3 folgt dem Zustand remoteState. Wenn wir länger als LINK_TIMEOUT_MS nichts mehr empfangen, erlischt die LED als Sicherheitsmaßnahme. Alle PRINT_INTERVAL_MS zeigt die Funktion printStatus() den Zustand des lokalen Tasters, das Ergebnis des Sendens, den Zustand des Tasters am anderen Board und den Zustand der Verbindung an.

Ergebnis:

Öffnen Sie Tools > Serial Monitor und stellen Sie die Geschwindigkeit auf 9600 Baud ein. Nach dem Start zeigen die beiden Boards alle eine halbe Sekunde ihren Zustand an. Wenn Sie den Taster an einem Board drücken, leuchtet die LED am anderen auf, und die Zeile im seriellen Monitor zeigt RELEASED oder 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

Häufige Probleme:

Das Board erscheint nicht als serieller Port. Die Ursache ist meist ein Kabel, das nur zum Laden geeignet ist, oder der Treiber CH340. Verwenden Sie ein Kabel USB-A auf USB Type-C mit Datenübertragung. Falls der Port trotzdem nicht erscheint, installieren Sie den Treiber aus dem Bereich Download, denn die neueste Version von 2023 kann mit dem Board inkompatibel sein.

Das Hochladen bricht mit dem Fehler avrdude not in sync ab. Das Board hat einen älteren Bootloader. Wählen Sie unter Tools > Processor die Variante ATmega328P (Old Bootloader) und laden Sie erneut hoch.

Im seriellen Monitor erscheint die Meldung, dass das Funkmodul nicht antwortet. Prüfen Sie, ob Sie RF24 radio(7, 8) verwenden, was für das V3.0 korrekt ist. Die älteren Boards RF-Nano V1 und V2 verwenden CE an D10 und CSN an D9. Versuchen Sie dafür RF24 radio(10, 9). Prüfen Sie außerdem, dass Sie nichts an D7, D8, D11, D12 oder D13 angeschlossen haben.

Der Verbindungsstatus steht dauerhaft auf LOST. Prüfen Sie, ob NODE_ID auf den beiden Boards unterschiedlich ist (0 und 1), ob beide den Kanal 76 verwenden und ob beide mit Strom versorgt werden. Bringen Sie die Boards auf einige Meter Abstand und entfernen Sie sie von Metallgegenständen.

Die LED ist dauerhaft aus oder dauerhaft an. Prüfen Sie die Polung der LED (Anode zum Widerstand) und ob der Taster diagonal montiert ist, mit einem Pin an D2 und dem anderen an GND. Mit INPUT_PULLUP muss der Taster nur dann LOW lesen, wenn er gedrückt ist.

Das Funkmodul stoppt oder setzt sich zufällig zurück. Das Funkmodul reagiert empfindlich auf eine instabile Stromversorgung. Verwenden Sie einen direkten USB-Anschluss des Computers oder ein gutes Netzteil, nicht einen schwach versorgten Hub.

Einschränkungen und Tipps:

Die Pins D7, D8, D11, D12 und D13 sind vom Funkmodul belegt. Für Sensoren bleiben daher D2 - D6, A0 - A7 (A6 und A7 sind nur analoge Eingänge) sowie die seriellen Pins D0 und D1 frei. Jeder I/O-Pin verträgt höchstens 40 mA, daher werden Relais und Motoren über Transistoren oder dedizierte Module angesteuert.

Ein Funkpaket hat höchstens 32 Bytes. Die Reichweite hängt von der Umgebung, von Hindernissen und von der eingestellten Leistung ab. Die Stufe RF24_PA_LOW reicht für Tests auf dem Tisch aus. Für größere Entfernungen können Sie die Stufe mit setPALevel() erhöhen, vorausgesetzt, die Stromversorgung ist stabil.

Ausgehend von diesem Aufbau können Sie eine Fernbedienung mit mehreren Tasten bauen, einen Temperatursensor, der Werte an ein zentrales Board sendet, oder ein Sternnetz, in dem ein Board auf mehreren Adressen von mehreren Sendern empfängt.

Vielleicht gefällt Ihnen auch