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

    文章

    379

    浏览量

    22037
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195932
  • LCD显示屏
    +关注

    关注

    1

    文章

    92

    浏览量

    14579
  • 紫外线传感器

    关注

    0

    文章

    89

    浏览量

    12853
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    51单片机驱动VEML6075测量紫外线强度

    VEML6075是一种紫外线(UV)光传感器,它可以测量紫外线强度。它通常用于各种应用,包括环境监测、皮肤防护和生物医学应用,在紫外线中,UVA是最常见的
    的头像 发表于 11-30 15:51 3038次阅读
    51单片机驱动VEML6075测量<b class='flag-5'>紫外线</b><b class='flag-5'>强度</b>

    太阳光模拟器的紫外线老化测试标准

    紫外线通过破坏分子键引发材料降解,表现褪色、开裂、强度下降等问题,太阳光模拟器凭借精准复现太阳光谱的能力,成为紫外线老化测试的核心设备,紫外线老化测试通过人工模拟太阳光
    的头像 发表于 08-13 18:02 593次阅读
    太阳光模拟器的<b class='flag-5'>紫外线</b>老化测试标准

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3059次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3<b class='flag-5'>开发板</b>给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3<b class='flag-5'>开发板</b>重新烧录引导程序bootlaoder

    【BPI-CanMV-K230D-Zero开发板体验】+TFT显示驱动及信息显示

    对于BPI-CanMV-K230D-Zero开发板来讲,其标准的显示器配置是基于芯片ST7701的LCD显示屏,该显示屏
    发表于 07-02 11:03

    紫外光固化技术介绍

    本文主要介绍了光的分类和紫外线的定义,以及紫外线的特性、应用和固化原理。
    的头像 发表于 06-30 17:27 1163次阅读
    <b class='flag-5'>紫外</b>光固化技术介绍

    广明源积极布局222nm远紫外线消毒技术

    近年来,随着公共卫生安全和生物安全防护需求的持续增长,紫外线消毒技术受到广泛关注。作为深耕光科技领域20多年的企业,广明源积极布局222nm远紫外线消毒技术,持续提升自主研发与成果转化能力,构建多场景应用解决方案,助力公共环境消毒与健康防护水平提升。
    的头像 发表于 06-18 10:23 1043次阅读

    户外显示屏驱动的具体防护措施

    驱动在户外显示屏中的防水设计是确保显示屏长期稳定运行的关键之一。
    的头像 发表于 04-22 15:58 661次阅读

    紫外线对产品的影响及紫外老化试验的重要性

    紫外线对产品的危害紫外线,作为电磁波谱中紫光之外的不可见光,其对产品的破坏性不容忽视。在众多外界因素中,紫外线是导致材料性能劣变的关键因素之一。材料或产品在加工、贮存或使用过程中,会受到热、光、氧
    的头像 发表于 03-26 15:34 1274次阅读
    <b class='flag-5'>紫外线</b>对产品的影响及<b class='flag-5'>紫外</b>老化试验的重要性

    2.0寸显示屏,轻薄低功耗12864点阵COG显示屏

    2.0寸单色LCD液晶显示屏12864图形点阵,轻薄低功耗128*64点阵COG显示屏
    的头像 发表于 02-19 12:02 1049次阅读
    2.0寸<b class='flag-5'>显示屏</b>,轻薄低功耗12864点阵COG<b class='flag-5'>显示屏</b>

    紫外线辐射传感器:为环保监测注入 “智慧” 力量

    信号转化为电信号。紫外线照射光敏元件,使电子吸收光子能量产生电子 - 空穴对,在电场作用下定向移动形成电流,通过测量电流确定紫外线辐射强度。常见材料有 GaN 和 ZnS,其中 ZnS 材料传感器精度比 GaN 系提升近 10^
    的头像 发表于 02-06 15:57 831次阅读
    <b class='flag-5'>紫外线</b>辐射传感器:为环保监测注入 “智慧” 力量

    迅为RK3576开发板Android 多显示

    迅为RK3576开发板Android 多显示
    的头像 发表于 01-16 16:58 1604次阅读
    迅为RK3576<b class='flag-5'>开发板</b>Android 多<b class='flag-5'>屏</b><b class='flag-5'>显示</b>

    广明源参编的低压高强紫外线灯国家标准即将实施

    由广明源等多家企业单位参编的《低压高强紫外线灯》(GB/T 44755-2024)国家标准(以下简称“新国标”),已正式发布并将于2025年5月1日实施。新国标的发布标志着紫外线行业标准化工作进入了一个重要的里程碑阶段,对于行业整体高质量发展具有深远的意义。
    的头像 发表于 01-15 14:10 983次阅读

    【CW32模块使用】S12SD紫外线传感器

    紫外线检测模块采用氮化家基材料的肖特基光电二极管,具有高的响应度和低的暗电流,板载LM358放大器对光电二极管输出的微弱信号进行放大,所有元器件采用1%精度元器件制造。应用于紫外线测试仪,紫外线
    的头像 发表于 12-30 11:06 2644次阅读
    【CW32模块使用】S12SD<b class='flag-5'>紫外线</b>传感器

    紫外线光谱分析与应用 紫外线水处理系统的工作原理

    紫外线光谱分析与应用 紫外线(UV)光谱分析是一种利用紫外线的特性来识别和分析物质的技术。紫外线是指波长在10纳米至400纳米之间的电磁波,它位于可见光谱的紫端之外。
    的头像 发表于 12-17 15:20 2058次阅读

    紫外线灯的使用方法 紫外线杀菌技术应用

    紫外线灯的使用方法 1. 选择合适的紫外线灯 波长选择 :紫外线灯根据波长不同分为UVA、UVB和UVC。UVC(波长200-280nm)具有最强的杀菌效果,因此常用于消毒。 功率选择 :根据需要
    的头像 发表于 12-17 15:18 2772次阅读