0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino实现的测光表设计方案

科技观察员 来源:八色木 作者:八色木 2022-04-12 16:14 次阅读

随着科技的发展,测光表不再那么神秘,从一些家居装饰店到网络平台上基本都可以买到。本文将介绍一个开源测光表的制作。如果觉得购买成品价格不能接受,那我们为什么不自己尝试造一个呢?下面具体介绍基于Arduino的测光表,它可以在数字环境光传感器的帮助下测量光的强度,核心是来自ROHM的BH1750FVI。

光传感器模块

在网上有很多不同类型的BH1750FVI模块,它们最核心部分是都是一样的。本文采用的是来自taobao的GY-30光强度模块,它也是基于BH1750FVI数字环境光传感器的,模块内置了16位ADC,因此它不需要复杂的数学运算就可以直接输出数字信号,模块采用I2C接口,直接输出lux数据(光强度的单位是流明lx)。除了光传感器之外,模块上还集成了低电压调节器和逻辑转换器组件。模块支持3.3v~5V的直流供电

pYYBAGJVNKCAd6C3AAHEIgS--yw701.png

如上图所示,GY-30光强度传感器模块是一个5针模块,其中两个用于电源VCC和GND,两个用于I2C接口SCL和SDA,ADD用于设置传感器的I2C地址。当ADD悬空或将其连接到GND,此时I2C地址是0x23(默认值),如果将ADD连接到VCC,地址将是0x5C。

控制器和显示器

其它的硬件包含Arduino Nano 和0.96英寸的OLED显示器,它的分辨率为128 x 64。这些东西在网上都很常见,而且价格也比较便宜。

poYBAGJVNKaAIDtHAAPNaMZPjHs111.png

Arduino Nano不占用空间,同时拥有足够的输入输出,并且它还包含了一个用于简单编程的USB接口!

poYBAGJVNKuAJnaHAAL9gsLkhko849.png

0.96英寸的I2C接口OLED显示器,黄蓝色字符,分辨率128 x 64.

电路连接图

poYBAGJVNLCAJjcjAAL4ElKfURg995.png

Arduino光强度测试代码

按图完成硬件连接后,我们将进入软件部分,光强度测试代码比较简单,这里会用到著名的“u8glib library”来驱动OLED显示器。需要注意的是,我手头的OLED显示器只能使用默认的I2C地址,不能另外设置,默认I2C地址是0x3C。下面是测试代码:

/*
Arduino测光表测试代码:
1、BH1750 环境光传感器
2、Arduino Nano/Uno+
3、0.96″, 128×64, OLED (SSD1306) 显示器
*Lux (lx) 是国际光亮度标准单位,它定义是每平方米的流明度(lm/m2)
*/

#include // I2C Library
#include “U8glib.h”

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);
int BH17_add = 0x23; // I2C address of BH1750
byte buff[2];

void setup() {
Wire.begin();
BH750_Init(BH17_add);
delay(200);
}

void light() {
float valf = 0;
u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(0, 50);
if (BH1750_Read(BH17_add) == 2) {
valf = ((buff[0] << 8) | buff[1]) / 1.2;
if (valf < 0)u8g.print(“> 65535”);
else
u8g.setPrintPos(0, 20);
u8g.print(“www.Basemu.com”);
u8g.setPrintPos(0, 30);
u8g.print(“————–“);
u8g.setPrintPos(0, 40);
u8g.print(“Light Meter”);
u8g.setPrintPos(0, 60);
u8g.print((int)valf, DEC);
u8g.print(” LX/SI”);
}
delay(100);
}

void loop() {
u8g.firstPage();
do {
light();
} while (u8g.nextPage());
}

void BH750_Init(int address) {
Wire.beginTransmission(address);
Wire.write(0x10);
Wire.endTransmission();
}

byte BH1750_Read(int address) {
byte i = 0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);

while (Wire.available()) {
buff[i] = Wire.read();
i++;
}

Wire.endTransmission();
return i;
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Rohm
    +关注

    关注

    8

    文章

    370

    浏览量

    66029
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186951
  • BH1750FVI
    +关注

    关注

    1

    文章

    2

    浏览量

    3163
收藏 人收藏

    评论

    相关推荐

    2.4 设计方案评审 #硬声创作季 #Arduino

    Arduino
    jf_06209345
    发布于 :2022年08月20日 21:49:03

    笨人的创意,创意智能插座设计方案,绝对可实现

    发点不太高大上的东东,以下是我精心整理的智能插座设计方案,单片机领域竞争是在太厉害,撸主这样的小虾米只能从别的找找突破口,比如这个智能插座吧,别看它小,实用性可不小,这些方案都是我亲自试验过可以实现
    发表于 09-07 17:47

    WIFI无线技术各种热门设计方案~

    基于WiFi的无线测控系统设计与实现一种基于WIFI的室内定位系统设计与实现简述基于WIFI停车场方案阐述蓝牙与WIFI网络互联设计方案详述银行营业点WIFI认证管理技术
    发表于 12-13 15:26

    STM32设计方案与示例分享

    都是经典项目,建议下载学习STM32设计方案与示例分享 第一波stm32设计方案与示例分享第二波STM32计方案与示例分享 第三波STM32计方案与示例分享 第四波
    发表于 09-03 18:52

    基于STM32的设计方案(中)

    基于STM32的便携体检装置的设计与实现基于STM32的电能质量检测技术研究基于STM32的EMS液晶显示触摸屏设计方案STM32的曼彻斯特编译码系统设计STM32微控制器中采用DMA实现方波的产生和捕获
    发表于 09-05 16:41

    基于CH365和MCX314As实现的运动控制卡设计方案

    基于CH365和MCX314As运动控制器实现运动控制卡的设计方案
    发表于 01-07 07:28

    如何用FPGA实现DVB码流分析功能的嵌入式设计方案

    如何用FPGA实现DVB码流分析功能的嵌入式设计方案
    发表于 04-28 06:19

    微分曝光表电路

    微分曝光表电路
    发表于 02-13 12:21 934次阅读
    微分曝<b class='flag-5'>光表</b>电路

    并网逆变器的设计方案

    并网逆变器的设计方案并网逆变器的设计方案并网逆变器的设计方案
    发表于 01-11 14:04 22次下载

    基于Arduino单片机的跌倒报警系统设计方案

    本文接介绍了基于Arduino单片机的跌倒报警系统设计方案
    发表于 06-05 09:00 11次下载

    GOSSEN高森 测光表DIGISIX和DIGIFLASH 2

    装备。测光表延伸了手动调整摄像头对入射光测量的功能,对明暗对比鲜明的物体拍摄实现比较好的曝光。 集成的对比度测量表明,不受对比度影响,传感器和胶片能处理物体最暗和最亮部门之间的差异。DIGIFLASH 2具有
    发表于 04-15 15:04 1831次阅读

    GOSSEN测光表、曝光表的原理及测量方法介绍:测光表DIGISIX

    GOSSEN测光表、曝光表的原理及测量方法介绍:测光表DIGISIX 成功的摄影师用光创作摄影作品 光的相互作用会给摄影师带来灵感,也可能是失望,取决于摄影的现场状况。从本质上来说,摄影是在拍摄技术
    发表于 04-15 11:28 2767次阅读

    基于ROHM BH1750环境光传感器制作测光表过程

    在本教程中,我们将学习如何使用BH1750光传感器和Arduino制作一个简单的测光表
    的头像 发表于 04-27 15:55 3284次阅读
    基于ROHM BH1750环境光传感器制作测<b class='flag-5'>光表</b>过程

    GPIO模拟UART的算法实现设计方案

    GPIO模拟UART的算法实现设计方案
    发表于 07-07 09:49 9次下载

    使用Arduino的测光表

    电子发烧友网站提供《使用Arduino的测光表.zip》资料免费下载
    发表于 11-07 15:03 1次下载
    使用<b class='flag-5'>Arduino</b>的测<b class='flag-5'>光表</b>