【经验】Thunderboard BG22开发板如何在simplicity studio V5中添加一个标准的服务项
SILICON LABS的EFR32BG22系列芯片是功能强大的BLE SOC,他们的开发板Thunderboard搭配开发环境simplicity studio V5则可以让开发者快速熟悉EFR32BG22的特点,并且快速实现开发特定功能。本文笔者以thunderboard SLTB010A上的温湿度传感器为例,介绍如何在simplicity studio V5中添加一个标准的服务项。
1、建立工程
(1)在simplicity studio V5的主页中点击lancher,在Example projects & Demo’s找到Bluetooth - SoC Empty,点击CREATE。注意:不要点到DEMO的RUN,不然会直接在板子上运行一个Empty的例程。
(2)把soc_empty改成add_service,并选择Copy contents,再点击Finish完成工程创建。
2、添加蓝牙服务
(1)打开Bluetooth GATT configurator,点击Open进行添加蓝牙服务。
(2)在Bluetooth GATT configurator界面中点击“+”即Toggle。Toggle是GATT配置器添加标准服务的按钮。
(3)在service中点击添加Environmental Sensing。
(4)添加完成后在点击Environmental Sensing对所用的温湿度传感器特性进行配置。点击Temperature,首先在Value settings把HEX改成USER,其次把properties下的Read打开。在Humidity中也是执行这两步操作。
(5)在完成对Temperature Characteristic和Humidity Characteristic的配置后,快捷键Ctrl+S保存,接着可在gatt_db.c和gatt_db.h中查看自动生成的代码。
3、添加驱动
(1)因为thunderboard SLTB010A上的温湿度传感器与BG22 SOC以I2C的方式通信,所以我们要添加I2C驱动。点击add_service.slcp,进入SOFTWARE COMPONENTS,在搜索栏输入I2CSPM,点击Install安装。
安装完成后出现以下界面,点击Done完成I2C驱动安装。
(2)安装好I2C驱动后,我们要安装温湿度传感器的驱动。类似的,在搜索栏输入Relative Humidity and Temperature sensor,再点击Install安装。
4、代码部分
(1)在app.c的头文件添加:
#include "sl_status.h";
#include "sl_sensor_rht.h"。
(2)在刚刚添加的#include "sl_sensor_rht.h"底下添加:
// default relative humidity: 50 %
static uint16_t rht_humidity = 5000;
// default temperature: 25 C
static int16_t rht_temperature = 2500;
static void rht_update(void);
static void rht_humidity_read_cb(sl_bt_evt_gatt_server_user_read_request_t *data);
static void rht_temperature_read_cb(sl_bt_evt_gatt_server_user_read_request_t *data);
// The advertising set handle allocated from Bluetooth stack.
static uint8_t advertising_set_handle = 0xff;
(2)找到SL_WEAK void app_init(void)函数,把:sl_sensor_rht_init(); 放到里面。
(3)在Add additional event handlers here as your application requires!注释下,添加:
case sl_bt_evt_gatt_server_user_read_request_id:
if (gattdb_temperature == evt->data.evt_gatt_server_user_read_request.characteristic) {
rht_temperature_read_cb(&evt->data.evt_gatt_server_user_read_request);
} else if (gattdb_humidity == evt->data.evt_gatt_server_user_read_request.characteristic) {
rht_humidity_read_cb(&evt->data.evt_gatt_server_user_read_request);
}
break;
(4)在void sl_bt_on_event(sl_bt_msg_t *evt)函数末尾的大括号}下面添加相应的温湿度测量、获取温湿度数据、回调等函数。
sl_status_t sl_gatt_service_rht_get(uint32_t *rh, int32_t *t)
{
sl_status_t sc;
sc = sl_sensor_rht_get(rh, t);
return sc;
}
static void rht_update(void)
{
uint32_t humidity;
int32_t temperature;
// keep previous data if measurement fails
if (SL_STATUS_OK == sl_gatt_service_rht_get(&humidity, &temperature)) {
rht_humidity = humidity / 10; // 0.01 %
rht_temperature = temperature / 10; // 0.01 C
}
}
static void rht_humidity_read_cb(sl_bt_evt_gatt_server_user_read_request_t *data)
{
sl_status_t sc;
// update measurement data
rht_update();
sc = sl_bt_gatt_server_send_user_read_response(
data->connection,
data->characteristic,
0,
sizeof(rht_humidity), //定义发送的数据长度
(uint8_t*)&rht_humidity,
NULL);
app_assert_status(sc);
}
static void rht_temperature_read_cb(sl_bt_evt_gatt_server_user_read_request_t *data)
{
sl_status_t sc;
// update measurement data
rht_update();
sc = sl_bt_gatt_server_send_user_read_response(
data->connection,
data->characteristic,
0,
sizeof(rht_temperature),
(uint8_t*)&rht_temperature,
NULL);
app_assert_status(sc);
}
5、调试与程序下载
(1)在主页选择add_service工程进行Debug。调试成功后点击停止。
(2)add_service工程中GNU ARM v10.2.1 – Default找到HEX文件,Flash to device下载到thunderboard中。
6、上机验证
打开手机APP:EFR connect,找到名为Empty Example的设备,点击连接,找到温湿度的显示部分,点击Read,即可看到温湿度数据。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由何家杰提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】Matter入门指导6:用Simplicity Commander给Breakout开发板烧录固件的方法
我们在前面的Matter入门指导中已经编译好了Matter over Thread的Light、Switch和bootLoader固件。本文主要介绍使用Simplicity Commander工具给EFR32MG24 Breakout开发板烧录固件的方法。
设计经验 发布时间 : 2023-05-21
【经验】连接SLWSTK6021A开发板后不能识别该如何解决?
日前有客户反馈连接上Silicon Labs SLWSTK6021A开发板后,电脑显示不能识别。建议检查电脑的J—Link驱动是否安装,打开电脑的“设备管理器”,显示“BULK interface”为感叹号则表示没有安装驱动。
设计经验 发布时间 : 2021-05-27
【经验】通过EFR32开发板的Jlink接口输出串口数据的方法
Silicon Labs公司推出的EFR32系列SOC,广泛用于无线通信。为了方便开发,提供了EFR32系列的开发板。该开发板集成Jlink功能,并且集成一路虚拟串口。虚拟串口可以在电脑上方便的实现EFR32串口数据的接收,打印EFR32的调试信息,实现代码的跟踪,有利于产品的设计,缩短研发周期。
设计经验 发布时间 : 2020-07-01
BRD4342A SiWG917 Wi-Fi and BLE SoC Radio Board Int.Flash, Ext.PSRAM & Int.RF Switch
型号- SIWG917,BRD4342A
EFR32MG的ZIGBEE测试,连接开发板无法看到开发板的IP地址,怎么解决?
DEMO 需要连接到带有DHCP服务器的局域网中,会自动分配IP地址给 DEMO板 ,再将装有simplicity studio软件的电脑和开发板接入同一个局域网内,就可以在simplicity studio中看到该DEMO板分配的IP地址,选择后就可以进行操作 。
技术问答 发布时间 : 2017-05-16
我们公司需要设计一款主板,集成温湿度传感器、海拔高度传感器、雨量、土壤ph值、光线、pm2.5、二氧化碳、溶氧量、GPS经纬度、风速、风向,有没有合适的选型推荐?
温湿度传感器推荐TE的HTU20D:TE Connectivity(泰科TE)HTU20D(F)温湿度传感器数据手册环境光传感器推荐 Silicon Labs:Si1153:Si1153系列数据手册(简版)PM2.5检测推荐可天士:SPS-12CU激光颗粒物传感器数据手册二氧化碳检测推荐IDT的气体传感器:ZMOD4410:ZMOD4410 Gas Sensor Module for TVOC and Indoor Air Quality数据手册
技术问答 发布时间 : 2019-05-27
【经验】如何进行EFM32系列MCU开发板Debug功能解锁
Silicon Labs EFM32系列的产品是基于Cortex-M0+/M3/M4内核的32位MCU, 我们在使用官方提供的EFM32开发板时有时候会遇到开发板的Debug功能被锁住的情况,当使用Simplicity studio V4进行程序下载的时候会遇到如下的无法刷写的对话框。这时候我们可以使用Simplicity Commander工具进行解锁。
设计经验 发布时间 : 2019-09-24
温湿度传感器芯片选型对比,HTU21D厂家有没有其它的温湿度传感器,温湿度精度可比拟的,与Si7021-A20-GM1R相比,哪些个性价比更高?
世强代理TE 温湿度传感器除了HTU21D外,还有HTU20D,HS1101LF。请参考https://www.sekorm.com/news/71351860.html。 HTU21D 与 Silicon Labs 温湿度传感器si7021比较,HTU21D睡眠功耗:0.02uA,温湿度测量工作电流:450uA。湿度精度: +/-3%RH max tolerance @55%RH;si7021睡眠功耗:0.06uA,温湿度测量工作电流:150uA。湿度精度: ± 3% RH (max), 0–80% RH;这两款温湿度传感器性能都很好,可根据产品自身的需求来选择。
技术问答 发布时间 : 2018-09-06
【技术大神】如何应用高精度温湿度传感器提高超声波测距的准确性
使用Silicon Labs的Si7020温湿度传感器对超声波在不同温度和湿度的环境下的传播速度进行补偿,以此来提高超声波测距的准确性。
新应用 发布时间 : 2017-02-20
【经验】BLE SOC如何将蓝牙名字和MAC关联起来?
蓝牙一般在广播时都会带入一个可见可读的名字,但是在多个同样设备都广播时如果采用同一个程序那么他们的名字也将一样,这样区分起来难度比较大,如果将蓝牙的名字和MAC关联起来将会很容易区分每一个设备。以Silicon Labs EFR32MG21作为BLE SoC说明。
设计经验 发布时间 : 2020-03-03
【经验】Si7021温湿度传感器ZigBee工程测试操作指南
Silicon Labs公司提供的EFR32xG系列Wireless SOC开发板的底板上有温湿度传感器Si7021,利用EmberZnet协议栈,可以直接配置出一个温湿度传感器的ZigBee工程。配合Z3GatewaySOC网关工程,可以实现温湿度定时上报数据,和网关主动读取温湿度数据。本文指导大家Si7021温湿度传感器ZigBee工程测试过程。
设计经验 发布时间 : 2019-12-20
【技术大神】微型温湿度传感器在空气净化器中的应用经验
本文以实际案例分享了吸顶式空气净化器应用中温湿度传感器的选型及设计注意事项。
设计经验 发布时间 : 2019-09-05
烤烟控制器全方位解决方案:MCU+温湿度传感器+通讯模块
本文推出基于Silicon Labs温湿度传感器Si702x和EFM32G系列MCU的低功耗、高精度烟叶烘烤控制器方案,通讯方式可选择有线(RS485/CAN)或无线(Sub-G SI4438/SI4463模块)两种方式。
方案 发布时间 : 2016-09-21
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 104,128
品牌:SILICON LABS
品类:Digital temperature/ humidity sensor
价格:¥39.3896
现货: 11,250
现货市场
服务
可定制温度范围-230℃~1150℃、精度可达±0.1°C;支持NTC传感器、PTC传感器、数字式温度传感器、热电堆温度传感器的额定量程和输出/外形尺寸/工作温度范围等参数定制。
提交需求>
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
登录 | 立即注册
提交评论