随着科技的发展,测光表不再那么神秘,从一些家居装饰店到网络平台上基本都可以买到。本文将介绍一个开源测光表的制作。如果觉得购买成品价格不能接受,那我们为什么不自己尝试造一个呢?下面具体介绍基于arduino的测光表,它可以在数字环境光传感器的帮助下测量光的强度,核心是来自rohm的bh1750fvi。
光传感器模块
在网上有很多不同类型的bh1750fvi模块,它们最核心部分是都是一样的。本文采用的是来自taobao的gy-30光强度模块,它也是基于bh1750fvi数字环境光传感器的,模块内置了16位adc,因此它不需要复杂的数学运算就可以直接输出数字信号,模块采用i2c接口,直接输出lux数据(光强度的单位是流明lx)。除了光传感器之外,模块上还集成了低电压调节器和逻辑转换器组件。模块支持3.3v~5v的直流供电。
如上图所示,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。这些东西在网上都很常见,而且价格也比较便宜。
arduino nano不占用空间,同时拥有足够的输入输出,并且它还包含了一个用于简单编程的usb接口!
0.96英寸的i2c接口oled显示器,黄蓝色字符,分辨率128 x 64.
电路连接图
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 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;
}
Wi-Fi 6凭什么成为企业的最佳选择
瑞萨电子证实六家工厂停产
Proteus与ICCAVR联调
华为nova 5z正式上架搭载麒麟810处理器和后置4800万像素AI四摄
【迅为资料上新】iTOP-3568开发板指南手册!
基于Arduino实现的测光表设计方案
SiC414应用电路
织物透湿量仪的自身特点是什么
SD-Branch是什么?有什么优势?
尼得科传动技术推出使用了精密控制用减速机“FLEXWAVE”的超扁平执行器
【节能学院】霍尔电流传感器在UPS蓄电池浮充电流远程监测方案的应用
电力系统中量子通信的应用
IIC总线学习笔记
康宁与低损耗光纤的发明
6620系列的特点优势及在地铁信息发布系统中应用介绍
绝缘微欧万用表METRAHIT IM在宝马工厂的应用
国内原型验证市占第一,思尔芯发布硬件仿真系统,提速数字EDA全流程
工业智能网关助力MES系统与PLC实时通信
RFID智能仓储主要有什么益处
设计HSD连接器要考虑的几大因素