1.介绍
这次测评的是两款开发板,使用的都是RSL10的芯片,这款芯片采用BLE5.0,且工作电压范围在1.1-3.3V,可以看到工作电压的范围是非常大的,那么通过动力转换成的电压就完全可以满足RSL10的工作电压。
2.主控板
主控板的型号为RSL10-SIP-001GEVB,开发板采用符合 Arduino 标准的外形和板载 J-Link 适配器®,用于轻松开发基于 RSL10 封装系统 (SIP) 的蓝牙低能耗应用。
RSL10 SIP 评估开发版 (正面)
1.jpg

图1

RSL10 SIP 评估开发版 (背面)
2.jpg

图2


  • 行业最低功率:

  • Peak Rx Current = 5.6 mA (1.25 V VBAT)
  • Peak Rx Current = 3.0 mA (3 V VBAT)
  • Peak Tx Current (0 dBm) = 8.9 mA (1.25 V VBAT)
  • Peak Tx Current (0 dBm) = 4.6 mA (3 V VBAT)

  • 深度睡眠电流消耗(1.25 V VBAT):

  • 深度睡眠,IO唤醒: 50 nA
  • 深度睡眠,8 kB RAM 保留:300 nA

  • 电流消耗(3V VBAT):

  • 深度睡眠,IO 唤醒: 25 nA
  • 深度睡眠,8 kB RAM 保留:100 nA

  • EEMBC ULPMark Core Profile (3 V):1090
  • EEMBC ULPMark Core Profile (2.1 V):1360
  • 进阶无线:

  • 支持蓝牙低功耗技术和2.4 GHz客制化协议
  • 支援FOTA (Firmware Over−The−Air)更新
  • Rx灵敏度(蓝牙低功耗模式,1 Mbps): -93 dB
  • 传输功率: -17 至 +6 dBm
  • 范围可达 100 公尺

3.自发电开关
自发电开关模组型号为BLE-SWITCH001-GEVB,能量采集蓝牙低功耗开关参考设计是基于 RSL10 SIP 的无电池蓝牙开关,这是业界功率最低的蓝牙 BLE5.0 ,集成到完整的系统在 RSL10 SiP 解决方案中。使用 ZF AFIG −0007 发电机从开关的启动中获得的能量足以通过蓝牙低功耗可靠地传达开关启动,而无需任何额外的电池。
自发电开关正面图:
3.jpg

图3

自发电开关背面图:
4.jpg

图4


从规格书上看到,机械能产生的能量为2分钟0.33mWs。
最后将他们放在一起,看一看他们的联动图片。
5.jpg

图5

4.主控程序
首先需要给RSL10-SIP-001GEVB编写代码,我想使用RSL10-SIP-001GEVB不停的扫描广播,然后将自发开关筛选出来,然后显示自发开光的一些状态,首先需要先创建一个工程。官方已经提供了主控扫描的例程,我们直接拿来使用就可以了。
6.png

图6

这个例程自带扫描广播,然后通过串口打印数据,我们需要修改成筛选自发电开关设备的地址,然后将相应的参数显示出来。这里我们需要先分析一下自发电开关的广播数据内容,通过手机软件,扫描到自发电开关的广播内容,内容如下图所示。
7.png

图7

其中0x082F为当前的工作电压,01为当前开关的状态,这里为关闭态。
然后通过上述广播内容,修改【source->app_scan.c】文件中的【SCAN_ScreenUpdateTimeout】扫描超时函数,修改为如下即可。
  1. void SCAN_ScreenUpdateTimeout(void)
  2. {
  3.     /* VT100 codes for clearing the screen. Works on VT100 terminals only */
  4.     /* Clear ("\033[2J") and move cursor ("\033[0;0H") */
  5.     for (int i = 0; i < adv_report_list_size; i++)
  6.     {
  7.         const uint8_t* addr = adv_report_list[i].adv_addr.addr;
  8.         /* Create a UART string entry with device index, rssi, address, device name */
  9.         /* Indicate which device was selected for a connection */
  10.         if((addr[5] == 0x60) && (addr[4] == 0xC0))
  11.         {
  12.                 uint16_t battery_value = 0;
  13.                 uint8_t led_status[4] = {0};
  14.                 battery_value = adv_report_list[i].data[13] * 256 + adv_report_list[i].data[14];\
  15.                 if(adv_report_list[i].data[24] == 0)
  16.                 {
  17.                         led_status[0] = 'O';
  18.                         led_status[1] = 'N';
  19.                 }
  20.                 else
  21.                 {
  22.                         led_status[0] = 'O';
  23.                         led_status[1] = 'F';
  24.                         led_status[2] = 'F';
  25.                 }
  26.                 snprintf(uart_tx_buffer, UART_TX_BUFFER_SIZE,
  27.                  "%02d dBm | %d mV | LED %s\r\n", adv_report_list[i].rssi,
  28.                                  battery_value, led_status);
  29.                 SCAN_UART_SendString(uart_tx_buffer);
  30.                 break;
  31.         }
  32.     }
  33.     adv_report_list_size = 0;
  34. }
由于每检测到一个新的蓝牙信号【adv_report_list_size】变量会加一,然后会不停的显示这个蓝牙内容,为了扫描到自发电开关设备再显示,所以每次都将【adv_report_list_size】变量清零。
最终窗口打印出来的效果就如下图所示。
8.png

图8

5.总结
经过测试,开关关闭不容易检测到,而且蓝牙扫描的窗口如果太小,可能会导致检测不到自发电开光的蓝牙信号,这里就对扫描设备要求比较高了,因为如果扫描窗口太小,会导致无法扫描到状态改变的广播包,这样会让产品显得非常的LOW,自发电开关整体的性能还是非常不错的,按下或抬起都能够发出广播还是非常不错的!