概述
该紫外线传感器是一款先进的紫外(UVA/UVB)光传感器,利用可见光和红外噪声补偿以及余弦的聚四氟乙烯扩散器角度响应校正,每通道16位分辨率,能够精确检测出UVA和UVB强度,能够测出紫外线指数和紫外线强度。VEML6075紫外线传感器提供出色的温度补偿,在长时间的曝晒下,仍然能测量正确的数据。 这款紫外线传感器适用于3.3V或5V电源,采用I2C接口协议,能够与任何支持I2C的微控制器配合使用。我们提供了Arduino和Python的示例代码和库,可以用在arduino和树莓派上。同时提供Gravity接口和Gravity接口的排线,可以在不焊接的情况下直接使用它。
主要用途
紫外线测试仪、户外紫外线检测设备、杀菌灯设备
技术规格
- 工作电压:3.3V~5V
- 工作电流:700uA
- 关断模式:10uA
- UV芯片:VEML6075
- 输出类型:数字量输出
- 响应波长:UVB的带宽(λ0.5)在约315nm至340nm范围内,UVA通道的带宽(λ0.5)在约350nm至375nm范围�
- 接口:PH2.0-4P
- 使用I2C地址:0x10
- 产品尺寸:22mm×30mm
- 安装孔尺寸:3mm
- 安装孔间距:15mm
- 工作温度:-40℃~+85℃
⚠
注意:实际使用中对准光源照射方向,否则测量结果不准确。
引脚说明
紫外线传感器管脚定义
标号 | 名称 | 功能描述 |
---|---|---|
1 | SDA | I2C数据输入引脚,连接到微控制器I2C数据线 |
2 | SCL | I2C时钟输入引脚,连接到微控制器I2C时钟线 |
3 | GND | 电源负 |
4 | VCC | DC 3.3V~5.5V |
在Arduino上使用
与Arduino连接
以连接Arduino UNO主板为例,如下图,连接模块与UNO主板(通过I2C接口)。
- 传感器VCC引脚接到微控制器板的电源引脚(3.3V或5V)。
- 传感器GND引脚连接到公共电源/数据地。
- 传感器SCL引脚连接到Arduino上的I2C时钟引脚。在UNO&328的Arduino上,为引脚A5。
- 传感器SDA引脚连接到Arduino上的I2C数据SDA引脚。在UNO&328的Arduino上,为引脚A4。
运行Arduino示例代码
点击下载DFRobot_VEML6075库文件,如何安装库?
/*!
* @file VEML6075ConfigTest.ino
* @brief simple test for VEML6075
* @n Print UVA index, UVB index and UV index on the serial monitor
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [xiaowo] (jiehan.guo@dfrobot.com)
* @maintainer [Fary](feng.yang@dfrobot.com)
* @version V1.0
* @date 2021-10-18
* @url https://github.com/DFRobot/DFRobot_VEML6075
*/
#include <Wire.h>
#include <DFRobot_VEML6075.h>
#define VEML6075_ADDR 0x10
DFRobot_VEML6075_IIC VEML6075(&Wire, VEML6075_ADDR); // create object
void setup()
{
Serial.begin(115200);
delay(2000);
while(!Serial);
Serial.println();
while(VEML6075.begin() != true) {
Serial.println("VEML6075 begin faild");
delay(2000);
}
Serial.println("VEML6075 begin successed");
}
void loop()
{
uint16_t UvaRaw = VEML6075.readUvaRaw(); // read UVA raw
uint16_t UvbRaw = VEML6075.readUvbRaw(); // read UVB raw
uint16_t comp1Raw = VEML6075.readUvComp1Raw(); // read COMP1 raw
uint16_t comp2Raw = VEML6075.readUvComp2Raw(); // read COMP2 raw
float Uva = VEML6075.getUva(); // get UVA
float Uvb = VEML6075.getUvb(); // get UVB
float Uvi = VEML6075.getUvi(Uva, Uvb); // get UV index
Serial.println();
Serial.println("======== start print ========");
Serial.print("UVA raw: ");
Serial.println(UvaRaw);
Serial.print("UVB raw: ");
Serial.println(UvbRaw);
Serial.print("COMP1 raw: ");
Serial.println(comp1Raw);
Serial.print("COMP2 raw: ");
Serial.println(comp2Raw);
Serial.print("UVA: ");
Serial.println(Uva, 2);
Serial.print("UVB: ");
Serial.println(Uvb, 2);
Serial.print("UVIndex: ");
Serial.print(Uvi, 2);
if(Uvi < UVI_LOW)
Serial.println(" UVI low");
else if(Uvi < UVI_MODERATE)
Serial.println(" UVI moderate");
else if(Uvi < UVI_HIGH)
Serial.println(" UVI high");
else if(Uvi < UVI_VERY_HIGH)
Serial.println(" UVI very high");
else
Serial.println(" UVI extreme");
Serial.print("mw/cm^2: ");
Serial.println(Uvi2mwpcm2(Uvi), 2);
Serial.println("======== end print ========");
delay(1000);
}
串口查看
将紫外线传感器正对紫外线光源,然后打开Arduino软件的串口监视器,波特率为115200。
在树莓派上使用
与树莓派连接
这里以树莓派3B+为例,按照下图连接。
- 传感器VCC引脚连树莓派3V3
- 传感器GND引脚连树莓派GND
- 传感器SCL引脚连树莓派SCL,BCM编码方式的P3引脚(即物理引脚5)
- 传感器SDA引脚连树莓派SDA,BCM编码方式的P2引脚(即物理引脚3)
运行树莓派示例代码
点击下载DFRobot_VEML6075库文件到你的树莓派中,然后确保你已成功打开树莓派的I2C接口。 参照下面的命令运行DFRobot_VEML6075_demo.py示例。
进入树莓派示例所在的目录
cd /DFRobot_VEML6075-master/python/raspberry/examples
运行树莓派示例程序
python DFRobot_VEML6075_demo.py
DFRobot_VEML6075_demo.py示例内容如下。
# -*- coding: utf-8 -*-
'''!
@file DFRobot_VEML6075_demo.py
@brief normal test for VEML6075
@n UVA index, UVB index and UV index will print on terminal
@copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
@license The MIT License (MIT)
@maintainer [Fary](feng.yang@dfrobot.com)
@version V1.0
@date 2021-10-18
@url https://github.com/DFRobot/DFRobot_VEML6075
'''
import time
import sys
sys.path.append("..")
from DFRobot_VEML6075 import DFRobot_VEML6075
if __name__ == '__main__':
VEML6075 = DFRobot_VEML6075(1, 0x10) # use i2c bus 1, module address is 0x10
while VEML6075.begin() != True:
print("VEML6075 begin faild")
time.sleep(2)
print("VEML6075 begin succeed")
while True:
Uva = VEML6075.get_uva() # get UVA
Uvb = VEML6075.get_uvb() # get UVB
Uvi = VEML6075.get_uvi(Uva, Uvb) # get UVI
print("")
print("======== start print ========")
print("UVA: %.2f" %(Uva))
print("UVB: %.2f" %(Uvb))
print("UVI: %.2f" %(Uvi))
print("mw/cm^2: %.2f" %(VEML6075.uvi2mwpcm2(Uvi)))
print("======== end print =========")
time.sleep(1)
在树莓派上读取到的紫外线指数和紫外线强度。