přenos dat pomocí NRF24L01

Wilhelm
Příspěvky: 15
Registrován: 26 pro 2017, 21:44
Reputation: 0

přenos dat pomocí NRF24L01

Příspěvek od Wilhelm » 26 pro 2017, 22:16

Ahoj, potřeboval bych nějaký návod jak přenést číslo z jednoho arduina na druhé pomocí NRF24L01. Koukal jsem na internetu ale všechny návody nechápu, je tam dlouhej, pro mě nesrozumitelnej kód. Mě stačí vědět, jak poslat číslo a jak ho zase přijmout.

Děkuji za odpovědi :idea:

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od ohruska » 26 pro 2017, 22:29

Jaké číslo chceš posílat. Typu int nebo float?
Tady je kod pro posílání dvou čísel typu int.
Vysílač:

Kód: Vybrat vše

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);
 radio.begin();
 radio.openWritingPipe(pipe);
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
 joystick[0] = analogRead(JOYSTICK_X);
 joystick[1] = analogRead(JOYSTICK_Y);
 
 radio.write( joystick, sizeof(joystick) );

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********
Přijímač:

Kód: Vybrat vše

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);
 delay(1000);
 Serial.println("Nrf24L01 Receiver Starting");
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();;
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
 if ( radio.available() )
 {
   // Read the data payload until we've received everything
   bool done = false;
   while (!done)
   {
     // Fetch the data payload
     done = radio.read( joystick, sizeof(joystick) );
     Serial.print("X = ");
     Serial.print(joystick[0]);
     Serial.print(" Y = ");      
     Serial.println(joystick[1]);
   }
 }
 else
 {    
     Serial.println("No radio available");
 }

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE

Wilhelm
Příspěvky: 15
Registrován: 26 pro 2017, 21:44
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od Wilhelm » 26 pro 2017, 23:22

program pro vysílač zatím ok, ale program pro přijímač hlásí tohle:

/tmp/arduino_modified_sketch_41961/sketch_dec26d.ino: In function 'void loop()':
sketch_dec26d:38: error: void value not ignored as it ought to be
done = radio.read( joystick, sizeof(joystick) );
^
exit status 1
void value not ignored as it ought to be

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od ohruska » 27 pro 2017, 00:01

Možná záleží, jakou použiješ knihovnu.
Já mám tuto: https://github.com/maniacbug/RF24

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: přenos dat pomocí NRF24L01

Příspěvek od martinius96 » 27 pro 2017, 12:57

Mám otázku k tomuto:

Kód: Vybrat vše

const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
To pipe to je akože šifra? Niečo ako hash, ktorým sa správa šifruje? Dík

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: přenos dat pomocí NRF24L01

Příspěvek od SkullKeep » 27 pro 2017, 14:03

Spíš bych to viděl na definici kanálu na vysílání pro který přijímač to je, pak případně šifrování.
:twisted: :?: :arrow: :geek: P. Q. M.

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od ohruska » 27 pro 2017, 15:08

To číslo je 40-ti bitová adresa komunikačního kanálu.
Pro použití více komunikačních kanálů zůstává 32 bitů stejných a mění se len poslední bity. Maximálně 5 dalších kanálů je možno použít pro jeden přijímač. Celkem tedy jde přijímat od 6-ti vysílačů.
Adresování potom může vypadat takto:

Kód: Vybrat vše

const uint64_t pipes[6] = { 0xFFFFFFFFF1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL, 0xF0F0F0F0E4LL, 0xF0F0F0F0E5LL, 0xF0F0F0F0E6LL };

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: přenos dat pomocí NRF24L01

Příspěvek od martinius96 » 27 pro 2017, 15:49

Majú mi tie moduly čoskoro prísť, vyzerajú veľmi zaujímavo :-)

Wilhelm
Příspěvky: 15
Registrován: 26 pro 2017, 21:44
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od Wilhelm » 28 pro 2017, 11:24

Děkuji, už mi vše funguje bezchybně, asi to bylo tou knihovnou 8-)

djnyci
Příspěvky: 4
Registrován: 11 led 2018, 10:45
Reputation: 0

Re: přenos dat pomocí NRF24L01

Příspěvek od djnyci » 11 led 2018, 10:47

Nezkoušel někdo náhodou připojit 2 moduly NRF24L01 k jednomu arduinu? Jde to?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host