0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino开发板和诺基亚5110 LCD显示屏的紫外线强度计案例

454398 来源:一板网 作者:风筝 2021-01-01 10:04 次阅读

紫外线(Ultraviolet rays),简称UV,是太阳发出的光线。由于臭氧层的消耗,这些射线趋于达到极高的限值,可能导致皮肤晒伤等。这就是为什么始终需要每天和每小时对紫外线指数进行预测,以帮助人们保持追踪和保持安全的原因。为了进行监控,为什么不拥有个人紫外线强度计?

在本篇文章中,我们将使用Arduino开发板和诺基亚5110 LCD显示屏以及紫外线传感器(UVM30A)来制作一款紫外线强度计。诺基亚5110用于显示紫外线强度指数,这个是国际标准单位,用于表示在特定位置和特定时间遇到的来自太阳的紫外线强度。

测量特定位置和特定时间的紫外线指数的目的是为了防止人们受到高紫外线指数射线所引起的危险,因为高紫外线射线可能会导致诸如晒伤等现象。它还可以用来指导人们,以便他们能够采取足够的保护措施,例如每天使用防晒霜、太阳镜、帽子等。试图将紫外线指数与适当的防护设备匹配的紫外线防护图如下所示:

pIYBAF_bF06APHxoAANKPlK4pYg037.png

从该图表可以看出,当紫外线水平极高时,建议留在室内,原因是紫外线指数室内大部分为零。这意味着在测试我们将要制造的设备时,应将其拿到外面,如下图所示,因为在室内测试时该值不会改变。

本文中将使用的UVM30A紫外线传感器是一个具有几乎线性输出的低成本模拟传感器。这意味着传感器的输出分别随紫外线辐射的成比例增加而增加。从传感器数据表中摘录出的传感器输出(以mV为单位)相对于紫外线指数的图表如下所示。

pIYBAF_bF4-AY8XYAAGS4APdDWE470.png

UV指数与传感器输出电压之间的线性关系

它是一个由VCC、GND和模拟信号输出组成的简单的三引脚传感器,这样就可以开始工作了。

所需的组件

● 紫外线传感器

● Arduino Uno开发板

● 诺基亚5110 LCD显示屏

● 面包板

● 连接导线

原理图

准备好所有组件之后,请按照以下示意图进行原理图连接:

pIYBAF_bF6KATymtAAG9_F9w8OQ918.png

我们在之前的文章中介绍了将N0kia 5110 LCD连接到Arduino开发板的方法,但在本文中,我们仍列出了引脚图的连接方式。同时本文给出了UV传感器与Arduino开发板的连接方式。

UV传感器与Arduino开发板的引脚连接表

GND GND
VCC VCC
output A0

诺基亚5110 LCD与Arduino开发板之间的引脚连接表:

Pin 1(RST) D12
Pin 2(CE) D11
Pin 3(DC) D10
Pin 4(DIN) D9
Pin 5(CLK) D8
Pin 6(VCC) VCC
Pin 7(LIGHT) GND
Pin 8(GND) GND

在编写代码之前,请仔细检查连接以确认一切正常。

代码

此项目的代码非常简单,我们仅使用一个库(诺基亚5110 LCD库)与LCD进行通信。可以从此链接下载该库。该代码的基本操作是读取传感器输出连接到的模拟引脚0(A0),并将其转换为mV,以便我们可以与UV指数表中的值进行比较,并计算该特定位置和时间的UV指数。在计算并确定了紫外线指数之后,该指数通过诺基亚5110 LCD显示给用户。下图显示了用于比较的紫外线指数表。

o4YBAF_bF76AL17vAAHCkhQZUv8683.png

与往常一样,我们将代码分成小块,并在给出完整代码之前进行解释。首先,我们在代码中要做的第一件事是导入诺基亚5110 LCD库,该库是显示屏所必需的。

//////////////////////////////////////////////

// Arduino UV Meter //

// with NOKIA 5110 LCD //

// http://www.educ8s.tv //

/////////////////////////////////////////////

#include

导入库后,我们开始声明将在代码中使用的其他变量和常量。

LCD5110 lcd(8,9,10,12,11);

extern unsigned char BigNumbers[];

extern uint8_t splash[];

extern uint8_t ui[];

String UV = "0";

完成后,我们转到setup函数。我们要做的第一件事是初始化LCD,然后设置显示器的字体,使用lcd.clrScr()清除屏幕,然后绘制初始位图。

void setup() {

lcd.InitLCD();

lcd.setFont(BigNumbers);

lcd.clrScr();

lcd.drawBitmap(0, 0, splash, 84, 48);

在执行drawBitmap命令之后,我们更新LCD以反映更改,并延迟3000毫秒以确保启动画面在屏幕上停留的时间足够长。

lcd.update();

delay(3000);

}

setup函数结束后,我们进入loop()函数,这里调用readSensor函数,该函数从UV传感器读取值,将其转换为mV并将其与Index表进行比较以获得mV的UV索引匹配读入的值。

void loop() {

int stringLength = 0;

UV = readSensor();

接下来,我们清除屏幕并绘制将要插入索引的UI。

lcd.clrScr();

lcd.drawBitmap(0, 0, ui, 84, 48);

绘制UI后,我们将计算索引的长度,并使用printUV函数将其显示,然后调用LCD更新命令。

stringLength = UV.length();

printUV(stringLength);

lcd.update();

delay(150);

}

该项目的完整代码如下。

//////////////////////////////////////////////

// Arduino UV Meter //

// with NOKIA 5110 LCD //

// http://www.educ8s.tv //

/////////////////////////////////////////////

#include

LCD5110 lcd(8,9,10,12,11);

extern unsigned char BigNumbers[];

extern uint8_t splash[];

extern uint8_t ui[];

String UV = "0";

void setup() {

lcd.InitLCD();

lcd.setFont(BigNumbers);

lcd.clrScr();

lcd.drawBitmap(0, 0, splash, 84, 48);

lcd.update();

delay(3000);

}

void loop() {

int stringLength = 0;

UV = readSensor();

lcd.clrScr();

lcd.drawBitmap(0, 0, ui, 84, 48);

stringLength = UV.length();

printUV(stringLength);

lcd.update();

delay(150);

}

void printUV(int length)

{

switch(length)

{

case 1:lcd.print(UV,38,19); break;

case 2:lcd.print(UV,24,19); break;

default:lcd.print(UV,0,19); break;

}

}

String readSensor()

{

String UVIndex = "0";

int sensorValue = 0;

sensorValue = analogRead(0); //connect UV sensor to Analog 0

int voltage = (sensorValue * (5.0 / 1023.0))*1000;//Voltage in miliVolts

if(voltage<50)

{

UVIndex = "0";

}else if (voltage>50 && voltage<=227)

{

UVIndex = "0";

}else if (voltage>227 && voltage<=318)

{

UVIndex = "1";

}

else if (voltage>318 && voltage<=408)

{

UVIndex = "2";

}else if (voltage>408 && voltage<=503)

{

UVIndex = "3";

}

else if (voltage>503 && voltage<=606)

{

UVIndex = "4";

}else if (voltage>606 && voltage<=696)

{

UVIndex = "5";

}else if (voltage>696 && voltage<=795)

{

UVIndex = "6";

}else if (voltage>795 && voltage<=881)

{

UVIndex = "7";

}

else if (voltage>881 && voltage<=976)

{

UVIndex = "8";

}

else if (voltage>976 && voltage<=1079)

{

UVIndex = "9";

}

else if (voltage>1079 && voltage<=1170)

{

UVIndex = "10";

}else if (voltage>1170)

{

UVIndex = "11";

}

return UVIndex;

}

演示

将Arduino开发板连接到计算机,启动IDE并将代码粘贴到其中。 在上传之前,请不要忘记将UI和Splash文件添加到代码的Arduino sketch文件夹中,因为这可能会引发错误。

将代码上传到您的开发板上,然后带到外面以测量您所在区域的紫外线强度。
编辑:hfy

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

    关注

    1

    文章

    364

    浏览量

    21212
  • Arduino
    +关注

    关注

    187

    文章

    6463

    浏览量

    186621
  • LCD显示屏
    +关注

    关注

    1

    文章

    91

    浏览量

    13269
  • 紫外线传感器

    关注

    0

    文章

    87

    浏览量

    12408
收藏 人收藏

    评论

    相关推荐

    紫外线固化技术概述

    紫外线固化技术利用UV光引发聚合反应,快速固化材料,适用于印刷、电子、医疗等多个领域,提高生产效率和材料性能,正向高效、环保、多功能方向发展。
    的头像 发表于 11-21 09:14 90次阅读
    <b class='flag-5'>紫外线</b>固化技术概述

    紫外能量计的技术原理和应用场景

    紫外能量计是一种用于测量紫外辐射能量的高精度仪器。以下是对其技术原理和应用场景的详细阐述:一、技术原理紫外能量计的工作原理主要基于光电效应和紫外线对某些特定材料(如荧光剂)产生的荧光反
    发表于 10-15 14:42

    液晶显示屏与led显示屏的区别

    在现代电子设备中,显示屏是人机交互的重要界面。随着科技的发展,显示屏技术也在不断进步,其中液晶显示屏LCD)和LED显示屏是两种主流的
    的头像 发表于 10-12 10:39 862次阅读

    紫外线诱导降解(UVID)对TOPCon组件的影响

    TOPCon光伏组件随着技术的成熟和成本的降低,在全球范围内得到了迅速的推广和应用。然而,由于电池对紫外线辐射的敏感性增加,TOPCon技术容易受到紫外线诱导降解(UVID)的影响,这对组件的性能
    的头像 发表于 09-27 08:10 557次阅读
    <b class='flag-5'>紫外线</b>诱导降解(UVID)对TOPCon组件的影响

    外线的温度高还是紫外线的温度高

    引言 红外线紫外线是电磁波谱中的两种重要类型,它们在自然界和人类社会中都有着广泛的应用。 红外线紫外线的基本概念 2.1 红外线
    的头像 发表于 08-20 09:46 1739次阅读

    外线紫外线有什么区别与功能

    引言 红外线紫外线都是电磁波的一种,它们在自然界中广泛存在,对人类的生活和科学研究都有着重要的影响。然而,由于它们的特性和应用领域不同,人们对它们的了解程度也不尽相同。 红外线紫外线
    的头像 发表于 08-20 09:44 2087次阅读

    外线紫外线的特点及应用有哪些

    。 d. 反射能力:红外线的反射能力较强,可以用于测量物体的距离。 紫外线的特点: a. 波长范围:紫外线的波长范围在10纳米至400纳米之间。 b. 杀菌能力:紫外线具有较强的杀菌能
    的头像 发表于 08-20 09:42 863次阅读

    外线紫外线哪个热效应更显著

    一、引言 红外线紫外线是电磁波谱中的两个重要波段,它们在自然界和人类社会中都有着广泛的应用。红外线紫外线的热效应是人们关注的焦点之一,因为它们对人体的健康和生活都有着直接或间接的影
    的头像 发表于 08-20 09:41 932次阅读

    PHOTONIS紫外线相机 (UV)介绍

    Photonis 自豪地推出其最新的紫外线 (UV) 相机和核心,采用尖端技术设计,可满足各行各业的需求。我们的紫外线成像系统(紫外线图像增强器)具有无与伦比的灵敏度和精度,使用户能够捕捉和可视化
    的头像 发表于 08-12 06:14 478次阅读
    PHOTONIS<b class='flag-5'>紫外线</b>相机 (UV)介绍

    基于Arduino紫外线传感器设计 紫外线传感器的工作原理和分类

    紫外线传感器,又称为紫外光敏管(简称UV管),是一种利用光电子发射效应的光电传感器。它能够通过特定的光敏元件将紫外线信号转换为可测量的电信号,广泛应用于环境监测、气象观测、农业、林业、医疗诊断以及
    的头像 发表于 07-08 17:53 1164次阅读
    基于<b class='flag-5'>Arduino</b>的<b class='flag-5'>紫外线</b>传感器设计 <b class='flag-5'>紫外线</b>传感器的工作原理和分类

    ESP32-S2-HMI-DevKit-1开发板如何实现lcd显示

    你好, ESP32-S2-HMI-DevKit-1开发板上demo,lcd都是横显示的,想改成竖显示
    发表于 06-28 06:50

    什么是紫外线传感器?它的结构分类有哪些?

    什么是紫外线传感器?它的结构分类有哪些? 紫外线传感器是一种能够测量、检测和监测紫外线辐射的电子传感器。紫外线属于电磁波谱的一部分,波长范围在185纳米到400纳米之间。
    的头像 发表于 02-02 15:05 1119次阅读

    LCD显示屏、LED显示屏、OLED显示屏有什么区别?

    LCD显示屏、LED显示屏、OLED显示屏有什么区别? LCD显示屏、LED
    的头像 发表于 12-11 14:29 1.5w次阅读

    紫外线老化试验机灯管常见故障及解决方案

    紫外线老化试验机在日常操作中会出现这样或者那样的问题,下面艾思荔小编为大家具体介绍一下:一.紫外灯管点不亮。紫外线试验主要依靠紫外灯管来照射产品,所以
    的头像 发表于 11-24 11:49 1229次阅读
    <b class='flag-5'>紫外线</b>老化试验机灯管常见故障及解决方案