(SKU:SEN0303)VEML6075 UV sensor module VEML6075紫外线传感器
来自DFRobot Product Wiki
目录 |
概述
该紫外线传感器是一款先进的紫外(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
- 使用IIC地址:0x10
- 产品尺寸:22mm×30mm
- 安装孔尺寸:3mm
- 安装孔间距:15mm
- 工作温度:-40℃~+85℃
注意:1、实际使用中对准光源照射方向,否则测量结果不准确。 |
引脚说明
|
|
在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 VEML6075SimpleTest.ino * simple test for VEML6075 * Print UVA index, UVB index and UV index on the serial monitor * * Copyright [DFRobot](http://www.dfrobot.com), 2018 * Copyright GNU Lesser General Public License * version V1.0 * date 2018-12-18 */ #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/raspberry/examples
运行树莓派示例程序
python DFRobot_VEML6075_demo.py
DFRobot_VEML6075_demo.py示例内容如下。
# -*- coding: utf-8 -*- ''' * file DFRobot_VEML6075_demo.py * normal test for VEML6075 * UVA index, UVB index and UV index will print on terminal * * Copyright [DFRobot](http://www.dfrobot.com), 2018 * Copyright GNU Lesser General Public License * version V1.0 * date 2018-12-18 ''' 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.getUva() # get UVA Uvb = VEML6075.getUvb() # get UVB Uvi = VEML6075.getUvi(Uva, Uvb) # get UVI print("") print("======== start print ========") print("UVA: %.2f" %(Uva)) print("UVB: %.2f" %(Uvb)) print("UVA: %.2f" %(Uvi)) print("mw/cm^2: %.2f" %(VEML6075.Uvi2mwpcm2(Uvi))) print("======== end print =========") time.sleep(1)
在树莓派上读取到的紫外线指数和紫外线强度。