关注分享主机优惠活动
国内外VPS云服务器

STM32CubeMX学习教程:用硬件I2C读取Lighting(stm32光传感器)

摘要:使用该库读取和写入环境光传感器。 本文介绍如何使用该库读取照明数据。 五项实验原型测试展示了通过预配置面板实时收集光传感器数据并通过涂鸦智能进行网络分配。

使用 STM32 HAL 库读写环境光传感器 (BH1750)

本文介绍如何使用 STM32HAL 库读取光数据。

功能实现:通过app实时监测照度数据。

程序下载路径:Demo程序。

1. 使用STM32CubeMX 创建一个新项目

1. 创建一个新项目,如下所示。

2、选择现有的STM32开发板进行开发,如下图。 p>

3. 配置时钟源

选择使用外部高速时钟(HSE)如果因此,您必须在系统核心上配置RCC。

默认内部时钟(HSI),可以跳过此步骤。

以下项目使用内部时钟,因此这一步不是必需的。

4. 配置串口

NUCLEO-加载L476RG板ST-Link并虚拟化串口。 示意图如下。

将 PC 的串行端口连接到 USART2 连接。 (日志打印端口同时也是程序下载端口。)

接下来,如下图所示配置USART2。

创建使用串口1与涂鸦模块WB3S通信(单片机与WB3S串口采用透传方式通信)。 串口1的配置如下图所示。

5. 配置

p>

为了收集照明数据(BH1750),微控制器使用 I2C 协议。 I2C1用于与照明模块通信,配置如下。

6. STM32L4 的最佳配置由于频率为80M,所以配置PLL,最后设置HCLK=80Mhz。

7. 生产技术设置

8.代码生成设置

最后,配置生成单独的初始化文件。

9. 生成代码

点击生成代码:生成MDK-V5项目如下。

10、在KEIL5中打开生成的代码,开始添加想要实现的功能。

2. BH1750 驱动程序设计 1. 硬件设计

BH1750 照度检测模块配备 BH1750FVI。 BH1750FVI 是一款具有 2 线串行总线接口 (IIC) 的 16 位数字输出环境光强度传感器。 让我们尝试一下高分辨率可以检测大范围内的光强度变化(1lx - 65535lx)。

BH1750实拍照片如下。

BH1750的电路图如下。

引脚介绍

名称 VCCGNDSCLDAADDR 功能描述 3-5V 电源参考地 IIC 时钟线 IIC 数据线 地址线 2. 软件设计

编程请参考 BH1750FVI 数据手册。

BH1750 器件地址为: 由 High 决定。 p style.="text-align:center;">

驱动底层使用HAL库的IIC初始化文件,其中包含以下头文件: p style="text-align: center;">

发送命令的函数为:

发送接收光强数据的函数如下:

根据数据表中描述的公式转换这两个值的函数将从BH1750读取的字节数据写入(数据转换函数)。相应的强度值:

驱动程序设计完成,您可以开始设计您的网络功能。创建平台产品

进入涂鸦智能物联网平台,点击创建产品 这里不用担心,产品类别选择的重点是获取MCU- SDK文件,实际使用中可以更改pid。根据具体产品,在SDK中进行适配,以适应自己的产品。 示例:点击创建一个产品,选择标准类别>电工>开关(当时是测试,所以可以选择标准类别。创建于。 )

选择自定义解决方案,输入产品名称,通讯协议选择WIFI+蓝牙,点击创建产品。

p>

根据您的需求实现设备功能并创建DP特征点。

创建DP点后,点击设备面板,选择自由配置,方便开发调试。控制板。 您还可以选择其他面板。

创建面板后,点击硬件开发,对接方式选择涂鸦标准模块MCU SDK开发,模块选择WB3S Wi-Fi&Bluetooth模块(实际开发过程中不能选择已有的涂鸦模块),Firmware通用固件。

4 .移植MCU SDK

创建平台产品后,您可以获取MCU SDK包并立即移植到MCU上。

在解压后的文件夹中找到mcu_sdk相关的源码和头文件,将其全部复制到您创建的工程模板中的MCU_SDK文件夹中。 打开上面创建的工程,将mcu_sdk源文件添加到对应的组中。 同时添加包含路径。

当我单击“编译”时,会弹出一些错误。 然后,如果出现错误,您应该按照要求您逐步更改代码的注释进行操作。

uart_receive_input()为串口接收数据处理接口。 放到串口中断里就可以了。 这里我们将串口1作为通信模块的串口,串口2作为调试时的日志口。 首先在主函数中添加串口1和串口2的初始化代码,并使能接收中断(接收使能串口已初始化中断。(体现在函数中):

下一步添加stm32l4xx_it 在.c文件中添加中断处理函数,包含mcu_api.h文件,并添加uart_receive_input()接口。 添加后,删除错误注释:

我们来看看下面的错误。 由于我们前一阶段使用中断接收的方式实现了串口数据接收过程,所以这样的多字节处理就没有必要了,直接删除错误注释即可。

出现以下错误:

按照提示将界面对齐main. 就在函数的 while 循环内。 不要忘记在 main.c 中包含 wifi.h 头文件。

看一下以下错误:

同样,按照提示。 to 该函数可以放在主函数的开头。

接下来是串口传输的东西:

这里 现在,我就解释一下这一点。 我们需要实现串行端口 1,以便包含数据发送功能。 使用STM32 HAL库的串口单字节发送函数,以阻塞模式传输大量数据。 添加以下代码:

接下来是DP数据点上报相关。

这里可以直接注释掉错误提示,在实际开发过程中实现该功能

在main函数中添加光照上报的数据,可以将其改为你想要传感器上报的数据。k4]align. :center;">

最后是与生产测试相关的:

一般来说,开发者如果没有参与生产测试,那么中标注的功能下图中红色为网络设置,网络设置通过NUCLEO[中的用户按钮连接。 k4]L476开发板。

更改上面的几个地方后,再次编译,所有显示的错误都会消失。 至此,涂鸦MCU SDK已经移植完毕。 后续您将可以使用涂鸦模块调试助手。 涂鸦模块调试助手的使用方法请参见调试助手文档。

5 实验原型测试展示

通过。 之前配置的面板已经通过涂鸦智能APP进行配置,采集真实的光传感器数据。 时间。

未经允许不得转载:主机频道 » STM32CubeMX学习教程:用硬件I2C读取Lighting(stm32光传感器)

评论 抢沙发

评论前必须登录!