STM32应用开发——BH1750光照传感器详解
BH1750是一款高精度的数字光照传感器,它能够直接输出环境光照强度的数值,测量范围在0~65535勒克斯(lx)。本文将详细介绍如何在STM32平台上使用BH1750传感器,包括硬件连接、软件配置和代码实现。
1. BH1750简介
BH1750具有以下特点:
- 两线式串行总线接口
- 内置16位AD转换器,直接数字输出
- 可调的分辨率,支持高精度和高速度模式
- 宽泛的测量范围,适用于多种应用场景
2. 硬件接线
BH1750模块通常有以下几个引脚:
- VCC:电源正
- GND:电源负
- SCL:I2C时钟线
- SDA:I2C数据线
- ADDR:地址端口(可选)
STM32与BH1750的引脚连接如下:
- STM32_VCC -> BH1750_VCC(3.3V或5V)
- STM32_GND -> BH1750_GND
- STM32_PB6 -> BH1750_SCL(I2C时钟线)
- STM32_PB7 -> BH1750_SDA(I2C数据线)
3. 软件编程
3.1 IIC设备地址
BH1750有两个设备地址,可以通过ADDR引脚的电平来选择。如果不连接ADDR引脚,默认使用低地址0x23。
3.2 IIC读写
BH1750的通信协议遵循标准的I2C协议。需要发送设备地址、命令和读取数据。
3.3 BH1750指令集
BH1750支持多种指令,用于配置传感器的工作模式和读取数据。常用的指令包括:
- 0x01:开启设备
- 0x00:关闭设备
- 0x10:连续高分辨率模式
- 0x20:单次高分辨率模式
3.4 BH1750工作流程
- 初始化I2C接口。
- 向BH1750发送开启命令。
- 设置测量模式。
- 读取测量结果。
3.5 BH1750测量模式
BH1750支持多种测量模式,包括:
- 连续高分辨率模式(0x10)
- 单次高分辨率模式(0x20)
- 连续低分辨率模式(0x13)
- 单次低分辨率模式(0x23)
4. 测试代码
以下是STM32的HAL库代码实现:
#include "stm32f1xx_hal.h"
#include "bh1750.h"
// BH1750 I2C地址
#define BH1750_ADDR 0x23
// BH1750初始化函数
void BH1750_Init(void) {
// 初始化I2C
HAL_I2C_Init(&hi2c1);
// 写入电源管理寄存器,唤醒BH1750
HAL_I2C_Mem_Write(&hi2c1, BH1750_ADDR, BH1750_PWR_MGMT, I2C_MEMADD_SIZE_8BIT, 0x00, 1, HAL_MAX_DELAY);
// 配置加速度计和陀螺仪
HAL_I2C_Mem_Write(&hi2c1, BH1750_ADDR, BH1750_CONT_H_RES_MODE, I2C_MEMADD_SIZE_8BIT, 0x10, 1, HAL_MAX_DELAY);
}
// 读取光照强度
float BH1750_ReadLightIntensity(void) {
uint8_t buf[2];
// 读取数据
HAL_I2C_Mem_Read(&hi2c1, BH1750_ADDR, BH1750_DATA0_LOW, I2C_MEMADD_SIZE_8BIT, buf, 2, HAL_MAX_DELAY);
uint16_t data = (buf[0] << 8) | buf[1];
// 计算光照强度
return (float)data / 1.2;
}
int main(void) {
HAL_Init();
SystemClock_Config();
MX_I2C1_Init();
BH1750_Init();
while (1) {
float light = BH1750_ReadLightIntensity();
printf("Light Intensity: %.2f lx\n", light);
HAL_Delay(1000);
}
}
5. 注意事项
- I2C地址:确保BH1750的I2C地址与代码中的设置一致。
- 电源要求:BH1750可以在2.5V至3.6V的电源电压下工作,确保电源供应稳定。
- 数据转换:从BH1750读取的原始数据需要根据传感器的量程转换为实际的物理量数值。
通过上述步骤,我们可以在STM32F103C8T6上使用HAL库成功驱动BH1750光照传感器,并实现光照强度的实时监测。这为开发需要光照监测的嵌入式系统提供了基础。
✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇
点击领取更多详细资料