在这个树莓派紫外线传感器项目中,我们将引导您完成将 VEML6075 紫外线 (UV) 传感器连接到树莓派的过程。
除了将紫外线传感器连接到树莓派上,我们还将向您展示如何利用 Python 编程语言与传感器进行交互。
为了使整个教程正常工作,我们将使用 Adafruit 的 VEML6075 库。该库通过进行所有必要的计算以计算出 UV 指数并从 UV 传感器读取 UVA 和 UVB 值来处理大部分艰巨的工作。
VEML6075 紫外线传感器是一种双波段传感器,可同时感测 UVA (紫外线 A / 长波) 和 UVB (紫外线 B / 短波) 光带。
关于该传感器的最好的事情之一是它通过 I2C 串行协议提供数据,使其与之交互非常简单。
您可以将此传感器与许多 [树莓派一起使用的其他传感器] 捆绑在一起 (/categories/raspberry-pi-sensors/)。例如,使用各种传感器,您可以构建自己的气象站。
设备
以下是使用树莓派设置 VEML6075 紫外线传感器可能需要的设备列表。
推荐的
树莓派
8GB SD 卡或 * Micro SD 卡 树莓派 2、 3 或 B +
面包板线
VEML6075 紫外线传感器
可选的
面包板
树莓派外壳
树莓派 VEML6075 紫外线传感器设置
在本节中,我们将向您展示将 VEML6075 紫外线传感器连接到树莓派的过程。
由于 VEML6075 紫外线传感器是数字传感器,我们可以直接从树莓派与之交互,而不必依赖其他硬件,例如模拟到数字转换器 (ADC)。
请遵循下面的书面指南,了解将 VEML6075 连接到树莓派的所有步骤。
您可以按照图表或使用我们的书面步骤来制作 VEML6075 的电线连接至树莓派 GPIO 引脚。
将 VEML6075 紫外线传感器的 ** VIN 引脚连接到树莓派上的物理引脚 1 ( 3v3 **)。
将 VEML6075 紫外线传感器的 GND 引脚连接到树莓派上的物理引脚 6 ( GND )。
* 将 VEML6075 紫外线传感器的 ** SDA 引脚连接到树莓派上的物理引脚 3 ( SDA **)。
* 将 VEML6075 紫外线传感器的 SCL 引脚连接到树莓派上的物理引脚 5 ( SCL **)。
为 VEML6075 紫外线传感器设置树莓派
1 在开始与树莓派上的 VEML6075 紫外线传感器进行交互之前,我们需要首先做一些事情。
我们需要做的第一件事是确保我们的软件包列表和所有已安装的软件包都处于最新可用版本。
我们可以通过运行以下命令来检查和更新。
sudo apt-get update
sudo apt-get upgrade
2 树莓派完成更新后,您可以继续为 Pi 的串行接口打开 I2C 模式。
我们可以通过使用以下命令启动树莓派配置工具来实现。
sudo raspi-config
3 在此工具中,继续并选择”** 5 接口选项 **” 选项。
使用箭头键和 ENTER 键浏览 raspi -config 工具菜单。
4 在接口选项菜单中,继续并选择”** P5 I2C **” 选项。
当询问您是否要启用 ARM I2C 接口时,选择”** <是> **”。
5 除非重新启动树莓派,否则启用 I2C 不会生效。您可以通过运行以下命令来重新启动树莓派。
sudo reboot
6 现在在树莓派上启用了 I2C 协议,我们现在可以继续安装我们将依赖的软件包。
通过运行以下命令来安装我们需要的各种 Python 软件包。
sudo apt-get install python3-dev python3-pip python3-smbus i2c-tools -y
7 现在已经安装了所有必需的软件包,我们可以使用”** i2cdetect **” 程序查看树莓派是否可以检测到我们的 VEML6075 紫外线传感器。
我们可以通过运行以下命令来使用 i2cdetect 程序。
sudo i2cdetect -y 1该命令将输出相当多的信息,许多结果都用连字符标记。在此结果中,您应该看到一个数字,例如"** 10 **"。
如果结果中仅出现连字符,则表示树莓派无法检测到您的 UV 传感器,请检查所有接线,然后尝试重新运行命令。
如果看到错误,请尝试重新启用 I2C 。
编写脚本以与 VEML6075 紫外线传感器对话
1 现在,我们已经为树莓派做好了充分的准备,使其能够与 VEML6075 紫外线传感器进行交互,我们可以继续将所有内容组合在一起。
为了快速从 VEML6075 紫外线传感器读取数据,我们将使用 Adafruit VEML6076 CircuitPython 库。我们可以通过运行以下命令来安装此库。
sudo pip3安装 adafruit 电路 python -VEML6075
2 现在我们已经安装了库,现在可以继续编写脚本了。该脚本利用该库基于传感器的读数来计算紫外线指数。
通过运行以下命令开始写入此文件。
vim 〜/uvsensor.py
3 在此新的紫外线传感器脚本中,继续并输入以下代码行。
导入时间
进口板
进口业务
进口 adafruit _veml6075
在本部分中,我们将导入树莓派紫外线传感器脚本将依赖的所有库。
我们导入”** time “库,以便我们可以使用” sleep ()**” 函数使脚本进入一定时间的休眠状态。
接下来,我们导入”** board **” 库。该库来自 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 **” 是您希望传感器花费在收集样品上的时间,积分时间越长,传感器读数将越准确。
而 True :
打印(veml.uv_index)
time.sleep(1)
现在,我们使用”** while True:**” 运行无限循环。
在这个无限循环中,我们通过访问”** veml “对象的” uv \ _index **” 变量来打印出 UV 索引值。
当我们访问”** uv \ _index **” 变量时,VEML6075 库从 UV 传感器获取读数,并根据传感器的 UVA 和 UVB 读数计算 UV 指数。
最后,我们使用”** time “库的” sleep ()**” 功能将脚本睡眠一秒钟。
4 一旦将所有代码输入到文件中,它应该看起来像我们下面显示的那样。
导入时间
进口板
进口业务
进口 adafruit _veml6075
i2c = busio.I2C(board.SCL,board.SDA)
veml = adafruit_veml6075.VEML6075(i2c,integration_time = 100)
而 True :
打印(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
此时,您现在应该已经启动树莓派 UV 传感器并成功运行。
现在,您应该了解如何将 VEML6075 传感器连接到树莓派,以及如何从传感器读取数据并进行解释。
我们有很多其他电子项目,您应该检查一下是否喜欢这一项目。另外,