如何感知紫外线强度,树莓派使用VEML6075 UV传感器模块

在这个Raspberry Pi UV传感器模块的项目中,详细记录了如何树莓派控制VEML6075紫外线(UV)传感器的所有步骤。

Raspberry-Pi-UV-Sensor-using-the-VEML6075-Thumbnail.jpg

除了将UV传感器连接到树莓派上,还展示了如何利用Python与传感器进行交互。

为了使过程更简单,我使用了Adafruit的VEML6075库。这个库帮会解决掉大部分的繁琐工作,可以计算出紫外线指数,并从紫外线传感器中读取UVA和UVB值。

VEML6075 UV传感器是一款双波段传感器,可同时感应UVA(紫外线A/长波)和UVB(紫外线B/短波)光波段。

这款传感器最赞的地方是它通过I2C串行协议提供数据,使得与之交互非常简单。

你可以将这个传感器与许多其他与树莓派工作的传感器协调在一起工作。例如,可以建立自己的气象站。

设备清单

以下是需要的设备列表,点击链接可直达特别优惠购买。

建议

可选

VEML6075 UV传感器设置

在本节中,我将展示如何将VEML6075 UV传感器连接到树莓派。

由于VEML6075 UV传感器是一个数字传感器,可以直接用Raspberry Pi与它进行交互,而不必依赖额外的硬件,如模数转换器(ADC)。

请跟随下面的指南,了解将VEML6075连接到Raspberry Pi的所有步骤。

可以按照图示或利用我的书面步骤来了解VEML6075的哪些线与树莓派的GPIO引脚相连。

  • 将VEML6075 UV传感器的VIN引脚连接到Raspberry Pi的物理引脚1(3v3)。
  • 将VEML6075 UV传感器的GND引脚连接到Raspberry Pi的物理引脚6(GND)。
  • 将VEML6075 UV传感器的SDA引脚连接到树莓派的物理引脚3(SDA)上。
  • 将VEML6075 UV传感器的SCL引脚连接到Raspberry Pi上的物理引脚5(SCL)。

Raspberry-Pi-VEML6075-UV-Sensor-Wiring-Schematic.png

 

配置Raspberry Pi

1. 在开始与树莓Pi上的VEML6075 UV传感器进行交互之前,必须先做几件事。

首先,需要做的是确保我们的软件包列表和所有安装的软件包都是最新的可用版本。

可以通过运行以下命令进行检查和更新。

sudo apt-get update
sudo apt-get upgrade

2. 当Raspberry Pi完成更新后,就可以打开Pi的串行接口的I2C模式。

可以通过以下命令启动Raspberry Pi配置工具来实现。

sudo raspi-config

3. 在该工具中,继续选择 “5 Interfacing Options“。

使用方向键和 ENTER 键导航 raspi 配置工具菜单。

4. 在接口选项菜单中,选择 “P5 I2C “选项。

当被问及是否要启用ARM I2C接口时,选择”<YES>”。

5. 在重新启动Raspberry Pi之前,启用I2C不会生效。可以通过运行以下命令重新启动Raspberry Pi。

sudo reboot

6. 现在在Raspberry Pi上启用了I2C协议,我们现在可以继续安装我们将依赖的软件包。

通过运行下面的命令安装我们需要的各种Python包。

sudo apt-get install python3-dev python3-pip python3-smbus i2c-tools -y

7. 现在所有需要的包都安装好了,可以使用 “i2cdetect “程序来查看Raspberry Pi是否能检测到我们的VEML6075 UV传感器。

可以通过运行以下命令来使用i2cdetect程序。

sudo i2cdetect -y 1

这个命令会输出相当多的信息,许多结果都用连字符标记。在这个结果中,应该看到一个数字,如 “10”。

如果结果中只出现了连字符,这意味着Raspberry Pi无法检测到你的UV传感器,请检查所有的布线,然后尝试重新运行命令。

如果你看到一个错误,请再次尝试重新启用I2C。

编写脚本与VEML6075 UV传感器交互

1. 现在,已经充分准备好了树莓派,以便能够与VEML6075 UV传感器进行交互,可以继续将所有的东西放在一起。

为了快速读取VEML6075 UV传感器的数据,我们将利用Adafruit VEML6076 CircuitPython库。可以通过运行下面的命令来安装这个库。

sudo pip3 install adafruit-circuitpython-VEML6075

2. 2. 现在我们已经安装了该库,现在可以着手编写一个脚本。该脚本利用该库根据传感器的读数计算紫外线指数。

通过运行以下命令开始写入这个文件。

nano ~/uvsensor.py

3. 在这个新的UV传感器脚本中输入以下几行代码。

import time
import board
import busio
import adafruit_veml6075

在本节中,导入Raspberry Pi紫外线传感器脚本将依赖的所有库。

导入 “time “库,这样就可以使用 “sleep() “函数让脚本在一定时间内进入睡眠状态。

接下来,导入 “板 “库。这个库来自Adafruit的CircuitPython集合,利用它可以很容易地获得当前电路板的正确引脚号。

“busio “库是Adafruit CircuitPython的另一个库。这个库被用作处理串行连接的标准方式。在本指南中,我们将使用它来设置一个I2C连接,我们将把它传递到VEML6075库中。

最后,用 “adafruit_veml6075 “库。这个库是用来读取UV传感器的所有数值,并计算UV指数等数值。

i2c = busio.I2C(board.SCL, board.SDA)

这一行利用它的 “I2C() “函数实例化 “busio “对象。这个函数设置自己与我们传入它的两个引脚连接,这些引脚就是 “board.SCL “和 “board.SDA”。

veml = adafruit_veml6075.VEML6075(i2c, integration_time=100)

接下来,将veml6075库实例化到我们的 “veml “对象中。在构造函数中,将上一行设置的 “i2c “对象以及 “integration_time “的值传入。

“integration_time “是指你希望传感器收集样品的时间,集成时间越长,传感器的读数就越准确。

while True:
    print(veml.uv_index)
    time.sleep(1)

现在使用 “while True: “来运行一个无限循环。

在这个无限循环中,通过访问 “veml “对象的 “uv_index “变量来打印出UV索引值。

当访问 “uv_index “变量时,VEML6075库会从紫外传感器中获取一个读数,并根据传感器的UVA和UVB读数计算出紫外指数。

最后,使用 “time “库中的 “sleep() “功能让脚本睡眠1秒。

4. 一旦你把所有的代码输入到文件中,它应该像我们下面显示的那样。

import time
import board
import busio
import adafruit_veml6075

i2c = busio.I2C(board.SCL, board.SDA)

veml = adafruit_veml6075.VEML6075(i2c, integration_time=100)

while True:
    print(veml.uv_index)
    time.sleep(1)

现在可以按CTRL + X,然后按Y,再按ENTER键保存文件。

5. 现在继续运行以下命令来测试我们的 “uvsensor.py “脚本。

python3 ~/uvsensor.py

6. 您应该立即开始看到VEML6075紫外线传感器读取的紫外线指数。

下面以我的UV传感器的结果为例。由于我是在室内使用的,所以我使用了紫外线手电筒来增强效果(室内灯光会给出很低的结果,几乎为零或负值)。

0.026104000000000002
0.018564999999999998
0.012321499999999999
0.015808500000000003
0.026104000000000002
0.054912825000000005
0.09654692999999999
0.06701715
0.08051291
0.12981893
0.12611369

你现在应该有了你的Raspberry Pi UV传感器,并成功地跑起来了。

您现在应该了解VEML6075传感器是如何连接到树莓派的,以及如何从传感器读取数据并理解这些数据。

这里还有很多其他的电子项目,如果你喜欢这个项目,你应该去看看。另外,如果你有任何反馈,那么请不要犹豫,在下面留言。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 如何感知紫外线强度,树莓派使用VEML6075 UV传感器模块

赞 (0)

评论

8+1=