<div id="paeqo"></div>
<div id="paeqo"></div>
<dl id="paeqo"><ins id="paeqo"></ins></dl>
  • <menuitem id="paeqo"></menuitem>
  • <li id="paeqo"><s id="paeqo"></s></li>
    <dl id="paeqo"></dl>
    <dl id="paeqo"><ins id="paeqo"><small id="paeqo"></small></ins></dl>

    新闻中心

    EEPW首页 > 设计应用 > Silicon Labs蓝牙Mesh应用实例

    Silicon Labs蓝牙Mesh应用实例

    作者:李仁庆时间:2019-03-29来源:电子产品世界收藏

    The application of ’ Bluetooth Mesh

    本文引用地址:http://www.9113521.com/article/201903/399041.htm

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

           摘要:标准脱胎于蓝牙低功耗(BLE)和网状协议,兼有两?#20013;?#35758;优点,又摒弃其缺点,?#24378;?#21457;节点网络的选择之一;公司推出的 SDK和支持BT5.0的EFR32BG13系列SoC,让应用变得简单灵活。
           关键词:蓝牙;mesh;照明;拓扑

      引言

           物联网发展如火如荼的今天,怎样可以联接大量节点,又可以适应不同节点的特点的问题?#31354;?#19981;可避免地摆在了所有的业内人士面前。Zigbee标准已有成熟生态链,但需要有网关,无法跟目前流行的操作终端如手机进行直连成为了短板;在家庭、工业、商业?#35745;?#36941;应用的Wi-Fi因功耗大,无法适应各种节点的特点而只能用在传输速度有要求的产品上;入门简单、成本低的在简单的智能物联产品中使用最多,但因其标准化程度不高,无法达到各厂?#19994;?#20135;品互联互通;近期流行的NB-IoT产品因其广域网特点,在大规模远距离节点网络中有颇多应用,但功耗和整体成本问题是暂时难以解决的问题。那是否就没有一?#20013;?#35758;可以完美解决这些问题吗?
      有!蓝牙?#38469;?#32852;盟于2017年7月19?#29031;?#24335;宣布,蓝牙(Bluetooth?)?#38469;?#24320;始全面支持Mesh网状网络(如图1)。蓝牙Mesh标准脱胎于蓝牙低功耗(BLE),用于建立多对多设备通信的新网络。蓝牙Mesh标准协议具有蓝牙BLE的特点,也有多对多的网络拓扑,无需网关同时具备多种应用profile标准,操作简单,在各种操作终端中普遍配备的优点,完全符合节点网络的特点;未来利用蓝牙beacon信息推送和定位?#38469;酰?#21487;以实现无连接推送和室内定位功能。

           1 公司的?#20934;?#21450;芯片

           公司提供的蓝牙Mesh标准协议目前已经推出第二版正式SDK,加入?#35828;?#20809;、调色功能,标志着蓝牙Mesh在Lighting(照明)?#31995;?#24212;用更加成熟;?#24067;?#20837;了?#35328;?#33410;点、低功耗节点,低功耗应用的实现也令蓝牙Mesh在Lighting领域的产品化成为现实。
      公 司 在 蓝 牙 M e s h 应 用 上 有、EFR32BG系列SoC和BGM系列模块,其中性价比最高的为EFR32BG13系列,并提供了相应的开发?#20934;?#21644;例程,能大大提高蓝牙Mesh产品的开发速度。该SoC集成了蓝牙5.0 2.4 GHz RF硬件,内置PA和巴伦电路,RF外围器件只需要增加2个电感和1个电容,无需客户在射频方面投入不必要的精力。
      2 在照明领域应用蓝牙Mesh实例

           无论是在工业照明、商业照明还是在家庭照明中,实际?#39057;?#25968;量和开关的数量都远远超过初战演示,而且照明场景也远远复杂过初战演示。接下来,我们结合案例实现一个应用实例。

    1554699094893731.png

      ①根据Silicon Labs公司提供的硬件资?#29616;?#26032;制作了合乎产品尺寸的PCB(印制板),由于该SoC在无线方面集成了PA(功率放大器)和巴伦电路,外围电路相当简单,基本不需要进行任何硬件调试,一次PCB制作成功率相?#22791;摺?#23448;方提供的开发?#20934;?#20026;两个LED,本应用实验将其扩展为三个LED?#36824;?#26041;提供的开发?#20934;?#20026;两个按键,分别完成开关、调光?#32479;?#21378;复位,本应用实验将其缩减为一个按键,采用单方向循环算法完成开关、调光?#32479;?#21378;复位。
      ②在应用实验中,我们模拟了一个需要用到50个节点的照明网络(如图2),将其分成4组,其中两组均为手动模式,为1个开关节点手动控制9个灯节点的开关和调光,这个场景是官方演示套装的加大版本,也是日常照明比较常见的场景;第3组为自动开关场景,2个开关节点按不同节拍自动控制25个灯节点开或关,模拟的是需要自动开关的场景,如路灯自动开启和熄灭;最后一组为自动转发场景,由1个开关节点和2个带转发功能灯节点完成,适用于长廊控制场景。
      下面将在初步实战和以上硬件基础上完成软件应用。
      ③在simplicity studio上建立例程SoC-Mesh Light和SoC-Mesh Switch,生成代码后可以直接进行编译,之后进行第一处修?#27169;?#26412;应用实验的LED和引脚进行了改动,而LED是调用了PWM进行控制,所以需要进行引脚分配和PWM配置修?#27169;?#21487;以在其他工?#35752;?#35843;用硬件配置器进行图形化修?#27169;?#29983;成代码。由于本应用实验中改动不大,?#25163;?#25509;在源码中进行修?#27169;?/p>

    // 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

           ④重新编译完后,可以?#31456;?#36827;第一、二组中,按进行组网分组即可完成手动模式的场景。
      ⑤在手动模式基础上修改自动模式的开启关闭,则变成自动模式的场景:

           //修改按键中断处理即可

    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;
    }
    }

           ⑥重新编译完后,可以?#31456;?#36827;第三、四组中,按进行组网分组即可完成自动模式的场景。
      ⑦在自动模式组网?#20445;?#36873;择RELAY功能,则具备了转发功能,使用电池供电装置后,可以用在长廊控制场景。
      ⑧ 如 客 户 需 要 自 己 开 发 合 适 的 A p p , 则simplicity studio在上下载到ADK,按应用?#22987;恰禷n1140-
    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标?#38469;?#36825;样描述?#27169;骸癆 groupaddress is a multicast address and can represent multiple elements on one or more nodes. There are 16384 group addresses per mesh network?#20445;强?#20998;多达16384组?#27169;?#36275;够任何场景使用。
      ②同样,device ID在蓝牙Mesh标准里是这样描述?#27169;骸癆 unicast address is allocated to an element and always represents a single element of a node. There are 32767 unicast addresses per mesh network?#20445;?#28436;示版本中只分到250个会重新开始分配。
      ③蓝牙Mesh标准支持客户开发定制model,在图形化配置界面里面进行model修改和软件配置,即可完成。
      如下是软件修?#27169;?/p>

           //定义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方案?#24378;?#21457;蓝牙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]官方?#22363;獺禫endor model examples》.
           [5]efr32bg13-datasheet.
           [6]efr32xg13-reference-manual.
           [7]Bluetooth Mesh Networking Customer Friendly, July 2017.

    本文来源于科?#35745;?#21002;《电子产品世界》2019年第4期第72页,欢迎您写论文时引用,并注明出处



    评论


    相关推荐

    ?#38469;?#19987;区

    关闭
    陕西11选5玩法
    <div id="paeqo"></div>
    <div id="paeqo"></div>
    <dl id="paeqo"><ins id="paeqo"></ins></dl>
  • <menuitem id="paeqo"></menuitem>
  • <li id="paeqo"><s id="paeqo"></s></li>
    <dl id="paeqo"></dl>
    <dl id="paeqo"><ins id="paeqo"><small id="paeqo"></small></ins></dl>
    <div id="paeqo"></div>
    <div id="paeqo"></div>
    <dl id="paeqo"><ins id="paeqo"></ins></dl>
  • <menuitem id="paeqo"></menuitem>
  • <li id="paeqo"><s id="paeqo"></s></li>
    <dl id="paeqo"></dl>
    <dl id="paeqo"><ins id="paeqo"><small id="paeqo"></small></ins></dl>
    水果传奇走势图 奥林帕斯山的传说APP 魔兽争霸3手机版在哪下 绝地求生战绩截图 万圣节之夜客服 以太坊挖矿机价格 白雪公主和王子 国际米兰中文官网 王者荣耀比赛 两心知