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

news/2024/11/28 0:37:47/

树莓派集成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\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("开启高分辨率模式\r\n");}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串口导致提示 打开文件错误

解决办法:打开树莓派配置界面
sudo raspi-config
选择:
Interfacing Options-> I2C->Enable
不同版本的raspbian选择方式可能不一样
更新i2c配置
sudo apt-get install i2c-tools
我刚开始就是这个错误,到这里已经解决了。
这部分参考链接:
参考i2c激活


http://www.ppmy.cn/news/907649.html

相关文章

【NLP】一项NER实体提取任务

一、说明 从文本中提取实体是一项主要的自然语言处理 (NLP) 任务。由于深度学习(DL)的最新进展使我们能够将它们用于NLP任务,并且与传统方法相比,在准确性上产生了巨大的差异。 我试图使用深度学习和传统方法从文章中提取信息。结果是惊人的,因为DL方法…

Deep Residual Learning for Image Recognition

2015-ResNet 关键词: residual connection CV论文:一般在第一页就放一个很“好看”的图 从图可以得到的结论:深的网络更难训练 ( 不仅因为过拟合,因为训练时误差都很难降低 ) 网络结构图 1*1卷积作用:改变通道数 ,提出维度匹配方法:1)补零;2)投影projection…

常用计算机储存设备有哪些,计算机的存储设备有哪些

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 计算机的存储设备有软盘、硬盘、光盘、U盘、移动硬盘。 “计算机”一般是指“电子计算机”&#xff0c;电子计算机(electronic computer)通称电脑&#xff0c;是现代一种用于高速计…

win10解除usb禁用_Windows10系统禁用usb存储设备的方法

一位用户担心自己电脑中的资料被别人偷偷拷贝走&#xff0c;就想要设置禁用usb存储设备。这该如何操作呢&#xff1f;在本文中系统城小编将给大家分享下Win10防止连接USB媒体的设置方法&#xff01;感兴趣的朋友们&#xff0c;都可以一起来看看&#xff01; 方法一&#xff1a;…

组策略 禁用域用户移动存储U盘

背景&#xff1a;为了避免病毒通过U盘传入内网&#xff0c;为了工作单位的网络安全,通过在域控端创建组策略的形式&#xff0c;实现灵活控制域用户端U盘使用&#xff08;灵活的原因在于不能禁用所有人的U盘使用权限&#xff0c;只能禁止一部分&#xff09;。 首先在域控服务器…

计算机硬盘的存储时间,存储访问时间

存储访问时间,也可以称之为存取时间,是指从启动一次存储器操作到完成该操作所经历的时间。具体讲,从一次读操作命令发出到该指令完成,将数据读入数据缓冲寄存器为止所经历的时间[1] 。存储访问时间略小于存储周期。存储访问时间和存储周期反映了主存速度的指标。 中文名 存…

域控制器组策略:域用户加入域,禁止USB移动存储

标注&#xff1a;对于Windows Server 2008 R2域控组策略禁用USB移动存储设备要求是客户端操作系统要求Windows Vista以上&#xff0c;针对 XP以下的操作系统则只能使用Windows Server 2003操作系统作为域控服务器才可以进行限制(操作方法跟windows server 2008 R2操作方法不一样…

android下存储设备的使用

本文转自android官网&#xff0c;原文地址&#xff1a;https://source.android.google.cn/devices/storage 1、概览 1.1、存储 Android 一直在不断发展&#xff0c;可支持各种存储设备类型和功能。所有 Android 版本均支持配有传统存储&#xff08;包括便携式存储和内置存储&…