首页 > 评测 > NUCLEO开发板的最佳BLE伴侣:X-NUCLEO-IDB05A1 BLE

NUCLEO开发板的最佳BLE伴侣:X-NUCLEO-IDB05A1 BLE

NUCLEO   X-NUCLEO   IDB05A1   BLE   拓展板   无线通信   ST   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • X-NUCLEO-IDB05A1 BLE是ST的蓝牙拓展板,此外还有配套SDK供菜鸟边体验边学习BLE技术。本文就带大家来体验一下用官方蓝牙SDK,基于蓝牙拓展板来进行demo开发的过程。

 无线通信一直是物联网中非常重要的环节。无线通信不需要使用通信线路来连接设备,使得物联设备在布署时灵活性大大增强了,没有了物理线路的束缚,产品配置时除了灵活性之外,整体美观也是不得不考虑的一个因素。试想客户购买了一个物联产品,还得大费周章打墙穿孔布线,热情顿时少了三分!

在各种无线通信技术中,从WiFi、红外、蓝牙到远距离的LoRa、NBIoT,BLE一直备受青睐,为什么呢?答案无外乎两个原因,一是现在的移动终端,无论是手机还是平板,BLE几乎都是标配设备,接入非常容易;另一个原因应该归结于BLE的低功耗特性,省电省心!

ST的NUCLEO系列开发板一直以来以质优价廉深受ST爱好者推崇,在简单的入门之后,是时候体验下无线操控的体验了,X-NUCLEO-IDB05A1 BLE专门为NUCLEO系列开发板设计,无缝对接,确实是非常好的搭配。

image1.jpg

X-NUCLEO-IDB05A1 BLE包装沿用ST开发板产品的封装风格,透明包装,产品一览无余。

image2.jpg

扩展板只包含SPBTLE-RF,所以电路设计也相对简单,引出的接口完全兼容STM32 NUCLEO开发板接口。

image3.jpg

ARDUINO接口默认提供,至于蝴蝶接口只引出了焊盘,如果用户想要使用该接口的话,需要自行操作。

image4.jpg

X-NUCLEO-IDB05A1是基于SPBTLE-RF BlueNRG-MS射频模块的蓝牙低功耗评估板,用于扩展STM32 Nucleo板卡。SPBTLE-RF模块通过了FCC(FCC ID:S9NSPBTLERF)和IC认证(IC:8976C-SPBTLERF)。

X-NUCLEO-IDB05A1与ST Morpho和Arduino UNO R3连接器布局兼容(如果需要,用户可以安装ST Morpho连接器)。X-NUCLEO-IDB05A1通过SPI引脚与STM32微控制器连接,用户可以通过更换评估板上的一个电阻来更改默认的SPI时钟、SPI片选和SPI IRQ。

X-NUCLEO-IDB05A1 BLE的主要特征

• STM32扩展板,基于STM32 Nucleo的SPBTLE-RF模块

• X-NUCLEO-IDB05A1包含FCC和IC认证模块SPBTLE-RF(FCC ID:S9NSPBTLERF和IC:8976C-SPBTLERF)

• SPBTLE-RF:

– 低功耗蓝牙FCC和基于蓝牙IC认证模块® SMART 4.1网络处理器BlueNRG-MS

– 集成巴伦(BALF-NRG-01D3)

– 芯片天线

• 与STM32 Nucleo板兼容

• 配备Arduino UNO R3连接器

• 可扩展的解决方案,可将多个电路板级联到更大的系统

• 免费的综合开发固件库和BlueNRG-MS示例,与STM32Cube固件兼容

• 符合RoHS标准

从工程师的角度来看,BLE虽好,然而真正的开发过程却是比较麻烦的,一是BLE中名词概念太多,刚入门BLE的用户首先就被一堆名词给搞晕了!再有由于历史的原因,蓝牙通信技术包含早期的Classic Bluetooth和新的BLE技术,例如蓝牙音箱一般使用的是Classic,而现在物联网中的大部分则使用的是BLE即低功耗蓝牙,主要的差别就在低功耗上,当然还有其它的一现细节。

不过这不是问题,因为ST推出的配套SDK完全能让菜鸟边体验边学习BLE技术。SDK不仅封装了GATT等底层细节,同时也提供了大量的DEMO代码供用户参考,简单的了解SDK的框架后,就可以在现有的DEMO上进行适当的修改,达到自己的要求。

image5.png

应用程序框架包括底层的硬件、CMSIS、BLE及Profile framework组成,最上层就是应用程序。应用程序通过SDK提供的各种API来实现用户需求。

SDK兼容STM32CUBE库,可以使用STM32CUBE来生成应用程序的底层框架,再引入SDK就可以实现用户自定义的功能。SDK基于SIG的标准GATT配置文件,STM32开发板及X-NUCLEO-IDB05A1 BLE充当GAP设备,根据配置好的profile来进行数据的收发。

image6.png

SDK包括文档、中间件及DEMO等要素,主要包括文档,驱动、中间件及演示工程文件,目前提供的现有DEMO工程主要涵盖了STM32F401RE-Nucleo、STM32L053R8-Nucleo及STM32L476RG-Nucleo开发板,当然如果要移植到其它开发板上,也只需要简单的移植即可实现功能。

应用程序内部使用状态机来进行BLE相关操作的管理,一个典型的状态机如下

image7.png

例如BLE做为外设使用的话,通过需要广播信息、接受来自外部的连接及响应各种事件,使用状态机可以很好的处理这些状态。

接下来分析一个非常经典的应用SensorDemo,看看从这个DEMO从我们能了解和学习到什么。

SensorDemo应用中,STM32开发板及BLE扩展板被配置成一个外设传感器站点,智能手机充当Central,通过手机的BLE来读取来自开发板的传感器数据。

main函数的主要框架如下

int main(void)

{

...

HAL_Init();

BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

BNRG_SPI_Init();

/* Initialize the BlueNRG HCI */

HCI_Init();

/* Reset BlueNRG hardware */

BlueNRG_RST();

ret = Add_Acc_Service()

/* Set output power level */

ret = aci_hal_set_tx_power_level(1,4);

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while(1)

{

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

HCI_Process();

User_Process(&axes_data);

}

}

实际的代码比较多,这只是摘取其中部分代码后的样本。代码里包括STM32硬件的初始化过程,然后是BLUENRG的初始化,因为使用的的SPI接口,所以这里的代码还包括SPI的初始化工作,然后是添加BLE服务等工作。GATT服务及Characteristics等,具体的细节就不详述了。正是通过GATT Service及Characteristic等,手机等移动终端可以访问并控制相关的外设。

代码的最后是用户事件的处理,例如用户请求某个Characteristic,用户上传相关的数据等,都是放在循环体内实现,可以参考这些代码来设计自己的功能。

编译并上传代码到开发板后,BLE开始工作,要测试BLE的工作状态,需要使用BLE USB DONGLE或者手机来进行,下面在手机端安装并打开ST官方提供的BLUENRG应用来进行测试。

image8.jpg

image9.jpg

手机程序启动后自动开始扫描BLE设备,找到设备后显示设备名称及MAC地址。

APP包括三个选项卡,第一个是MOTION,这里用到的都是FAKE数据,即模拟出来的结果,用户通过按压开发板上的USER按键,实现不同数据的发送,该数据可以同步在APP上显示出来,上图演示的是其中的一个状态,注意数据值上方的立方体,该立方体会实时显示立方体的位置情况。

image10.jpg

第2个选项卡显示的是环境相关的数据,如温度、湿度及大气压等数据。

image11.jpg

最后一个选项卡显示的是RSSI信号强度,RSSI强度也可以用来近似估算两个节点的距离,在很多室内定位的应用中,就是根据RSSI来计算设备的位置。

Projects目录下还提供了很多其它演示程序,包括低功耗、虚拟串口等,通过使用这些DEMO,用户可以很快速度STM32 BLE产品的相关细节。

X-NUCLEO-IDB05A1 BLE是ST X-NUCLEO系列开发板中的一员,其它类似的扩展板还包括WIFI、电机、传感器等系列,X-NUCLEO系列与NUCLEO开发板在接口上完全一致,同时各配套开发板也都提供了相关的SDK库,结合ST提供的STM32CUBEMX工程工具,可以迅速的上手体验并在短期内搭建产品原型并进行评估。

只是这些扩展板一般来说功能比较单一,像X-NUCLEO-IDB05A1 BLE就只提供了BLE的扩展功能,如果ST能将这些扩展板都集成到一块板上,来个全家桶,不知道ST的粉丝们会不会疯狂?!

参考资源:

X-NUCLEO-IDB05A1:https://www.st.com/zh/ecosystems/x-nucleo-idb05a1.html

SDK: https://www.st.com/content/st_com/zh/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-packages/x-cube-ble1.html

  • 本文系21ic原创,未经许可禁止转载!

网友评论