简介
生活中,无线遥控随处可见,无线遥控与电池似乎密不可分。然而,使用电池会带来许多问题,如更换电池的麻烦、电池在潮湿环境中易腐蚀以及严重的环境污染。你知道吗,无线遥控其实可以无需电池!
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扫描
- 准备好Arduino IDE&ESP32环境:FireBeetle_ESP32_E 首次使用教程
- 为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在线客服或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。