BH1750FVI 是一款 IIC 接口的数字型光强度传感器集成电路。下面介绍一下其在树莓派下的用法。
一、前期准备
1、环境要求
GY30模块(BH1750FVI传感器)
树莓派 Raspbian 系统
python-smbus
IIC 开启
启动 IIC 驱动的方法:
运行 sudo raspi-config 进入 Interfacing Options 高级设置,将 SPI 与 I2C 设置为 Enable 后重启系统。
2、安装 python-smbus
这个安装会附带安装 i2c-tools,省的单独安装了
1 | sudo apt-get install python-smbus |
3、将 BH1750 连接到树莓派
二、连接测试
1 | sudo i2cdetect -y 1 |
三、光照强度测量
1、创建代码文件 bh1750.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <stdio.h> #include <fcntl.h> #include <linux/i2c-dev.h> #include <errno.h> #define I2C_ADDR 0x23 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\r\n" , strerror ( errno )); return 1; } if (ioctl( fd,I2C_SLAVE,I2C_ADDR)<0 ) { printf ( "ioctl 错误 : %s\r\n" , strerror ( errno )); return 1; } val=0x01; if (write(fd,&val,1)<0) { printf ( "上电失败\r\n" ); } val=0x11; if (write(fd,&val,1)<0) { printf ( "开启高分辨率模式2\r\n" ); } usleep(200000); if (read(fd,&buf,3)){ flight=(buf[0]*256+buf[1])*0.5/1.2; printf ( "光照度: %6.2flx\r\n" ,flight); } else { printf ( "读取错误\r\n" ); } } |
编译、运行:
1 2 | sudo gcc -o bh1750 bh1750.c sudo . /bh1750 |
发表评论