×

智能紫外线计(紫外线辐射监测)开源分享

消耗积分:0 | 格式:zip | 大小:0.20 MB | 2022-10-18

陈存楼

分享资料个

描述

介绍

多年来,人们越来越担心对地球平流层臭氧层的人为破坏将导致到达地球表面的太阳紫外线 (UV) 辐射增加,从而对人类健康产生不利影响。与紫外线相关的疾病,尤其是皮肤癌,正在给世界各地的公众福祉带来问题,并导致高昂且不断增加的医疗保健成本。臭氧消耗和气候变化正在加剧这种情况,温度变化和越来越多的晴天,不仅导致热浪和干旱,而且还使人类暴露在更高水平的太阳紫外线辐射下。患皮肤癌的风险正在增加。

该解决方案实施了一个紫外线辐射暴露监测系统,以通过警告信息和有关监测的暴露水平的预防措施来帮助预防因过度暴露于太阳紫外线辐射而引起的疾病。

它可以作为远程传感器单元或个人剂量计,连续测量紫外线指数和其他环境参数(湿度、温度),这些参数也可能影响/增强紫外线辐射的有害影响。它可以计算监控区域内个人或佩戴者的实际个人风险。所得数据可用于发布预防措施的分类建议信息(例如,涂抹防晒霜、穿防护服、限制暴露时间等)。

连接到适当传感器(紫外线辐射、温度、湿度等)的 Wio 终端可用于收集和处理相关环境数据。该显示器可用于向用户显示汇总数据、风险分析和保护建议。此外,可以将获得和聚合的数据传输(例如,通过 Wi-Fi、LoRaWAN 等)到边缘网关设备或云服务,以进行长时间的数据记录、评估和可视化。

这个项目描述了一个简单的原型

  • 测量和可视化紫外线辐射、温度、湿度、
  • 计算并显示从测量得出的实际风险类别,并
  • 通过 Wi-Fi 或 LoRaWAN 将收集的数据上传到物联网云平台(例如,ThingSpeak 或 Ubidots)。

基于此原型的廉价设备,通过适当的外壳、电池和太阳能供电,可以放置在公共场所(例如城市、酒店、海滩),以告知人们当地暴露于紫外线辐射的风险,并为网络收集更多数据基于公共预警系统和/或环境研究。

材料清单

硬件

Seeed Studio Wio 终端

pYYBAGNOJSqAMHnhAAIIPWita6I437.jpg
Seeed Studio Wio 终端
 

Wio Terminal 是一款基于 SAMD51 的微控制器,具有由 Realtek RTL8720DN 提供支持的无线连接功能,与 Arduino 和 MicroPython 兼容。目前,只有 Arduino 支持无线连接。它运行在 120MHz(加速到 200MHz)、4MB 外部闪存和 192KB RAM。它支持蓝牙和 Wi-Fi,为物联网项目提供骨干。Wio 终端本身配备了 2.4 英寸 LCD 屏幕、板载 IMU(LIS3DHTR)、麦克风、蜂鸣器、microSD 卡插槽、光传感器和红外发射器(IR 940nm)。最重要的是,它还有两个用于 Grove 生态系统的多功能 Grove 端口和 40 个 Raspberry pi 兼容引脚 GPIO,用于更多附加组件。

特征:

  • 高度集成设计:MCU、LCD、WIFI、BT、IMU、麦克风、扬声器、microSD 卡、光传感器、5 路开关、红外发射器(IR 940nm)、加密认证就绪
  • 由 Microchip ATSAMD51P19 供电:ARM Cortex-M4F 内核运行在 120MHz(加速至 200MHz)和 4 MB 外部闪存、192 KB RAM
  • 全面的协议支持:SPI、I2C、I2S、ADC、DAC、PWM、UART(串行)
  • 由 Realtek RTL8720DN 提供支持的强大无线连接(仅由 Arduino 支持):双频 2.4Ghz / 5Ghz Wi-Fi (802.11 a/b/g/n) 和 BLE / BLE 5.0
  • USB OTG 支持:USB 主机/USB 客户端
  • 格罗夫生态系统
  • 软件支持:Arduino、MicroPython、ArduPy 和 AT 固件

有关详细信息,请参阅“ Wio Terminal 入门”指南。

Grove - I2C 紫外线传感器 (VEML6070)

poYBAGNOJS2AY5wIAALPto61kJE176.jpg
Grove - I2C 紫外线传感器(VEML6070)
 

Grove - I2C 紫外线传感器 (VEML6070) 是一款具有 I2C 协议接口的高级紫外线 (UV) 光传感器。紫外线 (UV) 是波长在 10 nm 到 400 nm 之间的电磁辐射,比可见光短但比 X 射线长,该传感器最有效地检测 320-410nm 光,并将太阳紫外光强度转换为数字数据. 有关更多详细信息,请参阅 wiki 文章“ Grove - I2C UV 传感器 (VEML6070)”

BME280

BME280是博世专为移动应用和可穿戴设备开发的集成环境传感器,可测量湿度、压力和温度,提供全面和整体的环境测量。

pYYBAGNOJTCABQTJAAG-1toE0wg281.jpg
BME280 传感器分线板
 

将此传感器与 Wio 终端一起使用的一个简单选择是 Grove - Temp&Humi&Barometer Sensor (BME280)(请参阅 wiki 文章“ Grove - Barometer Sensor(BME280)”以获得更多详细信息)。对于这个项目原型,使用了另一个带有 Grove 到母跳线电缆的分线板。

格罗夫-Wio-E5

Wio-E5是由Seeed Technology Co., Ltd.设计的低成本、超低功耗、极紧凑、高性能的LoRaWAN®模块。它包含ST系统级封装芯片STM32WLE5JC,这是全球首个SoC集成了 LoRa® RF 和 MCU 芯片的组合。该模块还嵌入了ARM Cortex M4超低功耗MCU和LoRa® SX126X,因此支持(G)FSK模式和LoRa®。LoRa®模式可使用62.5kHz、125kHz、250kHz和500kHz带宽,适用于各种物联网节点的设计,支持EU868和US915。

Grove Wio-E5 板配备了 Grove 连接器。

poYBAGNOJTSATkGoAAOEh3b3EqI989.jpg
格鲁夫 Wio-E5
 

有关更多详细信息,请参阅Grove Wio-E5板和Wio-E5 STM32WLE5JC 模块的 Seed wiki 条目

软件/库/服务

Wio 终端的 LvGL 图形库

LvGL(Light and Versatile Graphics Library)是一个开源图形库,提供创建嵌入式 GUI 所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。有关如何将 LvGL 用于 Wio 终端的说明,请参阅本指南。

Disk91 - LoRaE5 库

这个Arduino 库使 LoRa-E5 开发变得更加容易。

物语

" ThingSpeak是一种物联网分析平台服务,可让您聚合、可视化和分析云中的实时数据流。ThingSpeak 提供由您的设备发布到 ThingSpeak 的数据的即时可视化。借助在 ThingSpeak 中执行 MATLAB® 代码的能力,您可以执行在线分析和处理传入的数据。ThingSpeak 通常用于需要分析的物联网系统的原型设计和概念验证。”

Helium是一个全球分布式热点网络,可为支持LoRaWAN的物联网设备创建公共的远程无线覆盖。热点产生并以 Helium 区块链的本地加密货币 HNT 进行补偿。Helium 区块链是一个新的、开放的来源,公共区块链的创建完全是为了激励物理、去中心化无线网络的创建。今天,Helium 区块链及其数十万个热点提供了对世界上最大的 LoRaWAN 网络的访问。

Helium 控制台是由 Helium 基金会托管基于 Web 的设备管理工具,允许开发人员在 Helium 网络上注册、验证和管理他们的设备。除了设备管理之外,Console 还提供名为 Integrations 的预建连接,以通过 HTTPs 或 MQTT 路由设备数据;或直接连接到 AWS IoT 等云服务。

Console 可在console.helium.com作为免费使用的托管应用程序用于演示和教育目的(最多 10 台设备) 。"

育碧点

Ubidots是一个物联网应用程序开发平台,它可以自动化物联网应用程序的创建过程,允许开发人员快速组装和启动这些应用程序,而无需编写代码或软件开发。注册是免费的,Ubidots 提供免费计划 - Ubidots STEM - 功能和容量有限,仅用于非商业用途(个人教育、物联网研究或 DIY 项目)。

Ubidots 和 Helium 合作创建了一个预构建的集成,允许用户使用插件轻松地将传感器数据从 Helium 控制台转发到 Ubidots。

附加组件

  • 电线

先决条件

为了实施该项目,需要满足以下先决条件:

  • 上面列出的所有硬件组件都可用且随时可用。(只有在使用 LoRa/LoRaWAN 遥测时才需要 Grove Wio-5。)
  • Arduino IDE已按照此处所述为 Wio 终端安装配置
  • 上面列出的所有库都已添加到 Arduino IDE(S ketch -> Include Library -> Manage Libraries / Add.ZIP Library
  • 要使用的所有服务的用户帐户都可用或已创建。

执行

接线

对于 Grove 传感器板,只需将两个传感器(通过集线器)连接到 Wio 终端上的 Grove I2C 端口,对于其他传感器板,相应地连接 VIN、GND、SCL 和 SDA:

poYBAGNOJTeAOh3KAABxVRiv_AQ456.png
接线
 
poYBAGNOJTqANEoeAAXKypJhIjk291.jpg
接线
 

紫外线指数和风险等级

紫外线(UV)“光”是一种电磁辐射形式,波长从 200 nm 到 400 nm,比可见光(400 nm 到 750 nm)短,但比 X 射线长。紫外线辐射存在于阳光中,约占太阳总电磁辐射输出的 10%。短波紫外线会破坏 DNA 并对其接触的表面进行消毒。对于人类来说,晒黑和晒伤是皮肤暴露在紫外线下的常见影响,同时还会增加患皮肤癌的风险。紫外线辐射分为三个波长波段:

  • UVA (315-400 纳米)
  • UVB (280-315 纳米)
  • 紫外线(100-280 纳米)。

通过臭氧层吸收地球大气,UVC光谱被完全阻挡,UVB光谱中的太阳辐射几乎没有到达地球表面。危险性较低的 UVA 辐射被大气吸收的程度要低得多。UVA 辐射不如 UVB 辐射强,但穿透力强。它可以到达皮肤并导致光老化和不同形式皮肤癌的发生

紫外线辐射强度以每平方厘米微瓦 (μW / cm²) 为单位。VEML6070 传感器测量光谱范围为 300 nm 至 400 nm 的辐射,因此它只能检测 UVA 辐射。

为了估计紫外线辐射背后的能量以及与之相关的风险水平,建立了紫外线指数。紫外线指数描述了地面红斑紫外线辐照度的预期每日峰值水平。

它是一个开放式线性标度 - 0 到 ≥ 11,给出了紫外线辐照度的指导值。紫外线指数越高,紫外线辐照度就越高,当皮肤没有受到保护时,晒伤的速度就越快/越严重。

紫外线指数已由世界卫生组织定义,并且在全球范围内是统一的——例如,欧洲的紫外线指数为 7 意味着与非洲或北美的相同值完全相同。

pYYBAGNOJT2AHPnfAAFSta-wtqA074.png
紫外线指数刻度(来源:https://www.bfs.de/EN/topics/opt/uv/index/introduction/introduction_node.html)
 

由于直接从传感器测量的辐照度导出紫外线指数需要非常复杂的计算,根据曲线加权并在整个光谱上进行积分,Vishay Semiconductors的将 VEML6070 紫外线传感器设计到应用指南建议估算背后的能量只需从 VEML6070 传感器读取辐照度值并将其与预定义值进行比较,即可了解紫外线辐射及其相关风险等级。

这导致以下函数从 VEML6070 读数中得出紫外线指数和风险等级:

/*
 * uv_index()
 *
 * expects integration time and the measurement value from the UV sensor as input
 * and returns the corresponding risk level:
 * 0: Low
 * 1: Moderate
 * 2: High
 * 3: Very High
 * 4: Extreme
 */
unsigned short uv_index(veml6070_integrationtime_t it, unsigned uv, unsigned short *uvi)
{
  /*
  See https://www.vishay.com/docs/84310/designingveml6070.pdf , Table 3:
  Together with the RSET value of 270 kΩ and the integration time 1T,
  the parameters below map UV light data values to  UV index (risk level)
  and UVI values.
  */
  const unsigned uv_high_1t[4] = {560, 1120, 1494, 2054};
  const unsigned index_low[4] = {0, 3, 6, 8};
  const unsigned index_high[4] = {2, 5, 7, 10};

  unsigned k = 0;
  switch (it)
  {
  case VEML6070_HALF_T:
  case VEML6070_1_T:
    k = 1;
    break;
  case VEML6070_2_T:
    k = 2;
    break;
  case VEML6070_4_T:
    k = 3;
    break;
  }

  *uvi = 11; // if above any range

  int i = 0;
  for (i = 0; i < 4; i++)
  {
    unsigned uv_high = uv_high_1t[i] * k;
    unsigned uv_low = i < 1 ? 0 : uv_high_1t[i - 1] * k + 1;

    if (uv <= uv_high)
    {
      double r = (double)(uv_high - uv) / (double)(uv_high - uv_low);    // relative in range (1-r)
      double d_uvi = index_high[i] - r * (index_high[i] - index_low[i]); // map to UVI range
      *uvi = round(d_uvi);
      break;
    }
  }

  return i;
}

图形用户界面

两个传感器获得的环境测量值

  • 温度
  • 湿度
  • 压力
  • 紫外线辐照度
  • 和估计的紫外线指数。显示为数值。

导出的风险级别显示为线表,相应地更改其背景颜色以匹配 UV 指数刻度的颜色,并将风险类别(低、中、高、非常高和极端)作为文本。

pYYBAGNOJUCASy--AAIafaT0lSk721.jpg
GUI 屏幕草稿
 

遥测

测量结果可以传输到云服务,用于收集、记录、可视化和/或进一步分析。

此项目中描述了两个示例选项:

  • 通过 Wi-Fi 进行通信并传输到 ThingSpeak 和
  • 通过 LoRaWAN 和 Helium 网络进行通信,以使用 Ubidots 可视化数据。

遥测选项 1:通过 Wi-Fi 进行的 ThingSpeak

在此示例中,测量值通过对 ThingSpeak API 的简单 HTTP GET 请求上传到 ThingSpeak 通道

GET https://api.thingspeak.com/update?api_key=key>&field1=&field2=&field3=&field4=index>

使用Write API Key通道。

由于使用了 Wio 终端的内置 Wi-Fi 功能,因此此选项不需要额外的硬件。Wi-Fi 与 Wio 终端的连接主题在相应的 Seed Wiki 页面中有详细描述

通过定义两个宏TELEMETRYTELEMETRY_WIFI_THINGSPEAKWioTerminalUvSmartMeter.ino中激活此选项

有关更多详细信息,请参阅代码部分中的源文件Telemetry_WiFi_ThingSpeak.inoThingSpeak 文档

 
 
 
pYYBAGNOJUOAN5SYAAEG4ayK_-g230.png
 
1 / 2ThingSpeak 频道示例
 

遥测选项 2:通过 LoRaWAN / Helium 的 Ubidots

要使用 LoRa/LoRaWAN 连接,必须将 Wio-E5 板连接到 Wio 终端:

poYBAGNOJUaACO-_AACcBXCJVgg382.png
使用 Wio-E5 接线,通过 LoRaWAN 进行遥测
 
pYYBAGNOJUuASyEwAAhax5yk3nw571.jpg
使用 Wio-E5 接线,通过 LoRaWAN 进行遥测
 

Telemetry_LoRaWAN_Helium.ino中的代码取自示例/教程,用于使用 Grove - Wio-E5发送从Wio 终端光传感器获得的数据。

要“激活”这个模块TELEMETRYTELEMETRY_LORAWAN_HELIUM必须在WioTerminalUvSmartMeter.ino 中定义两个宏:

/* TELEMETRY
*/
#define TELEMETRY 
#define TELEMETRY_LORAWAN_HELIUM 
#define TELEMETRY_REPORT_UVI_CHANGES_ONLY 
#define TELEMETRY_UPDATE_TIME 600

控制发送间隔的宏TELEMETRY_UPDATE_CYCLE应设置为合理的值(以秒为单位),以避免不必要地“烧毁”DC。如果只关注 UV 指数的变化,设置宏 TELEMETRY_REPORT_UVI_CHANGES_ONLY将导致模块停止发送数据,如果 UV 指数自上次传输以来没有改变。

此选项的网络和集成设置主要遵循Seed Studio wiki中的Helium Introduction the Connecting to Helium指南中的说明。

主要步骤是:

以下设备属性由 Helium 控制台自动生成,新设备已创建 -

  • 设备 EUI - 64 位终端设备标识符,有时称为制造商 EUI
  • App EUI - 64 位应用程序标识符
  • App Key - 128 位 AES 密钥,用于保护设备和网络之间的通信
poYBAGNOJVCAGbCYAADa2WCazks742.jpg
Helium 控制台 - 添加设备(示例 ID 和密钥)
 
#define Frequency DSKLORAE5_ZONE_EU868

char deveui[] = "6081F97A6178DA10";
char appeui[] = "6081F96DD5894DAA";
char appkey[] = "77D92AAE47B8B686B41707A3E9301CA3";

可以使用 Helium 控制台中的调试视图验证设备数据传输

pYYBAGNOJVOAOU2TAALXUDjXtZw597.png
氦气控制台 - 调试
 

与Telemetry_LoRaWAN_Helium.ino中实现的编码匹配的解码器函数可以定义如下:

function Decoder(bytes, port, uplink_info) {
    /*
      The uplink_info variable is an OPTIONAL third parameter that provides the following:
    
      uplink_info = {
        type: "join",
        uuid: ,
        id: ,
        name: ,
        dev_eui: ,
        app_eui: ,
        metadata: {...},
        fcnt: ,
        reported_at: ,
        port: ,
        devaddr: ,
        hotspots: {...},
        hold_time: 
      }
    */

    var decoded = {};

    function to_int(bytes) {
        value = bytes[0] * 256 + bytes[1];
        if (value >= 32768) {
            value = 32768 - value;
        }
        return value;
    }

    function to_float(bytes) {
        value = to_int(bytes) / 100.0;
        return value;
    }

    if (uplink_info && port == 8) {
        decoded.temperature = to_float(bytes.slice(0, 2));
        decoded.humidity = to_float(bytes.slice(2, 4));
        decoded.uv = to_int(bytes.slice(4, 6));
        decoded.index = to_int(bytes.slice(6, 8));
    }

    return decoded;
}
poYBAGNOJVaAa7gVAAFO1Rnri8M084.png
氦气控制台 - 功能
 

配置与 Helium Ubidots 插件的集成后

pYYBAGNOJVmAGKTjAAFw9swE6ZU857.jpg
氦气控制台 - 集成
 

并创建流程

poYBAGNOJVyAan-vAABqbxvr2kQ208.jpg
氦气控制台 - 流量
 

来自设备的数据

poYBAGNOJV-AaSMrAAFdpcSoJyk830.png
Ubidots - 设备
 

可以在 Ubidots 中使用以可视化仪表板中的传感器读数:

pYYBAGNOJWKAfmXbAAHwt4FOQQE221.png
Ubidots - 仪表板
 

测试

在一个阳光明媚(温暖)的周日下午进行了测试,设置为 RSET = 270 kΩ;IT = 4T。

pYYBAGNOJWiAUPHTAAjCTMpU6u4497.jpg
测试
 

在浏览器窗口中显示了由“辐射防护办公室”发布的附近(约 30 公里)气象站的官方读数(紫外线指数 3)。

pYYBAGNOJW2AQio-AAo00JKyJpU739.jpg
测试
 

设备上显示的紫外线指数在 3 和 4 之间变化:

poYBAGNOJXOAS11GAAeoUveeO7E568.jpg
测试
 

遥测选项 #2 的测试和演示,在室内使用紫外线灯(发射 UVA/UVB 光的裸露卤素灯泡,可调光):

 

能量消耗

在遥测选项 #2 的测试期间测量了功耗,如下所示:

  • 正常操作:118毫安
  • 传输期间(LoRa/氦气):138 mA
 
 
 
pYYBAGNOJXqAT9W_AAUkmLF3ePo564.jpg
 
1 / 2功耗(正常运行):118 mA
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !