版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着互联网技术的发展,物联网概念的提出,以及智能家居的飞速发展,人们正处在传统家电向物联网智能家居过渡阶段,各大厂商都对自己的产品注入了智能芯片。但是,他们的标准不统一,不能很好的集成到一个平台上。SmartPlug(智能插头)正是这样一个绕过了家电厂商直接在家电外部实现物联网智能家居的远程监测与控制的设备,实现由传统家电向智能化家居过渡。本文详细介绍了SmartPlug(智能插头)硬件电路的设计、电路的实现、代码编写以及相关实验的关键技术,最后介绍了详尽的系统测试过程。本系统采用51单片机作为微处理芯片,Wi-Fi作为物联网的RFID与通信模块,C语言编写51单片机的控制与通信代码。在实现电脑端软件与51单片机通信功能后进行了系统测试。系统测试结果证明SmartPlug(智能插头)能够稳定运行,达到了设计目的与需求。关键词:物联网;射频识别技术;智能插头;片上系统;51单片机;无线模块Abstract目录TOC\o"1-2"\h\z\u第1章概述 11.1选题目的 11.2选题背景 11.3选题意义 21.4国内外研究现状及发展趋势 21.5本章小结 3第2章硬件平台的组件选择 42.18051系列单片机简介 42.2Wi-Fi简介 52.351单片机最小系统组件与实现 62.4其他电路元器件的选择 72.5本章小结 8第3章硬件平台的电路设计 93.1计算机辅助设计软件Protel99简介 93.2电路原理图的设计 93.3电路图的设计 123.4电路板的制作 133.5电子元器件的焊接 163.6本章小结 17第4章单片机片内软件设计 184.1Keil简介 184.2智能插头通信数据分析 194.3智能插头工作流程分析 214.4智能插头通信函数的编写 224.5智能插头片内程序主函数 314.6本章小结 32第5章系统测试 335.1系统参数配置 335.1.1Wi-Fi模块参数设置 335.2系统测试 375.3本章小结 38结论 39参考文献 40致谢 41第1章概述1.1选题目的物联网作为当前迅猛发展的新技术,已经成为当前的热点话题。物联网技术必将带来一场深刻的科技变革,带来人类科技文明的飞跃。但是,作为新兴的产业存在,发展物联网产业存在各个方面的问题。从物联网的概念和应用领域入手,认为发展物联网产业存在政策法规、技术方面以及商业模式方面的问题。借此分析,物联网的普及并不是一个短暂的时期,因此需要一个过渡型产品,来解决生活中的各种物联问题[1]。1.2选题背景信息产业经过多年的高速发展,经历了计算机、互联网与移动通信网两次浪潮,2000年后开始步入疲软阶段,整个行业的下一桶金在哪里?在此背景下,物联网、智慧地球概念的提出立即得到全球的热捧,其最大的动因就在于政府、企业各方都从中远望到下桶金的影子。物联网被称为世界信息产业第三次浪潮,代表了下一代信息发展技术,被世界各国当作应对国际金融危机、振兴经济的重点技术领域。实际上,物联网概念起源于比尔盖茨1995年《未来之路》一书,只是当时受限于无线网络、硬件及传感设备的发展,并未引起重视。随着技术不断进步,互联网、通信网发展到了较高的层次,国际电信联盟于2005年正式提出物联网概念,发布了《ITU2005互联网报告:物联网》,指出“永远在线”的通信及其中的一些新技术:如RFID、智能计算带来的网络化的世界、设备互联,从轮胎到牙刷,每个物体可能很快被纳人通信领域,从今天的互联网到未来的物联网预示着一个新时代的来临。但物联网的发展依然没有得到广泛关注。直到2009年1从这个过程来看,物联网的提出,既有人类对物品信息网络化的需求,也有当前技术发展的推动,如传感技术、身份识别技术、通信技术、网络技术、海量数据分析技术等,但最终还是振兴经济这个大旗使物联网得到广泛追捧。1.3选题意义21世纪是信息化的世纪,各种电信和互联网新技术推动了人类文明的巨大进步。智能家居的出现使得人们可以通过手机或者互联网在任何时候、任意地点对家中的任意电器(空调、热水器、电饭煲、灯光、音响、DVD录像机)进行远程控制;也可以在下班途中,预先将家中的空调打开、让热水器提前烧好热水、电饭煲煮好香喷喷的米饭,而这一切的实现都仅仅是轻轻的点几下鼠标,或者打一个简单的电话或者发一个简单的短信。此外,该系统还可使家庭具有多途径报警、远程监听、数字留言等多种功能,如果不幸出现某种险情,您和110可以在第一时间获得通知以便进一步采取行动。舒适的家居生活是进步的标志,智能家居系统能够在不改变家中任何家电的情况下,对家里的电器、灯光、电源、家庭环境进行方便地控制,使人们尽享高新技术带来的简便、时尚的生活。1.4国内外研究现状及发展趋势进入21世纪以来,现代技术的发展带动了智能住宅的发展,使建筑电气、计算机技术与建筑融为一体,使人们的工作和生活更加舒适、便捷和安全。但是由于智能装饰的发展受技术和经济两个因素的制约,长期以来使家庭难以接受,国内仅在办公楼宇、宾馆、酒店和少数特殊场合中有些应用。近几年随着科技的发展,人们的购买力不断提高,而产品成本不断降低,使智能产品走向家庭成为可能。例如近几年出现了一些智能化小区,一些高档住宅和别墅也安装了智能系统;一些家庭在进行家庭装饰中已经考虑预埋线路组建网络,有的已经安装可视门铃,有的安装了家庭影院等。随着智能家居市场的迅速膨胀,国内外许多企业将大量的资金和人才投入到智能家居产品的研发和生产领域。但是智能家居毕竟是一个新的领域,缺乏统一的行业标准,市场上的产品普遍存在兼容性差、运行稳定性难以保证等弱点。智能家居是住宅智能化的核心部分,目前我国的智能家居市场有三个特点:一是市场潜力大,现在的房地产业在全国的发展都很火爆,作为其下游产业,智能家居市场前景还是非常乐观的[2]。第二点就是产品多,厂家多,大部分集中在上海、北京、深圳、广州等地。但到目前为止还没有一家形成规模化。第三,就是目前国家对智能家居行业还没有实施统一的行业标准,使得很多中小企业各自为政,按自己对市场的理解来开发产品,相互间的产品不具备兼容性,这种局面有点春秋战国时代诸侯争霸的感觉。因此,今后几年智能家居市场会进入一个行业整合阶段,最终可能会出现几家规模比较大,品牌影响力好的厂家。从产品角度来讲,以后的智能家居产品会朝着实用化、傻瓜化(操作简单)、模块化的方向发展,所谓模块化就是产品开发商把智能家居产品做成模块化的,可以根据用户的实际需求任意搭配。这样不仅可满足不同层次用户的需要,而且可以节约成本,也可以节约不必要的端口模块的浪费。2009年10月,欧盟委员会以政策文件的形式对外发布了物联网战略,提出要让欧洲在基于互联网的智能基础设施发展上领先全球,除了通过ICT研发计划投资4亿欧元,启动90多个研发项目以提高网络智能化水平外,欧盟委员会还将于2011年~2013年间每年新增2亿欧元进一步加强研发力度,同时拿出3亿欧元专款,专门支持物联网相关公私合作短期项目建设。欧洲智能系统集成技术平台(EPoSS)在其报告InternetofThingsin2020中分析预测,未来物联网的发展将经历4个阶段,2010年之前RFID[3]被广泛应用于物流、零售和制药领域,2011年~2015年物体互联,2015年~2020年物体进入半智能化,2020年之后物体进入全智能化。就目前而言,许多物联网相关技术仍在开发测试阶段,离不同系统之间融合、物与物之间的普遍链接的远期目标还存在一定差距[4]。日本政府自20世纪90年代中期以来相继制定了"e-Japan"、"u-Japan"、"i-Japan"等多项国家信息技术发展战略,从大规模开展信息基础设施建设入手,稳步推进,不断拓展和深化信息技术应用,以此带动本国社会、经济发展[5]。韩国政府自1997年起出台了一系列推动国家信息化建设的产业政策,包括RFID先导计划、RFID全面推动计划、USN领域测试计划等。实现建设U化社会的愿景,韩国政府持续推动各项相关基础建设、核心产业技术发展,RFID/USN(传感器网)就是其中之一。继日本提出u-Japan战略后,韩国也在2006年确立了u-Korea战略,并制定了详尽的"IT839战略",重点支持泛在网建设。u-Korea旨在建立无所不在的社会(UbiquitousSociety),也就是在民众的生活环境里布建智能型网络(如IPv6、BcN、USN)、最新的技术应用[6]。1.5本章小结本章首先介绍了选题目的、选题背景及选题意义,然后介绍了智能家居系统的国内外研究现状及发展趋势,这样对整个选题就有了整体的了解与把握。为接下来的智能插头的设计与开发进行充分的市场调查与可行性分析,在此基础上进行的技术路线定位以及技术原理支持变得有理有据、条理清晰。第2章硬件平台的组件选择本系统的硬件选择是整个课题的核心部分,决定着智能插头这套系统的工作原理、工作方式,同时也决定着软件开发中的结构与模块,因此极为重要。兼顾前一章节的市场调查与需求分析,决定本套系统应该本着低成本,高效率、高稳定率、可拓展性强、后期维护方便、代码更新简便的原则来进行设计与开发的。本智能插头系统采用的逻辑电子元器件主要为:51单片机(80C51)、WI-FI模块,辅助元器件有:固态继电器(SSD)、电源模块、稳压芯片、以及用做接口电路耦合的电阻电容等。接下来介绍有关本系统中应用的有关硬件的历史背景、技术参数、发展状况以及目前主要的应用领域。2.18051系列单片机简介MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等)[7],各高校及专业学校的培训教材仍以MCS-51单片机作为代表进行理论基础学习。有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影极其深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。STC89C52RC为中国宏晶科技研发生产的新一代51单片机(如图2-1),其中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、I/O接口、EEPROM、看门狗等模块。该构架单片机具有PDIP、TQFP和PLCC三种封装形式,提供4组8位并行I/O端口,一个EA(访存控制)端口,一个VCC(电源正极)、一个GND(电源接地)、一对外部无源晶振端口,和一个RST(复位端口)。该单片机工作电压3.3V~5.5V,时钟频率范围0~80MHz,Flash程序存储器8K,SRAM为512字节,定时器3个,UART串口一个,EEPROM为4K。目前,单片机的应用领域主要包括:办公自动化设备;单片机在机电一体化中的应用;在实时过程控制中的应用;单片机在日常生活及家用电器领域的应用;在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比;在计算机网络和通信领域中的应用;商业营销设备;单片机在医用设备领域中的应用;汽车电子产品;航空航天系统和国防军事、尖端武器等领域。图2-1PDIP40封装标准的STC89C52单片机2.2Wi-Fi简介所谓Wi-Fi,其实就是IEEE802.11b的别称,是由一个名为“无线以太网相容联盟”(WirelessEthernetCompatibilityAlliance,WECA)的组织所发布的业界术语,中文译为“无线相容认证”。它是一种短程无线传输技术,能够在300英尺左右(约合90米)范围内支持互联网接入的无线电信号。办公室自不用说,就是在小一点的整栋大楼中也可使用。因此,Wi-Fi一直是企业或家庭实现自己无线局域网所青睐的技术随著技术的发展,以及IEEE802.11a及IEEE802.11g等标准的出现,现在IEEE802.11这个标准已被统称作Wi-Fi。IEEE802.11第一个版本发表于1997年,其中定义了介质访问接入控制层(MAC层)和物理层。物理层定义了工作在2.4GHz的ISM频段上的两种无线调频方式和一种红外传输的方式,总数据传输速率设计为2Mbit/s。两个设备之间的通信可以用自由直接(adhoc)的方式进行,也可以在基站(BaseStation,BS)或者访问点(AccessPoint,AP)的协调下进行。1999年加上了两个补充版本:802.11a定义了一个在5GHz的ISM频段上的数据传输速率可达54Mbit/s的物理层,802.11b定义了一个在2.4GHz的ISM频段上但数据传输速率高达11Mbit/s的物理层。2.4GHz的ISM频段被世界上绝大多数国家所使用,因此802.11b得到了最为广泛的应用。苹果公司把自己开发的802.11标准起名叫AirPortWi-Fi联盟成立于1999年,当时的名称叫做WirelessEthernetCompatibilityAlliance(WECA)。在2002年10月,正式改名为Wi-FiAlliance。致力解决符合802.11标准的产品的生产和设备兼容性问题。Wi-Fi为制定802.11无线网络的组织,并非代表无线网络。从应用层面来说,要使用Wi-Fi,用户首先要有Wi-Fi兼容的用户端装置。SmartPlug使用由Hi-Link公司生产的Wi-Fi模块(如图2-2),该模块基于Wi-Fi802.11b技术,采用3.3V的TTL电平,接口信号为:5V、GND(地)、RXD、TXD四线连接,性能稳定,内置Wi-Fi协议栈和串口传输协议,发射功率最大100mW,接收灵敏度-90dBm。图2-2Hi-Link公司制造的TTL电平Wi-Fi模块2.351单片机最小系统组件与实现所谓单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对于51系列单片机来说,最小系统一般应该包括:51单片机、晶振电路、复位电路[9](如图2-3)。复位电路:单片机复位电路就好比电脑的重启部分,当电脑在使用过程中出现死机情况,按下重启按钮,电脑内部的程序就从头开始执行。单片机也是一样的,当单片机系统在运行过程中,受到环境干扰出现程序跑飞的时候,按下复位按钮,内部的程序就会自动从头开始执行。复位电路由电容串联电阻构成,由图2-3并结合"电容电压不能突变"的性质,可以知道:当系统一上电,RST脚将会出现高电平,并且这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位。所以,适当组合RC的取值就可以保证可靠的复位。经查阅大量资料表明C取10uf,R取8.2K即可完成复位。当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机器周期的高电平,这样51单片机才能复位。至于如何具体定量计算,须参考电路分析相关书籍。晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作),本系统采用19200作为TTL[10]通信的波特率,固选择11.0592MHz的无源晶振。另外,单片机最小系统起振电容一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好。因此,再配上两片30pf的瓷片电容或贴片电容。单片机:一片AT89S51/52或其他51系列兼容单片机。特别注意的是,对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM开始执行;当接低电平时,复位后直接从外部ROM开始执行。图2-351单片机最小系统2.4其他电路元器件的选择Wi-Fi降压芯片:由于本实验采用Hi-Link公司3.3V的TTL电平Wi-Fi模块,为航天与军用级的低压低功耗CMOS电路,需要3.3V供电系统。因此采用AMS1117-3.3V三端稳压模块(如图2-4右上)将单片机使用的5V电源稳压至3.3V,并输送给Wi-Fi模块。其中加入两块标号为106的10uf电容,起到对电源的滤波作用。控制继电器:由于考虑到SmartPlug将有可能控制电流过大的家用电器例如电热水器等家用电器,因此采用比较先进的固态继电器(如图2-4右下)。固态继电器(SolidStateRelay,缩写SSR),是由微电子电路,分立电子器件,电力电子功率器件组成的无触点开关。用隔离器件实现了控制端与负载端的隔离。固态继电器的输入端用微小的控制信号,达到直接驱动大电流负载的目的。耐振耐机械冲击,安装位置无限制,具有良好的防潮防霉防腐蚀性能,在防爆和防止臭氧污染方面的性能也极佳。另外还有输入功率小,灵敏度高,控制功率小,电磁兼容性好,噪声低和工作频率高等特点。目前已广泛应用于计算机外围接口设备,调温、调速、调光、电机控制、电炉加温控制、电力石化、医疗器械、金融设备、煤炭、仪器仪表、交通信号等领域。电源模块:由于是计算机专业出身,对电子电路知识并不熟知,虽然运用阻容降压电路可以实现将交流220V电源降压整流为直流5V,但稳定性欠佳。因此,本实验采用市售技术成熟的开关电源模块(如图2-4左下),保证系统的稳定性。LED指示灯:采用耐高压无色玻璃封装的LED发光二极管作为系统状态指示灯(如图左上)。图2-4其他四种电路主要元器件2.5本章小结本章先介绍了SmartPlug系统各主要模块的选择、性能参数与技术指标,以及51单片机最小系统的结构。最后列出电路主要元器件的选择原因与主要参数。为接下来即将要进行的SmartPlug电路的实验与设计做硬件准备理论分析与技术支持。第3章硬件平台的电路设计硬件平台的电路设计,就是指由电气设备和元器件按一定方式联接起来,为电流流通提供了路径的总体。本系统采用Protel99计算机辅助设计软件进行设计。其中包括:元器件的封装、元件库的调用、电路的布局、电路的铺设、以及电气化测试,经过这一些列的步骤才能完成一块电路板的基本设计。本章首先将要说明Protel99计算机辅助设计软件的发展历程、应用领域、使用方法以及电路原理图的设计、电子元器件的封装、电路板的绘制方法。最后将介绍如何将电路图制作成电路板。下面将介绍具体的设计与制作步骤。3.1计算机辅助设计软件Protel99简介Protel99SE是Protel公司近10年来致力于Windows平台开发最新结晶,能实现从电学概念设计到输出物理生产数据,以及这之间所有分析、验证和设计数据管理。因而今天Protel最新产品已不是单纯PCB(印制电路板)设计工具,而是一个系统工具,覆盖以PCB为核心整个物理设计。Protel设计系统是一套建立在IBM兼容PC环境下EDA电路集成设计系统,由于其高度集成性与扩展性,一经推出,立即为广大用户所接受,很快就成为世界PC平台上最流行电子设计自动化软件。Protel99SE共分5个模块,分别是原理图设计、PCB(印刷电路板)设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。本系统的电路设计采用:原理图——PCB图的步骤设计[11]。3.2电路原理图的设计电路原理图主要是将电路原理表示在图上,用来生成后缀名为“.NET”的电路网络表,而并非是实际的电路图。电路网络表能表示每一个电子元器件的连接情况,每一条电流通路连接的起始元件与终止元件。每一条链路都是唯一的、不重复的(如图3-1)。电路网络表的生成为接下来的硬件电路设计及布局创造了先决条件。SmartPlug的电路原理图设计分为两大部分,即应用电路设计与电源部分,由于自己设计的电源电路安全性与稳定性欠佳,故采用已经集成好的交流220V转直流5V稳压模块,简化硬件电路设计。应用电路设计部分中,分为51单片机最小系统电路、继电器电路、指示灯电路、Wi-Fi模块接口电路、Wi-Fi模块稳压电路、3.3VWi-Fi与5V单片机通信线电压适配电路,此外还预留了方便以后更新51单片机片内程序的程序烧写预留口电路。51单片机最小系统在前面已经阐述了构成与原理,在此不再说明。继电器电路即为控制单元,主要负责控制电路的接通与断开。由单片机向继电器的GND端发送低电平信号,继电器方可接通电路。指示灯电路的使用,主要是因为单片机运行起来无法像微型计算机上的程序一样设立断点来监视与控制程序运行,只能由指示灯的亮灭来判断程序的正确执行,因此采用指示灯电路对日后的代码编写以及系统调试起到了至关重要的作用。Wi-Fi模块的接口电路,主要是将已有的Wi-Fi模块接入电路,电源接口、发送与接收数据线要一一对应避免接错造成系统无法运行[12]51单片机程序烧写预留口电路的应用,主要目的是解决日后程序烧写的方便,由于电路平台搭建完成后,51单片机即将被焊接到电路中,若想取下来放到开发板上重新烧写、更改、调试程序,其过程及其复杂,因此设计了51单片机程序的程序烧写预留口[13]。整套系统(除电源部分)的原理图如图3-2所示:3.3电路图的设计由于protel99软件的元件库并不能完整包含日益增长的众多电子元器件,因此部分电子元器件要自行封装。所谓封装,就是将电子元器件的物理尺寸以及针脚定义、针脚编号录入protel99的元件库中,然后再在PCB电路设计中使用。元器件的物理尺寸以及针脚距离用游标卡尺度量,在Protel99设计中借助标尺将电子元器件的真实尺寸绘制进去,单位为毫米(mm)。图3-3电源模块封装图电路图的设计是基于原理图产生的。首先创建PCB工程,然后将前面生成的后缀名为“.NET”的电路网络表文件导入到PCB工程中,这时即已产生带提示连接线的电路网络。接下来大致勾画出电路板的外型尺寸,采用手动布线的方式先将原件合理的分配到电路板上,最后手动将电路连线连接完毕并修改电路板尺寸以致适合电路大小。完成以上工作后,检查所有连接线是否全部正确,正负极是否有接反的情况发生,以及元器件是否有重叠现象、焊盘是否离得太近等。最后要进行地线的布置。完成以上设计工作后,接下来要进行电气规则测试,原则是符合电子电路设计规则,并要人为考虑电路通信线路的干扰问题,绕线不可交叉问题等。最终产生PCB电路图[14],如图3-4所示:图3-4SmartPlugPCB电路图3.4电路板的制作手工制作电路板的过程一般是:首先将protel99产生的1:1的PCB电路图打印在热转印纸(光面纸,不干胶后面的那层黄色的纸)上,如图3-5。因为protel99使用的尺寸单位为米尔(mil)或毫米(mm),因此打印时要严格打印1:1的电路图,以防止制作出来的PCB板尺寸不符合要求,造成元器件无法焊接的情况发生。图3-5打印PCB图然后用热转印机或电熨斗将光面纸上的碳粉转印到覆铜电路板上,如图3-6所示。图3-6热转印PCB图接下来将转印过的覆铜电路板放到硫酸亚铁溶液中进行腐蚀,由于二价的铁离子有还原性可与铜反应生成蓝色硫酸铜溶液并且有铁被置换出。因为被碳粉覆盖的铜被隔离,不参与化学反应,得以保留下来,形成最终的电路。如图3-7。图3-7覆铜板的蚀刻然后,打印电路焊盘图。由于阻焊绿油具有曝光的特性,在焊盘图上黑色焊点覆盖的情况下,不被暴露在强光下,因此不被固化,可以轻易被擦拭掉。接下来涂上阻焊漆(俗称绿油),将焊点图对齐电路板边缘覆盖电路板,并暴露在强光之下30分钟。完成后取下焊盘图,擦拭电路板,被强光照射固化的绿油对电路板起到阻焊、防止铜质电路板氧化的作用。被擦拭掉的部分用来完成接下来的焊接工作。最后,用电烙铁将元件焊接到电路板的焊盘上完成整个PCB电路板的制作。但是局限于手工工艺问题,最终研究采用代工厂家制作的电路板,如图3-8所示。图3-8SmartPlug电路板空板3.5电子元器件的焊接电气焊接本着焊点饱满、焊点结实、不虚焊、不缺焊、不让不该连接的焊盘连接的原则进行手工焊接操作,焊接工具为25W尖头电烙铁。焊接时使用松香助焊剂保证烙铁头无氧化物附着到焊点上,影响焊点质量。在完成焊接工作时用万用表测试每一条电路的导通性是否良好,每一个元器件的正负极连接是否正确。最后,由于电路涉及到220V不安全电压,因此将高电压裸露部分用热熔胶覆盖,避免实验人员面临触电危险。图3-9SmartPlug电路板焊接完成图3.6本章小结本章通过protel99电路原理图、电路图的设计与电路板的制作、焊接对SmartPlug的硬件电路进行详细介绍,为后续的软件,也就是51单片机片内程序的编写与调试做好了硬件设备的平台构架。对SmartPlug整套系统的完成起到至关重要的作用。第4章单片机片内软件设计单片机软件设计是比较重要的阶段,俗话说得好:“硬件搭台,软件唱戏”,一套系统的灵魂与精髓全在于软件稳定的运行与强大的功能。本章将详细介绍智能插头51单片机系统的软件设计,整个系统的总体设计,各功能函数、模块的设计思路、设计原理、设计过程、性能分析。从Wi-Fi模块加入网络、建立TCP链接到接收数据,从数据处理到发出控制命令完成控制功能。本系统软件开发环境采用单片机类专业设计软件Keil,编程语言采用硬件C语言,在某些高级函数应用上与普通C语言有些许差别[15]。4.1Keil简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经C51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器,如EPROM中[16]。图4-1Keil编程环境4.2智能插头通信数据分析用户终端设备与WLAN模块之间传输的数据,其数据格式及传输机制由相应的接口协议规定。我们的客户端设备51单片机与Wi-Fi通讯采用UART接口协议,首先我们先了解一下这个通讯协议。通讯以SYN(0xAA)为第一个字节开始,最后以PADDING结束,数据采用十六进制表示。具体的数据格式解释如下:图4-2数据格式SYN:同步字段,表示一个数据帧的开始,值固定为‘0xAA’。CTL:控制字段,其含义如下。图4-3控制字段格式TYPE:帧类型,000b:表示DATA是控制数据001b:表示DATA是普通数据010b:表示对接收到的前一帧的Ack确认,LENGTH字段必须为0其它:保留A:在数据帧中该位设为‘1’表示此帧中的DATA字段包含CRC,且接收方需返回Ack确认;在ACK帧中无意义SN:帧序号,取值范围0~15,在数据帧中,如果是重传前一帧则帧序号保持不变,否则帧序号每次递加1;在ACK确认帧中,SN等于其接收到的前一帧的序号LENGTH:长度字段,表示后面的DATA字段长度,单位字节数,最大长度1400。CHK:帧头校验字段,其计算的为CTL和LENGTH两个字段的8位循环冗余校验和。DATA:实际传输的数据,如果A设为‘1’,则DATA最后一个字节为前面(LENGTH-1)个数据的8位循环冗余校验和PADDING:帧结束填充字段,其值为6个连续的‘0x00’。客户端51单片机与Wi-Fi模块本来是并不相关的硬件设配,t通过UART接口协议搭建起来两者通讯的桥梁,两者有了仅属于他们的交流方式,这样大家以后都用同一门语言来交流也就只有他们才知道具体表达的含义,提高了通讯的安全性。我们可以灵活的控制通讯的整个流程,通过使用UART接口协议我们可以规定具体的数据内容来传达我们的命令,每个人都可以规定自己的命令方式来控制客户端与Wi-Fi通讯。其他人根本不知道通讯的具体含义。按照通讯协议我们在头文件中定义了自己的协议具体内容,具体命令如下:#defineCTL_DATA 0X00 ////控制数据 #defineNOA_DATA 0X10 ////普通数据#defineACK_DATA 0X20 ////Ack#defineSCANNETWORK_DATA0x00 //开始扫描网络命令#defineLINKNETWORK_DATA0X01 //开始连接网络命令#defineCLOSENETWORK_DATA0x02 //开始断开网络命令#defineSETNETPARA_DATA0X03 //设置参数命令#defineQUERYNETPARA_DATA0X04 //查询参数命令#defineRESTWIFI_DATA0X05 //复位命令#defineTCPLINK_DATA0x06 //TCP连接命令#defineTCPSENDFAILED_DATA0x07 //TCP发送失败#defineSCANNET_END 0X40 //扫描网络结果消息#defineLINKNET_END 0X41 //网络已连接消息#defineCLOSENET_END 0x42 //网络已断开消息#defineSETNETPARA_END0X43 //设置参数结果消息#defineQUERYNETPARA_END0X44 //查询参数结果消息#defineRESTWIFI_END0X45 //初始化完成消息#defineTCPLINK_END0x46 //TCP连接状态消息4.3智能插头工作流程分析完成了具体通讯命令的制定后通过编写51单片机里面的程序,下面我就具体介绍一下单片机中的程序。程序的整体框架由通过完成不同功能的函数组成,具体的功能模块完成后,在main函数中完成整个流程的调用。执行的流程主要分为:1.硬件初始化2.发送Wi-Fi加入网络命令3.发送TCP连接命令4.连接成功等待用户控制命令执行流程图如下所示:串口初始化串口初始化wifi加入网络TCP连接PC端口main开始PC端用户用户发送指令返回执行结果连接成功,等待处理用户指令T关闭电源T打开电源T重置51图4-4智能插头工作流程图4.4智能插头通信函数的编写通过执行流程图初步了解执行流程后,我们来详细介绍一下程序中的功能函数,通过功能函数我最后再详细介绍一下调用流程。硬件初始化函数HardWareInit()主要负责初始化51单片机串口通信前的参数配置,下面我们来介绍一下串口通信中比较重要的几个概念。波特率选择波特率(BoudRate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC-
51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1)),其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则TH1=256-62500/波特率。2、数据缓冲寄存器和串行口控制寄存器SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfrSBUF=0x99;当然你也可以用其它的名称。通常在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就可以了。SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下:SM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。看表8-2串行口工作模式设置。在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc代表振荡器的频率,也就是晶振的频率。UART为(UniversalAsynchronousReceiver)的英文缩写。REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。大家也可以用上面的实际源码加入REM=0来进行实验。TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。4.4通过上面对串口通信过程中知识的讲解我们按照串口通信原则通过初始化函数HardWareInit()完成串口通信前的准备。HardWareInit(){TMOD=0x20;TL1=0xfd;//T1波特率9600bpsTH1=0xfd;//串行工作在方式3 PCON=0x80; //若SMOD=1,波特率倍增 SCON=0x50; //8位TR1=1;//启动T1 IP=0x10; ES=1; EA=1;}4.4.2加入网络命令函数WIFIJoinAp()函数为控制Wi-Fi加入网络命令的函数,参数cIdx代表控制Wi-Fi加入网络的组号,0代表默认组第0组。参数AckFlag代表是否需要命令完成后的Ack确认,0代表不需要Ack确认,这样命令执行完Wi-Fi返回给客户终端数据;1代表需要Ack确认,这样命令执行完后Wi-Fi会返回给客户终端一组数据,通过数据的具体内容我们可以分析出Wi-Fi加入网络是否成功。这里我们都是需要Ack确认的,通过Ack返回的数据我们可以获得命令的执行成功与否。变量LINKNETWORK_DATA是根据通讯协议制定赋值的变量,代表的具体含义为开始连接网络命令,例如我们可以声明“#defineLINKNETWORK_DATA0X01”这样Wi-Fi通过分析收到的数据控制字段为0X01就代表要求它加入网络。参数都准备好后调用SendDataToWifi()函数将准备好数据发送给Wi-FiWIFIJoinAp(INunsignedcharcIdx,INunsignedcharAckFlag){unsignedcharcBuf[2];cBuf[0]=LINKNETWORK_DATA;////CommandcBuf[1]=cIdx;SendDataToWifi(CTL_DATA,cBuf,2,AckFlag);}WIFILinkOrCloseServer()主要功能是发送TCP连接命令,参数cType为0时代表发送关闭TCP连接命令,为1时代表启动TCP连接命令,参数AckFlag同样为Ack确认。TCPLINK_DATA为我们通讯协议中定义的TCP连接命令。准备好所有数据后通过调用函数SendDataToWifi()将数据发送出去。voidWIFILinkOrCloseServer(INunsignedcharcType, INunsignedcharAckFlag){ unsignedcharcBuf[2]; cBuf[0]= TCPLINK_DATA; cBuf[1]= cType; SendDataToWifi(CTL_DATA,cBuf,2,AckFlag);}发送加入网络命令和TCP连接命令都是用到了函数SendDataToWifi(),下面我们就来看看这个函数。SendDataToWifi()函数获得参数后,按照通讯协议来生成具体欲传送的16进制数据。数据以0xAA开始,最后以连续六个0x00结束,根据传过来的具体参数来形成数据控制字段。Wi-Fi接到数据后通过分析数据的内容来获得相关的控制信息。具体的数据格式参见UART通讯协议。当生成所有字节的数据后调用函数UART_SendData()将数据的首字节放入缓冲区。SendDataToWifivoidSendDataToWifi(INunsignedcharcCtl,INunsignedchar*DataBuf, INunsignedintiLength,INunsignedcharAckFlag){unsignedcharxdatacBuf[20];////51hasonly256datainsoc memset(cBuf,0x00,300); cBuf[0]=WIFI_SYN; //SYNC if(AckFlag) { cBuf[1]=0x80|cCtl|gcSN; //Wctrl iLength++; } else cBuf[1]=cCtl|gcSN; //Wctrl gcSN++; //Value:0-15 gcSN=gcSN&0x0f; //0-15 cBuf[2]=(iLength)>>8; cBuf[3]=(iLength)&0x00ff; cBuf[4]=GetCrc8(&cBuf[1],3); if(iLength!=0) memcpy(&cBuf[5],DataBuf,iLength); if(AckFlag)///NeedCheck { cBuf[iLength+4]=GetCrc8(&cBuf[5],iLength-1); } UART_SendData(cBuf,iLength+11); }UART_SendData()函数将接收到的通讯数据的首字节数据放入缓冲区,由于数据并没有完全传送完,因此中断函数中的TI参数将自动置为1并将一个字节的数据放入缓冲区并将TI置为0,如果数据并没有传送完成TI会自动的置为1直到数据完全传送后才变为0。Wi-Fi通过缓冲区来读取单片机发送过来的数据。voidUART_SendData(unsignedchar *data_buf,unsignedintiCount){iUartSendLen=iCount-1; iSendCounter=0; SBUF=data_buf[0]; cpSendBufPtr=&data_buf[1];}中断函数是Wi-Fi和51单片机通讯的枢纽,通过中断函数我们将命令发送给Wi-Fi,Wi-Fi执行命令后会返回Ack等确认的信息,我们同样通过中断函数来获取这些信息并逐个字节解析命令的具体内容。当RI=1时表明Wi-Fi已将一个字节的数据放入缓冲区,我们取出缓冲区中的一个字节的数据后赋值给cBuf并调用ProcessUARTData函数逐个字节解析命令同时将RI置为0,每当缓冲区中出现Wi-Fi欲发送的数据时RI会自动的置为一接收数据并进行判断。通过返回的数据内容我们可以分获得我们加入网络和TCP连接命令执行的结果,当加入网络失败我们会继续发送加入网络命令,同时再接收数据进行判断。TCP命令同理也是这样。voidCOMM_INT()interrupt4using3{if(RI)//接收数据{RI=0; cBuf=SBUF; ProcessUARTData(cBuf); }elseif(TI) { TI=0; if(iSendCounter<iUartSendLen) SBUF=cpSendBufPtr[iSendCounter++]; } }GetCrc8函数按照UART接口协议来生成通讯协议中CHK字节的数据,该函数由SendDataToWifi()函数再生成CHK字节数据的时候调用,计算的为CTL和LENGTH两个字段的8位循环冗余校验和。unsignedcharGetCrc8(INunsignedchar*ptr, INunsignedcharlen){ unsignedcharcrc8,cdata; crc8=0; while(len--!=0) { cdata=*ptr++; crc8=__crc8_tbl[crc8^cdata]; } returncrc8;}ProcessUARTData函数主要来处理Wi-Fi返回的数据,当我们从通过中断函数每接到一个字节数据时就调用ProcessUARTData函数一次进行解析,通过解析的结果我们可以获得Wi-Fi发送过来的数据的具体含义,按照通讯协议的规定当CTL字节中的TYPE三位是000b时代表数据为控制数据:通过控制数据我们可以获得发送的加入网络和TCP连接命令的执行结果,当数据为控制数据时我们将实际传输的数据存入变量ATReceBuffer[0].gcATReceData[5+endFlag](这个变量在头文件中定义)中,通过判断这个变量的值我们就可以获得命令的执行结果的信息,根据头文件中的定义变量的值为LINKNET_END时代表加入网络成功,当变量的值为TCPLINK_END时代表TCP连接成功,否则表示命令执行失败,重新发送请求;CTL字节中的TYPE三位是001b时代表数据为普通数据,通过分析普通数据我们可以获得用户发送给51单片机的请求,当数据为普通数据时我们将收到的数据存入变量rBuf[0]中,并通过函数ProcessWIFIData()来判断用户的具体命令。voidProcessUARTData(INunsignedcharUartData){switch(gcWifiCommunState){caseWIFI_WAIT_SYN: if(UartData==WIFI_SYN) gcWifiCommunState=WIFI_WAIT_CTL; break;caseWIFI_WAIT_CTL: //控制字段 gcWIFICTL=UartData; gcWifiCommunState=WIFI_LENGTH1; break; caseWIFI_LENGTH1: //数据长度1 gcWifiCommunState=WIFI_LENGTH2; break; caseWIFI_LENGTH2: //数据长度2 giWIFILength=UartData; if(giWIFILength>1400)// { gcWifiCommunState=WIFI_WAIT_SYN; } else { gcWifiCommunState=WIFI_CHCK; } break; caseWIFI_CHCK: gcWifiCommunState=WIFI_RECEDATA; if(giWIFILength==0) { gcWifiCommunState=WIFI_WAITPADDING; } endFlag=0; break; caseWIFI_RECEDATA: ATReceBuffer[0].gcATReceData[5+endFlag]=UartData; if((gcWIFICTL&NOA_DATA)==NOA_DATA) {rBuf[0]=UartData; } endFlag++; if(endFlag==giWIFILength) { gcWifiCommunState=WIFI_WAITPADDING; } break;caseWIFI_WAITPADDING: if(UartData==0) { endFlag++; if(endFlag-giWIFILength==6) { gcWifiCommunState=WIFI_WAIT_SYN; } } else { gcWifiCommunState=WIFI_WAIT_SYN; } break; default: gcWifiCommunState=WIFI_WAIT_SYN; }}4.4.3当连接建立起来后客户端可以传送数据来操作51,我们通过ProcessUARTData函数将数据中的具体内容存储到变量rBuf[0]中并通过下面的ProcessWIFIData函数来判断用户命令要求并进行相应的操作,例如当rBuf[0]==0x31时我们通过控制继电器将电源打开。voidProcessWIFIData(void){ if(rBuf[0]==0x31) { P1=0xfe; } elseif(rBuf[0]==0x32) { P1=0xff; } elseif(rBuf[0]==0x33) { P1=0xff; test(); }}4.5智能插头片内程序主函数以上我们介绍了我们51程序用到的所有功能函数,下面我们要通过main函数来执行我们所有的操作,在初始化函数后,串口通信前的准备工作已经就绪,可以进行串口通信,第一步就是要控制Wi-Fi加入到无线路由的网络中,按照上述原则通过一个循环向Wi-Fi发送加入网络的命令,当Wi-Fi加入网络成功,Wi-Fi会通过缓冲区发送加入成功的数据,我们通过ProcessUARTData()函数判断Wi-Fi返回的数据命令详情,当是加入成功命令时我们通过将变量gcReceComm1OK置为1退出循环,当不成功时,51会每隔30毫秒继续发送同样的命令直到加入网络成功才跳出循环。这样处理能准确而稳定的控制Wi-Fi,确保每一步平稳的运行。第二步和加入网络命令同样的原理控制Wi-Fi通过无线路由与PC上的客户端进行连接,当连接成功时,跳出循环。连接建立后,PC上的客户端就可以发送的命令通过Wi-Fi到达来控制51单片机,单片机通过解析指令的数据内容来获得用户的指令详情。在程序的最后进行一个死循环执行函数ProcessWIFIData(),不断地处理客户端用户的请求,并做出相应的响应。voidmain(void){HardWareInit(); while(!gcReceComm1OK) { WIFIJoinAp(1,1); delay(300000);if((ATReceBuffer[0].gcATReceData[5]==LINKNET_END)&&(ATReceBuffer[0].gcATReceData[6]==0)) { gcReceComm1OK=1; } } delay(300000); gcReceComm1OK=0; while(!gcReceComm1OK) { WIFILinkOrCloseServer(0,1); delay(300000);if((ATReceBuffer[0].gcATReceData[5]==TCPLINK_END)&&(ATReceBuffer[0].gcATReceData[6]==0)) { gcReceComm1OK=1; } } while(1){ ProcessWIFIData(); }}4.6本章小结本章首先介绍了51单片机片内程序的开发环境,然后介绍了本系统用到的所有功能函数,最后,介绍了主函数对各功能函数的调用以实现智能插头的预期设计功能。第5章系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。5.1系统参数配置5.1.1Wi-Fi模块参数设置网络参数参数索引:第一组信道号:13BSSID:00-21-27-41-7D-B2SSID:TP-LINK链路层数据格式:TCP设备IP地址:01子网掩码:网关IP地址:服务器IP地址:00服务端口号:6000系统参数联网模式:手动TCP监听模式:使能串口波特率:115200UDP透传模式:使能图5-1Wi-Fi模块参数设置5.1.2路由器参数设置图5-2路由器LAN口参数设置图5-3路由器LAN口状态图5-4路由器无线参数设置图5-5路由器无线参数状态5.2系统测试5.2.11.对于51单片机系统的最小化测试在51单片机最小系统下,即:51单片机、晶振电路、复位电路、供电电路、以及控制电路,整套系统能够稳定运行,在每次上电复位时均能初始化成功并进入执行代码阶段,正确执行代码。系统发热量低,出错率可以忽略不计。说明整套单片机最小系统复位电阻的阻值与复位电容的容值选取恰当,晶振电路起振电容的容值合适,电路设计合理,各电路线之间无干扰现象现象或可以忽略不计。单片机最小系统达到了预期目的测试通过。2.对于Wi-Fi模块与51单片机通信的测试首先进行测试的是Wi-Fi模块与51单片机之间的硬件控制帧传输,将Wi-Fi模块的TXD与51单片机的RXD相连,Wi-Fi模块的RXD与51单片机的TXD相连,构成数据通路。并分别给Wi-Fi模块和51单片机供电。将编译过的十六进制的单片机终端软件通过烧写口烧录到51单片机内。接通电源,将计算机双绞线插入到路由器的用户端口上,配置计算机IP地址为00,在计算机上打开客户端软件并开启6000端口进入扫描等待接入状态。此时单片机正不停地发送请求连接命令,一旦握手成功6000端口即被占用,连接创建成功,51单片机端绿色指示灯点亮,指示连接成功。整套系统即初步达到设计要求。接下来测试用户系统控制帧命令,在先前的前提下在计算机上运行的客户端软件内打上测试命令,例如:“1”,即表示打开1#端口电源。“2”表示关闭1#端口电源。51单片机片内软件在经过数十次的修改与调试后系统整体性能表现优异,客户端软件识别Wi-Fi模块率大幅上升,51单片机也几乎不再出现程序跑飞,无法进入循环等错误。测试表明:硬件平台是软件的基础,软件优化才可以使硬件最大限度的发挥出其应有的性能,软件与硬件是相辅相成的,不可剥离开来开发。经过本环节的测试,也验证了本系统的开发理念基本正确。3.对于SmartPlug整套系统的测试在测试2的基础上,将计算机上的测试客户端关闭,打开由史胜强同学开发的集成了飞信客户端的客户端软件,输入手机号与密码点击登录,登录后由软件内设置的有权限的用户手机发送控制命令,如:“启动端口”,“打开电源”等。整套系统完全通过了测试,达到了预期目标。5.2.2测试分析总结及说明在测试过程中,我们经过模块测试和组装测试,排除了系统的大部分错误。例如51单片机片内程序存在的各种兼容性与数据通信的错误,继电器存在电流大发热量大的风险等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孝感二手房交易合同
- 卖车交易合同
- 综合财富管理方案
- 2026年快消营销物流承运协议
- 2026年半导体合规工业互联网协议
- 胶囊药物递送动力学
- 两公司交易合同
- 二手准现房交易合同
- 业主想看物业合同
- 2026年振远护卫合同(1篇)
- 道岔钳工技能测试题库及答案
- 陕西省建设工程安全生产管理办法
- 2025年广东省高考政治试卷真题(含答案解析)
- 2025年河北省中考化学试卷真题(含答案解析)
- 军事伪装道路施工技术专题
- 良肢位摆放叙试题及答案
- 2025年高考数学全国一卷试题真题及答案详解(精校打印)
- T/CCMA 0168-2023土方机械电控手柄技术要求及试验方法
- 成人癌性疼痛护理团体标准
- 2025年统计学期末考试题库:时间序列分析核心考点解析
- 实验室生物安全应急预案
评论
0/150
提交评论