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

news2025/1/14 9:37:08

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    UNO

5 VCC  ——  5V

6 GND ——  GND

7 SCL  ——  A5

8 SDA  ——  A4

9 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 measurement

byte 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 device

   Wire.write(ONE_TIME_H_RESOLUTION_MODE);   //set operation mode

   Wire.endTransmission();

   delay(180);

   Wire.requestFrom(ADDRESS_BH1750FVI, 2); //ask Arduino to read back 2 bytes from the sensor

   highByte = Wire.read(); // get the high byte

   lowByte = Wire.read(); // get the low byte

   sensorOut = (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 光线检测模块

项目:依据光亮度控制LED

Module    UNO

5 VCC  ——  5V

6 GND ——  GND

7 SCL  ——  A5

8 SDA  ——  A4

9 ADD ——  NC

*/



#include <Wire.h> //IIC库

#include <math.h> 

int BH1750address = 0x23;//芯片地址为16位23

byte 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 byte

  i++;

 }

 Wire.endTransmission();  

 return i;

}

void BH1750_Init(int address) 

{

 Wire.beginTransmission(address);

 Wire.write(0x10);//1lx reolution 120ms

 Wire.endTransmission();

}

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

彻底搞懂什么是阿里云服务器vCPU?

阿里云ECS服务器vCPU和CPU是什么意思&#xff1f;CPU和vCPU有什么区别&#xff1f;一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定&#xff0c;CPU是中央处理器&#xff0c;一个CPU可以包含若干个物理核&#xff0c;通过超线程HT&#xff08;Hyper-Threading&am…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (下)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

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

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

Linux学习[19]管线命令详解1---cut, grep, sort, wc, uniq

文章目录 1. 何为管线2. 摘取命令&#xff1a;cut, grep2.1 cut2.2 grep 3. 排序命令sort,wc,uniq3.1 sort3.2 uniq3.3 wc 总结 1. 何为管线 管线命令和Linux学习18里面的连续执行指令少许不同。他是只有在前面指令执行正确的时候&#xff0c;才会执行管线命令。 即这个管线命…

基于Vue+Node.js的宠物领养网站的设计与开发-计算机毕设 附源码 83352

基于VueNode.js的宠物领养网站的设计与开发 摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由…

彻底卸载mysql的详细步骤

目录 一、前言 二、操作步骤 &#xff08;一&#xff09; 停止mysql的服务 &#xff08;二&#xff09;控制面板卸载 &#xff08;三&#xff09;清除残留的文件 &#xff08;四&#xff09;删除注册表内容 &#xff08;五&#xff09;删除MySQL环境变量 一、前言 卸载…

spider-flow新手暴力入门

1.入口 链接跳转: spider-flow 或者本地有git软件直接输入gittt中的链接地址&#xff0c;回车键梭哈即可 2.环境部署&#xff0c;必备jdk8mysql idea打开项目&#xff0c;重点修改如下 mysql用小皮软件&#xff08;phpstudy&#xff09;自带的mysql5,navicat软件导入sql文…

SEO一般多久时间才会有效果?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是SEOSEO的时间…

Sui x KuCoin Labs夏季黑客松第二批入围项目公布

Sui x KuCoin Labs夏季黑客松仍在如火如荼地进行中。自第一批入围项目名单公布后一周&#xff0c;第二批入围项目现已经过审核&#xff0c;入围最终Demo Day。 第二批入围名单 Vimverse Vimverse是一个基于Sui构建的创新生态金融平台&#xff0c;旨在释放去中心化储备货币协…

计算物理专题:主值积分

计算物理专题&#xff1a;主值积分 吴式枢理论 主值积分 设在以及上可积&#xff0c;其中为任意小的正数&#xff0c;当两者独立地趋于零&#xff0c;极限存在。如果&#xff0c;这个极限存在&#xff0c;则称它为瑕积分的主值&#xff0c;记作无界函数的改造则该瑕积分的主值…

使用鲁棒优化的定价策略进行微电网不平衡管理研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

童安格杀猪和金钥匙-UMLChina建模知识竞赛第4赛季第7轮

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 本轮每题分数较少&#xff0c;需最先答对所有4题&#xff0c;才能获得本轮优胜。 所有题目的回答必须放…

Python 进阶(一):Python连接MySQL数据库和CRUD操作

MySQL数据库的连接和CRUD操作 前言Python连接MySQL的五种方式1. 安装mysql-connector-python2. 连接数据库3. 查询数据4. 插入数据5. 更新数据6. 删除数据 前言 本文基于MySQL8.x版本的学习&#xff0c;python版本基于当前最新的3.x&#xff0c;windows操作系统下mysql的安装流…

对骨架进行去毛刺处理

文章目录 0. 效果1. 基本内容2. 参考 0. 效果 红色&#xff1a;端点 绿色&#xff1a;节点 蓝色线条&#xff1a;毛刺&#xff08;根据长度定义&#xff09; 1. 基本内容 本文中的端点和节点的获取是依据论文《一种有效的骨架毛刺去除算法》中的内容提取的。 端点&#…

Chromium多进程架构,你知道多少?

一、前言 国内外主流的浏览器&#xff0c;大多采用的是谷歌的Chromium 浏览器内核&#xff0c;Chromium是一个多进程多线程架构的Web引擎&#xff0c;很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途&#xff0c;以便能利用相关信息提升应用的性能。为此&…

C++【一棵红黑树封装 set 和 map】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 &#x1f307;前言&#x1f3d9;️正文1、红黑树的完善1.1、修改默认成员函数1.1.1、默认构造1.1.2、析构 ---> …

nodejs 跳蚤市场网站-计算机毕设 附源码83381

nodejs 跳蚤市场网站 目 录 摘要 1 绪论 1.1选题背景与意义 1.2国内外发展情况 1.3node.js主要功能 1.4node.js功能模块 1.5论文结构与章节安排 2跳蚤市场网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 …

django公交线路查询系统-计算机毕设 附源码85021

django公交线路查询系统 摘 要 本论文主要论述了如何使用django框架开发一个公交线路查询系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述该系统的当前背景以及系统开发的目的&…

售后商品破损回复话术

想必客服们最关注且最头疼的问题便是售后问题了吧&#xff0c;特别是一些商品破损类的问题&#xff0c;是客服们最不想面对的问题之一了&#xff0c;为此小编整理了一份商品破损回复话术提供给大家&#xff0c;希望能对大家有所帮助哦~ 一、询问与核实 1.对不起&#xff0c;由…