【雕爷学编程】Arduino动手做(122)---BH1750光照传感器

news/2025/2/23 2:38:30/

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百二十二:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BH1750光照传感器模块描述

  1. ROHM原装BH1750FVI芯片

2.电源:3-5v

3.光强范围:0-65535 lx

4.传感器内置16bitAD转换器

5.直接数字输出,省略复杂计算,省略校准

6.不区分环境光,接近光谱特性的视觉灵敏度

7.可以在很宽的亮度范围内进行1 lux的高精度测量

8.标准NXP IIC通信协议

9.模块包含通信级转换,5v微控制器直接连接

在这里插入图片描述
模块参考电原理图

在这里插入图片描述
知识点:光亮度

光亮度(luminance)又称发光率,是指一个表面的明亮程度,以L表示, 即从一个表面反射出来的光通量。或者说是指在某方向上单位投影面积的面光源沿该方向的发光强度。不同物体对光有不同的反射系数或吸收系数。光亮度是表示发光面明亮程度的,指发光表面在指定方向的发光强度与垂直于指定方向的发光面的面积之比,单位是坎德拉/平方米。对于一个漫散射面,尽管各个方向的光强和光通量不同,但各个方向的亮度都是相等的。电视机的荧光屏就是近似于这样的漫散射面,所以从各个方向上观看图像,都有相同的亮度感。亮度和照度的关系,最常用的照度单位是呎烛光(footcandle)。1呎烛光是在距离标准烛光一英尺远的一平方英尺平面上接受的光通量。如果按公制单位,则以米为标准,照度就用米烛光(metrecandle)来表示,即1米烛光是距离标准烛光一米远的一平方米面积上的照度。

1米烛光等于0.0929呎烛光。

我们不难理解亮度和照度之间的关系,其关系为:

L=R×E

式中L为亮度,R为反射系数,E为照度。

因此,当我们知道一个物体表面的反射系数及其表面的照度时,便可推算出它的亮度。

在这里插入图片描述
BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有:

I2C数字接口,支持速率最大400Kbps
输出量为光照度(Illuminance)
测量范围1~65535 lux,分辨率最小到1lux
低功耗(Power down)功能
屏蔽50/60Hz市电频率引起的光照变化干扰
支持两个I2C地址,通过ADDR引脚选择
较小的测量误差(精度误差最大值+/-20%)

在这里插入图片描述
Arduino实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百二十二:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块项目:测试环境光亮度Module    UNO5 VCC  ——  5V6 GND ——  GND7 SCL  ——  A58 SDA  ——  A49 ADD ——  NC*/#include <Wire.h>#define ADDRESS_BH1750FVI 0x23  //ADDR="L" for this module#define ONE_TIME_H_RESOLUTION_MODE 0x20//One Time H-Resolution Mode://Resolution = 1 lux//Measurement time (max.) = 180ms//Power down after each measurementbyte highByte = 0;byte lowByte = 0;unsigned int sensorOut = 0;unsigned int illuminance = 0;void setup(){Wire.begin();Serial.begin(115200);}void loop(){Wire.beginTransmission(ADDRESS_BH1750FVI); //"notify" the matching deviceWire.write(ONE_TIME_H_RESOLUTION_MODE);   //set operation modeWire.endTransmission();delay(180);Wire.requestFrom(ADDRESS_BH1750FVI, 2); //ask Arduino to read back 2 bytes from the sensorhighByte = Wire.read(); // get the high bytelowByte = Wire.read(); // get the low bytesensorOut = (highByte<<8)|lowByte;illuminance = sensorOut/1.2;Serial.print(illuminance);  Serial.println(" lux");delay(1000);}

光亮度数据参考

晚上: 0.001-0.02;

月夜: 0.02-0.3;

多云室内: 5-50;

多云室外: 50-500;

晴天室内: 100-1000;

夏天中午光照下: 大约10*6能量;

阅读书籍时的照明度:50-60;

家庭录像标准照明度:1400

实验串口返回情况

在这里插入图片描述
在这里插入图片描述
打开台灯后的光亮度波形,提高了400多倍

在这里插入图片描述
在这里插入图片描述
Arduino实验场景图

在这里插入图片描述
Arduino实验开源代码之二

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百二十二:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块项目:依据光亮度控制LEDModule    UNO5 VCC  ——  5V6 GND ——  GND7 SCL  ——  A58 SDA  ——  A49 ADD ——  NC*/#include <Wire.h> //IIC库#include <math.h> int BH1750address = 0x23;//芯片地址为16位23byte buff[2];void setup(){pinMode(13,OUTPUT);Wire.begin();Serial.begin(9600);}void loop(){int i;uint16_t val=0;BH1750_Init(BH1750address);delay(100);if(2==BH1750_Read(BH1750address)){val=((buff[0]<<8)|buff[1])/1.2;Serial.print(val,DEC);   Serial.println("[lx]"); }delay(150);if (val<100){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}}int BH1750_Read(int address) //{int i=0;Wire.beginTransmission(address);Wire.requestFrom(address, 2);while(Wire.available()) //{buff = Wire.read(); // read one bytei++;}Wire.endTransmission();  return i;}void BH1750_Init(int address) {Wire.beginTransmission(address);Wire.write(0x10);//1lx reolution 120msWire.endTransmission();}

实验开源仿真编程(Linkboy V4.62)

在这里插入图片描述
在这里插入图片描述


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

相关文章

利用CamtasiaStudio软件为英语视频自动添加英文字幕

一、背景说明 Camtasia Studio是美国TechSmith公司出品的屏幕录像和编辑的软件套装。软件提供了强大的屏幕录像&#xff08;Camtasia Recorder&#xff09;、视频的剪辑和编辑&#xff08;Camtasi Studio&#xff09;、视频菜单制作&#xff08;Camtasia MenuMaker&#xff09…

计算机英语(第四版)

第一章 计算机硬件 1.1 计算机的组成 audio 声[音]频的&#xff0c;声音的 bus 总线 computer 计算机 central processing unit (CPU) 中央处理器 Compute…

计算机英语2

第一章 计算机硬件 1.1 计算机的组成 audio 声[音]频的&#xff0c;声音的 bus 总线 computer 计算机 central processing unit (CPU) 中央处理器 Computer…

计算机教育软件排名,电脑教学软件

在线课堂|51.53MB 更新时间&#xff1a;2020-10-19 不是每个学生都适合大班的教学模式&#xff0c;知播在线1对1为用户提供一对一的教学指导&#xff0c;学生只需要完成课前调研即可获得相关评测&#xff0c;系统会自动安排适合的课程和老师&#xff0c;帮助用户切实提高考试成…

计算机英语(31-60)

每日更新&#xff1a;https://blog.csdn.net/qq_41880352/article/details/94288895 目录 31、Ajax 32、Alert Box 33、Algorithm 34、Alpha Software 35、ALU 36、Analog 37、Android 38、Animated GIF 39、ANSI 40、Antivirus 41、Apache 42、API 43、App 44、…

C++ window系统获取电脑磁盘及容量

文章目录 前言一、原理介绍二、代码封装三、测试使用前言 本文主要封装一个方便使用的函数:用于获取window系统上磁盘相关信息 一、原理介绍 一般对于磁盘来说,我们需要的仅有两个功能: 获取当前电脑上有哪些磁盘或许每个磁盘当前容量是多少为了满足这两个功能,我们需要…

Matlab预测模型-灰色预测模型

预测模型-灰色预测模型 灰色预测是对既含有已知信息又含有不确定信息的系统进行预测&#xff0c;就是对在一定范围内变化的、与时间有关的灰色过程进行预测。灰色预测对原始数据进行生成处理来寻找系统变动的规律&#xff0c;并生成有较强规律性的数据序列&#xff0c;然后建立…

使用近10年,说说向大家推荐Linux系统的理由

使用linux已经快十年了&#xff0c;一直想推荐身边的使用linux,但是一直没有分享。但是现在我想分享推荐了。下面我们一起聊聊为什么我向大家推荐linux。 为什么现在我想推荐了呢&#xff1f;是因为我自认为相对于同龄人来说&#xff0c;我使用桌面版的时间算是挺长的了&#…