de:arduino:nrf24

Differences

This shows you the differences between two versions of the page.

de:arduino:nrf24 [2020/01/13 13:19]
de:arduino:nrf24 [2022/04/21 15:00] ()
 1:  1:
 +~~META:
 +keyword     = nrf24l01, deutsch, arduino
 +~~
  
 +====== nRF24L01 ======
 +Das Kommunikationsmodul, das häufig als KY-067 bezeichnet wird, basiert auf dem IC [[de:comm:nrf24#nrf24|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: **
 +   * [[hu:comm:start#gfsk|GFSK]] Kodierung
 +   * Auto-Bestätigungsfunktion
 +   * Adresse und [[de:comm:start#crc|CRC]] Berechnung (Anwendung)
 +   * Datenrate von 1 oder 2 Mbit/s ("on air")
 +   * [[de:comm:bus_spi|SPI]] Geschwindigkeit: 0..10 Mbps
 +   * Verbesserter ShockBurst ™ -Hardwareprotokollbeschleuniger, der die Hochgeschwindigkeitsschnittstelle [[de:comm:bus_spi|SPI]] für den Anwendungscontroller unterstützt
 +   * 125 auswählbare HF-Kanäle (2400,2525 MHz ISM, 1 MHz pro Kanal)
 +   * Jedes Modul kann mit 6 anderen gleichzeitig kommunizieren
 +   * Anwendung von Frequenzsprüngen
 +   * 5V Signaleingänge
 +   * Stromversorgung: 1,9 bis 3,6 V
 +   * Der Zugriff auf die Module erfolgt von Arduino aus über [[de:comm:bus_spi|SPI]] Kommunikation.
 +
 +==== Pinbelegung der Module ====
 +
 +^Nr^Abk.^Funktion^Beschreibung^Arduino Uno Pin|
 +|1|**Gnd**|Ground|Grund|**GND**|
 +|2|**Vcc**|Power|Stromversorgung : 3.3V (**!!**)|Mit Adaptermodul **5V** \\ Ohne Adapter **3.3V**|
 +|3|**CE**|Chip Enable|Aktivieren die SPI-Kommunikation|**D7**|
 +|4|**CSN**|Ship Select Not|Der Eingang muss auf HI eingestellt sein, \\ sonst wird es die SPI-Kommunikation deaktiviert|**D8**|
 +|5|**SCK**|Serial Clock|Die für den SPI erforderliche Taktsignal|**D13**|
 +|6|**MOSI**|Master Out Slave In|PIN zum Empfangen von Daten|**D11**|
 +|7|**MISO**|Master In Slave Out|PIN zum Senden zu Daten|**D12**|
 +|8|**IRQ**|Interrupt|(optional) Interrupt Pin, "LO" aktiv|keine Notwendigkeit, \\ verdrahtet zu werden|
 +
 +===== Verschiedene NRF24 IC Typen =====
 +^ Modul Id ^ Modul (oben) ^ Modul (unten) ^ Modul IC^Bemerkung |
 +|0830AE|{{:hu:arduino:0830ae_1.jpg?250|}}|{{:hu:arduino:0830ae_2.jpg?250|}}|{{:hu:arduino:0830ae_3.jpg?90|}}|-|
 +|1405FJ|{{:hu:arduino:1405fj_1.jpg?250|}}|{{:hu:arduino:1405fj_2.jpg?250|}}|{{:hu:arduino:1405fj_3.jpg?90|}}|-|
 +|1242AF|{{:hu:arduino:1242af_1.jpg?250|}}|{{:hu:arduino:1242af_2.jpg?250|}}|{{:hu:arduino:1242af_3.jpg?90|}}|-|
 +|1408AF|{{:hu:arduino:1408af_1.jpg?250|}}|{{:hu:arduino:1408af_2.jpg?250|}}|{{:hu:arduino:1408af_3.jpg?90|}}|-|
 +|1322DQ|{{:hu:arduino:1322dq_1.jpg?250|}}|{{:hu:arduino:1322dq_2.jpg?250|}}|{{:hu:arduino:1322dq_3.jpg?90|}}|-|
 +|1331AF|{{:hu:arduino:1331af_1.jpg?250|}}|{{:hu:arduino:1331af_2.jpg?250|}}|{{:hu:arduino:1331af_3.jpg?90|}}|-|
 +
 +
 +{{ :wiki:arduino:nrf24l01_01.png?160|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.
 +
 +   * Bei einer Datenrate von 250 Kb kann die Übertragungsentfernung bis zu 1100 Meter betragen
 +   * Bei einer Datenübertragungsrate von 1 MB kann die Übertragungsentfernung bis zu 750 Meter betragen
 +
 +===== nRF24L01 + SI24R1 receiver modul (8 pin) =====
 +
 +{{:wiki:arduino:nrf24l01_03.png?300|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) =====
 +
 +{{:hu:arduino:nrf24l01b.jpg?400|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 =====
 +{{:wiki:arduino:nrf24l01_02.png |NRF24L01 - Arduino Nano-Verdrahtung}}
 +
 +**Arduino Uno/Nano - nRF24L01**
 +
 +3,3V - Vcc \\
 +GND - GND \\
 +D13 - SCK \\
 +D12 - MISO \\
 +D11 - MOSI \\
 +D10  - CSN \\
 +D9  - CE \\
 +\\
 +\\
 +\\
 +\\
 +\\
 +\\
 +{{ :wiki:arduino:nrf24l01_illeszto.png?180|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.
 +
 +{{:wiki:arduino:nrf24_interface_foto.jpg|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 ===
 +<code c>
 +/*
 +* 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);
 +}
 +
 +</code>
 +
 +=== nRF24L01 Receive ===
 +<code c>
 +/*
 +* 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);
 +  }
 +}
 +</code>