【经验】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开发板烧录固件的方法。
【经验】连接SLWSTK6021A开发板后不能识别该如何解决?
日前有客户反馈连接上Silicon Labs SLWSTK6021A开发板后,电脑显示不能识别。建议检查电脑的J—Link驱动是否安装,打开电脑的“设备管理器”,显示“BULK interface”为感叹号则表示没有安装驱动。
【经验】通过EFR32开发板的Jlink接口输出串口数据的方法
Silicon Labs公司推出的EFR32系列SOC,广泛用于无线通信。为了方便开发,提供了EFR32系列的开发板。该开发板集成Jlink功能,并且集成一路虚拟串口。虚拟串口可以在电脑上方便的实现EFR32串口数据的接收,打印EFR32的调试信息,实现代码的跟踪,有利于产品的设计,缩短研发周期。
Silicon labs 蓝牙SOC选型表
Cortex-M4/M33内核,支持蓝牙5,待机功耗1.2μA;实测网络节点100+,工作温度高达125℃,提供芯片和模块。其最新的1.4μA超低功耗蓝牙SoC EFR32BG22具有主频高达76.8MHz Cortex-M33内核,16位ADC,支持蓝牙5.2与AoX定位和蓝牙Mesh协议。
产品型号
|
品类
|
MCU Core
|
Core Frequency (MHz)
|
Flash
|
RAM
|
Secure Vault
|
Bluetooth
|
Bluetooth 5
|
Bluetooth Mesh
|
Cryptography
|
Output Power Range (dBm)
|
GPIO
|
I²C
|
SPI
|
I²S
|
Receive Sensitivity
|
ADC
|
Comparators
|
Temperature Range (ºC)
|
Package Type
|
Package Size(mm)
|
EFR32BG24B110F1536IM48-B
|
Bluetooth®Wireless SoC
|
ARM Cortex-M33
|
78
|
1536
|
256
|
High
|
5.3
|
Bluetooth 5
|
Bluetooth Mesh
|
AES-128;AES-256;ECC;SHA-1;SHA-2
|
-20 to 10
|
28
|
2
|
3
|
1
|
-97.6DBM(1Mbit/s GFSK)
|
12-bit,SAR,1Msps
|
2
|
-40 to 125
|
QFN48
|
6x6
|
选型表 - SILICON LABS 立即选型
EFR32MG的ZIGBEE测试,连接开发板无法看到开发板的IP地址,怎么解决?
DEMO 需要连接到带有DHCP服务器的局域网中,会自动分配IP地址给 DEMO板 ,再将装有simplicity studio软件的电脑和开发板接入同一个局域网内,就可以在simplicity studio中看到该DEMO板分配的IP地址,选择后就可以进行操作 。
使用EFR32开发板和OpenThread构建Thread网络
描述- 本文档详细介绍了如何使用EFR32开发板和OpenThread构建Thread网络。内容包括Thread概念和OpenThread CLI的熟悉,Linux机器的准备,开发板的安装和配置,Simplicity Studio 5和OpenThread协议栈的安装,OpenThread代码的克隆和构建,RCP Joiner和FTD设备的构建,Thread网络的构建和设备添加,Thread网络的实战操作,故障处理,以及使用组播和UDP发送消息。文档涵盖了从硬件准备到网络构建的完整过程,并提供了详细的步骤和注意事项。
型号- BRD4304A,MGM12P,SLWSTK6000B,BRD4180A,SLWSTK6006A,BRD4166A,BRD4164A,BRD4161A,EFR32,MG21,SLTB004A,BRD4170A,MG12
【经验】如何进行EFM32系列MCU开发板Debug功能解锁
Silicon Labs EFM32系列的产品是基于Cortex-M0+/M3/M4内核的32位MCU, 我们在使用官方提供的EFM32开发板时有时候会遇到开发板的Debug功能被锁住的情况,当使用Simplicity studio V4进行程序下载的时候会遇到如下的无法刷写的对话框。这时候我们可以使用Simplicity Commander工具进行解锁。
温湿度传感器芯片选型对比,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;这两款温湿度传感器性能都很好,可根据产品自身的需求来选择。
【技术大神】如何应用高精度温湿度传感器提高超声波测距的准确性
使用Silicon Labs的Si7020温湿度传感器对超声波在不同温度和湿度的环境下的传播速度进行补偿,以此来提高超声波测距的准确性。
烤烟控制器全方位解决方案:MCU+温湿度传感器+通讯模块
本文推出基于Silicon Labs温湿度传感器Si702x和EFM32G系列MCU的低功耗、高精度烟叶烘烤控制器方案,通讯方式可选择有线(RS485/CAN)或无线(Sub-G SI4438/SI4463模块)两种方式。
【经验】如何解决EFR32MG21开发板9600波特率无法通信问题?
我们在使用SILICON LABS多协议SoC EFR32MG21开发板上测试串口功能时,如果是使用115200波特率,与PC通信是很正常的,但如果是使用其它的波特率(比如:9600)会出现无法正常通信的问题。这是什么原因呢?要如何解决?
【经验】解析芯科科技温湿度传感器Si7021-A10中的驱动代码
Si7021-A10是芯科科技推出的一款低功耗的温湿度传感器,它采用了Silicon Labs的第二代RH感测解决方案。在实际使用中,有些用户会发现Si7021-A10数据手册给出的公式和官方给的驱动代码有些出入,本文就来解析一下这其中的区别和联系。
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 102,628
品牌: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封装可选择。
提交需求>
登录 | 立即注册
提交评论