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