Сеть на радиомодулях nRF24l01 и библиотеки RF24Network

Код из видео

 


TX
  /// передатчик, рандомом включает реле
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

// nRF24L01(+) radio attached using Getting Started board 
RF24 radio(9,10);

// Network uses that radio
RF24Network network(radio);
 
 

void setup(void)
{
  Serial.begin(57600);
 
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 90, /*node address*/ 00);             // канал и адрес узла
}

void loop(void)
{
  // Pump the network regularly
    network.update();                                              // нужно постоянно запускать, чтобы транслировались 
                                                                   // данные между узлами
    int data = random(2);                                          // это что передаем на устройства
    int ID = random(1, 4);                                         // это адрес устройства

    Serial.print("Sending...");
     
    RF24NetworkHeader header(/*to node*/ ID);                      // тут указываем на какое устройство отправляем данные
    bool ok = network.write(header,&data,sizeof(data));            // передаем, функция возвращает статус
    if (ok)                                                        // смотрим на статус и отписываемся в Serial
      Serial.println("ok.");
    else
      Serial.println("failed.");
      
   delay(100);
}
 

RX
  /// приемник с реле
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(8,9);

RF24Network network(radio);
 
#define relayPin 5                     // пин для реле
#define ID 03                         // ID устройства

int data = 0; 

void setup(void)
{
  Serial.begin(57600);

  pinMode(relayPin, OUTPUT);
  
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 90, /*node address*/ ID);
}

void loop(void)
{
  // Pump the network regularly
  network.update();                                        // нужно постоянно запускать, чтобы транслировались 
                                                           // данные между узлами

  // Is there anything ready for us?
  while ( network.available() )                            // если пришли данные
  {
    // If so, grab it and print it out
    RF24NetworkHeader header;                               
 
    network.read(header,&data,sizeof(data));               // читаем данные 
    Serial.println(data);                                  // отправляем в сериал для отладки
    digitalWrite(relayPin, boolean(data));                 // и пишим их в выход с реле
  }

  
}