树莓派集成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
