自发电无线开关-BLE Beacon

简介

生活中,无线遥控随处可见,无线遥控与电池似乎密不可分。然而,使用电池会带来许多问题,如更换电池的麻烦、电池在潮湿环境中易腐蚀以及严重的环境污染。你知道吗,无线遥控其实可以无需电池!

DFRobot研发的自发电无线开关,使用时无需安装电池即可将无线信号发送出去。开关由微型发电机和BLE射频电路组成,微型发电机利用电磁感应原理,能够将按压的动能转化为电能,射频电路将微型发电机的电能进行整流、储能,最终将BLE信号无线广播,附近可以扫描BLE的设备均可以接收到消息。适合作为一个免维护的开关,长期监测按压、碰撞等状态的变化,如用于制作无线门铃、呼叫器、点餐器、墙面开关等。

产品功能描述

  • 无需电池,免维护
  • 无线信号,免布线
  • 6字节唯一地址码
  • 广播BLE信号
  • 10万次按压寿命

产品参数

  • 工作频段:2.4Ghz

  • 广播信道:37+38+39(2402MHz、2426MHz、2480MHz)

  • 广播数据格式:BLE标准广播包

  • 发电能量:250uJ

  • 按压力度:典型值1300g

  • 模块重量:14g±2.5g(不含天线)

  • 模块尺寸:24x44x15.5mm

  • 按压频率:最快2次/S(若按压过快可能会进入保护状态,需静止10S左右恢复)

  • 通信距离:>40M(接收端为手机,空旷室外)

引脚说明

标号 名称 功能描述
1 烧录端口 预留定制功能
2 扩展端口 可配置IO事件,预留定制功能
3 发电按键 按动时产生能量
  • 说明:本产品的配置信息仅支持OTP一次性烧录,需要定制其他广播格式请与我们联系。支持的广播格式及相关功能测试可使用 TEL0168-Fermion:BLE传感器信标

手机APP扫描

  • 1.安装并打开NanoBeacon™ BLE Scanner
  • 2.点击左上角筛选按钮打开筛选器,通过名称筛选“WS_DF”,完成后再次点击筛选按钮关闭筛选器。注意右下角符号若为三角形,则表示此时停止扫描,可通过点击三角符号或下滑页面启动扫描。

  • 3.按下发电按钮即可看到app中扫描到按钮按下

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 TemperatureData,HumidityData;
float Temperature,Humidity;

int scanTime = 3; //In seconds
BLEScan *pBLEScan;

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
    void onResult(BLEAdvertisedDevice advertisedDevice)
    {
      if (advertisedDevice.haveName())
      {
        if(String(advertisedDevice.getName().c_str()) == "WS_DF")
        {
          std::string strManufacturerData = advertisedDevice.getManufacturerData();
          uint8_t cManufacturerData[100];
          strManufacturerData.copy((char *)cManufacturerData, strManufacturerData.length(), 0);
          Serial.printf("Address:");

          for (int i = 2; i < 8; i++)
          {
            Serial.printf("[%X]", cManufacturerData[i]);
          }
          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);
}
  • 打开串口监视器,摁下发电按钮即可看到设备的地址

常见问题(FAQ)

  • 问题1:按下按键后,手机app有时候扫描不到BLE信息?

    • 请将手机后台其他进程关闭,断开WiFi和移动网络连接,仅打开蓝牙。手机在处理其他APP的任务时,会导致NanoBeacon BLE Scanner APP错过一些BLE广播的扫描。
    • 超过最远通信距离,接收端跟发射端中间存在较多障碍物时,会极大缩短通信距离。
    • 按压速度过快,发电量过多,模块进入保护状态,需停止按压发电等待10S左右后可自行恢复。
    • 长时间未收到BLE广播时,手机app会自动进入休眠状态停止扫描,需点击右下角开始按钮或下拉界面进行刷新。
  • 问题2:按下按键后,ESP32有时候扫描不到BLE信息?

    • 请不要电子设备较多的环境中测试。周围环境中BLE设备过多,ESP32处理速度过慢,会导致ESP32错过一些BLE广播的扫描。

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

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

更多

DFshopping_car1.png DFRobot商城购买链接