快捷搜索: 王者荣耀 脱发

树莓派集成BH1750光敏传感器配置

树莓派集成BH1750光敏传感器配置

我是代码小白,一个正在做毕设的秃头少年。鄙人拙作,有不当之处,还请指教。

今天介绍的是在树莓派上集成BH1750光照传感器并收集信息的配置过程。

1.硬件

树莓派PI3B+RS GY-302 BH1750 FVI模块

2.树莓派环境

可以执行 cmake、make等指令。 因为本文的传感器驱动代码使用c语言编写的

3.树莓派与BH1750接线

BH1750光照传感器有五个引脚,按从上到下的顺序是VCC,GND,SCL,SDA,ADDR,我们要用的口只有前四个,ADDR口现在对于我们无用,VCC口连接树莓派的2口,GND口连树莓派的6口,SCL口连接树莓派的5口,SDA口连接树莓派的3口,具体连接如图(2-4)所示。

4.将驱动代码bh1750.c和编译指示性文件CMakeLists.txt复制到树莓派的文件夹中

bh1750.c代码

#include <stdio.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include <errno.h>
#define I2C_ADDR 0x23
void usleep(int micro_seconds);
ssize_t write (int fd, const void * buf, size_t count); 
ssize_t read(int fd, void * buf, size_t count);
int ioctl( int fd, int request, .../* void *arg */ );
int main(void)
{
    int fd;
    char buf[3];
    char val,value;
    float flight;
    fd=open("/dev/i2c-1",O_RDWR);
    if(fd<0)
    {
       // printf("打开文件错误:%s
",strerror(errno)); return 1;
    }
    if(ioctl( fd,I2C_SLAVE,I2C_ADDR)<0 )
    {
       // printf("ioctl 错误 : %s
",strerror(errno));return 1;
    }
    val=0x01;
    if(write(fd,&val,1)<0)
    {
       // printf("上电失败
");
    }
    val=0x11;
    if(write(fd,&val,1)<0)
    {
        //printf("开启高分辨率模式
");
    }
    usleep(200000);
    if(read(fd,&buf,3)){
        flight=(buf[0]*256+buf[1])*0.5/1.2;
        printf("%6.2f",flight);
    }
    else{
        printf("0.0");
    }
}

CMakeLists.txt代码

cmake_minimum_required(VERSION 2.8)  
project( bh1750.c )  
add_executable( bh1750 bh1750.c )

5.编译驱动文件

远程连接树莓派,打开到你放置代码的文件夹 输入命令 cmake . 结束之后在输入 make 如图 之后就是测试代码是否生效 执行命令 ./bh1750 成功的话就会有光照数据传出来 可以看到光照传感器的值已经传出来了。 单位为lux

6.有些树莓派可能没有激活激活i2c串口导致提示 打开文件错误

经验分享 程序员 微信小程序 职场和发展