【经验】10分钟完成BLE蓝牙智能工程搭建到数据交互代码实现
随着物联网(IoT)的快速发展,BLE蓝牙智能设备被广泛应用,越来越多的嵌入式工程师们开始自己的蓝牙工程代码开发历程,此时此刻或许你手头上正拿着一颗BLE蓝牙SoC芯片或者评估板。芯片的用户手册至少也有几百页,多的上千页。再加上蓝牙协议栈和接口函数的无数页文档。淡定!千万别炸了!要快速完成自己项目应用代码,要选择什么样的蓝牙SOC芯片,什么样的开发平台,又该从哪里开始写起第一行代码呢?
本文详细介绍一款SILICON LABS 公司的低功耗蓝牙智能SoC芯片EFR32BG系列,支持最新的蓝牙5.0版本协议栈。采用Silicon Labs一站式开发平台simplicity studio V4(以下简称SSv4),内嵌免费GUN编译工具(基于GCC)和蓝牙5.0协议栈。支持可视化配置功能和代码自动生成功能! "仅需十分钟!",即可让你在不用看一页数据手册的情况下,完成自己的蓝牙软件工程搭建和数据交互代码实现。实现快速开发,快速产品上市就是我们的目标。你准备好了吗?Ready Go…
本文的具体目标是:
1)创建一个EFR32BG蓝牙工程。
2)新建自己的server和characteristic。
3)代码实现蓝牙广播,连接,与手机APP端实现蓝牙数据交互,连接断开并重新开始蓝牙广播。
1、运行SSv4软件,选择正确的的芯片型号,请以实际拿到的芯片型号为准。如下图:
2、选择Bluetooth SDK。
3、选择SOC-Empty 空工程,并给新建的工程命名。
4、再次确认芯片型号,并选择GUN编译工具。也可以选择IAR编译工具。目前EFR32BG支持这两种编译工具。点击最后一步"Finish"之后,等待SSv4生成蓝牙工程。
5、双击打开蓝牙工程里面的 *.isc 文件"soc-empty_EFR32BG.isc",添加自己的GATT server和characteristic。
为了手机APP发现设备时,容易找到自己的蓝牙设备,我们先在*.isc 文件里修改"Device Name",让蓝牙广播出来的设备名称与众不同。修改Value 和 Length = Value 字符长度。如下:
1)点击 create new item 图标
2)点击 New Service
3)选择新添加的Service ,并给这个Service命名, 例如:MyService
4)点击 create new item 图标
5)点击 New Characteristic
6)选择新建好的Characteristic ,并给这个Characteristic命名,例如MyCharacteristic
7)勾选靠近ID的复选框,并输入一个ID到文本框内:例如:Notify_Read_Write
这个填入ID名称Notify_Read_Write最终会生成Characteristic handle,生成后会自动增加前缀“gattdb_”变成“gattdb_Notify_Read_Write”存放在gatt_db.h文件中。
在发送notify数据,调用cmd_gatt_server_send_characteristic_notification命令会用到这个Characteristic handle,往下看参考代码的时候就会发现。
8)为Characteristic添加属性,点击下方的Add new item ();添加Read,Write, Notify属性,并设置属性为True。如下图:
提示:本例中,在value settings中,length 设置为1字节。如果需要收发更多数据,请修改这个length的值并重新点击"generate"生成配置。如果是变长数据收发,也可以勾选"Variable length"。
6、GATT配置完成以后,点击*.isc 文件右上角的""生成源代码
7、编译并下载代码到目标板。这个时候打开手机APP,就能发现EFR32BG广播出来的设备和名称了。点击连接以后,能看到我们创建的GATT server和characteristic。到目前为止,我们没有编写一行代码,就已经实现了蓝牙广播,连接和连接断开,以及断开之后的重新广播功能。
8、下面开始,我们要实现我们的终极目标,添加代码,实现EFR32BG与手机APP之间的数据交互。我们设计的代码示例实现如下功能:
1)开启并设定一个定时器,定时时间为1秒钟。
2)定义一个计数器,每秒钟计数器加1.
3)每1秒钟,EFR32BG蓝牙SOC自动把计数器数据更新给手机APP。
4)手机APP可以通过BLE蓝牙读取和修改计数器的值。
首先定义4个变量,在后面的代码中会用到:
uint8_t connHandle = 0;
uint8_t u8Notify_Read_Write_Cnt = 0;
uint8_t u8length = 0;
uint8_t u8DataRxBuffer[20];
1) 在mian.c文件中找到 while (1) 下面的 switch (BGLIB_MSG_ID(evt->header))
添加如下代码,设定一个定时器,定时时间为1秒钟:
2)创建一个定时器事件ID,每次定时器事件,都会运行到这里。添加一个计数器,每秒加1.并把数据保存到本地GATT, 同时把数据发送给手机APP。
下方的代码,gecko_cmd_gatt_server_write_attribute_value,gecko_cmd_gatt_server_send_characteristic_notification命令参数中用到的Attribute handle和Characteristic handle
就是在前面“.isc”文件中创建Characteristic时填入的Characteristic Settings下方 ID生成的,在gatt_db.h文件中可以找到,带 “gattdb_” 前缀。详见前面创建Characteristic的步骤说明。
3)创建一个事件ID,用于接收数据,并把接收到的数据保存到本地。
结束语:
十分钟到!以上添加数行代码,就全部完成了蓝牙代码工程与手机APP之间的数据交互。快速简单,高效。如果这篇文章对您的开发非常有帮助,别忘了在下方点个“赞”哦!
相关技术文档:
Silicon Labs EFR32BG12 低能耗 SoC 产品数据手册 详情>>>
Silicon Labs UG144: EFR32BG Blue Gecko蓝牙智能入门套件用户指南 详情>>>
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。
Silicon Labs Simplicity Studio平台开发工具
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 17
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(17)
-
番茄蛋 Lv5. 技术专家 2018-09-18很实用。
-
z24656 Lv6. 高级专家 2018-06-08好东东
-
一头笨牛 Lv8. 研究员 2018-03-13学习
-
Xin Lv4. 资深工程师 2018-02-26这个例子不错
-
天行健 Lv6. 高级专家 2018-01-29好资料
-
用户83338807 Lv4. 资深工程师 2018-01-22这个例子貌似不完整,gattdb_Notify_Read_Write没有定义,请问有没有完整的代码。谢谢!
- 世小强回复: 请用户按照文档从头实际操作一遍,上面的步骤请不要跳过,每一步都是有用的,这个文档是可重复性实验的,谢谢!
-
用户83338807 Lv4. 资深工程师 2018-01-19这个例子真贴心!
-
用户46743402 Lv4. 资深工程师 2017-12-14学习
-
terrydl Lv9. 科学家 2017-11-27很详细,不错
-
killyo Lv5. 技术专家 2017-11-01好东西,支持下
相关推荐
【经验】EFR32BG低功耗蓝牙SoC串口DFU固件升级上位机实现过程详解
EFR32BG的串口DFU过程是完全参照《Bluetooth Smart Software API Reference Manual》中的API命令来实现。
【应用】支持PTA共存机制的WIFI、ZigBee、BlueTooth和4G多协议智能家居网关应用方案
早期的多协议智能家居网关大多不支持共存机制,在拥挤的2.4GHz频段中,存在着相互干扰的问题,影响通讯效果。为解决上述问题,本方案采用支持PTA共存机制的WIFI、ZigBee、BlueTooth的SOC芯片和全网通4G模块,并搭配高性价比的电源和高精度晶振,实现支持共存机制的多协议智能家居网关应用方案。
蓝牙®Mesh ADK 6.0.5.0
描述- 本资料介绍了Silicon Labs公司发布的蓝牙Mesh ADK 6.0.5.0版本,该版本支持蓝牙Mesh和蓝牙5功能,适用于创建大规模设备网络。主要特点包括支持网络照明控制(NLC)配置文件,支持iOS和Android系统,以及提供详细的安装和使用说明。此外,资料还涵盖了新功能、改进、已知问题和兼容性信息。
BGM220S 无线 Gecko Bluetooth® 模块数据表
型号- BGM220SC22WGA2,BGM220S,BGM220SC22HNA2,BGM220S12A,BGM220SC12WGA2,BGM220S22A
Silicon Labs(芯科科技) Bluetooth®芯片和模块选型指南
目录- Bluetooth® - Rapid Growth in IoT Why the Silicon Labs Bluetooth® Portfolio is Ideal Bluetooth® SoC and Module Selector Guide Bluetooth® Application Examples About Silicon Labs
型号- BGM210P,BGM210L,BG27,BG24,BG22,BGM240S,BG21,BGM220S,BGM240P,BGM220P
Bluetooth®Mesh SDK 6.1.3.0 GA Gecko SDK套件4.4
描述- 本资料介绍了Silicon Labs的蓝牙mesh SDK 6.1.3.0 GA Gecko SDK Suite 4.4版本,该版本支持蓝牙mesh 1.1规范,并增加了网络照明控制(NLC)配置文件。SDK支持多种编译器,包括IAR Embedded Workbench for ARM和GCC。资料详细说明了新功能、API、改进、已知问题和已修复问题,并提供了安装和使用指南。
型号- BRD4182,BRD4312,BRD4311
BGM220P 无线 Gecko Bluetooth 模块数据表
描述- BGM220P是一款基于EFR32BG22 SoC的无线蓝牙模块,专为电池供电的物联网(IoT)产品设计。该模块支持蓝牙5.2标准,具备高性能射频范围和低能耗特性,同时内置天线和高传输功率。它集成了丰富的外设和多种时钟管理选项,并提供了全面的可升级软件栈和全球法规认证,适用于资产追踪、运动健身设备、便携式医疗设备、智能家居、工业和楼宇自动化等领域。
型号- BGM220PC22WGA2,BGM220PC22HNA2,BGM220P22A,BGM220P
Silicon Labs(芯科科技) BT121 Bluetooth Smart功能模块 数据手册
描述- 该文档详细介绍了BT121蓝牙智能模块的技术规格和应用指南。BT121是一款集成了高性能蓝牙无线电、低功耗ARM Cortex微控制器和Bluegiga蓝牙智能堆栈软件的模块,适用于需要同时支持蓝牙智能和经典连接的应用。它具有多种硬件接口,包括UART、SPI、I2C等,并支持多种蓝牙协议。
型号- BT121-A-V2C,BT121,BT121-A-V2-IAP,DKBT,BT121-A-V1-IAP,BT121-A-V1,BT121-A-V2,BT121-A
Bluetooth®Mesh SDK 7.0.2.0 GA Simplicity SDK套件2024.6.2
描述- 本资料介绍了Silicon Labs的Bluetooth mesh SDK 7.0.2.0 GA版本,该版本支持蓝牙mesh网络功能,适用于构建大规模设备网络。主要内容包括:迁移至Simplicity SDK Suite,移除对Series 0/1的支持,支持delta-compressed固件更新。此外,还介绍了兼容的编译器、新特性、新API、改进、已知问题、弃用项目和移除项目等信息。
Silicon Labs(芯科科技) bluegiga WT12 Bluetooth 2 类模块数据手册
描述- 本资料介绍了Bluegiga Technologies公司生产的WT12蓝牙模块。该模块集成了天线、蓝牙无线电和板载iWRAP蓝牙堆栈,适用于快速将蓝牙无线技术集成到设计中。它支持蓝牙2.1 + EDR,具有UART和USB主机接口,并具备多种软件编程IO引脚。
型号- WT12-A-HCI21,WT12,WT12-A-AI5,WT12-A-3,WT12-A-C,WT12-A-AI56C,WT12-A-AI4
蓝牙®Mesh ADK 7.0.2.0
描述- 本资料介绍了Silicon Labs的Bluetooth Mesh ADK 7.0.2.0版本,该版本支持蓝牙Mesh和蓝牙5功能。主要内容包括:新增支持导入和导出BT Mesh配置数据库的API;改进了移动应用程序,使其成为评估标准Silabs示例和演示的工具;修复了配置失败和节点重启时Mesh对象消失等问题;兼容iOS 15、iOS 16、iOS 17和Android 12、Android 13、Android 14系统。
Silicon Labs(芯科科技) WT11u Bluetooth® Module数据手册
描述- 本资料为Silicon Labs公司WT11u蓝牙模块的数据手册。该模块是一款集成了天线、蓝牙无线电和iWRAP蓝牙堆栈的全集成Class 1模块,适用于快速将长距离和高性能蓝牙无线技术集成到设计中。
型号- WT11U-E-HCI21,WT11U-A,WT11U,WT11U-E-AI5,WT11U-A-HCI21,WT11U-E-AI56,WT11U-A-AI56,WT11U-A-AI5,WT11U-A-AI55,WT11U-E,WT11U-E-AI55
BGX13P Bluetooth®Xpress模块数据表
描述- BGX13P蓝牙模块是一款适用于小型设备的低功耗蓝牙解决方案,具备串行接口,支持原始数据流或命令API控制。该模块符合蓝牙5标准,具有高性能射频、低功耗等特点,适用于健康、体育、智能家居等领域。
型号- BGX13PXXXXXXX,BGX13PXXXX,BGX13P22GA-V31R,BGX13P22GAV31,BGM13P32A,BGX13P22,BGX13P22GA-V21R,BGX13P22GA-V31,BGX13P22GA-V21,BGM13P32E,BGX13P,BGX13P22GA
蓝牙®Mesh ADK 6.0.2.0
描述- 本资料介绍了Silicon Labs公司发布的蓝牙Mesh ADK 6.0.2.0版本,该版本支持蓝牙Mesh和蓝牙5功能。主要内容包括:支持网络照明控制(NLC)配置文件,支持iOS和Android系统,以及详细的技术更新和问题修复。资料还提供了安装和使用指南,以及技术支持信息。
电子商城
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
支持Bluetooth SIG最新的测试规范,支持2.0(EDR), 2.1(EDR), 3.0(HS), 4.0(LE)规范, 并且能完整覆盖BR/EDR/HS/BLE的所有射频测试项目。测试标准:RF.TS/4.03 ;RF-PHYTS/40.3。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论