Gravity: UART A6 GSM & GPRS Module

简介

DFRobot Firebeetle萤火虫系列是专为物联网设计的低功耗开发组件。此款FireBeetle Covers扩展板,集数据收发于一体,板上集成NRF24L01无线通信模组,接口完全兼容FireBeetle。模块采用NORDIC原装nRF24L01P射频芯片,内置RFX2401C功放芯片,接收灵敏度提高10dBm,通信距离达到2Km(空旷地带)。并且,该模块保留了nRF24L01P芯片的低功耗功能,在shutdown模式下,电流仅1.0uA。

技术规格

尺寸图

FireBeetle Covers-NRF24L01 Radio尺寸图

功能示意图

Fig2: FireBeetle Covers-NRF24L01 Radio 无线模块

PinOut

Fig3:FireBeetle Covers-NRF24L01 Radio Pinout

warning_yellow.png
注:NC不连接,3V3为供电电压,RST为底板复位连接复位按键

使用教程

准备

不使用IRQ收发数据

|

#include <SPI.h>
#include <DFRobot_NRF24L01.h>

DFRobot_NRF24L01 MyNrf;

void setup(){
  Serial.begin(9600);
  MyNrf.spi = &MirfHardwareSpi;
#if defined ARDUINO_ESP32_DEV || defined ARDUINO_ARCH_FIREBEETLE8266
  MyNrf.NRF24L01_Gpio_Init(D6,D5);      /*CE = D6, CS = D5*/
#else
  MyNrf.NRF24L01_Gpio_Init(6,5);        /*CE = 6, CS = 5*/
#endif
  while(!MyNrf.NRF24L01_check()){
    Serial.println("RF24L01 is not find !...");
    delay(1000);
  }
  MyNrf.NRF24L01_Init();
  MyNrf.NRF24L01_Set_Mode(MODE_RX);
}

void loop(){
  uint8_t data[32],len = 0;
  if(Serial.available()){
    while(Serial.available())
      Serial.read();
    MyNrf.NRF24L01_Set_Mode(MODE_TX);
    delay(50);
    MyNrf.send((uint8_t *)"Hello Word!", 11);
    while(MyNrf.isSending())
      delay(10);
    MyNrf.NRF24L01_Set_Mode(MODE_RX);
    delay(50);
  }
  if(!MyNrf.isSending() && MyNrf.dataReady()){
    len = MyNrf.getData(data);
    int i;
    String Temp;
    for (i = 0; i < len; i++)
    {
      Temp += char(data[i]);
    }
    Serial.println(Temp);
  }
}

|}

DFRobot_NRF24L01 MyNrf

NRF24L01_Gpio_Init(uint8_t CE,uint8_t CS)

NRF24L01_check()

NRF24L01_Init();

NRF24L01_Set_Mode(MODE_RX)

isSending()

dataReady()

getData((uint8_t *) data)

使用IRQ进行收发数据

|

#include <SPI.h>
#include <DFRobot_NRF24L01.h>

DFRobot_NRF24L01 MyNrf;

void callback(){
  uint8_t data[32],len = 0;
  if(MyNrf.NRF24L01_Get_Mode() == MODE_RX){
    len = MyNrf.getData(data);
    int i;
    String Temp;
    for (i = 0; i < len; i++)
    {
      Temp += char(data[i]);
    }
    Serial.println(Temp);
  }
}

void setup(){
  Serial.begin(9600);
  MyNrf.spi = &MirfHardwareSpi;
#if defined ARDUINO_ESP32_DEV || defined ARDUINO_ARCH_FIREBEETLE8266
  MyNrf.NRF24L01_Gpio_Init(D6,D5);      /*CE = D6, CS = D5*/
  MyNrf.NRF24L01_Set_IRQ(D2,callback);
#else
  MyNrf.NRF24L01_Gpio_Init(6,5);        /*CE = 6, CS = 5*/
  MyNrf.NRF24L01_Set_IRQ(2,callback);
#endif
  while(!MyNrf.NRF24L01_check()){
    Serial.println("RF24L01 is not find !...");
    delay(1000);
  }
  MyNrf.NRF24L01_Init();
  MyNrf.NRF24L01_Set_Speed(SPEED_250K);
  MyNrf.NRF24L01_Set_Power(POWER_F0DBM);
  MyNrf.NRF24L01_Set_Mode(MODE_RX);
  MyNrf.NRF24L01_Set_RxAddr((uint8_t *)"mast1",5);
}

void loop(){
  uint8_t data[32],len = 0;
  if(Serial.available()){
    while(Serial.available()){
      if(Serial.read() == '1'){
        MyNrf.NRF24L01_Set_TxAddr((uint8_t *)"recv1",5);
      }else{
        MyNrf.NRF24L01_Set_TxAddr((uint8_t *)"recv2",5);
      }
    }
    MyNrf.NRF24L01_Set_Mode(MODE_TX);
    delay(50);
    MyNrf.send((uint8_t *)"I'M MASTER 1", 12);
    while(MyNrf.isSending())
      delay(10);
    MyNrf.NRF24L01_Set_Mode(MODE_RX);
    MyNrf.NRF24L01_Set_RxAddr((uint8_t *)"mast1",5);
  }
}

|}

|

#include <SPI.h>
#include <DFRobot_NRF24L01.h>

DFRobot_NRF24L01 MyNrf;

void callback(){
  uint8_t data[32],len = 0;
  if(MyNrf.NRF24L01_Get_Mode() == MODE_RX){
    len = MyNrf.getData(data);
    int i;
    String Temp;
    for (i = 0; i < len; i++)
    {
      Temp += char(data[i]);
    }
    Serial.println(Temp);
  }
}

void setup(){
  Serial.begin(9600);
  MyNrf.spi = &MirfHardwareSpi;
#if defined ARDUINO_ESP32_DEV || defined ARDUINO_ARCH_FIREBEETLE8266
  MyNrf.NRF24L01_Gpio_Init(D6,D5);      /*CE = D6, CS = D5*/
  MyNrf.NRF24L01_Set_IRQ(D2,callback);  /*Set interrupt io port and callback function*/
#else
  MyNrf.NRF24L01_Gpio_Init(6,5);        /*CE = 6, CS = 5*/
  MyNrf.NRF24L01_Set_IRQ(2,callback);   /*Set interrupt io port and callback function*/
#endif
  while(!MyNrf.NRF24L01_check()){
    Serial.println("RF24L01 is not find !...");
    delay(1000);
  }
  MyNrf.NRF24L01_Init();
  MyNrf.NRF24L01_Set_Speed(SPEED_250K);
  MyNrf.NRF24L01_Set_Power(POWER_F0DBM);
  MyNrf.NRF24L01_Set_Mode(MODE_RX);
  MyNrf.NRF24L01_Set_RxAddr((uint8_t *)"recv1",5);
}

void loop(){
  uint8_t data[32],len = 0;
  if(Serial.available()){
    while(Serial.available())
      Serial.read();
    MyNrf.NRF24L01_Set_TxAddr((uint8_t *)"mast1",5);
    MyNrf.NRF24L01_Set_Mode(MODE_TX);
    delay(50);
    MyNrf.send((uint8_t *)"I'M SLAVE 1!", 11);
    while(MyNrf.isSending())
      delay(10);
    MyNrf.NRF24L01_Set_Mode(MODE_RX);
    MyNrf.NRF24L01_Set_RxAddr((uint8_t *)"recv1",5);
  }
}

|}

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多资料

DFshopping_car1.png [Link DFRobot商城购买链接]