您的位置 首页 发布

Silicon Labs蓝牙Mesh使用实例

The application of Silicon Labs’ Bluetooth Mesh李仁庆(贝能国际有限公司,广东 广州 510665)       摘要:蓝牙Mesh标准脱胎于蓝牙低功耗(

The application of Silicon Labs’ Bluetooth Mesh

李仁庆(贝能世界有限公司,广东 广州 510665)

       摘要:蓝牙Mesh规范脱胎于蓝牙低功耗(BLE)和网状协议,兼有两种协议长处,又摒弃其缺陷,是开发节点网络的挑选之一;Silicon Labs公司推出的蓝牙Mesh SDK和支撑BT5.0的EFR32BG13系列SoC,让蓝牙Mesh运用变得简略灵敏。
       关键词:蓝牙;mesh;照明;拓扑

  导言

       物联网开展如火如荼的今日,怎样能够联接很多节点,又能够习惯不同节点的特色的问题?这不可避免地摆在了一切的业内人士面前。Zigbee规范已有老练生态链,但需求有网关,无法跟现在盛行的操作终端如手机进行直连成为了短板;在家庭、工业、商业都遍及运用的Wi-Fi因功耗大,无法习惯各种节点的特色而只能用在传输速度有要求的产品上;入门简略、本钱低的在简略的智能物联产品中运用最多,但因其规范化程度不高,无法到达各厂家的产品互联互通;近期盛行的NB-IoT产品因其广域网特色,在大规模远距离节点网络中有颇多运用,但功耗和全体本钱问题是暂时难以处理的问题。那是否就没有一种协议能够完美处理这些问题吗?
  有!蓝牙技能联盟于2017年7月19日正式宣告,蓝牙(Bluetooth®)技能开端全面支撑Mesh网状网络(如图1)。蓝牙Mesh规范脱胎于蓝牙低功耗(BLE),用于树立多对多设备通讯的新网络。蓝牙Mesh规范协议具有蓝牙BLE的特色,也有多对多的网络拓扑,无需网关一起具有多种运用profile规范,操作简略,在各种操作终端中遍及装备的长处,完全契合节点网络的特色;未来运用蓝牙beacon信息推送和定位技能,能够完结无衔接推送和室内定位功用。

       1 Silicon Labs公司的套件及芯片

       公司供给的蓝牙Mesh规范协议现在现已推出第二版正式SDK,加入了调光、调色功用,标志着蓝牙Mesh在Lighting(照明)上的运用愈加老练;也加入了友员节点、低功耗节点,低功耗运用的完结也令蓝牙Mesh在Lighting范畴的产品化成为实践。
  公 司 在 蓝 牙 M e s h 应 用 上 有、EFR32BG系列SoC和BGM系列模块,其间性价比最高的为EFR32BG13系列,并供给了相应的开发套件和例程,能大大提高蓝牙Mesh产品的开发速度。该SoC集成了蓝牙5.0 2.4 GHz RF硬件,内置PA和巴伦电路,RF外围器材只需求添加2个电感和1个电容,无需客户在射频方面投入不必要的精力。
  2 在照明范畴运用蓝牙Mesh实例

       无论是在工业照明、商业照明仍是在家庭照明中,实践灯的数量和开关的数量都远远超越初战演示,并且照明场景也远远杂乱过初战演示。接下来,咱们结合事例完结一个运用实例。

1554699094893731.png

  ①依据Silicon Labs公司供给的硬件材料从头制造了契合产品尺度的PCB(印制板),因为该SoC在无线方面集成了PA(功率放大器)和巴伦电路,外围电路适当简略,根本不需求进行任何硬件调试,一次PCB制造成功率适当高。官方供给的开发套件为两个LED,本运用试验将其扩展为三个LED;官方供给的开发套件为两个按键,别离完结开关、调光和出厂复位,本运用试验将其缩减为一个按键,选用单方向循环算法完结开关、调光和出厂复位。
  ②在运用试验中,咱们模仿了一个需求用到50个节点的照明网络(如图2),将其分红4组,其间两组均为手动形式,为1个开关节点手动操控9个灯节点的开关和调光,这个场景是官方演示套装的加大版别,也是日常照明比较常见的场景;第3组为主动开关场景,2个开关节点按不同节拍主动操控25个灯节点开或关,模仿的是需求主动开关的场景,如路灯主动敞开和平息;最终一组为主动转发场景,由1个开关节点和2个带转发功用灯节点完结,适用于长廊操控场景。
  下面将在开始实战和以上硬件基础上完结软件运用。
  ③在simplicity studio上树立例程SoC-Mesh Light和SoC-Mesh Switch,生成代码后能够直接进行编译,之后进行榜首处修正,本运用试验的LED和引脚进行了改动,而LED是调用了PWM进行操控,所以需求进行引脚分配和PWM装备修正,能够在其他工程中调用硬件装备器进行图形化修正,生成代码。因为本运用试验中改动不大,故直接在源码中进行修正:

// configure LED pins
GPIO_PinModeSet(BSP_
L E D 0 _ P O R T , ( 5 U ) ,
gpioModePushPull, LED_OFF_
STATE);
GPIO_PinModeSet(BSP_
L E D 0 _ P O R T , ( 6 U ) ,
gpioModePushPull, LED_OFF_
STATE);
GPIO_PinModeSet(BSP_
L E D 0 _ P O R T , ( 7 U ) ,
gpioModePushPull, LED_OFF_STATE);
// configure pushbutton PB4 as inputs, with pull-
up enabled delete PB1
GPIO_PinModeSet(BSP_BUTTON0_PORT, (4U),
gpioModeInputPull, 1);
// configure PWM
TIMER0->ROUTELOC0 = LED0_ROUTELOC |
LED1_ROUTELOC | LED2_ROUTELOC;// add CC2
TIMER0->ROUTEPEN = TIMER_ROUTEPEN_
CC0PEN | TIMER_ROUTEPEN_CC1PEN | TIMER_
ROUTEPEN_CC2PEN;
sInitCC.mode = timerCCModePWM;
TIMER_InitCC(TIMER0, 0, &sInitCC);
TIMER_InitCC(TIMER0, 1, &sInitCC);
TIMER_InitCC(TIMER0, 2, &sInitCC); // add CC2
TIMER_CompareSet(TIMER0, 0, current_level);

TIMER_CompareSet(TIMER0, 1, current_level);
TIMER_CompareSet(TIMER0, 2, current_level); //
add CH2

修正一下出厂复位的触发条件:

case gecko_evt_system_boot_id:
// check pushbutton state at startup. If PB4 is
held down then do factory reset
if (GPIO_PinInGet(BSP_BUTTON0_PORT,
BSP_BUTTON0_PIN) == 0){
temp1 = RTCC_CounterGet();
while(GPIO_PinInGet(BSP_BUTTON0_
PORT, BSP_BUTTON0_PIN) == 0){
temp2 = RTCC_CounterGet()-
temp1;
if(temp2>LONG_PRESS_TIME_
TICKS){
t e m p 1 = R T C C _
CounterGet();
LED_set_state(LED_STATE_
PROV);
temp3++;
}
if(temp3>30){
initiate_factory_reset();
break;
}
}

if(temp3<=30){
struct gecko_msg_system_get_bt_
address_rsp_t *pAddr = gecko_cmd_system_get_bt_
address();
set_device_name(&pAddr-
>address);
// Initialize Mesh stack in Node
operation mode, wait for initialized event
result = gecko_cmd_mesh_node_
init()->result;
if (result) {
sprintf(buf, “init failed
(0x%x)”, result);
}
}
}

1554699125936998.png

       ④从头编译完后,能够烧录进榜首、二组中,按进行组网分组即可完结手动形式的场景。
  ⑤在手动形式基础上修正主动形式的敞开封闭,则变成主动形式的场景:

       //修正按键中止处理即可

void gpioint(uint8_t pin){
if ((pin == BSP_BUTTON0_PIN)&&(enter==0)) {
if (GPIO_PinInGet(BSP_BUTTON0_PORT,
BSP_BUTTON0_PIN) == 0) {
// pressed – record RTCC timestamp
pb0_press = RTCC_CounterGet();
} else {
// released – check if it was short or long press
t_diff = RTCC_CounterGet() – pb0_press;
if (t_diff < LONG_PRESS_TIME_TICKS) {
gecko_external_signal(EXT_
SIGNAL_PB4_SHORT_PRESS);
enter=1;
} else {
gecko_external_signal(EXT_
SIGNAL_PB4_LONG_PRESS);

enter=1;
}
}
}
e l s e i f ( ( p i n = = B S P _ B U T T O N 0 _
PIN)&&(enter==2)) {
enter=0;
}
}

       ⑥从头编译完后,能够烧录进第三、四组中,按进行组网分组即可完结主动形式的场景。
  ⑦在主动形式组网时,挑选RELAY功用,则具有了转发功用,运用电池供电设备后,能够用在长廊操控场景。
  ⑧ 如 客 户 需 要 自 己 开 发 合 适 的 A p p , 则simplicity studio在上下载到ADK,按运用笔记《an1140-
bluetooth-mesh-for-android-adk.pdf》完结:装置,新建工程,打开下载到的ADK包,内有jar文件(途径:C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\blemesh\v1.3\app\bluetooth\android),将契合蓝牙Mesh的API接口导入,则能够进行下一步开发。
  注意事项如下。
  ①官方供给的App为演示版别,其分组数目只分到4组,但蓝牙Mesh规范是这样描绘的:“A groupaddress is a multicast address and can represent multiple elements on one or more nodes. There are 16384 group addresses per mesh network”,是可分多达16384组的,满意任何场景运用。
  ②相同,device ID在蓝牙Mesh规范里是这样描绘的:“A unicast address is allocated to an element and always represents a single element of a node. There are 32767 unicast addresses per mesh network”,演示版别中只分到250个会从头开端分配。
  ③蓝牙Mesh规范支撑客户开发定制model,在图形化装备界面里边进行model修正和软件装备,即可完结。
  如下是软件修正:

       //界说IDmodel

my_model_t my_model = {
.elem_index = PRIMARY_ELEMENT,
.vendor_id = MY_VENDOR_ID,
.model_id = MY_MODEL_CLIENT_
ID,
.publish = 1,
.opcodes_len = 6,
.opcodes_data[0] = temperature_
get,
.opcodes_data[1] = temperature_
status,
.opcodes_data[2] = unit_get,
.opcodes_data[3] = unit_set,
.opcodes_data[4] = unit_set_unack,
.opcodes_data[5] = unit_status
};

       3 定论蓝牙Mesh规范具有多对多的网络拓扑,能够满意节点网络里各种节点的通讯需求,无需网关,操作简略,在各种操作终端中遍及装备的长处,配搭无衔接推送和室内定位功用,合适开发节点网络。
  公司推出的蓝牙Mesh SDK能够让蓝牙Mesh运用变得十分简略又灵敏,EFR32BG13系列支撑BT5.0,是Mesh Update形式的必要条件,故Labs公司的蓝牙Mesh计划是开发蓝牙Mesh产品的好挑选。

       参考文献
       [1]Bluetooth Mesh Mesh Profile / Specification.
       [2]QSG148: Getting Started with the Silicon Labs Bluetooth ® Mesh Lighting Demonstration.
       [3]an1140-bluetooth-mesh-for-android-adk.
       [4]官方教程《Vendor model examples》.
       [5]efr32bg13-datasheet.
       [6]efr32xg13-reference-manual.
       [7]Bluetooth Mesh Networking Customer Friendly, July 2017.

本文来源于科技期刊《电子产品世界》2019年第4期第72页,欢迎您写论文时引证,并注明出处

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/128793.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部