You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派C++开发:如何使用Linux内核中的BH1750驱动支持?

在树莓派C++中使用Linux内核BH1750驱动的方法

一、确认并加载内核驱动

  • 先检查BH1750驱动是否已加载:
    lsmod | grep bh1750
    
    若无输出,手动加载驱动:
    sudo modprobe bh1750
    
  • 确保树莓派I2C总线已启用:通过raspi-config的Interfacing Options开启I2C,或编辑/boot/config.txt添加dtparam=i2c_arm=on后重启系统。

二、通过设备树声明BH1750设备

内核需要知道BH1750连接的I2C总线和地址,可通过设备树overlay实现:

  1. 创建设备树描述文件bh1750-overlay.dts:
/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2835";

    fragment@0 {
        target = <&i2c1>; // 树莓派默认I2C总线为i2c-1(GPIO2/3)
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            bh1750@23 {
                compatible = "rohm,bh1750";
                reg = <0x23>; // BH1750默认地址,ADDR接VCC则改为0x5c
            };
        };
    };
};
  1. 编译overlay文件:
dtc -I dts -O dtb -o bh1750.dtbo bh1750-overlay.dts
  1. 部署并启用overlay:
    sudo cp bh1750.dtbo /boot/overlays/
    
    编辑/boot/config.txt添加dtoverlay=bh1750,保存后重启系统。

三、通过IIO子系统读取数据

BH1750内核驱动属于IIO子系统,无专属头文件,可直接通过sysfs节点读取数据:

  • 查看BH1750对应的IIO设备路径:
    ls /sys/bus/iio/devices/
    
    输出类似iio:device0,即为目标设备路径。
  • 测试读取光照值:
    cat /sys/bus/iio/devices/iio:device0/in_illuminance_raw
    
    输出数值单位为lux,直接对应环境光照强度。

四、C++代码实现读取

通过标准文件IO读取sysfs节点即可,无需额外依赖:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
    // 替换为你的IIO设备实际路径
    const string illuminance_path = "/sys/bus/iio/devices/iio:device0/in_illuminance_raw";
    
    ifstream illuminance_file(illuminance_path);
    if (!illuminance_file.is_open()) {
        cerr << "无法访问光照传感器节点" << endl;
        return 1;
    }
    
    int lux_value;
    illuminance_file >> lux_value;
    cout << "当前光照强度: " << lux_value << " lux" << endl;
    
    illuminance_file.close();
    return 0;
}

编译运行:

g++ bh1750_reader.cpp -o bh1750_reader
./bh1750_reader

排查问题

若驱动加载后无法识别设备,可查看内核日志排查:

dmesg | grep bh1750

常见问题包括I2C总线未启用、设备地址配置错误、硬件连接松动等。

内容的提问来源于stack exchange,提问作者jiandingzhe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:33:17