【《基于单片机的紫外线检测装置设计》16000字(论文)】_第1页
【《基于单片机的紫外线检测装置设计》16000字(论文)】_第2页
【《基于单片机的紫外线检测装置设计》16000字(论文)】_第3页
【《基于单片机的紫外线检测装置设计》16000字(论文)】_第4页
【《基于单片机的紫外线检测装置设计》16000字(论文)】_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1基于单片机的紫外线检测装置设计摘要自从紫外线被发现以来,人们对于紫外线的研究不断深入,紫外线的可利用点不断被发掘。同时,紫外线对于人体所造成的危害也成为了人们关注的热点。在人类创造出蒸汽机以后,随着社会发展加快,人们对环境造成的破坏也越来越严重,由于臭氧层的稀薄,在地表所能接收到的紫外线强度也越来越高,世界气象组织联合世界卫生组织提出标准以给紫外线强度分类。因此,对于紫外线强度测量设备提出了新的要求。目前国内外市场上的紫外线检测装置大部分是以便携性为主攻方向的紫外线试纸;而紫外线检测仪价格昂贵,面向的也大多是专业人员。对于固定精确地点的小范围紫外线测量,一些基于单片机的检测手段随着物联网和智能家居的发展得到普及,所以,在新时代中传统紫外线检测设备也应该通过网络与用户相连。该设计以STM32单片机为基础,通过ESP8266WIFI模块实现网络通信,将数据实时上传到服务器端,同时,用户通过网页可以查看这些数据。当紫外线强度超过设定阈值时,单片机会发出警报。传感器选用GUVA-S12SD紫外线传感器模块,该传感器较为精确稳定,单价也比较低。单片机选用STM32F1系列,具有可扩展性高,性价比高等优点。用PC作为服务器端,通过Java实现数据的接收与保存。关键词:单片机;紫外线;传感器;WIFI模块目录TOC\o"1-2"\h\z\u1.引言 12.概述 12.1课题研究背景 12.2课题研究的目的及意义 22.3紫外线健康检测装置概述 22.4设计的主要任务 33.方案设计 43.1设计要求 43.2初始化方案 43.3总体方案的选择 54.STM32设计 14.1结构设计 14.2单片机设计 15.服务器端与网页程序设计 145.1总体方案 145.2服务器端程序实现 165.3网页端程序实现 176.功能整合 196.1整合实现 196.2使用工具 217.结论 22参考文献 241.引言在这个信息化技术不断发展的时代中,不论在工业生产设计、农业生产活动还是在人们的日常生活中,基于单片机所研发的比如生产线、自动灌溉机以及家用的电冰箱洗衣机等等集检测控制与一体的智能化设备都被广泛应用,在兼顾发展速度与发展质量的情况下大大提高了生产力发展水平,这正是因为现代以来进入信息时代所带来的技术发展。单片机系统具有反应灵敏,在各种环境下均能保持稳定,程序运行的准确性高以及可外接设备众多等优良特性,在此基础上成本较低,利于大规模应用。对于各种无人环境下的监测以及自控有良好的适应性。本课题的紫外线健康检测装置正是单片机应用的一种。该应用是由单片机控制系统、服务器端数据接收以及网页数据呈现所构建。其中单片机控制系统由单片机以及外围电路与模块构成,通过适用的代码,将各个模块与单片机形成一个完整的产品,并能实现相应功能,由单片机进行数据处理并发出控制信号,信号发送到各个模块,交由各个模块采集数据并发送给单片机。服务器端数据接收通过编程语言,对端口进行监听,实时获取数据。在单片机开发过程中,需要遵循一定的开发步骤,首先确定紫外线健康检测装置需要实现的功能(即整体方案的确定),然后选择合适的器件来为单片机功能实现添砖加瓦,之后进行软件设计(编写代码实现预期功能),最后软硬件联合调试,使整个项目能正常运转。在实际开发过程中也会遇到各种各样我们无法预知的问题,这几个阶段也要根据实际情况灵活调整。为了方便的实现紫外线强度的检测功能,一款优秀的紫外线传感器是必不可少的,为了减少成本,价格也应作为一个重要的考量因素。所有传感器都是将各个需要检测的数据转化为数字信号或者模拟信号的工具。传感器之于单片机,就相当于眼睛鼻子之于人类。有了传感器以后,自动控制的发展上了一个新台阶,通过自主采集数据来进行自动调控的机器也获得了广泛的认同,市场占有率也越来愈大。同时,在生活家居方面,多种多样的需求使得厂家设计出能满足不同种类人群需求的传感器。对于本次课题所需要的紫外线传感器,在查阅了文献并且比对了资料之后最终选用了S12SD紫外线传感器,它的功能就是检测实时的紫外线强度,将其以电平变化输出,并将其送入单片机,单片机则通过ADC模块接收信号,并在程序中将其还原为我们大家所能理解的紫外线强度指数进行表示,从而实现整个系统的检测功能。同时,为了实现报警功能,需要设定一个警报阈值。近年来随着温室效应以及臭氧层空洞的加剧,紫外线对于人体产生的侵害也越来越大,人们逐渐意识到紫外线对自身生命财产安全的危害性。为了能够更加准确的保障自身的安全,小范围定点家居环境中的紫外线检测系统必不可少。随着物联网技术、自动控制技术、电子信息技术、材料学的不断发展,在测量各种数据时,相比于以前的旧式传感器更加精确,信息化程度更高。正因为如此,依靠单片机来实现紫外线健康检测装置,采集数据更加方便灵活、系统的可靠成度也大大提高,数据精度也远超以往。在此次的设计中,通过S12SD紫外线传感模块以及STM32单片机来实现数据的采集与处理。2.概述2.1课题研究背景自从德国物理学家里特在1801年发现了紫外线的存在,人们对于紫外线的研究也在逐渐发展。紫外(UV)辐射的谱区范围为100~400nm,可分为紫外线A段(UV-A),波长为320~400nm,这部分对于人体的所产生的作用比较弱,即对人体健康无大碍,主要是色素的积累即色素沉着作用;紫外线B段(UV-B),波长在290~320nm之间,对人体的红斑作用较为显著,有利于帮助人体获取维生素D,同时也比较容易导致人体正常细胞变为癌细胞;紫外线C段(UV-C),波长在100~290nm之间,由于波长较短,这一部分的紫外线在经过臭氧层时大部分会被臭氧层所吸收,只有少量的该波段紫外线能够到达地面,但随着臭氧层空洞,这一能到达地表的部分也越来越多,对人们产生的损伤也在不经意间越来越大,根据国家气象中心的报告表明,臭氧层每减少百分之三,地表的紫外线就增强百分之二。随着紫外线的研究的深入,紫外线对人体的危害也越来越被人们所知晓,人们对于紫外线的防护意识也有了显著提高。因此,在现代生活中,更方便的紫外线强度获取方式以及更精确的数据,也将成为人们更为关注的一点。依据世界气象组织及世界卫生组织的建议,紫外线指数的标准计算方法为度量直至400nm不同波长的太阳紫外线强度,并将不同波长的太阳紫外线强度乘以“红斑作用光谱曲线”内对应的加权数值,来反映人类皮肤对紫外线的反应。将以上相乘所得到的结果再相加,就可以得到受红斑光谱加权后的总紫外线强度,单位为mW/m²。然后再将红斑光谱加权后的总紫外线强度乘以0.04来得到紫外线指数(即一单位紫外线指数为25mW/m²)。例如,正午阳光最强的时候,在15分钟时间内,地表所接收到的平均紫外线照射量为100mW/m²,这时该地的紫外线指数就是4。紫外线指数共分15级,通常规定夜间即无太阳照射时的紫外线强度指数为0,最高的指数则是将热带、高原地区晴天无云时太阳照射最猛烈的紫外线指数定为15。对人体基本没什么影响的紫外线指数是0、1、2范围;当紫外线指数为3、4的时候,对人体的影响为微弱,这一部分的紫外线也基本可以忽略;当紫外线指数为5、6时,紫外线强度为中等强度,对人体皮肤有中等的伤害影响;这时长时间在户外活动需要佩戴适当的保护措施以阻挡紫外线对人体的损害;当紫外线强度为7、8、9时,对人体的伤害影响较大,需要采取一定的防护措施,当指数到达这个等级的时候,就需要发出警报,以提醒人们采取必要措施来避免来及紫外线的伤害;当紫外线指数大于等于10的时候,就必须采取防护措施并尽量呆在室内等不会被阳光直射的地方。所以,当传感器采集到紫外线强度的时候,需要转化为紫外线指数,以方便数据的处理与显示,同时也能简化控制代码的实现。目前国内外市场上主要销售的紫外线检测产品大部分为紫外线强度测试纸,这种试纸方便携带,但对于固定小范围地点的精确测量,实用性不高。另一些紫外线强度检测仪价格普遍比较高昂,体积也比较大不便于随身携带,而其他基于单片机的紫外线强度监测系统大部分通过显示屏进行输出,查看比较不方便,与目前信息化的潮流不符。在日益现代化的今天,人们能随时随地通过智能设备获取信息已经成了一种习惯,因此,将信息获取并上传到用户端是更符合用户需求的举措。同时,随着物联网这一概念在日常生活中得到普及,人们越来越倾向于购买各种智能家居,传统的紫外线检测方式也需要更进一步,通过网络与用户相连。本文通过分析目前紫外线检测装置的现状,设计并制作了一种符合要求的紫外线健康检测装置,以此保证人们能够在紫外线诱发的疾病率居高不下的今天免受紫外线的损伤。2.2课题研究的目的及意义精确测量在人们所生活区域附近指定范围内的紫外线强度。目前人们获取紫外线强度的信息一般是通过当地气象部门发布的信息,但由于气象部门设立站点有限,预报范围也比较宽泛,人们所获得的信息往往与自己所在的位置的实际信息存在一定差异,若当地的紫外线强度高于预报值时,人们不做防护外出就有可能被晒伤。随时通过网页进行信息查询。随着物联网的进一步深化,5G技术的发展,信息的获取方式也需要进一步简化,人们可以方便的通过网页进行查询,后续还可以依托于此,将网页设计出更多的功能,譬如外出建议、健康小知识等等。2.3紫外线健康检测装置概述紫外线健康检测装置是基于紫外线传感器的,是属于紫外线测量装置的一种,市面上的紫外线测量装置又种类繁多,不过大体可以分为物理监测方法和生物化学监测方法:物理监测方法:主要由紫外照度计在需要测量的位置先校准然后从最大量程开始测量,再分别测量不同波段的紫外线辐照强度再通过公式Eeff=0.00011×其中Eeff为有效辐照度,W/cmEA为所测长波紫外线(UVAEB为所测中波紫外线(UVBEC为所测短波紫外线(UVC化学监测方法:照相底片:照相底片由于其对280~500nm谱段较为灵敏的特性经常在紫外线光谱学中作为探测器。想要测量辐射的强度,可以通过底片黑度的程度来反映,而且依靠光密度进行光度学测量分析,在仔细控制外部条件的情况下,具有较高的精确度。化学方法:一些化学品暴露在紫外辐射下之后,会发生一些变化,这种变化可以通过其他手段进行测量。这种方法的优点是较为简单,但测量时间较长且对设备要求较为苛刻,目前最常用的是丙酮亚甲兰反应。生物检测器:紫外线具有杀菌作用,且该作用的有效程度和紫外线强度等级成正比,这就有了一个新的思路,即观察微生物在不同等级紫外线的照射下的存活情况,以此来确定紫外线强度,更进一步,一些微生物的紫外线比较敏感,当处在不同等级紫外线照射下时,会发生不同的变化或者产生存在区分度的物质,这就使得生物检测器检测紫外线成为一种比较好的方式。2.4设计的主要任务本设计利用STM32系列单片机制作紫外线健康检测装置,在设计方案的过程中最关键的就是软件代码能实现必要功能并将数据上传,服务器端能够实现监听端口功能,网页能够读取存储的数据并显示。对紫外线健康检测装置进行整体规划,确定其各个组件的构成,完善其结构。以STM32系列单片机作为核心(中央处理器),对模块构成进行设计,使其具备相应的功能(例如显示、报警、数据上传等),除了单片机最小系统外,还有LCD显示功能等。系统的软件部分,在编写程序的过程中,需要详细阅读开发手册,将采集的数据转换后代入公式进行计算。同时要考虑整个代码的执行。服务器端部分,编写程序需要实现对端口进行监听,并利用输入输出流来在端口与文件中传递数据,服务器端采用Java编写,需要仔细查阅开发手册进行学习。网页要能通过流将内容读取并显示,由于之前从未接触过网页设计,实现难度较大,需要参考相关视频资料等进行学习,并向指导老师及同学进行请教。

3.方案设计3.1设计要求具有紫外线强度检测功能。可以实现无线通讯功能。能将数据上传到服务器。可以通过设置紫外线强度阈值实现报警。带有显示屏能显示紫外线强度。服务器能接收并保存数据。网页能显示数据。3.2初始化方案根据本设计要求实现的功能,本设计分为数据检测,数据处理,自动控制,数据获取与保存,数据显示五个部分。数据检测就是通过紫外线传感器监测紫外线强度,传感器获取到紫外线强度之后,通过电平变化传输信息,单片机通过解码后利用公式将传递过来的信息转变为紫外线强度等级。为了兼顾成本与性能,使数据尽可能的精确,本设计选用了S12SD紫外下传感模块作为数据采集的方式。S12SD紫外线传感模块采用氮化镓材料,核心检测部分为肖特基型的光电二极管,采用光伏运行模式,由于其良好的响应特性,该模块对可见光无任何反应,并且响应速度较高的同时暗电流比较低。芯片尺寸为0.4mm*0.4mm,体积小,编写程度高。数据处理部分是指通过线路连接将接收到信号传递至单片机进行处理。在该设计中就是通过传感器手册中的公式将接收到的数字量转换为模拟量。本项目选用STM32精英版开发板进行项目实验。单片机作为一个由中央处理单元、存储器、通用输入输出端口、定时器、中断系统、系统时钟及系统总线构成的微型计算机。由于其具有微型计算机的属性,因此被称为单片微型计算机,简称单片机。而STM32拥有cortex-M内核,采用ARM架构,拥有极高性能的同时还降低了电压与功耗,导致其在各个行业都备受青睐。它具有高集成度,所带的模块丰富,同时又可以自行外接所需要的模块,操作便利。自动控制部分就是通过软件代码实现单片机在接收到数据之后的自动操作,设置各个条件下单片机的行为方式,以此来实现不同情况下需要单片机执行的操作。数据获取与保存部分需要在服务器端通过软件代码实现端口监听功能,在监听到端口有信息时,将接收到的数据存入输入流并输出到文件中,以实现数据的保存。数据显示。数据显示在单片机屏幕以及网页上均需要实现,单片机通过lcd屏幕进行数据显示,网页通过JavaScript代码从文件中获取存储的数据进行显示。3.3总体方案的选择首先,本项目采用一个S12SD紫外线传感模块来检测区域内紫外线强度,将数据传送到单片机转化为紫外线强度指数,再通过编写控制程序使得单片机对紫外线强度指数进行上传与显示,并对不同强度的紫外线强度指数做出不同的操作,以实现实时紫外线强度显示和强紫外线报警以及数据上传等功能。本设计使用的主控芯片为STM32F103系列,模块可集成也可自行增减灵活度较高,在本方案下能实现较低的成本的同时实现较高的精确度,性价比极高,同时稳定可靠。众所周知,中国的5G技术走在整个世界的前列,自从新基建在2018年12月中央经济工作会议上被首次提出以来,人们对于我国电子信息产业的发展也有了空前的热情,依托于5G的建设和物联网概念的兴起,并且行业内各式各样的智能设备被研发并推广,嵌入式系统在未来的发展中占据了至关重要的一环。例如最近比较火的无人驾驶汽车,它的运动控制可分为对油门和制动协调的纵向控制以及对无人驾驶汽车路径跟踪的横向控制。纵向控制会对当前油门进行采样,通过特定算法算出油门应该给到什么程度,刹车同理。横向控制则通过对道路标线追踪来改变方向。同时车周边传感器实时采集周围行人、车辆、障碍物等等路况,进行加减速以及躲避等操作,观看当时的演示视频,我惊叹于目前的无人驾驶汽车自控竟然能达到这种水平。物联网所追求的万物互联要求了每个设备都需要进行网络接入,这就要求每个设备都有一套相应的嵌入式系统。本设计就是着眼于这两个方面,通过单片机连接到网络,使得数据能够踏上信息高速公路。

4.STM32设计4.1结构设计STM32结构部分主要包括:以单片机为核心的主控电路、以LCD屏幕实现单片机显示的显示部分、以S12SD传感器为紫外线强度检测装置的检测电路、蜂鸣器报警部分,通过ESP8266进行WIFI通信的通信部分等。检测电路用于对所需求的数据进行检测获取紫外线强度,LCD显示用于对需要展示给用户的数据进行输出显示,蜂鸣器报警部分用于通过声音提醒用户注意防护,WIFI通信部分用于实现单片机连接到路由器后发送信息到本地服务器,STM32单片机作为主控来控制各模块正常工作,实现上述这些需要他们完成的功能。硬件结构框图如下:图4-1总体设计框图4.2单片机设计4.2.1单片机最小系统设计本设计使用的单片机型号是STM32F103ZE。该型号单片机性价比高,适用环境多种多样,可以依据实际需求自由开发,在各个微控制领域均有所应用。该型号单片机是采用ARM32位的Cortex™-M3型号CPU作为内核,拥有512KByte的闪存程序存储器以及64KByte的SRAM,拥有112个GPIO,支持I2C、USART、USB、CAN、SDIO、STM32F103ZE引脚介绍:STM32F103ZE共有112个引脚,其中需要使用到PB10和PB11作为ESP8266的RX和TX口,PF8连接紫外线强度传感器,传感器通过PF8向单片机传输实时紫外线强度数据。PB8连接蜂鸣器,控制蜂鸣器。PD及PE连接LCD屏幕,实现数据的显示。该单片机总共有七组(每组16位)GPIO,分别是PA,PB,PC,PD,PE,PF,PG端口,共112个引脚。PA端口PA9和PA10分别是USART1的TX和RX脚,PA11以及PA12用作USBD-和USBD+引脚,PA13-PA15一般作为JTAG/SWD仿真接口,其余接口作为独立IO使用。PB端口PB0控制LCD屏幕的背光,PB3、PB4为JTAG仿真口,PB8接蜂鸣器控制蜂鸣器在紫外线强度指数超过阈值时进行报警。PC端口仅需注意PC15、PC14连接外部晶振。PD端口PD0、PD1分别用作LCD的总线数据线D2和D3,PD4和PD5通过连接DSMC总线的NOE和WR连接到LCD接口,PD8、PD9、PD10作为FSMC总线数据线D13、D14、D15接LCD,PD14和PD15则接FSMC数据线总线的D0和D1。PE端口PE7-PE15依次接FSMC总线数据线的D4-D12。PF端口PF8外接紫外线传感器,获取传感器数据。PG端口PG0-PG5接FSMC总线数据线的A10-A15,PG13接A24,PG14接A25。图4-2STM32F103封装图最小系统:最小系统是指用单片机恰好可以正常工作的最小元器件所构成的系统,包括电源部分、时钟部分、调试部分、复位部分以及控制部分所必需的元器件。随着时代发展,不同定位的单片机的最小系统也在不断改变,由于其需求功能的增加,最小系统的组成部分也在增加。用户可以在最小系统的基础上,充分发挥个人创意,增添其他模块来实现自己想要实现的功能;由于其有着众多IO口,外接各种设备非常简便,因此适用于各种人群与场景。结构图如下:图4-3最小系统结构图4.2.2主函数设计在本项目中,单片机需要将紫外线强度传感器传来的数据转化为紫外线强度指数,并在高于某个阈值时向蜂鸣器下达报警指令,同时要将数据通过ESP8266模块上传到服务器端,并将数据通过LCD屏幕进行显示。结构设计如下:图4-4主函数结构图在主程序中,通过调用各个模块的函数实现各个模块的功能,同时在主函数中进行条件判断,并在不同条件下对不同模块执行不同操作。流程图如下所示:图4-5主函数流程图主函数在完成各个模块的初始化工作后进入while循环,首先从紫外线传感模块获取到紫外线数据,对数据进行判断。从世界卫生组织和世界气象组织公布的标准来看,当紫外线强度指数大于等于9时,紫外线对人们的身体健康就会造成比较严重的损害了,因此我们将9设为预设阈值,当获取到的紫外线强度指数高于预设值时,单片机驱动蜂鸣器发出声音来进行报警。考虑到我们的设备是设定在固定地点,紫外线强度比较强的时候一般持续时间比较久,如果蜂鸣器持续报警,也会对用户造成影响,因此给蜂鸣器警报次数进行限制就十分必要。一般来说,一天内紫外线强度指数较强时大致是在一个连续的时间,因此设计为当紫外线强度指数超过阈值时,蜂鸣器会进行5个循环的警报,在这之后标志位将变为0,蜂鸣器不再进行报警,除非紫外线强度指数重新下降到警报阈值之下,才会再次将标志位变为1重新触发警报。同时还要将实时紫外线强度指数显示在LCD屏幕上,并给出对应于不同防护等级的建议。最后,将获取到的数据发送到ESP8266模块,进行数据上传。4.2.3传感器获取数据本实验使用S12SD紫外线强度传感器模块,光敏部分采用氮化镓材料,集成度较高,使用便利。5V与3.3V均能供电,由于之前使用5V时有元器件烧坏,所以采用3.3V供电以保证安全稳定。上电后模块上蓝色指示灯亮起表示模块正常工作,需要注意当LED灯较暗且有闪烁情况时可能是由于接触不良。该模块采用模拟量输出,拥有三个引脚,分别接GND,VCC以及作为模拟输出端口的SIG。要实现该模块与STM32单片机间的数据传输,只需要将SIG与STM32上的PF8引脚用导线进行连接。S12SD模块规格:封装尺寸:图4-6S12SD封装图S12SD传感器光伏材料在不同波长光线照射下产生的光电流曲线:图4-7S12SD光响应曲线图从该曲线可以看出,S12SD模块对于240nm到380nm范围内的光谱比较灵敏,在340nm到360nm区间内达到峰值。而对于其他波长的光响应率极低,紫外线的光谱范围在100nm到370nm之间,在前文中已经说过紫外线对于人体损害较大的光谱范围主要集中于290nm到320nm,这款传感器对于该谱段内的光线响应率高,能够达到本实验的需求。在不同强度紫外线照射下所产生的光电流曲线:图4-8光电流与紫外线强度曲线图目前的紫外线强度传感器大部分利用光电效应进行测量,由于使用的材料仅对紫外线产生响应,所以只有当紫外线照射时才会产生光电流,紫外线越强,则光电流越大,上图曲线可以看出光电流与紫外线强度构成线性关系,这对于计算传感器受到的紫外线强度有极大的帮助。S12SD原理图:图4-9S12SD原理图当光敏元件U2收到紫外线光照时,产生光电流,通过电容C2进行过滤后,利用电阻将电流变化转化为电压变化,再通过LMV358低电压放大器放大,从SIG输出。紫外线指数与模块输出电压关系图4-10紫外线指数与模块输出电压关系图由上图可以直接得出紫外线指数与传感器输出电压之间的关系,当我们在单片机端通过ADC得到传感器的Vout值时,通过不同的Vout即可得出不同的紫外线指数。传感器部分使用代码:ADC初始化首先将ADC3通道时钟使能,然后将ADC复位以重置ADC状态,初始化ADC3的全部寄存器,并将全部寄存器设为缺省值,然后让ADC工作在独立模式,模数转换工作在单通道模式,再将ADC数据右对齐,接下来使能并校准我们所需要使用的ADC3。ADC3数据获取ADC_RegularChannelConfig(ADC3,ch,1,ADC_SampleTime_239Cycles5);将设置ADC3的ADC通道在239.5周期内做一次采样。然后使能ADC3的软件转换启动功能进行数据转换,该过程结束后将结果返回为最近的一次转换结果。传感器数据获取Lsens_Get_Val();首先将传感器传来的数据左移解码,再将其乘以光电流的输出电压与紫外线等级的转换值4980,由于我们计算的是一个周期内的累加值,周期为1024,所以最后结果再除以1024,得到的就是传感器的Vout,再利用紫外线指数与模块输出电压关系,就可以得到紫外线指数。4.2.4液晶显示电路本设计中采用ATK-7寸V2TFTLCD模块,该模块分辨率为800*480,背光电压为5V,其他电压为3.3V,也就是该模块若想要正常工作,需要同时接入5V电源和3.3V电源,这与STM32单片机输出适配。模块引脚图4-11LCD模块引脚图引脚1为LCD控制器片选信号输入(低电平有效);引脚2有两种工作模式,分别是当输入为1时的数据控制信号以及输入为0时的命令控制信号;引脚3、4、5均为低电平有效,3写入使能信号,4读取使能信号,5为复位信号;引脚6-21为双向数据总线,实现LCD的寻址;引脚22、26、27为接地;28为5V电源输入,为模块供电。也就是说,当该模块在16位模式下工作时,要驱动LCD正常运作总共需要21个IO驱动,该模块同时支持触摸屏功能,不过并未使用,因此总共要依靠25个IO驱动才能正常工作。模块接口时序图4-12LCD模块接口时序图LCD工作流程图4-13LCD工作流程图LCD控制程序LCD_ShowChar(u16x,u16y,u8num,u8size,u8mode);将字符显示在LCD屏幕上,x、y为字符坐标,num为需要显示的字符,size为显示的字体大小,mode有1和0两个值,1表示以叠加方式显示,0表示非叠加方式显示。LCD_ShowNum(u16x,u16y,u32num,u8len,u8size)将数字显示在LCD屏幕上,xy为坐标位置,num为需要显示的数字,len为数字的位数,size为字体大小。LCD_ShowString(u16x,u16y,u16width,u16height,u8size,u8*p);将字符串显示在LCD屏幕上,x和y为字符串起点坐标,width和height为字符串区域大小,size为字体大小,*p是字符串起始地址,字符串显示实质上就是字符显示与数字显示的结合,每显示一个字符后,将x轴或者y轴坐边递进一个宽度或高度。4.2.5蜂鸣器程序设计在许许多多的单片机所控制的系统中,往往需要用到警报装置用以提醒人们可能存在的危险或者是报告任务的完成。而在人类的日常生活中,最经常用到的感官就是视觉和听觉了,人们习惯了用眼睛和耳朵来获取周边环境的变化,因此设计人员在设计警报装置的时候,针对视觉和听觉的刺激往往是最普遍也是最有效的手段,比如刺耳的防空警报、火灾时时的警报灯等等。在本项目中,视觉方面的警报有多个途径可以实现,比如通过LED灯的闪烁、液晶屏的闪烁等等来表示。但是这些方法在本项目中实用性不强,因为光线的传播特性,一旦灯与用户之间产生了阻隔,用户就很难查收到这一警报消息,而如果为此装一个大型的警报灯,一是紫外线强度过高在特定时间经常会发生,二是因为灯光警报可能与其他火灾警报等弄混,产生潜在的风险。因此我们需要一个更加合理有效的方式来在警报时能吸引到人们的注意力以产生作用。在之前我们以及提过,听觉的刺激也是一个极为有效的报警方式,且声音的传播特性决定了它在家居环境中的报警要较光效刺激更为有优势。通过声音来进行报警,我们又有几种不同的设计方案,一是利用蜂鸣器产生刺耳的噪声,人们在这种噪声的干扰下很难去忽略这个警报,这就让我们达到了发出警报的目的;二是通过智能家居管家类似的语言助理发出提醒,随着科技的发展,智能家居也已经步入了人们的生活,当家居产品全部实现物联网时,人们往往会选择使用语言助手来进行信息的获取以及命令的发布。前者通过蜂鸣器来进行报警,实现简单、成本低廉、适用范围广泛;而后者则对所处环境提出了更高的要求,需要一整套系统与之配合,硬件成本大大上升的同时也会造成适用范围的缩小。当然,随着社会发展,后一种方式必将成为未来市场上的主流,但这依赖于各个方面的协同发展。所以在这个系统中,我选择采用蜂鸣器报警的方式。硬件电路图如下:图4-14蜂鸣器硬件电路图4.2.8WIFI模块上传WIFI模块选用的是ATK-ESP8266模块,该模块无线标准为IEEE802.11b、IEEE802.11g、IEEE802.11,发射功率为11-18dbm。无线传输速率最高可达54Mbps,频率范围在2.412GHz-2.484GHz之间。ATK-ESP8266共有6个引脚,引脚1接供电,引脚2接地,引脚3为模块的串口发送脚,引脚4为串口接收脚,引脚5为RST复位接口,当输入为低电平时进行复位。引脚6用于进入固件烧写模式,低电平为烧写模式,高电平为运行模式。我们需要用到的引脚为1到4引脚。WIFI模块原理图图4-15WIFI模块原理图工作模式ESP8266有不同的工作模式以适应不同的需求,分别是STA模式、AP模式以及STA+AP模式。STA模式是ESP8266模块连接上路由器,然后连接到互联网、手机、电脑等设备并对其进行远程控制。AP模式是将模块作为热点,设备与模块进行直连,来进行局域网内通讯与控制。STA+AP模式则为两种模式的共存模式,既可以作为热点直连设备,也可以连接互联网远程通信。AT指令ESP8266模块的操控主要通过AT指令来实现,通过这些指令,我们可以方便快捷的对其进行测试与配置,同时也能获取联网信息。AT:AT测试指令,用于测试模块是否正常工作。AT+RST:重启指令,将模块进行重启。AT+CWJAP=:连接路由器,后面分别添加路由器的ID和密码,发送指令后即可连接到路由器,从而实现与网络上其他单片机或者服务器以及用户终端进行互动。AT+CIFSR:在连接路由器后,为了确保我们成功连上网络,可以用该指令获取当前IP。AT+CIPMUX=0:设置单链接。AT+CIPSTART=:连接到目标AP,在之后输入目标的公网IP以及想要访问的端口,即可与目标IP端口建立连接。AT+CIPMODE=1:设置传输模式为透传模式。AT+CIPSEND:开始透传。我们主要使用这几个指令来实现功能。在配置ESP8266模块需要按照以下顺序。AT测试:AT;重启模块:AT+RST;设置为STA模式:AT+CWMODE=1;连接路由器:AT+CWJAP=“路由器名称”,“路由器密码”;获取IP地址:AT+CIFSR;设置单链接:AT+CIPMUX=0;连接到服务器:AT+CIPSTART=“服务器IP”,“端口号”;将传输模式设置为透传模式:AT+CIPMODE=1;开始透传:AT+CIPSEND;当成功连接上服务器之后,我们就可以通过在服务器上编写的软件开始监听端口,实时获取单片机发送过来的数据。

5.服务器端与网页程序设计5.1总体方案以前限制物联网设备发展的因素主要在于(1)网络同时可接入设备有限,由于传统的4G频段较窄,一个基站一般只能支持400个设备同时上网,最近随着我国大力发展5G技术,5G基站在各个地方都铺设开来,提高了同时可接入设备数量的同时还降低了时延,提高了网络连接速度。(2)网络连接速度网络层也有不同的标准,不同的厂商采用不同的组网技术,例如包含Zigbee网络、无线Mesh、有线或者蓝牙等技术,标准不同,兼容性就有问题。运营商部署物联网时,会受到限制,必须用同一个厂商的传感设备才行。同时由于缺乏统一的标准,应用程序的开发也处于无章可循的状态,且基于TCP/IP协议栈开发的互联网也不容易移植。因此,物联网的发展需要有统一标准的协议来支撑网络大规模发展)因为物联网节点数量庞大,而且以集群方式存在,因此在传输数据时,大量机器的数据会发生拥塞,容易丢失数据;(3)网路相互连接组成的异构(heterogeneous)、多级(multi-hop)、分布式形式,使统一的安全体系难以实现“桥接”和过度;(4)设备大小不一,存储和处理能力不一,使安全信息(如PKICredentials等)的传递和处理难以统一;(5)设备可能无人值守,丢失,处于运动状态,连接可能时断时续,可信度差。近年来人工智能与自控技术的发展,使得程序可以在无人监管的条件下自动优化,因此,将我们的数据上传到服务端是十分必要的,这顺应了时代的发展,为日后的优化做好铺垫。首先需要将数据保存在服务器端,这里我们选择Java作为我们进行开发所使用的编程语言。Java语法规则结构简单。相比于同时代的编程语言C++而言,他通过引用功能取代了C++语言中复杂的指针命令,这样一来,在极大程度上改善了逻辑上的多重性导致指针混乱进而使程序出现问题的情况。Java是一种面向对象语言,在经过了面向对象过程之后,程序依照其不同的功能划分为不同的模块,开发人员就可以分别承担不同模块的开发任务,众人拾柴火焰高,目前所有主流的公司项目开发都依赖于众多开发人员一起工作完成,每个开发人员也可以充分发挥自己的想法,为程序优化贡献出自己的一份力量,通过这种方式分散工作压力,可以使开发工作的进展提升到一个更高水平,Java语言又有多态和继承,人们可以方便的直接使用别人构建的代码,这进一步提高了Java开发的优势。随着5G技术的发展,传统嵌入式系统也在寻求新的赋能,而Java很有可能成为未来嵌入式的发展方向,又由于Java在跨平台协作中无可比拟的优势,在服务器端使用Java语言进行开发,既能充分满足面前的需求,又能为之后产品升级更新做足准备。然后我们需要在网页对我们所保存的数据进行显示。目前网页设计三板斧是HTML、CSS、JavaScript。在他们之中HTML(超级文本标记语言)是整个网页的基础,是网页的框架,网页本身实质上是一种文本文件,当我们在里面添加一些标记符来帮助浏览器在解析文件的时候,理解我们想要对这些内容做什么操作,通过这一操作以后,那么这个文本文件就变成了我们所看到的网页。浏览器逐行读取文件中获得内容,依靠不同的标记符,浏览器对标记符所标记的内容进行解释并显示,当遇到书写错误时,浏览器并不会停止运行,而是继续执行,因此想要对错误进行定位,我们只能将网页实际显示的页面和我们设计之初的构想进行对比,寻找不一样的地方,并在代码中进行定位。一个较为完整的HTML文件由各种元素组成,但都应符合一个基本框架,大致框架如下:<html>...</html>:这个标志是用于帮助浏览器理解HTML文件是从哪里开始执行,又到哪里应该结束解释,在这其中的代码均为HTML文档。<head>...</head>:是HTML文件的头部,其中需要填写的内容一般为页面的标题、文件信息等内容。<body>...</body>:是整个HTML文件的主体部分,这其中应该包含网页需要显示的内容。CSS(层叠样式表)主要用于网页的美化,通过外部样式表文件,开发人员可以方便的对网页样式进行编辑、格式化等。只需要更改该文件,就可以随心所欲的更改整个网页的外部表现形式。JavaScript作为一款编程语言,依靠其轻量、实时编译的优点广泛用于Web开发中而出名,主要功能有:1.直接在script中输出,使得网页的可读性与扩展性更高。2.对浏览器中的一些事件进行响应,比如设定单击触发事件,并对该事件做出响应。3.改变HTML内容,当满足事件触发的条件时,可以对元素的值进行修改,使HTML内容发生改变。4.改变HTML图像,通过编剧图像元素的src属性值,可以做到将图片进行更换。5.验证输入,可以对变量进行判断,看是否全为数字或其他类型,以保证输入格式的正确。6.可以检测访客的浏览器信息,目前市面上各个浏览器不相上下、各有各的长处,对于不同的浏览器,网页设计也需要随之改变,这时检测浏览器信息就显得十分重要,它能让用户通过任意浏览器进行访问,并转到与浏览器相兼容的程序实现。它同时还能控制浏览器的cookies,利于数据追踪以及分析,为之后产品对用户数据的分析以及精准解决用户所面临的问题提供了便利。5.2服务器端程序实现下图为程序流程图:图5-1服务器端程序流程图程序实现如下:ServerSocketserver=newServerSocket(1010);创建服务器套接字,套接字是两台机器通讯端点,依赖于此,我们可以方便的在不同设备进行数据交换,括号内的1010表示指定想要监听的端口为1010。socket=server.accept();该方法用于开始监听1010端口。InputStreaminputStream=socket.getInputStream();创建一个输入流(InputStream),将端口监听到的数据放入输入流中。FilenewF=newFile("D:\\aaa.txt");该函数会将"D:\\aaa.txt"路径转化为抽象路径,并以此创建一个新的File实例。在创建File实例后,我们可以对文件进行查看、编辑以及获取文件的属性等操作。outputStream=newFileOutputStream(newF,false);该函数会创建一个文件输出流,来将数据写入到输出流File中,newF为指定的File实例,false是append属性,当append为false时,每次写入数据时会将之前的数据覆盖,当append为true时,每次写入数据会在之前已保存数据的基础上继续写入。由于本项目需求的主要是实时监测数据,所以选择采用false为append的值,可以减少机器所需的空间,降低成本。outputStream.write(temp+48);该方法可以将文件输出流中的内容写入文件中,由于存入文件的数据是以ASCII码进行存储,我们需要对数据进行加48,但因为码表种没有大于9的数字,所以我们需要通过if语句对大于10的数进行单独处理,以使文件中的数据能正常显示并被读取,否则在我们进行读取时所看到的都会是乱码。outputStream.close();该方法用于关闭我们所打开的文件输出流并释放所有与之相关的系统资源。5.3网页端程序实现流程图如下:图5-2网页程序流程图代码实现如下:metacharset="UTF-8"设置编码格式为UTF-8格式,UTF-8(8位元,UniversalCharacterSet/UnicodeTransformationFormat)是针对Unicode的一种可变长度字符编码。在网页设计过程中,人们经常采用它作为编码格式。<buttonid="button">获取紫外线强度</button>创建一个按钮,按钮命名为“获取紫外线强度”,按钮是各种程序中最常使用的交互方式,按钮可以容纳多个操作,对于开发人员来说,按钮可以使用户按照既定程序来使用产品,降低了风险;对于用户来说,只需要一次点击就可以实现复杂的功能,操作起来便利程度大大提高。constfso=newActiveXObject('Scripting.FileSystemObject');声明一个只读常量fso为一个文件对象。constf1=fso.GetFile('D://aaa.txt');将括号内路径所指向的文件返回到f1中。constts=fso.OpenTextFile('D://aaa.txt');将文件中的内容读取一行返回到ts中。text+=ts.ReadLine();显示字符串信息。button.addEventListener('click',function(){xxxx();})创建一个事件监听,当检测到单击事件时执行xxxx()函数,在这个程序中,该函数用于读取文件中所保存的信息并将其显示。

6.功能整合6.1整合实现首先将STM32单片机以及其他设备进行连接,将ESP8266的Vcc接单片机的3.3V输出,GND端口接单片机GND,TX发送端口接单片机RX接收端口PB11,RX接收端口接单片机TX发送端口PB10。再将紫外线强度传感器S12SD的VCC、GND分别接到单片机3.3V输出,GND上,传感器的SIG接单片机PF8。由于我们使用的开发板本身带有一个蜂鸣器,阅读开发手册后可以知道蜂鸣器与单片机的PB8端口相对应,我们只需要写一个程序,将PB8端口设置为高电平,就可以检测蜂鸣器是否能正常工作。给单片机供电并通过USB串口连接上电脑后,使用sscom进行程序烧写,sscom可以直观的查看串口发送的信息,利于我们的调试。程序烧写完成后程序开始执行,首先运行ESP8266的初始化指令,对ESP8266模块进行AT测试并进行配置,在ESP8266配置完成后,可以连接到路由器以及我们的本地服务器,这时我们运行编写的Java代码,可以观察到端口已经被链接并且有数据上传并显示,打开我们设定目录下的txt文件,其中的内容与我们单片机所显示的紫外线指数一致,数据能够成功保存。最后用IE浏览器打开编写的HTML文件,点击按钮之后,网页能够从本机获取到txt文件中的内容。 最终实现效果如下:(1)、当使用黄色光灯进行照射时检测出紫外线指数为1,同时在网页获取数据也为1。图6-1实物展示图6-2网页展示(2)、当使用紫外线灯进行照射时,可以观察到紫外线指数变为11,并在网页查询界面也做出相应改变。图6-3实物展示图6-4网页展示6.2使用工具6.2.1IntelliJIDEA打开IDEA,鼠标左键单击左上角“File”,在下拉窗口中选择“New”,在弹出的窗口选择“Project”。弹出新串口,选择Java然后点击“Next”,继续点击“Next”,然后为工程文件进行命名,并选择保存路径,最后点击Finish,选择新窗口打开,即可完成新工程文件的创建。在project中src目录下新建一个文件,命名并添加后缀为.java,注意该文件需要与工程名保持一致,或者在其中添加一个package加工程名,并将该文件添加到路径中。在.java文件中进行代码编写,编译通过后成功生成class文件即可运行该程序,或者直接在IDEA中run我们所编写的程序,在下方弹窗中对输出数据进行观察和调试。 6.2.2Keil点击工具栏中的project选项,选择newμVisionProject创建新的工程文件,选择路径并命名。点击确定后选择要使用的CPU为STM32F103ZE,点击确定后工程创建完成。在工程文件路径下新建一个user目录和一个hardware目录,分别用于存放主函数以及各模块函数。在user新建一个main.txt文件,并将后缀改为.c,在keil工程里面将main.c添加,在hardware目录下新建若干个子目录,分别对于各个模块,在每个子目录中分别创建.c以及.h文件,并导入工程。在hardware中各模块的.h文件中以#ifndef__XXXX_H#define__XXXX_H 的格式编写头文件,并将sys.h文件包含进去,在xxxx.c文件中包含XXXX.h,并在其中编写代码以实现各个模块的功能。将hardware中的所有模块在工具栏中的Optionfortarget中的C/C++栏下的IncludePaths中添加,使keil能够访问到这些文件。在main.c中编写代码,实现程序的自动执行并能够使用各个模块的函数进行执行。选择工具栏的Optionfortarget中的Output栏,勾选CreateHEXfile前的方框,最后编译生成hex文件。

7.结论本设计方案设计了一种基于STM32F103单片机的紫外线健康检测装置。本系统利用了单片机技术、传感器技术、面向对象语言程序设计、HTML网页设计、WIFI通信技术等,填补了家居环境中小范围紫外线精确测量警报系统的空白,并在物联网时代做出了新的发展,以更好的利用互联网为人们的生活水平提高做出了贡献。同时该设计成本较低,整体系统结构稳定,工作场景多种多样,可拓展

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论