网站首页 > 资源文章 正文
Step4 传感器的使用
在B-L475E-IOT01A和B-U585I-IOT02A
上使用传感器 60分钟
目标描述
本教程的目的是说明如何使用 STM32L4 Discovery 套件和 B-U585I-IOT02A Discovery 套件中的传感器进行测量。可对温度传感器进行分步配置。
完成本教程后,您将能够使用B-L475E-IOT01A板和B-U585I-IOT02A板上的传感器收集值。
本教程的附录提供了有关如何将AC6示例移植到STM32CubeIDE的指南。
先决条件
您已经遵循了:
- 第 1 步:工具安装和首次测试
- Step3:UART和新板介绍
硬件
- STM32L4 Discovery kit IoT 节点[1](B-L475E-IOT01A)
- B-U585I-IOT02A 探索套件物联网节点[2](B-U585I-IOT02A)
- USB 数据线 Type-A 转 Micro-B
文献
- UM2153型物联网节点探索套件,与STM32L4进行多通道通信
- UM1884型STM32L4/L4+ HAL 和低层驱动程序的描述
- UM2839型用于 STM32U5 系列物联网节点的探索套件
- UM2911型STM32U5 HAL 和低层驱动程序的说明
- UM1859型开始使用 STM32Cube 的 X-CUBE-MEMS1 运动 MEMS 和环境传感器软件扩展
- UM2579型从System Workbench到STM32CubeIDE的迁移指南
- STM32L4 Discovery Kit IoT 节点入门
- 了解全新 STM32U5 IoT 节点 B-U585-IOT02A 探索套件
内容↑
[隐藏]
- 1在B-L475E-IOT01A上使用传感器1.1硬件说明1.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上1.2.1使用 STM32CubeMX 创建工作项目1.2.2将 BSP 驱动程序复制到您的项目中1.2.3在STM32CubeIDE工作区中支持BSP1.2.4更新包含路径1.2.5更新源文件1.2.6编译并运行示例
- 2在 B-U585-IOT02A 中使用传感器2.1硬件说明2.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上2.2.1使用 STM32CubeMX 创建工作项目2.2.2将 BSP 驱动程序复制到您的项目中2.2.3在STM32CubeIDE工作区中支持BSP2.2.4更新包含路径2.2.5更新源文件2.2.6编译并运行示例
- 3附录:将AC6示例移植到STM32CubeIDE3.1硬件说明3.2示例:使用HTS221传感器获取温度值并将其显示在终端上(从AC6移植到STM32CubeIDE)3.2.1硬件设置3.2.2示例详细信息3.2.3将示例移植到STM32CubeIDE3.2.4编译和运行示例
- 4引用
1使用传感器 B-L475E-IOT01A↑
1.1硬件说明↑
STM32L4探索套件物联网节点(B-L475E-IOT01A)中提供的主要传感器包括:
- 用于相对湿度和温度的电容式数字传感器 (HTS221)
- 260-1260 hPa 绝对数字输出气压计 (LPS22HB)
- 3D 加速度计和 3D 陀螺仪 (LSM6DSL)
- 高性能 3 轴磁力计 (LIS3MDL)。
1.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上↑
本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。
1.2.1使用STM32CubeMX创建工作项目↑
起点是使用STM32CubeMX生成的项目,如Step3教程: B-L475E-IOT01A上的UART I/F简介中所述。
- 按照教程中的步骤操作。
- 将生成的项目命名为 L4_IOT_Sensors。
1.2.2将 BSP 驱动程序复制到您的项目中↑
BSP(板级支持包)驱动程序采用STM32CubeL4封装。这提供了与主板的硬件组件相对应的 API。
默认情况下,STM32CubeL4软件包的最新版本下载在STM32CubeMX存储库中:
C:\Users\user_name\STM32Cube\Repository\STM32Cube_FW_L4_Vx.xx.x。
下图显示了 BSP 位置及其内容:
信息 |
在本例中,使用的STM32CubeL4版本为1.11.0。版本可能会随着时间的推移而增加。 |
按照以下步骤将 BSP 驱动程序复制到您的项目:
- 在生成的项目中,创建一个文件夹 L4_IOT_Sensors/Drivers/BSP。
- 复制STM32CubeL4/Drivers/BSP/B-L475E-IOT01文件夹,并将其粘贴到L4_IOT_Sensors/Drivers/BSP文件夹中。
- 复制 STM32CubeL4/Drivers/BSP/Components 文件夹并将其粘贴到 L4_IOT_Sensors/Drivers/BSP/Components 下。
- 仅使用 HTS221 温度传感器。因此,可以删除复制到工作目录的任何其他文件和文件夹。此步骤是可选的:
* Keep only the following files under L4_IOT_Sensors\Drivers\BSP\B-L475E-IOT01:
* Keep only the following files under L4_IOT_Sensors\Drivers\BSP\Components:
1.2.3在STM32CubeIDE工作区中支持BSP↑
添加的文件夹会自动显示在STM32CubeIDE工作区中:
1.2.4更新包含路径↑
更新路径以支持新的头文件:
- 从 Project Explorer 视角选择相关项目:
- 从“项目”菜单或“文件”菜单中,转到“属性”>“C/C++构建>设置”>“工具设置”>“MCU GCC 编译器”>“包含路径”。
- 单击以包含新路径。
- 添加 ../drivers/BSP/B-L475E-IOT01 和 ../Drivers/BSP/Components/hts221 路径。
以下屏幕截图总结了要遵循的步骤:
1.2.5更新源文件↑
编辑 main.c,如下所示:
- 包括头文件:stm32l475e_iot01.h、stm32l475e_iot01_tsensor.h 和 math.h
/* USER CODE BEGIN Includes */
#include "stm32l475e_iot01.h"
#include "stm32l475e_iot01_tsensor.h"
#include <math.h>
/* USER CODE END Includes */
- 添加私有值。这些值用于在终端上显示温度和消息:
/* USER CODE BEGIN PV */
/* Private variables -------------------------------------------------------*/
float temp_value = 0; // Measured temperature value
char str_tmp[100] = ""; // Formatted message to display the temperature value
uint8_t msg1[] = "****** Temperature values measurement ******\n\n\r";
uint8_t msg2[] = "=====> Initialize Temperature sensor HTS221 \r\n";
uint8_t msg3[] = "=====> Temperature sensor HTS221 initialized \r\n ";
/* USER CODE END PV */
- 在终端上显示消息并初始化 HTS221 温度传感器:
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart1,msg1,sizeof(msg1),1000);
HAL_UART_Transmit(&huart1,msg2,sizeof(msg2),1000);
BSP_TSENSOR_Init();
HAL_UART_Transmit(&huart1,msg3,sizeof(msg3),1000);
/* USER CODE END 2 *//
- 在while(1)循环中,读取温度值,格式化,然后在终端上显示带有测量值的消息:
/* USER CODE BEGIN 3 */
temp_value = BSP_TSENSOR_ReadTemp();
int tmpInt1 = temp_value;
float tmpFrac = temp_value - tmpInt1;
int tmpInt2 = trunc(tmpFrac * 100);
snprintf(str_tmp,100," TEMPERATURE = %d.%02d\n\r", tmpInt1, tmpInt2);
HAL_UART_Transmit(&huart1,( uint8_t *)str_tmp,sizeof(str_tmp),1000);
HAL_Delay(1000);
/* USER CODE END 3 */
信息 |
只能对所需的USER CODE部分进行更新,以避免使用新的STM32CubeMX代码生成覆盖所有内容。 |
1.2.6编译运行示例↑
- 单击“生成”按钮以编译项目。
- 单击“调试”按钮以运行软件。
- 打开控制台模拟器,例如 TeraTerm[3].要配置控制台波特率,请选择数据位:8,然后单击确定。端口名称可能因您的计算机而异。
- STM32CubeIDE打开Debug透视图。单击“恢复”按钮以执行代码。
- Tera术语[3]在测量的温度值之前显示初始化消息:
现在,您可以:
- 构建您自己的项目,使用B-L475E-IOT01A中的嵌入式传感器测量温度值。
- 将BSP组件添加到STM32CubeMx生成的项目中。
- 将该板的使用范围扩展到 HTS221 以外的传感器,以进行环境测量。
2在 B-U585-IOT02A 上使用传感器↑
2.1硬件说明↑
B-U585I-IOT02A 物联网节点探索套件中提供的主要传感器包括:
- 用于相对湿度和温度的电容式数字传感器 (HTS221)
- 260-1260 hPa 绝对数字输出气压计 (LPS22HH)
- 3D加速度计和3D陀螺仪(ISM330DHCX)
- 高性能 3 轴磁力计 (IIS2MDCTR)。
2.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上↑
本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。
2.2.1使用STM32CubeMX创建工作项目↑
使用 STM32CubeMX 创建一个新项目:
- 使用主板选择器选择 B-U585I-IOT02A 主板。
- 回答“是”以使用默认模式初始化所有外围设备 ? 弹出窗口。
- 选择未激活 TrustZone?。回答“在未激活 TrustZone 的情况下创建新项目?”弹出窗口。
- 在“引脚分配”选项卡中验证 USART1 模式是否配置为异步。
- 单击“配置”选项卡中的 USART1 按钮。设置字长为8位,波特率为115200位/秒,奇偶校验为无,停止位为1,如下图所示:
- 通过选择“内存地址重新映射”,在“引脚”选项卡中启用 ICache,以达到最佳性能。
- 切换到“项目管理器”选项卡:选择“STM32CubeIDE”作为“工具链/IDE”,并为您的项目命名。
- 单击 Generate Code。
- 接受以在STM32CubeIDE中打开项目,并按照步骤操作。
- U5_IOT_Sensors调用生成的项目。
2.2.2将 BSP 驱动程序复制到您的项目中↑
BSP(板级支持包)驱动程序采用STM32CubeU5封装。这提供了与主板的硬件组件相对应的 API。
默认情况下,STM32CubeU5 软件包的最新版本在 SMT32CubeMX 存储库中下载:
C:\Users\user_name\STM32Cube\Repository\STM32Cube_FW_U5_Vx.xx.x。
下图显示了 BSP 位置及其内容:
信息 |
在本例中,使用的STM32CubeU5版本为1.1.1。版本可能会随着时间的推移而增加。 |
以下是将 BSP 驱动程序复制到项目时要遵循的步骤:
- 在生成的项目中,创建一个文件夹 U5_IOT_Sensors/Drivers/BSP。
- 复制STM32CubeU5/Drivers/BSP/B-U585-IOT02文件夹并将其粘贴到U5_IOT_Sensors/Drivers/BSP文件夹。
- 复制STM32CubeU5/Drivers/BSP/Components文件夹并将其粘贴到U5_IOT_Sensors/Drivers/BSP/Components下。
- 仅使用 HTS221 温度传感器。因此,可以删除复制到工作目录的任何其他文件和文件夹。此步骤是可选的:
* Keep only the following folders under U5_IOT_Sensors\Drivers\BSP\Components:
*Keep only the following folders under U5_IOT_Sensors\Drivers\BSP\B-U585-IOT02:
- 将文件 b_u585i_iot02a_conf_template.h 重命名为 b_u585i_iot02a_conf.h。
2.2.3在STM32CubeIDE工作区中支持BSP↑
添加的文件夹会自动显示在STM32CubeIDE工作区中:
2.2.4更新包含路径↑
更新路径以支持新的头文件:
- 从 Project Explorer 视角选择相关项目:
- 从“项目”菜单或“文件”菜单中,转到“属性”>“C/C++构建>设置”>“工具设置”>“MCU GCC 编译器”>“包含路径”。
- 单击以包含新路径。
- 添加路径 ../驱动程序/BSP/B-U585I-IOT02A , ../Drivers/BSP/Components/hts221 和 ../驱动程序/BSP/组件/lps22hh
以下屏幕截图总结了要遵循的步骤:
2.2.5更新源文件↑
编辑 main.c,如下所示:
- 包括头文件:b_u585i_iot02a.h、b_u585i_iot02a_env_sensors.h 和 math.h
/* USER CODE BEGIN Includes */
#include "b_u585i_iot02a.h"
#include "b_u585i_iot02a_env_sensors.h"
#include <math.h>
/* USER CODE END Includes */
- 添加私有值。这些值用于在终端上显示温度和消息:
/* USER CODE BEGIN PV */
/* Private variables -------------------------------------------------------*/
float temp_value = 0; // Measured temperature value
char str_tmp[100] = ""; // Formatted message to display the temperature value
uint8_t msg1[] = "****** Temperature values measurement ******\n\n\r";
uint8_t msg2[] = "=====> Initialize Temperature sensor HTS221 \r\n";
uint8_t msg3[] = "=====> Temperature sensor HTS221 initialized \r\n";
/* USER CODE END PV */
- 在终端上显示消息并初始化 HTS221 温度传感器:
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart1,msg1,sizeof(msg1),1000);
HAL_UART_Transmit(&huart1,msg2,sizeof(msg2),1000);
BSP_ENV_SENSOR_Init(0, ENV_TEMPERATURE);
BSP_ENV_SENSOR_Enable(0, ENV_TEMPERATURE);
HAL_UART_Transmit(&huart1,msg3,sizeof(msg3),1000);
/* USER CODE END 2 *//
- 在while(1)循环中,读取温度值,格式化,然后在终端上显示带有测量值的消息:
/* USER CODE BEGIN 3 */
BSP_ENV_SENSOR_GetValue(0, ENV_TEMPERATURE, &temp_value);
int tmpInt1 = temp_value;
float tmpFrac = temp_value - tmpInt1;
int tmpInt2 = trunc(tmpFrac * 100);
snprintf(str_tmp,100," TEMPERATURE = %d.%02d\n\r", tmpInt1, tmpInt2);
HAL_UART_Transmit(&huart1,( uint8_t *)str_tmp,sizeof(str_tmp),1000);
HAL_Delay(1000);
/* USER CODE END 3 */
信息 |
只能对所需的USER CODE部分进行更新,以避免使用新的STM32CubeMX代码生成覆盖所有内容。 |
2.2.6编译运行示例↑
- 单击“生成”按钮以编译项目。
- 单击“调试”按钮以运行软件。
- 打开控制台模拟器,例如 TeraTerm[3].要配置控制台波特率,请选择数据位:8,然后单击确定。端口名称可能因您的计算机而异。
- STM32CubeIDE打开Debug透视图。单击“恢复”按钮以执行代码。
- Tera术语[3]在测量的温度值之前显示初始化消息:
现在,您可以:
- 构建您自己的项目,使用B-U585I-IOT02A中的嵌入式传感器测量温度值。
- 将BSP组件添加到STM32CubeMx生成的项目中。
- 将该板的使用范围扩展到 HTS221 以外的传感器,以进行环境测量。
3附录:将AC6示例移植到STM32CubeIDE↑
DataLogTerminal 是本附录中使用的示例。 它位于:STM32CubeExpansion_MEMS1_V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal
信息 |
STM32CubeExpansion_MEMS1_V7.1.0 是 X-CUBE-MEMS 的提取物。随着时间的推移,可以从同一链接获得此包的最新版本。 |
警告 |
为了防止将来由于路径过长而导致的编译错误,建议将软件包放在 C: 下。 |
3.1硬件说明↑
The X-NUCLEO-IKS01A2[4]是用于STM32 64引脚Nucleo的运动MEMS和环境传感器扩展板。它通过 I2C 总线引脚与 NUCLEO-L476RG 连接。
3.2示例:使用HTS221传感器获取温度值并显示在终端上(从AC6移植到STM32CubeIDE)↑
本节的目的是逐步说明如何连接X-NUCLEO IKS01A2 HTS221传感器和NUCLEO-L476RG板,以获得温度值并将其显示在终端上。
3.2.1硬件设置↑
- 使用 Arduino 连接器用 X-NUCLEO-IKS01A2 扩展板扩展您的 Nucleo 板。
- 将带有扩展板的板连接到您的计算机。
3.2.2示例详情↑
readme.txt文件中的 STM32CubeExpansion_MEMS1_ V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal 下提供了 DataLogTerminal 示例的描述:
@par Example Description
Main function is to show how to use sensor expansion board to send sensor data from a Nucleo board using UART to a connected PC or desktop, and display it on generic applications like TeraTerm.
After connection has been established:
- The user can view the data from various on-board environment sensors such as temperature, humidity, and pressure
- The user can also view data from various on-board MEMS sensors such as accelerometer, gyroscope, and magnetometer.
3.2.3将示例移植到STM32CubeIDE↑
将基于 SW4STM32 的 DataLogTerminal 示例导入 STM32CubeIDE:STM32CubeExpansion_MEMS1_V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal
必须转换项目,并显示以下消息:
- 单击“确定”时,会弹出以下消息:
- 单击“确定”。
- 从 Project Explorer 视角选择相关项目:
3.2.4编译运行示例↑
- 单击“生成”按钮以编译项目。
- 单击“调试”箭头,然后选择“调试配置”。
- 在弹出的 Debug Configuration 窗口中,确保所选的 Debug 探测器是 ST-LINK:
- 在同一窗口中,单击“调试”,或单击“调试”按钮以运行软件。
- 打开控制台模拟器,例如 TeraTerm[3].配置控制台波特率,选择数据位:8,然后单击确定。端口名称可能因您的计算机而异。
- 单击“恢复”按钮以执行代码。Tera术语[3]使用扩展板 X-NUCLEO-IKS01A2 中可用的传感器显示测量值。
- X-NUCLEO-IKS01A2传感器测量的值显示在TeraTerm窗口中,如下所示:
4参考资料↑
- Jump up↑ STM32L4 Discovery kit IoT 节点
- Jump up↑ B-U585I-IOT02A 探索套件物联网节点
- ↑Jump up to:3.0 3.1 3.2 3.3 3.4 3.5 Tera术语
- Jump up↑ X-核-IKS01A2
猜你喜欢
- 2024-11-10 linux系统移植U-boot与kernel的搭载流程(交互模式下)
- 2024-11-10 虚拟机与主机互传文件方法分享(如何将虚拟机与主机文件共享)
- 2024-11-10 趣玩大讲堂|华硕路由器原厂固件安装Entware环境
- 2024-11-10 物联网开发套件与百度云天工连接例程
- 2024-11-10 Vim 核心开发者 Sven Guckes 去世,Vim 之父:我要把 9.0 版本献给他
- 2024-11-10 快速致力于智能家居研发-瑞萨YRDKRL78G13开发套件评测
- 2024-11-10 架构师修炼之微服务部署 - Docker简介
- 2024-11-10 STM32 Nucleo Pack LoRa入门(stm32 njtrst)
- 2024-11-10 米尔瑞米派集聚5种操作系统,兼容树莓派扩展接口
- 2024-11-10 单片机上的MicroPython之交互式解释器(REPL)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)