Gravity: BLE Sensor Beacon

简介

Gravity: BLE 传感器信标,是一款通过蓝牙广播传感器数据的无线信标,内置11位ADC采集功能,可连接数字量或模拟量传感器进行数据采集和广播。使用手机、ESP32等支持BLE接收的设备,均可在信标广播范围内获取信标广播的传感器数据。

Gravity: BLE 传感器信标集成低功耗蓝牙5.3技术,数据格式可自行配置,如iBeacon、Eddystone、用户自定义等。信标广播的数据格式、广播的内容、广播的时间间隔等等都可以通过图形化界面自行配置,无需任何代码编程即可完成一个蓝牙信标。配置完成后,设备供电即作为一个蓝牙信标运行,会按照配置信息自动采集传感器数据并向外界广播。适合作为物联网传感器节点,如智能农场、办公室、工厂、仓库等场景中的数据采集节点。

注:Gravity: BLE传感器信标需要使用3.3V USB-TTL工具进行配置。

产品参数

引脚说明

标号 名称 功能描述
1 电源输入端 3.3-5.5V DC电源输入
2 烧录/调试端 用于模块调试和烧录
3 传感器信号输入端 "A": 传感器信号输入
"-": 传感器GND
"+":传感器供电
4 传感器VCC选择端 短接:传感器供电方式为3.3V持续供电
断开(默认):传感器供电方式可设置为仅广播时供电

快速使用教程

以自定义数据格式为例,通过手机app和ESP32获取传感器数据。

一、软硬件准备

二、配置传感器信标

*注:模块仅能烧录一次,在未确定配置信息前不要直接点击"Burn/Program"进行烧录。可通过"Run inRAM"进行测试,在烧录前"Run in RAM"可无限次使用,断电后系统复位。

三、手机app获取数据

image-20221201145433008

当前已知信标采集到的传感器数据为“0X00E3”,将其转换为十进制为227,即信标采集到的电压值为227mv

我们所连接的传感器是LM35,通过查询LM35的wiki可知,LM35输出电压和温度对应关系为10mV/℃,即信标广播的LM35温度传感器数据为22.7℃

四、ESP32获取数据

/*
   Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
   Ported to Arduino ESP32 by Evandro Copercini
   Changed to a beacon scanner to report iBeacon, EddystoneURL and EddystoneTLM beacons by beegee-tokyo
*/

#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
#include <BLEEddystoneURL.h>
#include <BLEEddystoneTLM.h>
#include <BLEBeacon.h>
#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00) >> 8) + (((x)&0xFF) << 8))

float Sensor_Data;
int scanTime = 5; //In seconds
BLEScan *pBLEScan;

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
    void onResult(BLEAdvertisedDevice advertisedDevice)
    {
      if (advertisedDevice.haveName())
      {
        if(String(advertisedDevice.getName().c_str()) == "Gravity: Sensor Beacon"){
          Serial.print("Device name: ");
          Serial.println(advertisedDevice.getName().c_str());
          std::string strManufacturerData = advertisedDevice.getManufacturerData();
          uint8_t cManufacturerData[100];
          strManufacturerData.copy((char *)cManufacturerData, strManufacturerData.length(), 0);
          Serial.printf("strManufacturerData: %d ", strManufacturerData.length());
            for (int i = 0; i < strManufacturerData.length(); i++)
            {
              Serial.printf("[%X]", cManufacturerData[i]);
            }
            Sensor_Data = int(cManufacturerData[2]<<8 | cManufacturerData[3]);
            Serial.println();
            Serial.print("Voltage:");Serial.print(int(Sensor_Data));Serial.println("mV");   
            Serial.print("Temp_LM35:");Serial.print(Sensor_Data/10);Serial.println("℃");      
            Serial.println("------------------");       
        }        
      }
    }
};
void setup()
{
  Serial.begin(115200);
  Serial.println("Scanning...");

  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99); // less or equal setInterval value
}
void loop()
{
  // put your main code here, to run repeatedly:
  BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
  pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory
  delay(2000);
}

五、确认数据并烧录

高级应用

一、广播Eddystone TLM数据

Eddystone TLM的数据内自带温度数据,此时温度数据有信标芯片内部的温度传感器提供,会受到芯片本身的发热影响。

配置Eddystone TLM时仅需要在“Advertising Data Format”中选择“Eddystone ”,然后在“Eddystone -Settings”中选择“TLM Frame”即可,广播间隔、地址等可全部保持默认,也可根据需要自行配置。

二、高功耗传感器供电

因使用MGPIO6作为电源输出时,MGPIO6的带载能力弱(4mA),一些功耗较高的传感器可能无法驱动,因此我们在Gravity: BLE传感器信标板子的背面做了跳线焊盘,将焊盘短接后,传感器的电源将由板载的LDO提供,3.3V电压会更加稳定且带载能力更强

三、动态电源控制

若要做动态电源控制,即广播时为传感器供电,广播结束后停止为传感器供电,则将MGPIO6 设为“wakeup high, sleep low” Latch设为“disable”。

样例配置文件可直接下载后直接加载:DynamicPower.zip

四、长间隔防丢包

当广播间隔设为10S/次 甚至更久时,若接收端接收失败,那就要等待10S后信标下一次广播,且下一次广播时仍有接收失败风险。这种情况下,为防止接收端接收失败,可在间隔时间到达时进行多次广播。

具体实现方法为:

NanoBeacon Config Tool使用说明

关于NanoBeacon Config Tool更多用法,可查看软件的用户指南:NanoBeacon Config Tool User Guide EN.pdf 用户指南中使用的是“Beacon development kit”,在使用Gravity: BLE 传感器信标时,直接使用3.3V USB-TTL工具即可:

常见问题

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

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

更多

DFshopping_car1.png DFRobot商城购买链接