基于Arduino单片机的智能家居设计.doc

上传人:xin****828 文档编号:6695040 上传时间:2020-03-02 格式:DOC 页数:28 大小:3.39MB
返回 下载 相关 举报
基于Arduino单片机的智能家居设计.doc_第1页
第1页 / 共28页
基于Arduino单片机的智能家居设计.doc_第2页
第2页 / 共28页
基于Arduino单片机的智能家居设计.doc_第3页
第3页 / 共28页
点击查看更多>>
资源描述
山东科技大学第三届学生电子设计大赛技术报告基于Arduino单片机的智能家居系统学院: 电子通信与物理学院班级: 硕研2015级 参赛者:张荣飞 曹其栋 侯焕存摘要本文中我们基于Arduino单片机设计了一个模拟智能家居系统。该系统以Arduino UNO R3单片机为核心,外接光照检测、温湿度传感器、LED、风扇和无线通信等模块。整个系统分为检测端和控制端两大部分,检测端由光敏电阻、温湿度传感器、无线通信模块和单片机组成。控制端由无线接收、液晶显示、电灯控制和风扇控制四大模块组成,包含单片机、无线通信模块、LCD显示屏、风扇和LED等。检测端和控制端之间借助无线通信模块进行无线通信,控制端内部的无线接收和液晶显示两个模块之间则采用串口通信。该系统能够实现对室内温度、湿度和光照强度等参数的实时检测,并借助LCD显示温湿度值,还可以根据检测端探测到的光照强度和温度值以及预先设定的参数对室内的电灯和风扇进行智能控制。关键词:智能家居;Arduino单片机;自动控制;无线通信;液晶显示目录1绪论11.1智能家居简介11.2智能家居的研究意义22系统总体设计方案32.1系统框图32.2系统工作原理简介33 系统硬件设计43.1单片机的选择43.1.1 Arduino UNO简介43.1.2 Arduino单片机特色53.1.3 Arduino单片机引脚简介53.1.4 Arduino单片机编程软件63.2温湿度检测模块设计63.2.1 DHT11概述63.2.2 DHT11引脚说明73.2.3 电源引脚83.2.4 串行接口(单线双向)83.3光照检测模块设计83.4无线通信模块设计93.5液晶显示模块设计93.5.1液晶显示模块的选择93.5.2 液晶显示电路设计103.6其他模块设计113.6.1电灯模块设计113.6.2风扇模块设计123.7系统硬件实物图124软件系统设计134.1检测端程序设计134.2 控制端程序设计135总结15参考文献15附录:源程序16基于Arduino单片机的智能家居系统1绪论1.1智能家居简介智能家居很早就出现在人们的定义当中,但很长时间以来都没有真正意义上的智能家居成型,到了1984年美国联合科技公司(United Technologies Building System)将智能信息融入建筑设备中,在整合的基础上应用到了美国康乃迪克州哈特佛市的城市地标性建筑中时,出现了世界上的首栋智能化建筑,也正是从那时开始,智能化家居正式融入到现代生活中。智能家居控制的发展关键在于设计理念以及经营者的心态,市场目标客户真正需要什么东西,如果只注重签单,不设身处地的为客户着想,不兼顾智能解决未来的发展,提供片面的智能家居解决方案,而不考虑客户的适用性,是不可取的,是急功近利的表现,这不仅降低了智能家居的应用效果,还不利于整个智能家居行业的发展。智能家居控制系统的市场不是一般普通的商品买卖,而是一项系统性工程,它涉及到很多技术,涉及到人们生活的方方面面,智能家居控制系统的终极目标是一种理想,更是一种理念,要想智能家居控制系统有很好的发展,研发机构必须本着长远发展的心态,本着简化、实用、性价比高、适合市场的理念,虔诚研究人们的生活、习惯、精神文化等需要,并把它看最高目标,运用各种技术手段实现它。在国内,智能家居不是单纯意义上的智能产品,也不能被狭义的理解为小区智能化,而是基于小区的多层次家居智能化解决方案。它综合利用主控平台、无线连接及通信、设备管理、整体布局布线等手段,将住户智能化管理、交互共享及消费服务、小区安防监控等常见家居因素协调配合并最终整合为整体,在原有小区智能化的大面上延伸到小区内部室内家居的具体环节,构建出高效、舒适、安全、便捷的个性化住宅空间。近几年,很多研发机构和厂商已经意识到家庭安全的重要性,把智能家居作为一个重要的方向和项目来研究,并纷纷投入大量人力财力,使智能家居真正的走向市场和产业化生产。智能家居是一个具有交互能力的平台,并且通过平台能够把各种不同的系统、协议、信息和内容控制在相对独立的模块单元中进行传输、交换。1.2智能家居的研究意义随着人们生活水平的不断提高,生活节奏的加快,人们不断的对居住环境提出更高的要求,越来越注重家庭生活中每个成员的舒适、安全和便利,因此从市场需求的角度来说,智能家居必然是前景广阔。因此设计一个符合国家国情和规范的集远程控制和本地控制为一体的智能家居控制系统是非常具有现实意义的,且势在必行。作为智能家居的核心系统的智能家居的控制系统,它的设计功能的完善必将推动住宅智能化的发展。而系统功能的集成化、用户使用的傻瓜化以及市场的平民化将是智能家居控制器的发展趋势,系统也将逐步迈向绿色化。最终,我想全人类的梦想是智能家居控制系统将囊括所有的家事杂物,让我们真正的享受舒适温馨的家庭生活。虽然智能家居经过十几年的蓬勃发展,很多功能已趋于完善和成熟,智能化家居系统的应用也越来越广泛,然而生活中的智能家居所展现出的智能化,与业主所理想的智能化还存在较大差距。而这也推动了智能化技术在家居领域的纵深发展,并为各类智能化家居新产品的设计和研发增加了动力,同时新产品的出现,也大大丰富了智能家居系统的厚度。因此,将智能家居作为这次研究的主要内容具有很大的现实指导意义。 本文的目的就是设计一个简捷有效智能家居控制系统,从温度、湿度、光照强度的采集,到LCD实时显示,并根据采集的信号不同采取相应的应对机制,智能控制家中的电灯、风扇等电器设备,从而实现基本的智能家居功能。2系统总体设计方案2.1系统框图智能家居控制系统对整个家庭内部环境进行监测和及时应对的系统,核心部分是单片机,通过与其他各监测模块和执行模块的连接,实现对室内环境的整体改变和各元件的控制。首先,主控元件对接收到的数据(如光线强暗,温度高低)通过LCD显示模块进行实时显示,使室内情况一目了然。然后根据各信号采集模块传送给单片机的数据,做出应对执行,实现家居系统的智能控制。系统总体框图如下:图2.1 系统总体框图2.2系统工作原理简介本系统工作可以分为四个部分:第一部分是传感器数据采集,将温度传感器、湿度传感器以及光敏电阻分别连接到单片机上,单片机会将传感器采集到的实时数据进行处理;第二部分是数据传输,有两个无线模块,一个连接到单片机上作为发射端,一个连接到单片机上作为接收端,单片机将处理过的数据通过发射端发送出去,单片机通过接收端将数据接收进来,再次进行处理;第三部分是控制功能,单片机将接收到的数据与设定的阈值进行比较,当达到阈值条件时,可以启动风扇或者电灯,另外,温度和光敏设定了几个不同的阈值,当达到某一阈值会有相应的风扇转速或者电灯亮度;第四部分,温湿度显示,单片机将通过无线方式接收到的数据采用串口通信的方式传给单片机,单片机是专门用来控制LCD 1602液晶显示屏的,得到数据后单片机将数据传到液晶屏进行显示。3 系统硬件设计3.1单片机的选择首先将所需器件罗列,根据与单片机相连的各器件,确定整个系统所需与单片机连接的管脚数,通过查资料,选定Arduino单片机作为该系统的微控制器,因为它带有模拟I/O口,在外接各类传感器方面比普通的51系列单片机更为方便。Arduino单片机的模拟I/O口可以很方便地将光敏电阻和温湿度传感器等模块采集到的模拟量经A/D转换后送给单片机进行处理,而对数字信号的识别和处理正是Arduino的优势所在。3.1.1 Arduino UNO简介Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。UNO已经发布到第三版,与前两版相比有以下新的特点:在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。 这样改进了复位电路设计 ,USB接口芯片由ATmega16U2替代了ATmega8U2 。图2.2为改进后的Arduino UNO。图2.2 Arduino UNO R33.1.2 Arduino单片机特色1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。2、使用低价格的微处理控制器(ATMEGA8或ATmega128)。可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。3、Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入ATmega8或ATmega128芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。4、可依据官方提供的Eagle格式PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。可简单地与传感器,各式各样的电子元件连接(如:红外线、超声波、热敏电阻、光敏电阻、伺服马达等)。5、支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。3.1.3 Arduino单片机引脚简介Arduino单片机的数字I/O被分成两个部分,其中每个部分都包含有6个可用的I/O管脚,即管脚2到管脚7和管脚8到管脚13。在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。解决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(Positive Logic)和负逻辑(Inverted Logic)两种。Arduino的优势在于对数字信号的识别和处理,但我们所生活的真实世界并不是数字(digital)化的,简单到只要用0和1就能够表示所有的现象。例如温度这一我们已经司空见惯的概念,它只能在一个范围之内连续变化,而不可能发生像从0到1这样的瞬时跳变,类似这样的物理量被人们称为是模拟(analog)的。Arduino是无法理解这些模拟量的,它们必须在经过模数转换后变成数字量后,才能被Arduino进一步处理。3.1.4 Arduino单片机编程软件Arduino 语言是建立在 C/C+基础上的,其实也就是基础的 C 语言,Arduino 语言只不过把 AVR 单片机(微控制器)相关的一些寄存器参数设置等都函数化了,不用我们去了解他的底层,让不太了解 AVR 单片机(微控制器)的朋友也能轻松上手。图2.3 Arduino编程界面Arduino 语言是以 setup()开头,loop()作为主体的一个程序构架。官方网站是这样描述 setup()的:用来初始化变量,管脚模式,调用库函数等等,此函数只运行一次。loop()函数是一个循环函数,函数内的语句周而复始的循环执行,功能类似 c 语言中的“main();”。3.2温湿度检测模块设计智能家居的一个主要控制对象就是住户室内温湿度,适宜的温湿度为主人提供良好的家居环境,这样一来,温湿度检测与控制模块就变得尤为重要。考虑到硬件电路的复杂性,本设计中选择DHT11数字温湿度传感器来检测室内的温度和湿度,这样可以用一个传感器检测两个指标,使硬件电路得以简化。3.2.1 DHT11概述DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。图3.1 DHT11实物图3.2.2 DHT11引脚说明引脚号 引脚名称 类型 引脚说明1 VCC 电源 正电源输入,3V-5.5V DC2 Dout 输出 单总线,数据输入/输出引脚3 NC 空 空脚,扩展未用4 GND 地 电源地图3.2 DHT11典型应用电路3.2.3 电源引脚DHT11的供电电压为 35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。3.2.4 串行接口(单线双向)DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,用户MCU发送一次开始信号后,,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集,采集数据后转换到低速模式。3.3光照检测模块设计光敏电阻特性是在不同光照强度下,其阻值发生变化(只要是人眼可感受的光,都会引起它的阻值变化)。利用这一特性,我们把光敏电阻接入电路实现光照强度检测。图3.3 光照检测电路示意图亮度检测电路工作原理:我们把光敏电阻接入电路后,光敏电阻置于窗口处,由于光线的变化,其阻值也在一定时间内不断变化,从而产生连续的电信号,通过模拟I/O口进入单片机。由于单片机内部自带A/D转换电路,通过相应程序,能使模拟I/O口传来的电信号转换成数字信号,单片机读取这些数字信号,就能得出相应的光照强度,并决定是否启动其他应对措施。3.4无线通信模块设计考虑到系统的普遍适用性和硬件电路实现的难易程度,本次设计中选取NRF24L01无线模块作为系统的无线通信模块,该模块既可以用于发送数据,也可以用于接收数据,且易于编程操作。NRF24L01无线模块主要特点如下:(1) 2.4Ghz 全球开放ISM 频段免许可证使用;(2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合;(3) 126 频道,满足多点通信和跳频通信需要;(4) 内置硬件CRC 检错和点对多点通信地址控制;(5) 低功耗1.9 - 3.6V 工作,待机模式下状态为22uA;掉电模式下为900nA;(6) 内置2.4Ghz 天线,体积种类多样;(7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便;(8) 内置专门稳压电路,使用各种电源包括DC/DC 开关电源均有很好的通信效果;(9) 2.54MM间距接口,DIP封装;(10)工作于Enhanced ShockBurst 具有Automatic packethandling, Auto packet transaction handling,具有可选的内置包应答机制,极大的降低丢包率。3.5液晶显示模块设计3.5.1液晶显示模块的选择LCD1602屏幕为2行,每行显示16个字符,为字符型显示器,只能显示数字和字符,不可以显示汉字。 LCD12864屏幕为64行,每行显示128个字符,为点阵型显示器,可根据需求任意显示字符,数字,汉字和图形。综合价格因素和实际应用的需要,选用LCD1602为改家居系统的显示器。下面详细介绍一下LCD1602的功能实现和各项参数。 LCD1602主要技术参数: 显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm LCD1602相比传统显示器的几个突出优点:(1)显示质量高 由于液晶显示器收到信号后的每一个点都会一直保持原有亮度和颜色,恒定发光。而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器既不会闪烁,又保证了画质高。(2)数字式接口 液晶显示器的输入输出采用数字量,和主控芯片(SCM)的接口连接更加简单可靠,操作也更为简便。(3)重量轻,体积小 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器要少得多。LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。3.5.2 液晶显示电路设计图3.4 液晶显示电路示意图液晶显示电路工作原理:液晶显示器LCD1602通过714管脚的数据总线与单片机进行数据传送,单片机通过输出高地电平来控制液晶显示器LCD1602的46管脚配合传送的数据决定读/写数据,并通过LCD显示屏显示出来。期间单片机是控制元件,而LCD1602为显示和执行元件。3.6其他模块设计3.6.1电灯模块设计本次系统设计中用发光二极管LED来替代实际场景中的电灯。 LED发光原理发光二极管是由-族化合物,如GaAs(砷化镓)、GaP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结。因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由N区注入P区,空穴由P区注入N区。进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。发光的复合量相对于非发光复合量的比例越大,光量子效率越高。由于复合是在少子扩散区内发光的,所以光仅在靠近PN结面数m以内产生。 理论和实践证明,光的峰值波长与发光区域的半导体材料禁带宽度Eg有关,即1240/Eg(mm)式中Eg的单位为电子伏特(eV)。若能产生可见光(波长在380nm紫光780nm红光),半导体材料的Eg应在3.261.63eV之间。比红光波长长的光为红外光。现在已有红外、红、黄、绿及蓝光发光二极管,但其中蓝光二极管成本、价格很高,使用不普遍。 LED的应用由于发光二极管的颜色、尺寸、形状、发光强度及透明情况等不同,所以使用发光二极管时应根据实际需要进行恰当选择。由于发光二极管具有最大正向电流IFm、最大反向电压VRm的限制,使用时,应保证不超过此值。为安全起见,实际电流IF应在0.6IFm以下;应让可能出现的反向电压VR0。6VRm。LED被广泛用于种电子仪器和电子设备中,可作为电源指示灯、电平指示或微光源之用。红外发光管常被用于电视机、录像机等的遥控器中。在连接电路时,首先应正确区分LED的正负极,避免正负极戒饭导致无法使用甚至烧坏元件。LED的两只引脚中,长的一根为正极,短的一根为负极,连接电路时,正极接一个220的电阻,电阻另一端接单片机的数字I/O口,负极接地。3.6.2风扇模块设计本设计中,采用普通的直流电机带动扇叶来模拟实际场景中的风扇。直流风扇的两个接线端不分正负,一端接地,另一端接单片机数字I/O口即可,根据系统设计的要求,通过程序控制输出到电机的电压不同来改变电机转速,从而实现根据温度变化和预设参数改变风扇转速的目的。3.7系统硬件实物图根据上述各模块的硬件设计,最后做出的实物图如下:图3.5 模拟智能家居硬件实物图4软件系统设计4.1检测端程序设计检测端由单片机、光照检测模块、温湿度检测模块和无线通信模块组成,相应的程序包括光照检测程序、温湿度检测程序和无线通信程序,部分程序如下图所示,完整的程序在附录中。图4.1 检测端部分程序4.2 控制端程序设计控制端由单片机、液晶显示模块、电灯模块、风扇模块和无线通信模块组成,相应的程序包括无线接收程序、串口通信程序、显示程序、风扇和电灯控制程序,部分程序如下图所示,完整的程序在附录中。图4.2无线接收部分程序图4.3液晶显示部分程序5总结本次设计的模拟智能家居系统满足了所有的系统设计要求,完成了对温湿度的实时监测和现实,得到的最终结果误差也在要求的范围之内,而且完成了根据光照强度变化、温度变化和预设参数对电灯和风扇进行智能控制的任务,取得了令人满意的成果。通过本次设计,使我对基于单片机的智能控制有了更多的了解和掌握,在科技飞速发展的今天,科技意味着第一生产力,机器智能正在越来越多的方面取代人工操作,作为智能控制在工业应用的代表性成果,它结合了程序调控,提供了定时控制、计数控制、步进控制以及数据处理等多种功能,具有人工作业无法比拟的优越性和精确性。随着科技的发展,基于单片机的智能控制功能也会不断扩大,各项性能也将不断提高。参考文献1张鑫.单片机原理及应用M.北京:电子工业出版社,20082童诗白,华成英.模拟电子技术基础M.北京:高等教育出版社,20013王港元.电工电子实践指导M.南昌:江西科学技术出版社,20064李朝青.PC机及单片机数据通信技术,北京,北京航空航天大学出版社,20005蓝宇电子研发团队.Arduino设计M. 6汤凯,刘洋,续欣.Arduino程序设计指南M.北京:电子工业出版社,20157赵光宙.信号分析与处理M.北京:机械工业出版社,20108张国雄.测控电路(第四版)M.北京:机械工业出版社,2011附录:源程序检测端发送程序:#include #include #include #include #define DHT11_PIN 0 / ADC0 接到模拟口0byte read_dht11_dat() byte i = 0; byte result = 0; for (i = 0; i 8; i+) while (!(PINC & _BV(DHT11_PIN); / wait for 50us delayMicroseconds(30); if (PINC & _BV(DHT11_PIN) result |= (1 (7 - i); while (PINC & _BV(DHT11_PIN); / wait 1 finish return result;void setup() DDRC |= _BV(DHT11_PIN); PORTC |= _BV(DHT11_PIN); Serial.begin(9600); Mirf.cePin = 9; /设置CE引脚为D9 Mirf.csnPin = 10; /设置CE引脚为D10 Mirf.spi = &MirfHardwareSpi; Mirf.init(); /初始化nRF24L01 /设置接收标识符Sen01 Mirf.setRADDR(byte *)Sen01); /设置一次收发的字节数,这里发一个整数,写sizeof(unsigned int),实际等于2字节 Mirf.payload = sizeof(unsigned int); /发送通道,可以填0128,收发必须一致。 Mirf.channel = 5; Mirf.config(); Serial.println(Im Sender.);void loop() byte dht11_dat5; byte dht11_in; byte i; unsigned int Guangmin,WenDu,ShiDu; / start condition / 1. pull-down i/o pin from 18ms PORTC &= _BV(DHT11_PIN); delay(18); PORTC |= _BV(DHT11_PIN); delayMicroseconds(40); DDRC &= _BV(DHT11_PIN); delayMicroseconds(40); dht11_in = PINC & _BV(DHT11_PIN); if (dht11_in) Serial.println(dht11 start condition 1 not met); return; delayMicroseconds(80); dht11_in = PINC & _BV(DHT11_PIN); if (!dht11_in) Serial.println(dht11 start condition 2 not met); return; delayMicroseconds(80); / now ready for data reception for (i = 0; i 8; /高八位给data1。 /设置向serv1发送数据 Mirf.setTADDR(byte *)Rec01); Mirf.send(data); /while死循环等待发送完毕,才能进行下一步操作。 while (Mirf.isSending() 控制端无线接收程序:#include#include#include#includeintfengshan=6;intled=5;/定义一个变量adata存储最终结果,oldadata存储旧结果,防止相同结果刷屏。unsignedintWenDu=0,ShiDu=0,Guangmin=0;voidsetup()pinMode(fengshan,OUTPUT);pinMode(led,OUTPUT);Serial.begin(9600);Mirf.cePin=9;/设置CE引脚为D9Mirf.csnPin=10;/设置CE引脚为D10/-初始化部分,不可随时修改-Mirf.spi=&MirfHardwareSpi;Mirf.init();/初始化nRF24L01/-配置部分,可以随时修改-/设置接收标识符Rev01Mirf.setRADDR(byte*)Rec01);/设置一次收发的字节数,这里发一个整数,/写sizeof(unsignedint),实际等于2字节Mirf.payload=sizeof(unsignedint);/发送通道,可以填0128,收发必须一致。Mirf.channel=5;Mirf.config();voidloop()/定义一个暂存数组,大小为Mirf.payload。bytedataMirf.payload;if(Mirf.dataReady()/等待接收数据准备好Mirf.getData(data);/接收数据到data数组WenDu=(unsignedint)(data18)|data0);Mirf.getData(data);/接收数据到data数组ShiDu=(unsignedint)(data18)|data0);Mirf.getData(data);/接收数据到data数组Guangmin=(unsignedint)(data18)|data0);sender(WenDu);sender(ShiDu);delay(1050);if(25=WenDu=28)analogWrite(fengshan,51);elseif(29=WenDu=33)analogWrite(fengshan,255);elseanalogWrite(fengshan,0);if(0=Guangmin=60)analogWrite(led,255);elseif(61=Guangmin=120)analogWrite(led,153);elseif(121=Guangmin=180)analogWrite(led,51);elsedigitalWrite(led,LOW);voidsender(unsignedintx)unsignedintc,d,j;unsignedintSHU2;c=x/10;d=x-c*10;SHU0=c;SHU1=d;for(j=0;j2;j+)switch(SHUj)case0:Serial.print(0);break;case1:Serial.print(1);break;case2:Serial.print(2);break;case3:Serial.print(3);break;case4:Serial.print(4);break;case5:Serial.print(5);break;case6:Serial.print(6);break;case7:Serial.print(7);break;case8:Serial.print(8);break;default:Serial.print(9);break;控制端串口通信及液晶显示程序:intDI=12;intRW=11;intDB=3,4,5,6,7,8,9,10;intEnable=2;intEcho=13;intTrig=A0;voidLcdCommandWrite(intvalue)inti=0;for(i=DB0;i=1;digitalWrite(Enable,LOW);delayMicroseconds(1);digitalWrite(Enable,HIGH);delayMicroseconds(1);digitalWrite(Enable,LOW);delayMicroseconds(1);voidLcdDataWrite(intvalue)inti=0;digitalWrite(DI,HIGH);digitalWrite(RW,LOW);for(i=DB0;i=1;digitalWrite(Enable,LOW);delayMicroseconds(1);digitalWrite(Enable,HIGH);delayMicroseconds(1);digitalWrite(Enable,LOW);delayMicroseconds(1);voidsetup()Serial.begin(9600);inti=0;for(i=Enable;i=DI;i+)pinMode(i,OUTPUT);pinMode(13,INPUT);pinMode(Trig,OUTPUT);delay(100);LcdCommandWrite(0x38);delay(64);LcdCommandWrite(0x38);delay(50);LcdCommandWrite(0x38);delay(20);LcdCommandWrite(0x06);delay(20);LcdCommandWrite(0x0c);delay(20);LcdCommandWrite(0x01);delay(100);LcdCommandWrite(0x80);delay(20);voidloop()inti;charval4;while(Serial.available()val0=Serial.read();val1=Serial.read();val2=Serial.read();val3=Serial.read();Serial.print(val0);Serial.println(val1);Serial.print(val2);Serial.println(val3);ShowWD();ShowSD();LcdCommandWrite(0x80+6);delay(20);for(i=0;i=1;i+)LcdDataWrite(vali);LcdCommandWrite(0xc0+6);delay(20);for(i=2;i=3;i+)LcdDataWrite(vali);delay(1100);voidShowWD()LcdCommandWrite(0x80);delay(20);LcdDataWrite(W);LcdDataWrite(e);LcdDataWrite(n);LcdDataWrite(D);LcdDataWrite(u);LcdDataWrite(:);LcdDataWrite();LcdDataWrite();LcdDataWrite(C);voidShowSD()LcdCommandWrite(0xc0);delay(20);LcdDataWrite(S);LcdDataWrite(h);LcdDataWrite(i);LcdDataWrite(D);LcdDataWrite(u);LcdDataWrite(:);LcdDataWrite();LcdDataWrite();LcdDataWrite(%);24
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!