低功耗蓝牙无线传感器

作者:mahesh balan, cypress
如今,科技发展迅猛,各种设备让世界变得更加智能。新技术的不断出现,不仅改进了现有技术,还创造了新的细分市场。蓝牙技术的进步使得智能蓝牙(低功耗蓝牙ble)应运而生。按照蓝牙技术联盟(sig)的定义,ble是一种低功率、短距离、低数据速率的无线通信协议。ble的分层协议栈能以低功耗高效传输少量数据,使其成为电池供电应用的首选无线协议,如需要定期提取和处理数据的低功耗传感器网络接口等。本文将重点介绍如何在数据变化不频繁的传感器应用中,有效地利用ble维持低功耗无线运行。
目前,全球正进入一个各种系统都需要采集和交换数据的物联网(iot)时代。在传感器以无线方式连接,形成网络并实现设备间数据交换的物联网中,ble发挥着至关重要的角色。主机设备可以是能够监测和控制所有网络节点的智能手机。此类物联网(iot)应用包括日常活动追踪以及家庭自动化功能,如高效住宅照明、温度和湿度监测与控制、远程控制消费类电子设备等。
低功耗蓝牙的功率模式
如果传感器采用电池供电,功耗受限且必须持续很长时间的话, ble将成为最佳连接选择。比如,一个测量温度及湿度的低功耗传感器, 其参数是缓慢变化的,此类传感器可以与能够处理并将数据传输到主机设备的ble集成型处理器连接。ble子系统的操作频率不高,例如每百毫秒一次,而且在其他时间处于低功耗模式。赛普拉斯psoc 4 ble等ble型器件可提供多用户可配置的功耗模式,从而优化独立于处理器工作模式的ble子系统(bless)的运行。使开发人员能够降低功耗,并使单块电池的使用寿命达到数年之久。
这五种系统功率模式分别为:主动、睡眠、深度睡眠、休眠和停止模式。三种bless功耗模式分别为主动、睡眠和深度睡眠模式。bless模式在系统功率为1.3微安的深度睡眠模式下始终启用。ble子系统可以在bless active模式下发送和接收数据。它能保持空闲状态,并在bless睡眠模式和深度睡眠模式下维持连接。这些功耗模式独立于系统的功耗模式,因此开发人员能够灵活地为系统和bless分别选择最高效的配置。在此基础上,我们可以建立一个电流需求极低、通常由纽扣电池供电的完整系统。
例如,1秒广播间隔的平均耗电量只有26微安。而1秒连接间隔的平均耗电量更低,只有17微安。
传感器和低功耗蓝牙
传感器可以大致分为模拟和数字两种。典型的模拟传感器包括用于监测烟雾、气体、环境光线、人员感应等的传感器。数字传感器包括监测温度、湿度、压力、加速度等的传感器。当ble子系统与应用处理器集成时,传感器可以采用多种不同的方式进行连接。例如,可以将模拟传感器馈送到前端具有电压输出器的sar adc。数字传感器无需进行模拟转换,因此可以通过任何通信接口(如i2c、spi或单线接口)采集数据。集成的定时器、计数器、脉宽调制器和通用数字模块(udb)均可用于实现自定义逻辑以进一步处理传感器数据。最终,经处理或所接收的数字数据可以通过ble接口发送,并由内置ble功能的手机或任何其他客户端设备进行监测。随着资源可用性和成本的不断变化,可选择不同系列的ble集成处理器(如psoc 4 ble)以适应各种应用。
无线传感器网络
无线传感器网络通常作为网状网络和枢纽网络(见图1)。枢纽网络包括可以放置在相同位置的所有传感器。每个传感器需要连接到单个ble外围设备(服务器)来处理数据并将其发送到ble中央设备(客户端)。网状网络采用可以远程定位传感器的拓扑结构。网格中的每个节点都需要连接到ble外围设备(服务器),所有这些外围设备都可以连接到ble中央设备(客户端)。
图1:传感器网络拓扑结构
网状网络中枢网络 枢纽网络
内置ble功能的处理器的灵活性和丰富资源,使传感器能够与单一ble设备连接。图2是使用psoc creator的典型配置。psoc creator是一个用于围绕psoc架构开发应用程序的ide。图中显示的是模拟和数字传感器接口以及ble子系统。该配置展示的是用于感测烟雾、光照强度、温度、湿度和压力的典型工业数据监测系统。配置中的每个组件都有一个关联的应用程序编程接口(api),开发人员可根据需要访问这些组件。每个组件还有一个与其相关的数据表对组件的可用配置进行说明。
图2:psoc creator项目 – 包含所有必要组件的顶级设计
ble组件在其gap层中被配置为从设备。这使任何ble设备(如ble手机)都可以扫描此设备,在ble从设备包含其名称广播时被ble手机连接。此外,在其gatt层中,ble设备被配置为具有自定义配置文件的gatt服务器。下面将讨论ble低功耗特性在该组件内启用。名为“sensor service”的单一服务具有5种不同的特性,用于采集每个传感器的数据。每个特性都具有通知功能,可以将传感器数据作为通知发送。
ble中的一切都作为“-活动”处理。ble堆栈提供处理这些事件的“定义”。以下代码片段展示了其中一部分活动的运行。
cyble_start(appcallback);
void appcallback(uint32 event, void* eventparam)
{
cyble_api_result_t apiresult;
switch (event)
{
case cyble_evt_stack_on: /* this event is received when the component is started */
/* enter into discoverable mode so that remote device can search it. */
apiresult = cyble_gappstartadvertisement(cyble_advertising_fast);
if(apiresult != cyble_error_ok)
{
/* error */
}
break;
case cyble_evt_gapp_advertisement_start_stop:
if(cyble_state_disconnected == cyble_getstate())
{
cysyspmhibernate(); /* enter hibernate mode for low current */
}
break;
case cyble_evt_gap_device_connected:
break;
case cyble_evt_gap_device_disconnected:
/* put the device into discoverable mode so that a remote can search it. */
apiresult = cyble_gappstartadvertisement(cyble_advertising_fast);
if(apiresult != cyble_error_ok)
{
/* error */
}
break;
/* gatt events */
case cyble_evt_gatt_connect_ind:
break;
case cyble_evt_gatt_disconnect_ind:
break;
}
}
图3:ble组件配置
一旦两个设备实现连接,就能使用连接间隔不同的通知发送数据。应用程序接口“cyble_processevents()”应置于while(1)循环中,且必须在每个连接间隔中至少调用一次。我们也可以调用在同一while循环中将数据作为通知发送的函数。以下函数可用于将温度数据的一个字节作为通知发送。这也适用于其他传感器特性。
voidsendtempnotification(uint8tempdata)
{
cyble_api_result_t bleapiresult;
cyble_gatts_handle_value_ntf_t temphandle;
temphandle.value.val = &tempdata;
temphandle.value.len = 1;
temphandle.attrhandle = cyble_sensorservice_temperature_char_handle;
do
{
bleapiresult = cyble_gattsnotification(cyble_connhandle, &temphandle);
cyble_processevents();
}while((cyble_error_ok != bleapiresult) && (cyble_state_connected == cyble_state));
}
如上文所述,处理器和ble子系统(bless)具有独立的低功率模式。举个例子 ,如果设备断开连接,我们可以将处理器设置为休眠或停止模式以降低功耗。在广播和连接间隔之间,我们可以利用bless深度睡眠模式,甚至连所使用的各个组件(如adc、i2c等)也可以进入各自的低功率模式并在需要时唤醒。因此,开发人员能够根据整个系统的实际需要,对功率进行非常细致的控制。有关详细的低功率代码片段,请参见低功耗蓝牙应用的低功率设计与电池寿命估算。
while(1) 循环如下:
while(1)
{
/* process all the generated events. */
cyble_processevents();
/* to achieve low power in the device */
lowpowerimplementation();
/***********************************************************************
* wait for connection established with central device
***********************************************************************/
if(cyble_getstate() == cyble_state_connected)
{
cyble_processevents();
sendtempnotification(temperature);
}
}
目前具有ble功能的手机可以扫描这一传感器网络设备,并使用各种特性来监视每个传感器的数据。一些处理器制造商还提供手机端的ble连接软件。例如,赛普拉斯提供了一个名为cysmart的应用程序,该应用程序可以安装在您的安卓或apple设备上,并协助您监控ble传输。
ble 信标
蓝牙信标的广播信号可以被附近的智能设备捕捉。对于此类应用,只需要将ble组件配置为广播器的gap,这样系统就可以发送广播信息。信标的功耗应该较低,也可以得益于集成的处理器/ble设计。太阳能低功耗蓝牙信标和无线传感器节点可显示正在使用的ble信标。
ble在消费类、工业和嵌入式应用等许多市场中的发展势头良好。该项技术成功的一个关键因素是它能够在低功耗的情况下运行。ble技术使开发人员能够设计出由电池供电、使用寿命更长,对用户更加友好的应用。

HTTPS终于搞懂了!
usb可以链接多少个设备
英飞凌推出第五代thinQ!TM SiC肖特基势垒二极管
迎接800V高压架构,安森美下一代1200V EliteSiC M3 MOSFET让车载充电器升级
紫外线老化试验箱的介绍
低功耗蓝牙无线传感器
基于搭建一种具有优秀可移植性的高性能通用软件无线电平台的目的
远翔单芯片双色调光应用方案FP7195
5G技术为自动驾驶汽车铺平道路
TE推出Multispring插针的MAG-MATE连接器
三星新专利曝光,7英寸屏幕的手机可折叠至钱包大小
比人类驾驶安全1000倍 英特尔对100辆自动驾驶汽车进行测试
机器视觉检测应用于哪些行业
物联网智能污水处理站远程监控运维平台解决方案
三款800G光模块方案介绍—SR8/DR8/2FR4
可穿戴技术的“十大戒律”!
聊一聊FPGA低功耗设计的那些事儿
针对污水处理厂的污水排放监控系统设计
贸泽电子新品推荐:2021年4月新增超3000个物料
国芯思辰|兼容BL8062,电源稳压器CN86L028可提升摄像机图像质量