Радиомодули SI4432, код из видео

Обзор радиомодульей на однокристальных трансиверах SI4432 из магазина icstation.com

Ниже код из видео



Подключение модуля:

MVI_1796.MOV.Still001

Код:

Первый пример

TX 'Hello'
#include <SPI.h>
#include <RH_RF22.h>  // http://www.airspayce.com/mikem/arduino/RF22/index.html

RH_RF22 rf22(10, 2);    // СS, INT .. по умолчанию 10, (D2)

 
void setup() {
    Serial.begin(9600);
  if (!rf22.init()) // по умолчанию, мощьность 8DBM, частота 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36
    Serial.println("init failed");  
  

  rf22.setTxPower(RH_RF22_RF23B_TXPOW_1DBM);        // RH_RF22_TXPOW_1DBM 
                                                    // RH_RF22_TXPOW_2DBM 
                                                    // RH_RF22_TXPOW_5DBM 
                                                    // RH_RF22_TXPOW_8DBM 
                                                    // RH_RF22_TXPOW_11DBM 
                                                    // RH_RF22_TXPOW_14DBM 
                                                    // RH_RF22_TXPOW_17DBM 
                                                    // RH_RF22_TXPOW_20DBM 
  
  rf22.setFrequency(446.0);                         // частота 466.0мгц, шаг 0.05мгц.
//  rf22.setFrequency(446.0, 0.1);                  // тоже, но с автоподстройкой в 100кгц (по умолчанию 0,05)
                    
  rf22.setModemConfig(RH_RF22::GFSK_Rb2_4Fd36);     // скорость и модуляция, Rb = 2.4kbs, Fd = 36kHz. 
                          // http://www.airspayce.com/mikem/arduino/RF22/classRF22.html#a76cd019f98e4f17d9ec00e54e5947ca1
}

void loop() { 
  
    uint8_t data[] = "Hello!";                      // заполняем массив
      
    rf22.send(data, sizeof(data));                 // отправляем 
    rf22.waitPacketSent();                          // ждем пока пакет будет отправлен

    delay(500);                                     // просто ждем
}

RX 'Hello'
#include <SPI.h>
#include <RH_RF22.h>

RH_RF22 rf22;
 
void setup() {
    Serial.begin(9600);
  if (!rf22.init())
    Serial.println("init failed");  
  // Defaults after init are 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36

  rf22.setTxPower(RH_RF22_RF23B_TXPOW_1DBM);  // 
  rf22.setFrequency(446.0);   
  rf22.setModemConfig(RH_RF22::GFSK_Rb2_4Fd36);   
  
}

void loop() {
  if (rf22.available())  {
    uint8_t buf[RH_RF22_MAX_MESSAGE_LEN];   // буфер
    uint8_t len = sizeof(buf);              // вычесляем размер буфера
    
    rf22.recv(buf, &len);     
    
      Serial.print("buf: ");                // отправляем в Serial содержимое буфера
      Serial.println((char*)buf);
      
      Serial.print("  RSSI: ");             // отправляем уровень сигнала последнего пакета
      Serial.println(rf22.lastRssi(), DEC);
   
  }
}

Второй пример

TX - byte
#include <SPI.h>
#include <RH_RF22.h>

RH_RF22 rf22;

uint8_t data = 0;

void setup() {
    Serial.begin(9600);
  if (!rf22.init()) // Defaults after init are 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36
    Serial.println("init failed");  
  

  rf22.setTxPower(RH_RF22_RF23B_TXPOW_1DBM);        // RH_RF22_TXPOW_1DBM 
                                                    // RH_RF22_TXPOW_2DBM 
                                                    // RH_RF22_TXPOW_5DBM 
                                                    // RH_RF22_TXPOW_8DBM 
                                                    // RH_RF22_TXPOW_11DBM 
                                                    // RH_RF22_TXPOW_14DBM 
                                                    // RH_RF22_TXPOW_17DBM 
                                                    // RH_RF22_TXPOW_20DBM 
  
  rf22.setFrequency(446.0);                         // частота 466.0мгц, шаг 0.05мгц
  
                    
  rf22.setModemConfig(RH_RF22::GFSK_Rb2_4Fd36);     // скорость и модуляция, Rb = 2.4kbs, Fd = 36kHz. 
                          // http://www.airspayce.com/mikem/arduino/RF22/classRF22.html#a76cd019f98e4f17d9ec00e54e5947ca1
}

void loop() {
   
  
   data++;
  
    rf22.send(&data, sizeof(&data));         // отправили
    rf22.waitPacketSent();
  
}

RX - byte
#include <SPI.h>
#include <RH_RF22.h>

RH_RF22 rf22;
 
void setup() {
    Serial.begin(9600);
  if (!rf22.init())
    Serial.println("init failed");  
  // Defaults after init are 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36

  rf22.setTxPower(RH_RF22_RF23B_TXPOW_1DBM);
  rf22.setFrequency(446.0);   
  rf22.setModemConfig(RH_RF22::GFSK_Rb2_4Fd36);   
  
}

void loop() {
  if (rf22.available())  {
    uint8_t buf;
    uint8_t len = sizeof(buf);
    
    rf22.recv(&buf, &len);     
    
      Serial.print("buf: "); 
      Serial.print(buf);      
      
      Serial.print("  RSSI: ");
      Serial.println(rf22.lastRssi(), DEC);
   
  }
}