STM32入门: Step4 传感器的使用

STM32入门: Step4 传感器的使用

首页角色扮演Project MX更新时间:2024-06-29
Step4 传感器的使用

在B-L475E-IOT01A和B-U585I-IOT02A

上使用传感器 60分钟

目标描述
本教程的目的是说明如何使用 stm32L4 Discovery 套件和 B-U585I-IOT02A Discovery 套件中的传感器进行测量。可对温度传感器进行分步配置。
完成本教程后,您将能够使用B-L475E-IOT01A板和B-U585I-IOT02A板上的传感器收集值。
本教程的附录提供了有关如何将AC6示例移植到STM32CubeIDE的指南。

先决条件
您已经遵循了:

硬件

文献

内容↑

[隐藏]

1使用传感器 B-L475E-IOT01A↑1.1硬件说明↑

STM32L4探索套件物联网节点(B-L475E-IOT01A)中提供的主要传感器包括:

1.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上↑

本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。

1.2.1使用STM32CubeMX创建工作项目↑

起点是使用STM32CubeMX生成的项目,如Step3教程: B-L475E-IOT01A上的UART I/F简介中所述。

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 驱动程序复制到您的项目:

* 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更新包含路径↑

更新路径以支持新的头文件:

以下屏幕截图总结了要遵循的步骤:

1.2.5更新源文件↑

编辑 main.c,如下所示:

/* 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 */

/* 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 *//

/* 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.d\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编译运行示例↑

现在,您可以

2在 B-U585-IOT02A 上使用传感器↑2.1硬件说明↑

B-U585I-IOT02A 物联网节点探索套件中提供的主要传感器包括:

2.2示例:使用 HTS221 传感器获取温度值并将其显示在终端上↑

本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。

2.2.1使用STM32CubeMX创建工作项目↑

使用 STM32CubeMX 创建一个新项目:

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 驱动程序复制到项目时要遵循的步骤:

* 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:

2.2.3在STM32CubeIDE工作区中支持BSP↑

添加的文件夹会自动显示在STM32CubeIDE工作区中:



2.2.4更新包含路径↑

更新路径以支持新的头文件:

以下屏幕截图总结了要遵循的步骤:

2.2.5更新源文件↑

编辑 main.c,如下所示:

/* 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 */

/* 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 *//

/* 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.d\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编译运行示例↑


现在,您可以

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和环境传感器扩展板。它通过 I²C 总线引脚与 NUCLEO-L476RG 连接。

3.2示例:使用HTS221传感器获取温度值并显示在终端上(从AC6移植到STM32CubeIDE)↑

本节的目的是逐步说明如何连接X-NUCLEO IKS01A2 HTS221传感器和NUCLEO-L476RG板,以获得温度值并将其显示在终端上。

3.2.1硬件设置↑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 示例导入 STM32CubeIDESTM32CubeExpansion_MEMS1_V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal

必须转换项目,并显示以下消息:

3.2.4编译运行示例↑

4参考资料↑
  1. Jump up↑ STM32L4 Discovery kit IoT 节点
  2. Jump up↑ B-U585I-IOT02A 探索套件物联网节点
  3. ↑Jump up to:3.0 3.1 3.2 3.3 3.4 3.5 Tera术语
  4. Jump up↑ X-核-IKS01A2
查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved