hu:arduino:nrf24

Differences

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

hu:arduino:nrf24 [2020/03/23 19:29]
hu:arduino:nrf24 [2022/04/21 15:02] ()
 1:  1:
 +~~META:
 +keyword     = nrf24l01, nrf24, magyar, arduino
 +~~
  
 +====== nRF24L01 ======
 +
 +Sok helyen KY-067 néven emlegetett kommunikációs modul a Nordic Semiconductor [[hu:comm:nrf24#nrf24|nRF24L01]] IC-jére épül, mely ultra alacsony fogyasztású (ULP) 2 Mbps RF adó-vevő IC, a 2,4 GHz-es [[hu:comm:bus_air#ism_savok|ISM (licencmentes) sáv]]ban forgalmaz.
 +
 +
 +
 +===== Az nRF24L01 modulok közös jellemzői =====
 +**Technikai jellemzők:**
 +  * [[hu:comm:start#gfsk|GFSK]] kódolás
 +  * Automatikus nyugtázás funkció
 +  * Cím és [[hu:comm:start#crc|CRC]] számítás (alkalmazás)
 +  * 1 vagy 2Mbps (on air) adatátviteli sebesség
 +  * [[hu:comm:bus_spi|SPI]] sebesség: 0..10 Mbps
 +  * Enhanced ShockBurst ™ hardver-protokoll-gyorsító, mely támogatja a nagysebességű [[hu:comm:bus_spi|SPI]] interfészt az alkalmazásvezérlő számára
 +  * 125 választható RF csatorna (2400..2525 Mhz ISM, csatornánként 1 MHz)
 +  * Minden modul 6 másikkal tarthat egyidejűleg kapcsolatot
 +  * frekvenciaugrás alkalmazása
 +  * 5V-os jelbemenetek
 +  * Tápfeszültség: 1,9 .. 3,6 V
 +
 +A modulok az Arduino felől [[hu:comm:bus_spi|SPI]] kommunikációval érhetők el. Bővebben erről: [[hu:arduino:start#arduino_spi|Arduino SPI]].
 +
 +===== Az NRF24 IC-k típusai =====
 +^ Modul Id ^ Modul (felülről) ^ Modul (alulról) ^ Modul IC^megjegyzés |
 +|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) =====
 +A modul az IC-t integráló panelon kívül egy [[hu:main:dict#lna|LNA]]-t, teljesítményerősítőt ([[hu:main:dict#pa|PA]]) és egy antennát is tartalmaz, ezáltal viszonylag nagyobb távolságra is alkalmazható.
 +
 +  * 250 Kb-os adatátviteli sebesség mellett az átviteli távolság akár 1100 méter is lehet 
 +  * 1 Mb adatátviteli sebesség mellett az átviteli távolság akár 750 méter is lehet
 +
 +==== Pinout ====
 +{{:hu:arduino:nrf24pinout_2.png|Pinout}}
 +
 +|1|**Ground**|Ground|Grund|Arduino pin|
 +|2|**Vcc**|Power|Tápfeszültség: 3.3V (**!!**)|Adaptermodul: 5V, direkt bekötés: 3.3V|
 +|3|**CE**|Chip Enable|Az SPI kommunikáció engedélyezése|**D7**|
 +|4|**CSN**|Ship Select Not|A bemenetet HI-ra kell állítani, különben tiltja az SPI kommunikációt|**D8**|
 +|5|**SCK**|Serial Clock|Az SPI-hez szükséges órajel|**D13**|
 +|6|**MOSI**|Master Out Slave In|Adatok fogadására szolgáló pin|**D11**|
 +|7|**MISO**|Master In Slave Out|Adatok küldésére szolgáló pin|**D12**|
 +|8|IRQ|Interrupt|(opcionális) interrupt pin, "LO" aktív|**-**, nem kell bekötni|
 +
 +===== nRF24L01 + SI24R1 receiver modul (8 pin) =====
 +
 +{{:wiki:arduino:nrf24l01_03.png?300|nRF24L01 + SI24R1 receiver modul}}
 +
 +Ez a modul a nyák-on integrálja az antennát is, mely egyfelől olcsóbb, másfelől viszont a hatótávolsága is kisebb - 100..250 m - mint a külső antennás moduloké. Szerencsére a csatlakozófelületük (mármint a lábkiosztásuk) megegyezik.
 +
 +Az alapértelmezett beállítások szerint az SI24R1 nagyjából 2 ~ 3dBm kimeneti teljesítményt ad le. A 0x06 (RF_SETUP) regiszter legalacsonyabb bitértékének az 1-re állításával ez az érték 7dBm-re emelhető.
 +
 +==== Pinout ====
 +{{:hu:arduino:nrf24pinout_1.png|Pinout}}
 +
 +|1|**Ground**|Ground|Grund|Arduino pin|
 +|2|**Vcc**|Power|Tápfeszültség: 3.3V (**!!**)|Adaptermodul: 5V, direkt bekötés: 3.3V|
 +|3|**CE**|Chip Enable|Az SPI kommunikáció engedélyezése|**D7**|
 +|4|**CSN**|Ship Select Not|A bemenetet HI-ra kell állítani, különben tiltja az SPI kommunikációt|**D8**|
 +|5|**SCK**|Serial Clock|Az SPI-hez szükséges órajel|**D13**|
 +|6|**MOSI**|Master Out Slave In|Adatok fogadására szolgáló pin|**D11**|
 +|7|**MISO**|Master In Slave Out|Adatok küldésére szolgáló pin|**D12**|
 +|8|IRQ|Interrupt|(opcionális) interrupt pin, "LO" aktív|**-**, nem kell bekötni|
 +===== nRF24L01B (10 pin) =====
 +
 +{{:hu:arduino:nrf24l01b.jpg?400|nRF24L01B (10 pin)}}
 +
 +A modul vezetékezése eltér a többitől. Ennek 10 csatlakozója van, 2 Vcc-vel és 2 GND-vel. A többi modulnál használt adapterek (pl. YL-105) itt nem alkalmazhatók !
 +
 +===== nRF24L01 - Arduino Nano vezetékezés =====
 +{{:wiki:arduino:nrf24l01_02.png |NRF24L01 - Arduino Nano vezetékezés}}
 +
 +**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 + (alapmodul) YL-105 illesztőmodul}}
 +===== nRF24L01 + (alapmodul) illesztőmodul YL-105 =====
 +en: Socket Adapter Module Board For 8 Pin NRF24L01+ Wireless Transceiver \\
 +
 +Ez az illesztőmodul megoldja a 3.3V/5V illesztési problémát azáltal, hogy a tápja és a jelek szintje is 5V-os, a 3.3V konverziót "belül" oldja meg. Ezen felül a táp (5v) is külön kerül bevezetésre, ami segítséget nyújthat a modul egyik akkut problémájára, hogy adott működési módok esetén nem kap elég áramot. A konverziót a modul egy AMS1117-3.3 IC-vel végzi.
 +
 +{{:wiki:arduino:nrf24_interface_foto.jpg|nRF24L01 + (alapmodul) illesztőmodul}}
 +
 +===== nRF24L01 szoftver =====
 +https://github.com/nRF24/RF24
 +
 +==== nRF24L01 tesztprogram ====
 +
 +Az eredeti kódot kiegészítettem 2 LED-del. Ezek jelzik, mikor küld vagy fogad a modul. A LED-eket a 9-es pinre kell kötni, egy 100 ohmos ellenállással, a végét a GND-re.
 +=== nRF24L01 küldés ===
 +<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 fogadás ===
 +<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>