nRF24L01

Das Kommunikationsmodul, das häufig als KY-067 bezeichnet wird, basiert auf dem IC nRF24L01 von Nordic Semiconductor. Es lauft mit ULP-IC (Ultra Low Power), 2 Mbit/s und 2,4 GHz ISM-Band (ohne Lizenz).

Allgemeine Merkmale der nRF24L01-Module

Technische Merkmale:

Pinbelegung der Module

NrAbk.FunktionBeschreibungArduino Uno Pin
1GndGroundGrundGND
2VccPowerStromversorgung : 3.3V (!!)Mit Adaptermodul 5V
Ohne Adapter 3.3V
3CEChip EnableAktivieren die SPI-KommunikationD7
4CSNShip Select NotDer Eingang muss auf HI eingestellt sein,
sonst wird es die SPI-Kommunikation deaktiviert
D8
5SCKSerial ClockDie für den SPI erforderliche TaktsignalD13
6MOSIMaster Out Slave InPIN zum Empfangen von DatenD11
7MISOMaster In Slave OutPIN zum Senden zu DatenD12
8IRQInterrupt(optional) Interrupt Pin, LO aktivkeine Notwendigkeit,
verdrahtet zu werden

Verschiedene NRF24 IC Typen

Modul Id Modul (oben) Modul (unten) Modul ICBemerkung
0830AE-
1405FJ-
1242AF-
1408AF-
1322DQ-
1331AF-

nRF24L01

NRF24L01 + PA + LNA modul (8 pin)

Zusätzlich zum IC-Integrationspanel enthält das Modul auch einen Leistungsverstärker (LNA) und eine Antenne (PA). Kann also relativ über größere Entfernungen angewendet werden.

nRF24L01 + SI24R1 receiver modul (8 pin)

nRF24L01 + SI24R1 receiver modul

Dieses Modul integriert sich auch die Antenne auf der Leiterplatte, die zum einen Seite günstiger aber Reichweite kleiner ist - 100..250 m - als die externen Antennenmodule (siehe oben). Glücklicherweise beide haben die gleiche Fußlayout.

Standardmäßig gibt der SI24R1 ungefähr 2 ~ 3dBm Ausgangsleistung aus. Durch Setzen des niedrigsten Bitwerts von Register 0x06 (RF_SETUP) auf 1 kann dieser Wert auf 7 dBm erhöht werden.

nRF24L01B (10 pin)

nRF24L01B (10 pin)

Die Modulverkabelung unterscheidet sich von den anderen. Es hat 10 Pins anstelle von 8, 2 gnd und 2 Vcc anstelle von jeweils einem. Herkömmliche Adaptermodule sind dafür nicht nutzbar!

nRF24L01 - Arduino Nano-Verdrahtung

NRF24L01 - Arduino Nano-Verdrahtung

Arduino Uno/Nano - nRF24L01

3,3V - Vcc
GND - GND
D13 - SCK
D12 - MISO
D11 - MOSI
D10 - CSN
D9 - CE






nRF24L01 + (Grundmodul) YL-105 Adapter

nRF24L01 + Adaptermodul YL-105

en: Socket Adapter Module Board For 8 Pin NRF24L01+ Wireless Transceiver

Dieses Schnittstellenmodul löst das 3,3lV / 5 V-Schnittstellenproblem, indem es sowohl Strom- als auch Signalpegel bei 5 V bereitstellt. Es erledigt die 3.3V-Wandlung inside. Darüber hinaus wird das Netzteil (5 V) separat eingeführt, was möglicherweise zu Problemen mit der Batterie des Moduls führt, die in bestimmten Betriebsarten nicht ausreichend Strom versorgt werden. Das Modul konvertiert die Signale mit einem AMS1117-3.3 IC.

nRF24L01 + Interface Modul

nRF24L01 szoftver

https://github.com/nRF24/RF24

nRF24L01 Testprogram

Ich habe den Originalcode mit 2 LEDs ergänzt. Diese zeigen an, wann das Modul sendet oder empfängt. Die LEDs müssen mit einem 100-Ohm-Widerstand an Pin 9 und das Ende an GND angeschlossen werden.

nRF24L01 Send

/*
* Arduino Wireless Communication Tutorial
*     Example 1 - Transmitter Code
*                
* by Dejan Nedelkovski, www.HowToMechatronics.com
* 
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
  pinMode(9, OUTPUT);
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}
void loop() {
  digitalWrite(9, HIGH);
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));
  delay(20);
  digitalWrite(9, LOW);
  delay(1000);
}

nRF24L01 Receive

/*
* Arduino Wireless Communication Tutorial
*       Example 1 - Receiver Code
*                
* by Dejan Nedelkovski, www.HowToMechatronics.com
* 
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}
void loop() {
  digitalWrite(9, LOW);
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
    Serial.println(text);
    digitalWrite(9, HIGH);
    delay(20);
  }
}