ESP32的智能红外感应天气闹钟_第1页
ESP32的智能红外感应天气闹钟_第2页
ESP32的智能红外感应天气闹钟_第3页
ESP32的智能红外感应天气闹钟_第4页
ESP32的智能红外感应天气闹钟_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

基于ESP32的智能红外感应天气闹钟第1章绪论研究背景2010年6月8日凌晨1点,史蒂夫•乔布斯在苹果全球开发者大会(WWDC2010)(WorldwideDevelopersConference2010)上发布了苹果第四代手机iPhone4,它的横空出世从产品设计以及应用体验层面重新定义了智能手机,触屏手机也正是从此才逐渐成为主流,但是智能手机发展至今,越来越多的人意识到手机在让人们的生活变得丰富多彩的同时也加剧了信息爆炸的焦虑,长时间地使用手机会使使用者的注意力变得更加容易被分散,也更加不容易保持专注,最后人们的注意力会变得比以前更弱。这是因为人的知觉容量和感觉系统的能力都是有限的,然而在当今快节奏的生活学习中,随时随地知晓时间又是刚需,但是在很多场景下手机不能随时拿出;单纯的机械表、电子表虽然能满足人们大部分的需求,但它们校准时间时还需要手动调整,这又与本设计节省时间、提高效率的初衷相悖。所以需要一个足够隐蔽的智能计时工具,为了让它不分散任何的注意力,为了在它时间错乱不用掏出手机校准,为了不让手机屏幕弹出各种消息通知,所以设计出这样一个成本低、体积小、抗干扰能力强、智能且功能足够的计时工具,而且,通过对周围同学的提问调研,笔者发现很多人都遭受着注意力易分散的困扰,因此才将智能闹钟作为毕业设计题目。1.2研究目的这个智能闹钟的设计主要是以普通电子表和智能手环为基础,提出了以ESP32开发板为核心器件来进行自动联网、红外感应的思想。该智能闹钟的核心部件是Goouuu-ESP32模块开发板;检测的元件是人体热释电红外感应器,采用热感元件检测周围环境是否有人靠近,如果有人靠近,则将闹钟重新唤醒并定时工作三分钟。联网元件的WIFI模块和蓝牙模块是开发板自带模块,通过Python/语言编写程序使该闹钟能够在相关网站自动爬取时间、日期、天气和空气质量等信息,并且将这些信息显示在OLED显示屏上;通过运用该联网模块还能使用阿里云物联网平台,它有非常多的扩展功能,如可视化Web和APP编程,让物联网的可玩性变得很强,大大降低了开发者的门槛。让该智能闹钟达到自动显示内容和实现智能控制的目的。采用智能闹钟的优势与其他的计时工具相比,智能闹钟的优势有:(1)与手机相比,体积更小,不会过于分散注意力。(2)与普通机械表和电子表相比,功能更多,不用手动调整时间。(3)与各类智能手表相比,动辄三四百元的售价,成本更低,满足经济适用性原则。(4)各部件可以随意更换,大大拓展的该闹钟的使用场景和可玩性,使其适合更多年龄段的使用者。总而言之,以ESP32开发板为核心的智能闹钟是以智能化、模块化、人性化和节约化为主要原则。达到解放人们的双手、集中人们的注意力和发散人们的创造性思维的目的。而且,基于单片机的智能电子时钟设计更为科学、简便,不仅使智能电子时钟功能性以及实用性得以全面增强,还为智能电子时钟提供了可靠、安全的保障[5]。智能闹钟的发展历程早在远古时代的日晷发展到今天的家用石英钟,作为计时器已经历了数十个世纪,在几千年的历史发展中,人类为了让计数器更加准确。从其设计原理、内部结构到各种材料的运用都做了大量的探索与尝试,只是在近代时钟的准确度才有了真正的保证同。从真正出现有刻度的钟表开始算起,计时系统主要经过了三个历程:机械装置,电子装置和智能设备。(1)机械装置计时方式在今天高档机械表不止是一种精密的计时工具,其背后更蕴含着品牌的文化,历史的传承,随时技术的不断发展,消费者观念的转变,消费者购买的动机,消费者的需求也在悄然的改变[7]。近现代的腕表机芯有着更复杂的结构,时间也更为精准,但时间仍然不够精确,只能作为日常使用。传统的计时控制方式相对来说,不仅结构复杂、不易维修,而且价格比较昂贵。而且它还过多依赖人的主动校准,所以现在基本只用作奢侈品和装饰品。(2)电子装置计时方式现在的电子表有很多种类,比如摆轮游丝式、音叉式、指针式石英表和数字显示式石英表,每个种类的计时原理都不尽相同。现在更为常用的石英表就是纽扣电池提供电能。通过振荡电路使石英谐振器产生高频振荡。指针式电子表会有步进电机传动齿轮系带动指针指示时刻。数字显示是电子表是经过各种电路将电信号变为数字信号,由发光二极管或液晶盘显示出来。这两种石英表的精度一般是月差不超过15秒。但大部分都需要手动校准,而且不能显示其他更多样化的功能,大部分也不能和手机APP连接。电子计时控制方式虽然解决时间精度的问题。但是由于它自身功能的局限性,使得它的使用场景只限于查看时间日期同时还需要手动校准,比如,石英表就不能显示天气和空气质量等信息,也不能真正连接网络自动调整数据。(3)智能设备计时方式这些智能设备的计时原理和电子石英表基本相同,都是在内部有一个叫做“石英晶振”的元件,这个重要元件发出的时钟频率不只用于计时,还会经由电源IC转换成时钟信号供给如WIFI、触摸等众多芯片。它的原理是晶体具有正逆压电效应,石英晶体谐振器的制作正是采用了石英晶体的正逆压电效应原理[8]。但恰恰是这些功能强大的设备,才最容易分散人们的注意力,在需要集中精神的学习创作中不够实适用。在一众智能设备中,手环是最接近本设计目标的产品,但是它对开发者不够友好,内部的绝大部分程序都因为加密而不能自由编辑,市场价格也都比较高。智能手机的使用现状手机沉迷与个体因素有高相关,比如性格、学习压力、同伴关系、人际关系等。有学者研究表明,高外向性与高神经质等人格特质可以有效地预测手机成瘾,高神经的人易手机沉迷[9]。智能闹钟主要是为了在安静的地方集中精力学学,尽量不被外界信息打扰,所以大部分人只需要使用倒计时、秒表等基本功能。为了节省时间,该闹钟需要能够自动校准时间且简单易上手,符合人们对智能产品的接受程度,使用者空闲时也能通过手机自由编辑闹钟设置。而且,很有必要在保证各功能正常使用的情况下,能够尽量延长一次充电的使用时间。对于学生群体而言,其中的大部分人没有固定收入,所以智能闹钟的性价比比较高。对单片机有兴趣的学生也能在闲暇时间主动探索了解这个智能闹钟的相关知识,未来是人人编程的时代,学会简便易用的Python会更有帮助。同时这款智能闹钟不仅对学生群体比较适用,也可能是未来智能手环的发展方向。如果想真正完善智能家居系统,一个轻松对接各类物联网平台和模块化设计的便携智能设备也是必不可少的。本设计所做的工作本次设计是智能计时工具的设计,工作主要有设计产品、硬件选型、搜集资料、程序编写、系统的测试与功能的实现。在设计过程中搜集的资料主要有Python零基础教程、各类传感器的工作原理、ESP32开发板的开发知识和驱动资料。硬件选型主要包括热释电传感器的型号选择,32位开发板的选型和一些其他模块的选择。选型的原则首先是能够与开发板进行对接,第二功能完善和技术成熟,最后要经济适用。程序的编写主要是基于所实现的功能来进行的;软件所需要的东西有Java环境、VSCode(VisualStudioCode)软件、Visio作图软件和Esplorer-CN-V0.2编辑器。其中,设置Java环境是为了能够运行编辑器来与开发板串口进行通信,这样就能在开发板上运行MicroPython固件;VSCode软件是编译程序的,相较于IDLE窗口更直观,能实现程序运行可视化;Visio作图软件用来编辑流程图。系统测试前,首先搭建好全部硬件平台,连接硬件,然后将程序拷贝后将一部分改名为main.py,这样能让开发板一启动便运行这些程序,实现自动联网并爬取数据的功能,剩下的部分直接保存到开发板上,最后进行系统运行测试,看能否实现所编写程序中预设的功能。第2章智能闹钟的方案设计控制系统的组成该控制系统主要由输入单元、系统单元、输出单元三部分组成。输入单元主要是将经人体红外传感器转换的电信号在总线上进行传输,主要部件有联网模块、红外传感器、人机界面等。系统单元系统单元主要是接受控制系统的数据并对其进行集中处理、指令发送、通信传输进行保障等。主要的部件为ESP开发板。输出单元输出单元主要是系统单元发送出指令后,接受指令并做出相应动作。主要组成部件有OLED显示屏,I/O口等。设计的依据该计时控制系统主要是为了实现智能闹钟的多种功能,所以它的设计依据主要有以下五个方面:(1)以人为本人是社会的主体,科技发展始终是为了人,所以系统设计应该把人的利益作为一切工作的出发点和落脚点,以简单、安全、经济适用为原则,不断满足人们的多方面需求和促进人的全面发展。(2)针对性随着时代和科技的发展,智能手机虽然便捷了人们的生活但也占据了人们绝大部分的空闲时间,甚至会影响人们学习工作时的状态,这个智能闹钟就是针对那些需要集中精力但又容易被影响的人群,如果能将这个闹钟进一步发展,可能会吸引到更多对电力电子感兴趣的开发者。(3)安全可靠、适应性强系统的设计应该具有安全可靠性并能适应一些恶劣环境,这是为了在系统发生故障或其他特殊情况时,不影响闹钟基本功能的使用,且能够迅速修复;所以如果有条件的话,可以增加一些生活防水的功能。(4)标准化、开放化标准化和开放化是未来各类技术发展的必然趋势,所以该控制系统的设计应该能够与市面上大部分电子器件直接连接和遵循国际上的通信协议。使用在中小企业最受欢迎的计算机语言Python3.8更是标准化的体现,标准化和开放化还有助于该系统与其他模块进行对接,增添一些其他的功能。(5)先进性、扩充性控制系统的设计还应具有一定的先进性,但也要在已成熟的技术上追求先进性,因为稳定性才是保证控制系统正常工作的先决条件。同时,为了以后功能拓展的需要,该系统还具有更多可升级的模块和与其他各类物联网平台对接的功能:比如OneNet、百度云和阿里云物联网平台。设计的目的该控制系统主要为智能闹钟服务,设计的目的主要有以下几个目的:(1)提高使用者的工作学习效率闹钟具有简洁易上手的操作系统,使用起来更方便,也更容易让人们保持住专注力,免受各种杀时间APP的影响,能够提高学习工作的效率,养成更好的习惯。人们也可以在闲暇时间通过手机对闹钟的功能进行调整以适用于每天更改的计划,在日常生活中更实用。他对开发者也很友好,简单的Python让开发者能够使用各种库函数来对闹钟进行模块化的新功能。(2)节约能源、保护环境该闹钟使用的全都是低能耗的元器件,如果后续安装电源模块,能够更加延长智能闹钟的使用时间。不仅如此,大部分单片机都有多种低功耗模式,如果交给经验丰富的单片机开发者,使用极致的低功耗模式后,一次充电甚至能够使用一到两年,将会大大降低闹钟的功耗。(3)维修方便、可玩性高该闹钟采用的是模块化的设计,如果闹钟有部分功能出现损坏,只需要更换其功能相对应的模块即可,不需要重新布线排疑,而且后期也能用开发板来编辑添加新功能,给维修人员和开发者提供了极大的便利;对于学生群体来说,在设计制造该闹钟时能帮助学生复习单片机、电力电子、C语言等课程,也能学习搭建Java环境、Python语言、物联网等新知识。方案总设计该控制器以人体是否存在作为ESP32控制器的输入参数,当检测到有信号输入时,控制器就会工作,运行相应的程序并在OLED屏上显示时间、日期和天气等信息。同时该控制器还以矩阵键盘作为人机界面,按键不仅可以切换闹钟的各个功能,也能在切换到想使用的功能后控制开始、暂停和设置参数。在平时的使用中,该闹钟有两种打开方式,第一种是人体红外感应自动控制,当系统检测到有人体靠近时,控制器就能将信号传输到开发板,让闹钟开始工作,并且三分钟后还能自动关闭,这种设计能够大幅度节约电量以延长闹钟的使用时间。第二种是直接用按键控制开关,这样可以在红外模块出问题的时候也能正常使用。同时具有两种打开方式,也能让闹钟适应更多学习工作的场景,本设计还能通过矩阵键盘上的按键来切换闹钟的其他功能,比如利用开发板自带的定时器功能制造秒表和计时器,可用在计算做题速度、业余的锻炼计时、番茄钟学习法和午睡计时中。当有学习或特殊需要的时候,可以连接个人PC来修改程序运行时的参数,比如闹钟自动打开到息屏的时间,它也能与手机APP相连来控制某些模块的使用,比如后续能增加更换闹铃音乐的功能。总而言之,无论是在何种场景下,智能闹钟都能提供足够而不多余的功能。不会像其他智能设备一样消息过于繁杂分散精力,更易上手使用,成本也更加低廉,也能重复循环使用,大大节约了资源。

第3章硬件设计主体系统的硬件构成在设计该闹钟的过程中,最初各种功能的设想也确定了系统各模块的名称。其中,核心当然是ESP32开发板主控模块,其它模块主要包括:联网模块、人机界面模块、红外模块、液晶显示模块和报警模块。其模块框图如图3-1所示:图3-1系统主要模块图核心开发板选择因为导师要求选用32位以上的单片机,所以本设计在STM32、ARM7、9、10、PIC32、RaspberryPi、ESP32中进行选择,经过一番对比,最终选择了ESP32开发板,不仅因为它的性价比非常高,自带免费的蓝牙和WIFI模块,非常适合物联网(IoT)领域,而且更重要的是它能够刷入MicroPython固件,如此一来,编写程序时时就能使用效率更高更简便的Python语言进行编程,大大降低了上手难度,原理图如图3-2所示:

O.luF10271CUF||>GNDUIGND1加皤强眼2526271412QoC0000口C『□No图3-2ESP32开发板原理图rO.luF10271CUF||>GNDUIGND1加皤强眼2526271412QoC0000口C『□No图3-2ESP32开发板原理图r।除IO22犯-1XURXD331021晓eSTr'1019301015I291052810V二仁^DIG26104“NDGN03«Q22TXDCRXDO1021NC1019I6H人体红外传感器的介绍工作原理在自然界中,任何高于绝对零度(-273℃)的物体都会以电磁波的形式向外辐射能量。而红外辐射具有一定的规律性,基尔霍夫定律指出,在一定温度下,达到热平衡的物体辐射本领与吸收本领成正比,即发射率等于吸收率,而人体自身是一个红外辐射源。皮肤的红外发射率很高,接近黑体[10]。当温度发生变化时,晶体内部的正负电荷中心会有相对移动,自发极化发生改变,从而会使其表面吸附的电荷数量改变。对外就显示出了极化场,这就是热释电效应mo3.3.2菲涅耳透镜菲涅耳透镜,又名螺纹透镜,在红外传感器中是一个非常重要的一个部件。其主要作用原理如下:人体所辐射出的红外线通过红外无线报警器的菲涅尔滤光片增强后被击中到红外无线报警器热释电元件构成的红外感应源上,感应源在接收到电磁人体红外辐射以后,就会出现电荷失衡的情况,释放电荷,然后通过检测,发出警报[12]。红外传感器的选择在考虑过单片机适配问题和经济适用性问题后,本设计选择HC-SR501型号的热释电红外传感器。它具有以下几个特点:(1)自带两种触发方式:一种是可重复,另一种是不可重复;可重复就是一段时间内,如果探测到有人存在,则将一直保持输出高电平;不可重复即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。且该闹钟出厂设置默认为可重复触发。(2)接收到信号后会间断输出两次高电平:当有人进入监控范围后,传感器就会输出

两次高电平,这是为了防止单片机第一次没有接收到传感器的高电平信号;如果之后再探测不到有人活动,传感器会自动延时关闭高电平,延时关闭的目的为了提高探测的准确性。(3)预留有光敏电阻位置:传感器可配合5539光敏电阻使用,使用光敏电阻后传感器就能识别信号的强弱,这样传感器在白天或光线过于强烈时不工作。红外传感器原理图介绍完红外传感器的工作原理和特性后,红外传感器原理图如图3-3所示:图3-3热释电传感器原理图人机界面模块的介绍矩阵键盘经过程序编辑后,可以向单片机输入命令、传送数据。常用的键盘输入方式有两种,一种是独立按键输入,即每个按键对应一个功能,一种是矩阵键盘输入。本设计为了节省I/O口的使用数量,所以使用矩阵键盘。矩阵键盘本质上是类似于矩阵的键盘组,由于开发板的引脚数量有限,所以要用矩阵键盘来增加按键控制数量,该闹钟使用的3*2的矩阵键盘,原理是将六个按键的三个纵向端接输入,两个横向端接输出,定义好五个引脚后,在程序中引入自己编写的KeyScan()库,用来持续扫描这六个按键,当有一个按键被按下时,程序会返回相应的数值,只需要标记好每个按键代表的数值,就能通过五个接口显示屏型号的选择LCD屏幕的工作原理和特性LCD字符点阵型液晶显示模块的原理:它是利用液晶经过处理后能改变光线的传播方向,通过电流刺激液晶分子实现各种画面的显示[13],以电流刺激液晶分子产生点线面并配合背光构成曲面。正是由于其需要背光源的特性,所以它的功耗较高,并且由于其发光材料的限制,在某些环境中,LCD屏的显示效果比较差,可视角也很窄。OLED屏幕的工作原理和特性自从1979年OLED技术在柯达实验室诞生之后,就一直被誉为下一代显示技术的候选人。OLED技术以超简单的结构,高对比度,快响应速度,更宽的温度适应范围等优势在近年得到了大规模的发展与应用[14]。(1)工作原理:OLED显示技术无需背光灯,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光。OLED显示屏幕可以做得更轻更薄,可视角度更大,并且能够显著节省电能[15]。(2)自发光、不需背光源、功耗低:更加适合小系统。由于两者发光材料的不同,OLED屏对比度高、厚度薄视角广、可视角大,在不同的环境中,OLED屏的显示效果更好。(3)适用性强:屏幕模块中优异的结构和制程设计使得它反应速度更快、使用温度范围更广。经过对oled库的进一步扩充,可显示的类型有汉字、ASCII、图案等。同时为了用户能将其更方便的连接在产品上,预留了4个M3固定孔。3.5.4OLED屏原理图OLED屏原理图如图3-5所示:图3-5OLED显示屏原理图

第4章软件设计4.1开发板控制流程图在设计该智能闹钟前,要先构想闹钟的总体框架,本设计将该闹钟的软件设计部分大体分为三层,首先,最顶层是“用户界面层”也可以叫做UI(UserInterface)层;然后;第二层是“函数引用层”也可以称其为文件层;最后,底层为“程序驱动层”。10其中,用户界面层可以在OLED屏幕上显示网络上爬取到的数据和接收用户在键盘输入的数据,能够在闹钟开机并运行完主程序后,让使用者外部操控各子程序的交替执行,也就是说用户可以通过矩阵键盘进行按键操作以切换并实现各种功能。引用函数层重的文件时主程序的一开始引用的各种库函数,有部分自己编写的库,还有一些时是官方自带和其他开发者在开源社区分享的,但无论是在代码简洁度上,还是逻辑的缜密程度上,笔者的自建库和他们还是有着很大差距。最后,驱动层就是主程序的运行,能够让计算机与硬件设备相互连接相互通信,设备的正常运行离不开驱动层中主函数的稳定编译。软件通信如图42所示:图42软件设计通信图设计完闹钟的运行框图后,本设计中的代码需要在相应的编译环境下才能运行,首先在官网下载Java,在桌面下载好EsplorerCNV0.2.jar并在这个编辑器中刷入MicroPython固件,让电脑处在Java和Python的运行环境中,然后根据所需的功能找到需要引用的库函数,最后将自编库和主程序编写完成,由于编辑器的保存文件功能效率太低,所以本设计在单片机联网后使用webrepl脚本将程序文件传输到单片机,这时再让单片机开机直接执行主程序,就能完成总体设计。程序传输流程图如图43所示:图43程序传输流程图人机界面层矩阵键盘和OLED显示屏构成了人机界面层的主体功能。矩阵键盘的功能主要由模式切换按键、开始暂停按键、时间设置按键、闹钟设置按键、清零按键和加法按键构成。一般的去抖方式有2种,一种是“硬件去抖”,另一种是“软件去抖”。在以前的设计中,硬件电路的“去抖”方式通常是使用各种触发器或者分立元件来实现“去抖”[应设计按键时要充分考虑机械装置存在的误差,要在软件中写入消抖程序;OLED屏的功能可以使用户在使用矩阵键盘后得到的反馈更加快速具体。首先,给单片机上电,单片机会自动运行主程序并引用KeyScan库,也就是键盘扫描函数,进入界面,使用时可以根据个人习惯来设置按键位置,只需要记住每个按键代表的数字,就能在程序中实现按键控制。如图4-4所示:图4-4人机界面流程图各个功能的切换顺序在程序中已经确定,如果想要修改,由于其模块化的程序设计,只需要在主程序中改变相应数字即可。函数引用层顾名思义,函数引用层中的文件都是主程序需要引用的库函数程序,是已经传输并保存到单片机中的文件,它介于程序驱动层与人机界面层之间,是主程序能够顺利运行的关键,同时也是主程序能够简洁明了的关键所在;驱动层的主程序在运行前会通过import语句引用文件层的所有库函数程序,然后让驱动层的各个子程序在屏幕上实现相对应的功能,先直接与设定好的网络进行联网,显示日期、时间、湿度、PM2.5和当日与明日的天气。首先将程序的内部逻辑部分编写好,命名为clock.py,之后如果编写其他程序时需要使用该程序的某个变量或者函数,只需在调用函数前加上文件号即可。真正使用时是通过12MicroPython中的import函数调用的。执行程序功能时,首先引用自带的Timer定时器库、time时间函数库和Pin引脚库,然后引用个人编写的KeyScan键盘扫描库,LinkNet网络连接库,clock总体功能库,oledOLED显示屏库,然后在使用这些库中的函数或变量时,需要在函数前面加上所引用库的名称,然后才能执行功能。引用完需要的库函数后,还需要将所有变量初始化。在定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global,global语句是适用于当前整个代码块的声明,是全局变量的标识符,它的作用是提醒MicroPython解释器,表明被其修饰的变量是全局变量。但是,该闹钟设计的功能较多,变量也很多,如果在每一个函数里都要使用global语句声明,代码的复杂度会大大增加,所以在程序中可以将变量设置为字典形式,这样只需要在函数开始时声明一次即可,使得代码简洁了许多。开头引用库函数的程序如下:frommachineimportTimerfrommachineimportPinimportKeyScanimportLinkNetimportclockimportoledimporttimedefswitch():globalmodekey=KeyScan.scan()ifkey==5:mode+=1Display_time=0#设置时钟能显示的时间warning=0#让蜂鸣器只响三下mode=0#用于四个功能的切换flag=0#用于时分秒位的闪烁max=0#防止主程序陷入死循环,限制闹钟工作的最大时间p13=Pin(13,Pin.OUT)#LED灯p12=Pin(12,Pin.OUT)#蜂鸣器p34=Pin(34,Pin.IN)#红外传感器KeyScan.init()clock.time_init()图4-5函数引用层执行流程图执行的流程图如题4-5所示,其中第一步为打开设备并自动运行主程序;第二步为引用所需的库函数,将所有变量初始化,并去执行程序主体;第三步为在适用所有功能后,关闭程序并切断电源。本次智能闹钟设计主要是为了实现四个功能,这四个功能参考了手机APP上的操作逻辑,功能一是时钟显示功能,它可以分为自动和手动两种模式;功能二是闹钟设置功能,到达指定时间会报警;功能三是秒表计时功能,一次性可同时记录四次时间;程序四是倒计时功能,设定好时间后,倒计时结束会自动报警。其中手动控制模式和自动控制模式可以随时切换,当需要手动控制时,用挡板盖住红外传感器,点击模式切换按键,会自动显示数据。当需要自动控制时,不需要按键,人体靠近传感器后也会自动显示数据,基本执行流程和自动控制相同。驱动层的设计通过驱动层中的主程序可以实现ESP32开发板的各个功能,在打开Esplorer-CN-V0.2编辑器后,当点击图标“连接”时,图标Open会先亮起红色,等待若干秒后变成绿色,然后再连续点击两次RTS按钮或者按一次单片机上的RST按键,重启编辑器,引用好文件层的库函数和经过初始化的变量后,就能开始编写主程序了。时钟显示功能的驱动程序如下所示。if(mode==1)or(p34.value()==1):LinkNet.linkNet()clock.getdata()clock.getweather()14clock.translate_today()clock.translate_tomorrow()o=oled.OLED()whileclock.Display_time<180:key=KeyScan.scan()o.String(0,0,clock.Time['date'])clock.showtime(o)clock.showweather(o)ifkey==5:time.sleep_ms(50)ifkey==5:o.Clear()mode=2break

图4-6驱动层主程序流程图首先打开设备,可自行选择两种控制方式,其中,按下模式切换键为手动模式;利用红外传感器为自动模式。当按下模式切换键后,OLED屏上显示从网络上爬取到的日期、时间、PM2.5等数据。当使用自动控制模式时,人体一靠近传感器,传感器的I/O口输出一个高电平,同样运行功能一的程序。只需要将这两个判断条件用or语句连接,即“一对皆对”,就能实现两种控制模式的随意切换了。最后需要注意的是,如果名为main.py的程序中存在有缺陷的死循环,一旦该程序意外跑飞,单片机极有可能要重新刷入固件,所有程序重新写入。所以,在做好程序备份的同时,也要注意在主程序中尽量少用死循环(whileTrue)函数。4.3系统测试在进行最终测试前,需要将写好的主程序命名为main.py,直接开机后让其运行。硬件构成主要有红外传感器,OLED显示屏,5V有源蜂鸣器,PCB板,ESP32开发板,杜邦16线,按键,LED灯等。通过PCB板上的焊锡走线来连接各种模块与开发板。当硬件设备连接好就可以进行测试。控制方式分为自动和手动控制两种,当需要进行手动控制时,按下模式切换按键即可;使用人体红外传感器开机为自动控制,因为带有菲涅尔透镜的红外传感器十分灵敏,会受到光照等外界环境影响,所以不使用时要用不透光的物体将其扣住,以免影响实验结果。当传感器感受到有人体靠近时,系统可以进行自动控制,不用按下按键,人体一靠近便能得到数据,实现和按键开机一样的效果首先进行自动控制测试,先将红外传感器用不透光的挡板扣住,然后连接电源,进入自动控制状态,拿开挡板,当有人体靠近时,系统会自动运行联网程序,显示各种从网上爬取的信息。图片如图47所示:图47自动控制时间显示测试手动控制时,先将红外传感器用挡板扣住,或者直接拔下红外传感器,排除人体因素的干扰,模拟红外模块出现损坏的状况,然后按下模式切换按键,这时会和自动控制得出的结果相同,在OLED屏上显示网上爬取到的各类信息。图片如图48所示:图48手动控制时间显示测试完时钟显示功能后,便可以开始测试闹铃功能,按下模式切换键,屏幕上会在第

三行显示0:0的字样,这时按下闹钟设置键,闹钟分位开始闪烁,代表着此时可以对该位数字进行增加操作,按下加法键,该位数字加一,调到确定的分钟后;再按闹钟设置键,闹钟时位开始闪烁,代表着此时可以对时位的数字进行增加操作,按下加法键,调到确定的小时后;再按一次时钟设置键,时位分位不再闪烁,代表闹钟时间已经设置完成,等到外界时间到达闹钟的设置时间后,蜂鸣器断续鸣响三次,同时LED灯闪烁三次,代表时间已到,开始报警。图片如图4-9所示:图4-9手动设置闹钟测试完闹钟功能后,便可开始测试秒表功能,本设计在设置该功能时参考的是手机上的秒表,首先按下模式切换键,屏幕上显示出0:0:0的字样,这时开始按键,秒表开始计时,秒表到达需要的时间后第二次按下开始键,秒表会在第一行记录下第一个需要的时间,第二行仍然沿着秒表时间计时,同理,该秒表一次性最多可记录四个数据,按下第五次开始键后,四行时间全部停止,如果还想继续即使,再按下开始键,新的数据会按顺序覆盖旧的数据;并且,不论是在计时结束后,还是在计时进程中,按下清零键都能使屏幕显示原始界面,并且仍能用开始键重

温馨提示

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

评论

0/150

提交评论