【《基于WiFi的智能云家居系统设计》16000字(论文)】_第1页
【《基于WiFi的智能云家居系统设计》16000字(论文)】_第2页
【《基于WiFi的智能云家居系统设计》16000字(论文)】_第3页
【《基于WiFi的智能云家居系统设计》16000字(论文)】_第4页
【《基于WiFi的智能云家居系统设计》16000字(论文)】_第5页
已阅读5页,还剩51页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

目录摘要当今社会,伴随着科学技术不断的飞速发展,人们对高品质的生活的追求也在不断提高。互联网+的新概念越来越得到大众的认同,以及无线技术的日益成熟和高速率宽带传输数据的分布律越来越高,通过互联网来操控日常事件的新方法得到了人们的广泛接受。用户可以通过操作PC软件或手机APP就能够通过互联网连接上家中的WiFi网关,最终只需要通过发指令就可以控制家中的一切,同时也可以查看传感器的状态,就可以达到掌控家中一切的目的。基于WiFi的智能云家居系统,可以提供既安全又舒适的居家环境,此设计采用一款型号为STM32F103的MCU作为主控芯片,通过WiFi无线网络技术将家中的电器和检测设备连接,实现风扇自动控制、智能窗帘控制、氛围灯光控制、环境数据检测等。与以往传统的家居相较而言,智能家居既包含有传统家具的居住功能,还具有楼宇、网络通信、信息家电、设备自动化等功能,提供更加全面的信息交流互通,可以节约各种能源的使用成本、降低日常生活的成本。关键词:WiFi;STM32;物联网;智能家居1绪论1.1研究背景及意义二十一世纪科技飞速发展,随之智能家居有关概念也渐入人心,越来越多的智能产品得到人们充分的认可并融入到人们的日常生活当中,智能家居在生活起居中扮演着越来越重要的角色,或以成为追求科技的人们生活中不可或缺的一部分。与此同时,众多80后、90后尤其是相关技术专业在读大学生被其深深吸引。智能家居广阔的市场前景、对各项技术的融合促进的巨大推动作用,使得许多的高校和研究院把目光大部分投向了智能云家居相关领域[1]。由于仅仅依靠市场调节监管智能家居产业存在其局限性,无序的市场竞争往往会导致资源的极大浪费等问题,因此智能家居产业的健康发展离不开政府的大力支持和学界的广泛参与[2]。由于社会发展水平不同等历史原因,西方发达国家对于智能家居的研究走在了中国的前面。近年来,智能家居的理论不断创新,学术成果与市场成功融合的案例也越来越多,为智能家居产业的健康、科学、稳定、良性发展提供了新的出发点和新的发展方向[3]。中国政府以促进科技进步、稳定就业、促进经济增长和提高人民生活水平作为出发点,颁布相关的政策、制定配套措施以扶持和引导智能家居产业走向健康可持续发展道路。虽然中国近年来发展迅速,但仍然表现得比较混乱。该课题将在系统比较市场主流的技术方案、通信标准、硬件设备等的基础上,设计构建一整套智能家居检测控制系统,为行业的健康持续发展提供了极具意义的借鉴和参考。一九七八年改革开放以来,人们的生产积极性渐渐恢复提高、社会经济得到了不错的累积、国民经济也在快速增长,人们的收获感和幸福感得到更大的满足。特别是近些年来,随着电子信息通信技术的高频革新、“三网融合”战略的持续推进和物联网云服务技术的日益成熟,越来越多的普通人希望他们的生活家居更加智能,更加方便[4]。因此对房屋的定位和理解也越来越多元化,人们逐渐开始不再把房子当做一个仅仅用来休息的简单工具空间,而是慢慢转型成为一个便利、舒适的生活起居乐园[5]。在全球发达国家推广和应用家庭物联网技术是不可逆转的趋势,国内智能家居的技术和应用的创新主要体现在下列的几个方面:(1)通信运营商开启新纪元通信运营商的传统业务已经几乎没有更大的发展空间。目前,不少运营商正式开始物联网、智能家居等领域的通行渠道建设,并且积极扩大其在智能物联网络方面的市场占比。(2)政府的指导和扶持近年来,政府为了确定明了未来一段时间内信息消费发展的大体方向和主要手段,发布了指导、参考意见以及一系列的通告。很多大专、大学、科研机构、企业和机构都在实施智能家居的研究和计划。(3)房地产产业的创新借助信息革命的成果,传统房地产企业也积极寻求新市场的突破,探索住宅项目的智慧化,提高房地产开发和市场竞争力的效率。智能家居和房地产产业的整合开发的可能性非常大。截止到目前依旧还在积极地进行合并。行业的不成熟性,使之成为了不动产业界的全新的销售点和创新点,市场前景非常广阔。1.2智能家居概述智能家庭系统更多以社区和家庭为单位,其实现囊括了计算机网络技术、云平台技术、自动控制原理等一系列新兴技术,如现代智能传感技术的互联网、移动远程控制技术和最新的信息通信技术。计划在日常生活中人接触和使用的家用电器的多样化,并连接到主控制终端,建立各设备的网络连接。智能家居系统功能的独特的地方是系统可以连接静默、独立、无意识的所有家用电器,并将其转换成活跃的智能生态环境。主控制终端不但可以通过系统和统一的管理来实现对不同家电设备的智能控制,而且还可以及时地向用户发送传输由各种传感器收集到的房屋的安全性状态以及家庭环境的详细数据从而达到通过移动终端实现家庭环境的用户的远程监测的目的[6]。智能家居还必须具有开放兼容的系统、强大的功能扩展性、模块化和可靠的使用特性。此外,智能家庭系统的硬件设备都是可以通过网络连接到外部云平台或网络服务终端的[7]。而且,它可以确保信息的平滑双向传输。智能家庭系统的主要课题和设计目标是实现硬件设备之间的网络通信和信息交互,采取有效的方法向用户灵活方便地发送各种信息,来达到帮助用户方便地监视家庭环境的目的。1.3国内外发展现状1.3.1国外发展现状与中国相比,海外很早就开启了智能家居研究。1984年美国纽约实现了产业界实用性重要的第一智能建筑大楼案例。智能大楼实现了智能感知照明、室内通风、自动升降电梯、安全警报等基于计算机系统的自动控制[8]。此外,还实现了室内生活、办公环境的智能识别、电子设备的智能网络控制。这是智能家居系统的第一个突破性重大划时代的应用,之后,有不少的发达国家和地区迅速开展了智能办公楼、银行、高级智能住宅等领域的详细研究[9]。IBM、史密斯、Sumsung、苹果和哈尼维尔都做出了巨大贡献。他们使用所有的技术进步,为企业积极投资,为智能家居的理论和实用应用做出卓越贡献。他们将继续利用任何技术进步所带来的成果来持续优化智能家庭技术和应用的设计方案,并不断提高智能家庭的交互体验以达到更高的水准[10]。2001年,为了让家居系统更加智能,更加灵通,美国IBM率先提出设计以网关作为智能家庭控制系统的核心,并通过远程移动通信设备实现了智能化的家庭环境监控[11]。在经过十多年的研究后,IBM在2013年世界消费者电子产品大会上,分享了在业界备受关注的云平台、大数据计算、基于智能网络控制的互联网,公开了先进的智能家居生态。该系统具有语音和手势解锁功能,还可以对智能空调和其他家用电器等暖气设备的温度进行智能调整。此外,该系统可以更准确地监控用户的健康状况和生命体征。IBM还采用了ThingTechnology这项最新技术,推出Watson物联网技术云平台并不断改进[13]-[15]。这些对于独居且存在一定健康问题的使用者来说,将有非常重大的意义和很高的价值[12]。2004年,韩国三星电子公司建立了与韩国实际社会生活相近的Homerita系统。并且,在韩国首尔的一个社区实现了全方位的智能化覆盖。三星积极利用其庞大的手机用户基数,以促进基于三星智能手机[16]的智能生态学的发展。2014年,三星的智能家居团队建立了手机平台和智能家居信息交互的系统,最终可以实现通过三星手机对房屋中智能摄像头的超远距离监控功能。今年该公司推出了最新的2019版本QLEDTV智能电视。而且,它有内置Bixbyy2.0智能小助手。用户可以通过声音控制[17]到与三星家庭设备对话交流[18]-[20]。另外,美国的X-10是具备综合功能的2016年开始的集中控制技术解决方案,但是成本始终没有能够得到有效控制,导致最终被淘汰。同年,德国开始了其自己启动的EIB系统标准,采用嵌入式线和中央统一控制的设计思想。因为项目的构建更加复杂,不能够满足人们的即刻需求,所以没有成为市场的主流方法[21]。1.3.2国内发展现状我国虽然起步较晚,但2014年以来发展非常迅速,技术水平一直处于世界领先水平,具有一定的后发优势[22]。据中国青年报报道,2020年上半年,中国大陆智能家居市场规模将超过5000亿元人民币[23][24]。物联网智能应用中的智能家居方向是众多细分领域中一个最具发展潜力的方向。智能家居是物联网智能应用发展势头强劲的市场。广阔的市场利益理所当然会吸引到国内众多企业的跟进,国内众多尖端专业智能家居品牌迅速崛起。与此同时,许多老家电企业加快布局智能家居业务,如长虹、海信、TCL等。小米也在加紧规划推动智能家居相关项目的开展,试图在这一领域占据一席之地,并与百度AI+IOT智能生态携手,推动智能家居更好更快地进入人们的生活[25]来增强自己的实力。目前,智能家居产业仍处于蓝海之中,仍处于蓬勃发展、大繁荣阶段。不断引入新的技术标准、通信协议和设备生态[27]。在充分的市场竞争下,行业将对智能家居的产品细节、用户体验和价格提出越来越高的要求[28]。此外,各企业和相关科研院所也在积极开展协议集成和生态互操作工作,不断探索在现有企业标准的基础上,尽快达到足够高效的行业标准。未来几年,智能家居产业的高速发展将会依据统一技术标准、构建统一生态的发展趋势[29][30]。二十一世纪以来,华为整合相关优势资源并积极布局。在2015年,华为宣布开始进入物联网行业,并在第二年就向广大消费者推出了Hilink智能家居生态体系。在2020年末举办的的中国家电及消费电子博览会上,华为首次发布了多款新颖的智能家居硬件设备,它的分布式路由器最引人注目,很适合在室内使用。华为积极整合销售渠道、品牌影响力、设备技术水平、消费者口碑等具有优势的资源,积极推动自己智能家居生态产业的大力发展[26]。1.4研究重要步骤图1.1结构步骤框图结合指导老师的建议和自己查阅收集的资料,再加上大学期间积累的项目经验,在明确了系统设计的功能需求的基础上完成此次毕业设计论文的写作。可以分别从不同的角度解读分析智能家居系统在全球的研究发展现状。本次课题的内容排版为:第一章名为绪论,简单介绍了研究此课题的背景及意义,并对该设计的发展前景和创新过程中遇到的挑战做出简单的阐述。第二章名为智能云家居的整体设计方案,首先分析智能云家居系统的目标功能要求,并对其流程、方案做阐释及详细介绍。第三章名为智能家居系统的硬件分析和设计,是在上一章的基础上,对智能家居系统所需硬件部分进行合理选型以及粗略的介绍。第四章名为智能家居网页端开发设计,阐明网页端开发环境以及开发软件的选型,以及开发步骤的介绍。第2章智能云家居系统整体设计方案2智能云家居系统总体方案设计2.1系统目标智能云家居系统可以连接用户设定的WiFi设备并与智能云家居服务器建立透传连接,实现远程无线控制家电。通过WiFi传输,大大提高了远程控制的灵活性,采用HTTP网络协议进行数据传输,增强数据传输的稳定性。系统由智能云家居平台硬件和智能云家居系统软件组成。2.2系统硬件结构智能云家居平台采用STM32F103C8T6作为主控,通过ESP8266WIFI模块与服务器进行远程无线数据传输;控制步进电机模块模拟智能窗帘的运作;控制直流电机模拟抽风机的运作;控制继电器实现模拟智能插座的运作;控制RGB彩灯实现模拟家居灯光的控制;DHT11温湿度传感器检测家居环境并实时上报温度和湿度到服务器。具体实现过程见图2.1。图2.1硬件结构图2.3系统软件实现过程软件功能实现步骤如下:主程序的初始化WIFI模块的配置程序注册并添加控制设备程序请求并上报服务器的程序信息处理及设备控制程序以上相关模块的联系是:无线通信模组连接AP和服务器;从平台上获取已经被注册的控制设备的当前状态;将此刻采集到的状态上报服务器;定期获取服务器请求;定期将数据上报到服务器;当获取到服务器的控制数据时就计时并控制底层设备的状态。具体实现流程如图2.2所示。图2.2软件功能流程图2.3.1系统实现流程图图2.3程序流程图通过使用HTTP网络协议设计此系统:对各个模块进行初始化,紧接着配置好无线通信模块,将WiFi模块连接上云家居服务器。存储设备ID数据并判断该设备是否是第一次开机来决定设备的控制状态,并上传到服务器云端。定期向服务器发送控制请求,服务器分析控制信息并控制设备,将设备新的状态实时上传给给服务器。2.3.2WiFi模组配置流程图WiFi模块连接上电源后进行一次复位并恢复出厂配置,然后选择STA模式和透传模式,接下来连接用户所设置的AP,成功后连接云家居服务器,AP和服务器均连接成功后即可进入透传模式启动数据发送。图2.4ESP8266配置流程图2.3.3控制信息分析处理流程图解析出设备序列号,查看是否与本设备匹配;解析控制事件的ID,查看当前要控制是哪些设备;获取出每个要控制的设备的控制数据;对要控制的设备按照控制数据作出对应的控制操作。如图2.5所示。2.5控制信息分析处理流程图2.3.4设备控制流程图由第一个已经注册的事件开始轮询,如果该事件有新数据则做设备控制处理,没有新数据则轮询下一个事件,直到最后一个事件。图2.6设备控制流程图2.4通信协议智能家居系统的网络协议是指将房屋内的家电凭借通信技术相互连接起来的网络。家庭中央控制器通过智能家居系统的网络协议来达到控制家庭网络与各信息家电之间的状态采集和信息交互的目的。目前市场上用于智能家居系统的主要网络协议有HomeRF、HomePNA、X-10、蓝牙、ZigBee、WiFi等技术。WiFi是由WiFi联盟持有的一种可以无线连接个人电脑、PDA和其他终端的通信技术。WiFi无线网络由AP和无线网卡组成。WiFi作为无线局域网(WLAN)接入的主流技术的标准。它是IEEE(ieee802.11)定义的无线网络通信的行业标准,主要包括802.11a、B、G等。WiFi顾名思义是一种短距离无线传输技术,可以支持设备接入无线网络的范围为0~100m。WiFi传输速率很高,最高可以达到54Mbps。可以在弱信号或者干扰情况下调整带宽,以有效保证网络的稳定性和可靠性。WiFi无线网络方便联网和接入以太网。WiFi无线网络采用了两种广泛使用的加密方法:wpa-psk(TKP)和wpa2-psk(AES),保证了数据传输的可靠性和安全性。HomeRF采用的是跳频速率为50次/s的跳频扩频技术,它的抗干扰能力不如WiFi技术;蓝牙技术不仅传输距离相比WiFi而言过短,而且可连接的设备数量过少;ZigBee技术虽然功耗低、成本低,但其传播速率低,不能满足用户对其传输速率的要求。本系统的目的是建立一个无线控制的系统,它还需要具有高传输速率、宽覆盖范围和网络兼容性的特性。WiFi技术基本符合智能家居系统设计的要求。现今的生活中WiFi普及率更高,为今后相关技术的发展提供强劲的保障。因此,本次系统选择WiFi技术作为智能云家居的通信方式。2.5嵌入式开发软件KeilC51是与单片机C语言兼容的软件开发系统。与汇编语言相比,C语言便于维护,而且其在功能性和结构等方面具有明显的优点,便于学习和使用。但单片机是通过汇编语言来进行执行相应的功能,因而利用相应软件进行编译调试显得尤为重要。该课题习用的Keil软件是一款功能强大的嵌入式开发软件,它不仅提供了完整的开发方案,包括C编译器、宏组件、库管理和强大的仿真调试器,并且通过集成的开发环境将这些部分结合在一起。μVision与Ishell分别是KeilC51为Windows和DOS两种模式下的IDE(即集成开发环境),可以完成编辑、编译、连接、调试以及模拟的开发整体过程。该系统可以使用开发环境本身编辑C源文件,通过KeilC51编译生成目标文件。对象文件可以由LIB51创建进而生成库文件。或者,可以连接到库文件以生成绝对文件对象。绝对对象文件从OH51转换为标准的HEX文件。KeilC51凭借着生成的目标代码效率高,生成的汇编代码容易理解的特点,在进行嵌入式系统开发时更能体现高级语言的优势而被广泛应用于嵌入式开发之中。2.6本章小结本章介绍了系统硬件及软甲的实现流程,分析了当下常见的通信技术并比较选择使用以WIFI技术为基础的智能家居系统设计的方案,达到满足需求又不浪费资源的目的。简要分析了模糊控制功能、客户端远程操作功能,并比较了常用的实时性操作系统,最终择优选择了KeilC51开发软件。第3章智能家居硬件设计3智能家居硬件设计3.1硬件资源图3.1硬件实物图模块介绍:主控芯片:STM32F103C8T6M3--48PIN。3个LED灯接线:LED1→PB11,LED2→PB14,LED3→PA11。OLED:SPI接口协议。DHT11:单总线通信。RGB彩灯:有自己的通信时序。丝杠步进电机:模拟智能窗帘:有自己的通信时序。直流电机:转向(改变电流方向),调速(PWM波)。继电器:模拟智能插座(跟驱动LED灯一样)。WIFI-ESP8266:串口接口。3.2微处理器硬件电路设计3.2.1主控芯片控制器作为智能家居系统的核心模块,是整个智能家居系统安全稳定运行的保障。通过结合现有的实验条件,分析智能家居系统的需求,最终采用中央控制器和节点控制器的分层模式对整个家庭网络进行监控。为了提高系统的稳定性和可靠性,满足对功能需求的多样性,选用stm32f103c8t6作为主控芯片。STM32F103C8T6芯片具有丰富的内外部资源、较大的存储容量和良好的用户开发环境;32位armcore的Cortex-M3控制器拥有丰富的片内和片外资源,最高工作频率为72mhz。内置大容量高速嵌入式内存,可轻松容纳智能家居系统所需空间;有2个IC接口、1个PWM定时器、10个3个通用16位定时器、2个12位模拟转换器和9个通信接口;最大转换时间可达1us;一个WiFi接口。通过以上的介绍,STM32F103C8T6是一款特别强大的微处理器,广泛的应用在对功耗和成本比较敏感的工业控制系统、微控制系统和无线网络嵌入式应用领域。它具备集高性能、低成本、低功耗等优点,功能特性都在很大程度上可以满足本次系统设计的需要。3.3数据存储模块设计系统的数据存储包括两个部分:系统参数和传感器采集的数据,因此数据存储分为两部分:Flash芯片存储温湿度传感器、CO2浓度检测传感器采集到的数据;FM24C64芯片用于存储系统的参数:配置参数、IP地址、端口号、采集接口的地址数据。3.3.1FM24C64存储电路设计系统参数存储数据部分数据量很小,但是前提要求是参数掉电不丢失,并且具备可擦可写的功能。本设计选取掉电后数据最久可以保存10年、读写寿命高达100亿次的FM24C64芯片,它具备写数据无延时、页擦除、低功耗的优点,刚好满足了参数存储基本的要求。FM24C64的具体电路设计如图3.3.1所示。图3.3.1FM24CL64存储电路3.3.2FLASH存储电路设计由于stm32f103rbt6的内部flash容量相对较小,只有512k,当大量数据的存储,就会出现空间不足,因此对flash芯片进行了外部扩展。本设计采用AT45DB161D闪存芯片存储传感器采集的数据,兼容SPI接口,工作电压为3V,速度最快可以达到66MHz。它具有较高的系统可靠性,超低的开关噪声,无需输入高编程电压。通过三线接口(MOSI、MISO、SCK)进行数据通信,满足此次系统设计的要求。具体电路如图3.3.2所示。图3.3.2FLASH存储电路3.4无线通信模块设计3.4.1WIFI模块的选用WiFi模块采用的是型号为ESP8266的芯片,为嵌入式开发人员提供最高性能、最低成本和功耗的WiFi接入,深受开发者的喜爱。它的工作原理如下:将需要连接到路由器的WiFi的用户名和用户的密码,通过USART2发送到路由器上接入到身边的网络;通过串口发送待连接服务器的网络端口号和IP地址,连接待通信服务器;服务器连接完成后,可以接收和发送数据,发送或接收的数据都是通过串行端口进行传输。图3.2是无线模块esp8266的具体电路图。图3.2WiFi模块(ESP8266)电路Esp8266无线WiFi模块只需连接两个引脚RXD和TXD即可与STM32单片机进行串口通信。其中引脚0为接收数据,引脚7为发送数据,引脚3为电源,引脚4接地,引脚2的作用的是重启WiFi模块,低电平复位,可挂起或连接到外部MCU,L针为芯片使能针,采用的是高电平使能,工作时需要上拉,并连接一个10k电阻,使芯片处于使能状态,整个模块正常工作运转。3.4.2连接TCPServer透传发送AT测试指令:AT\r\n回复:ATOK发送查询版本信息指令:AT+GMR\r\n回复:AT+GMRATversion:(Jul1201620:04:45)SDKversion:(39cb9a34)Ai-ThinkerTechnologyCo.Ltd.v-aNov30202015:54:29OKTCP是基于连接的协议,即在正式地进行数据收发工作之前,一定得和对方建立连接,且该连接稳定可靠。TCP想要建立连接必须要经过三次“握手”才可以成功,TCP想要断开Slaver和Service的连接需要经历四次“挥手”。TCP协议可以为应用程序提供可靠的通信保障,使某台计算机发出的字节流准确无误地发送到网络上的其他计算机,TCP协议传输数据在对可靠性要求高的数据通信系统的领域得到广泛的应用。ESP8266在station模式下作为TCPclient连接TCPserver实现透传的具体操作流程如下:配置WiFi模块工作模式为station模式,把配置保存在flash中指令为:AT+CWMODE_DEF=1响应为:OK配置esp8266模块连接路由器,保存相关参数在flash中指令为:AT+CWJAP_DEF="GEX",响应为:OK查询ESP8266模块的IP地址指令为:AT+CIFS响应为:+CIFSR:STAIP,"08"+CIFSR:STAMAC,"b4:e6:2d:53:ee:04"使用网络调试助手在电脑端创建一个TCP服务器(PC与ESP8266必须连接同一个路由)将WiFi模组与TCP服务器相连指令为:AT+CIPSTART="TCP","06",8080响应为:OK开启esp8266的透传模式指令为:AT+CIPMODE=1响应为:OK在网络调试助手软件上发送数据指令为:AT+CIPSEND响应为:>服务器给ESP8266发送数据:ESP8266给服务器发送数据:退出透传模式在透传开启传输数据的过程当中,如果识别到“+++”就会退出透传模式。成功退出透传模式后,即回到正常的AT指令模式,可以选择继续发送AT指令,但是与TCP服务器的连接不会自动断开,依旧可以传输数据。和TCP服务器断开连接指令为:AT+CIPCLOSE响应为:CLOSEDOK断开与AP的连接指令为:AT+CWQAP响应为:OK3.4.3HTTP协议请求HTTP协议是Web联网的基础,也是手机常用的联网协议之一,HTTP协议的建立是以TCP协议为基础的,不可能独立存在。TCP属于传输层协议,规定了数据传输和连接方式的规范。HTTP隶属于应用层协议,规定了传输数据的内容的规范。表3.1七层网络模型OSI层功能设备对应网络协议应用层为操作系统或网络应用程序提供网络服务的接口网关TFTP、HTTP、SNMP、FTP、SMTP、DNS、Telnet表示层提供数据格式转化服务网关没有协议会话层提供端连接并提供访问验证和会话管理网关没有协议传输层为数据包选择路由,寻址网关TCP、UDP网络层提供端对端的接口路由器IP、ICMP、RIP、OSPF、BGP、IGMP数据链路层在通信实体间建立数据链路连接交换机、网桥、网卡SLIP、CSLIP、PPP、ARP、RARP、MTU物理层为原始端设备提供原始比特流的传输通路集线器、中继器ISO2110、IEEE802、IEEE802.2协议请求的基本实现流程是客户端向服务器发送一个HTTP请求以说明其想要访问的资源和请求的动作;服务端收到请求之后开始处理请求,并根据不同的请求做出相应的动作实现对服务器资源的访问,最后发送HTTP响应把结果返回给slaver端。上述整个过程称作事务,当事务结束会在服务端添加一条日志条目留作证明。具体示例:GET/test/web.htmlHTTP/1.1//请求行\r\nHost:08//请求头\r\nConnection:close//请求头\r\nUser-Agent:WindowsNT8.1//请求头\r\n//空白行-\r\建立好连接后,向服务器发送请求:3.5氛围灯模块设计RGB彩灯是由三个灯组成的灯珠,三个灯分别发出的是红色、绿色、蓝色,RGB彩灯之所以能够表现出各种色号的原理是:所有的颜色都可以通过三原色按照不同的比例组合而成。此项毕业设计板载了一个RGB全彩LED灯珠,8mm超大雾面,256*256*256种色可调,具有发光均匀、柔和、色彩还原度高的特点。本平台使用采用了P9813芯片来驱动RGBLED灯珠。P9813使用的是三路恒流驱动及256级灰度调制输出,可显示256*256*256种颜色,可视效果分明,性能强劲。P9813与STM32通过SCL和SDA通信,与I2C通信类似。P9813芯片具体数据帧格式如下图所示。STM32按照数据的顺序发送RGB三种颜色灰度数据来实现RGB颜色的调节。具体步骤如下:1)stm32先发送32位“0”的起始帧数据。2)stm32发送32位的灰度数据:包括“标志位”、“校验数据”、“24位的RGB数据”。3)在数据收发的过程中时钟线和数据线时间工作参数如表3.2所示:表3.2工作参数表参数符号范围单位数据时钟频率FCLK0-8mhz时钟高电平宽度TCLKH>30ns时钟低电平宽度TCLKL>30ns数据建立时间TSETUP>10ns数据保持时间THOLD>5ns通过原理图可以清晰的了解到要想让RGB灯珠亮起来,需要控制P9813(RGB驱动芯片),在这个驱动芯片包含了两个数据管脚DIN和CIN。引脚CIN是时钟线,控制数据何时进行传输。引脚DIN是数据数,颜色数据的输入通道。3.6温湿度监测模块设计3.6.1DHT11模块图3.6.1DHT11实物图图3.6.2DHT11引脚说明DHT11是一个具有已校准数字信号输出功能的温湿度复合类型传感器,它是由一个8位单片机控制一个电阻式感湿元件和一个NTC测温元件复合而成。图3.6.2是MCU与DHT11引脚连接的电路图。DHT11能够同时检测温度和湿度,不过DHT11的精度和测量范围都要略逊于DS18B20,它的温度测量范围值是0~50℃,误差在±2℃;湿度的测量范围值是20%~90%RH,误差在±5%RH。DHT11电路很简单,只需要将Dout引脚与单片机的一个I/O相连即可以传输数字信号,不过该引脚需要额外上拉一个5K的电阻。DHT11的技术参数如下:1)工作电压范围:3.3V-5.5V2)工作电流:平均0.5mA3)输出信号类型:单总线数字信号4)分辨率:湿度精确到1%,温度精确到1℃3.6.2硬件设计DHT11的数据发送流程如下图所示:首先主机发送开始信号,即:拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20~40us)时间,然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(40~50us)时间,作为响应信号,然后DHT11拉高数据线,保持t4(40~50us)时间后,开始输出数据。DHT11输出数字‘0’的时序如下图所示:DHT11输出数字‘1’的时序如下图所示:3.7智能窗帘模块设计3.7.1智能窗帘“窗帘电机”顾名思义是一个电机,电机的正转或者反转,通过一个传动导轨实现。如图3.7所示。1)控制转向的管脚。电机的正反向转动通过传动轨道,就可以实现窗帘的开启、关闭功能。2)控制转速的管脚。通过MCU输出一个PWM来调节电机的转速,如果要窗帘的开合要做到流畅的方法是,电机慢慢启动匀速转动,当窗帘即将闭合时,电机速度慢慢降低,最终速度变为0,使得开关窗帘更加优雅贴切生活。3)测速的输入管脚。窗帘需要实现自定义“停位点”,则必须通过计算得知当前电机转动圈数,从而求得带动窗帘运动的距离。4)检测电流的管脚。电机在正常转动和异常制动是的电流是不一样的,电机电流管脚让MCU读取电机的当前的状态是处于正常工作还是处于恶意破坏的状态。5)控制急停的管脚。可以用于如果用户恶意破坏窗帘电机,可以通过该管脚输出一个电平信号让电机急停。图3.7步进电机实物图3.7.2步进电机模块步进电机通常是通过四拍或者八拍的方式驱动其运转的。通常四线的步进电机,有两种方法的绕组:A,B,A绕组用+表示通过正向电流;用-A表示通反向电流。B绕组表示方法和A绕组的表示方法雷同。按照以下顺序供电:(+A,+B)>>>(-A,+B)>>>(-A,-B)>>>(+A,-B)。图3.5为步进电机的细分工作流程图,直观的讲解了供电的顺序步骤。图3.5步进电机细分原理图驱动的步骤及细节介绍:1)该型号的丝杆步进电机有四个引脚:A、A非、B、B非。2)任何一个节拍的电平都必须保持至少长达800us的稳定状态才能进入下一节拍。3)任意一个节拍都需同时控制四个管脚的电平。4)选用的丝杆步进电机实现从最左边移动到最右边地功能合计需要800个节拍,反向依然是800个节拍走完整个丝杆。5)滑竿往右走的节拍顺序:12341234;滑竿往左走的节拍顺序:43214321表3.3四拍类型的驱动时序表节拍1节拍2节拍3节拍4A使能失能失能使能A失能使能使能失能B失能失能使能使能B使能使能失能失能3.8本章小结本章内容包含了智能云家居系统的硬件选型和设计的大体思路。阐明了stm32f103c8t6主控芯片的优点,对外接模块的电路连接进行了设计,其中包含电源模块、存储模块、数据采集发送模块、智能窗帘模块、WIFI无线通信模块、继电器模块等。电路设计在整个系统中的作用举足轻重,还影响软件设计预算法的实现。第4章智能家居网页端开发设计4智能家居网页端开发设计4.1网页端开发环境MyEclipse是一个基于eclipse开发环境配合上相关插件而组成的更全面的集成开发环境。MyEclipse具有全面的功能和对相关开源技术的出色支持,多用于Java、javaee等应用开发。相比较其他的开发环境而言,MyEclipse界面显得更加简单,窗口逻辑十分清晰,操作起来简单易上手,而且功能方面完全可以达到系统的web开发要求。但是与使用其他一些开发环境软件不同的是,MyEclipse在开发和使用网页之前需要配置计算机相对应的environment。java开发工具包和java开发所需的运行环境和基本类是配置过程中的主要插件。windows10操作系统如需使用MyEclipse,环境变量的配置如下:选择环境变量配置>>新建JAVA-home变量>>编辑path变量>>编辑classpath变量>>DOS验证即配置成功。4.2服务器选择与集成设计开发的网页最终都必须通过服务器上传发布才能投入使用,常见的有WebLogic、WebSphere、JBoss、Tomcat等很多服务器选择。因为开发成本有限,为了达到不浪费资源的目的,该设计最终选择的是更加小巧且方便的Tomcat服务器。TomcatServer主要是由Apache、Sun等技术支持公司开发的轻量服务器。图4.1服务器启动界面4.3网页端开发前端网页作为用户最直观的获取信息的通道和最直观的操作平台。前端网页所涉及的技术包含了:超文本标记语言、脚本语言以及层叠样式表单语言。在使用超文本标记语言对用户网页进行模块的划分和结构的定义后,基本建立好了网页的样式框架结构。为了进一步满足客户的视觉需求和操作过程变得更加简洁,因此引入层叠样式表,CSS语言的修饰能够使HTML样式更多样化更加被大众接收。同时运用层叠样式表之后代码复用性更高,也可以将代码内容与修饰隔开,对于后期的维护工作意义重大。经过层叠样式表的修饰后的页面基本满足客户对形态上的要求。但如今人们更青睐从网页端获取复杂的非静止的页面信息,所以不得不引入前端脚本语言,从而达到增删改查的HTML与CSS语言代码,凭借校验数据的实时性通过连接后端网页逻辑,实现真正的动态页面的设计制作。4.4Web使用步骤1开机并打开设备控制网页打开电源开关,给设备上电,上电后系统开始启动,并会自动连接已经设置好的WIFI和信盈达智能云家居服务器。如果当前设备是首次开机,开机成功后时不会有任何动作。在浏览器上输入“:8080/ctrl.html”进入智能云家居网页控制平台。2输入设备ID序列号在上面打开的网页的“设备ID”框中手动输入设备显示屏上显示的24位ID序列号,如下图所示,注意,不同的设备ID号是不一样的。3查看当前设备状态输入了当前设备ID号后,即可点击“查看设备状态”按钮,查看当前设备的状态。点击后就会跳转到另外一个页面。4设备控制在控制页面中按照说明对设备进行控制参数的设定,然后点击“确定修改”按钮即可快速的实现远程控制设备。控制成功则会跳转到如下页面,点击“设置成功,返回控制页面”即可返回控制页面。查看设备当前状态即可看到设备控制后的新状态。4.5本章小结本章节介绍了智能云家居系统与网页实现信息交互所涉及的相关软件和实现用户需要所要学习的功能语言。首先针对用户端的需求简述了所要配置的网页开发环境,以及涉及web前段需要用到的技能。然后描述了网页后端的编程逻辑,编程框架应用,及数据库表单结构。

第5章总结与展望5总结与展望5.1总结本项目结合了智能家庭系统的无线远程控制、智能控制的嵌入式技术、因特网技术、无线通信技术,着重于使用的便利性和操作界面的直观性。直击痛点地解决了传统智能家庭系统的种种问题:能耗过大,复杂布线,污染环境,资源利用率低等问题。目前,互联网已被智能家庭行业采纳并大规模使用。通过分析智能家庭系统的市场走向,WiFi被用作构建智能家庭控制系统的中央控制器的通信技术,达到实现无线智能家庭控制和远程监视功能的目的。主要囊括了以下技术要领:构建了智能家庭系统的整体配置模板,包括中央家庭控制器、室内环境数据获取终端、移动客户端、WiFi无线通信终端和模糊控制器的连接通信。详细描述了系统的软件和硬件部分的设计。将智能家庭从繁琐的有线控制升级到触手可及、非常方便的无线控制,使用因特网技术扩展智能系统的控制区域,多次测试无线网络传输数据的能力。为了达到用户的的预期标准,对智能家庭网络进行阶段性的优化和维护。本课题研究了基于WiFi的智能家居控制系统,为成功完成本次系统设计,用两个多月的时间学习stm32f103芯片、usart串口与WiFi模块的数据传输、基本定时器的PWM控制直流电机的转动方向以及转动速度、spi通信控制OLED屏幕显示图片以及字符数据、iic通信读取温湿度模块的具体数据等在大学期间没遇到过的嵌入式有关知识,在吴老师悉心的指导下,配合自己翻阅大量的资料,战胜了不少难题。本文介绍了与智能家居有关的国内外发展现状和基本概念,在意识到发展前景广阔的前提下完成该方向的系统设计。在完成该系统的过程中遇到了许许多多很细节的问题,在自己的慢慢摸索中才得以完成该设计。本以为设计完成就万事大吉了,令我没想到的是该次论文的书写依旧困难重重,很多专业性的知识并不能很流利的表达出来,需要借阅大量的书籍资料。从构思书写论文大纲时就开始迟疑,论文的完成经历也相对来说有很大的挑战性,最后提交查重也遇到了不少需要改进的地方。经历过此次的毕业设计以及论文书写,我发现自己还是有太多的专业知识,甚至基本的电脑操作技能都没有能够及时掌握。我决定从此刻开始,树立一个终身学习的观念,只有不断学习才可以跟上时代步伐,才能快乐的生活。对于半只脚以及踏入社会的我来说,这将是对我一生影响重大的一课。本课题设计的出发点一是看好WiFi在未来各类领域的美好前景,二是坚信科技是未来发展的主流方向,希望可以为社会的发展贡献一份微不足道的力量。5.2展望从当下的科技水平和物联网应用的现状来看,智能家居将会是很长一段时间人们会着力创新的方向,甚至成为人们的刚需,所以智能家居行业的前瞻性很高,将会在市场上占有不小的地位及份额。特别是近几十年,国家开始大力倡导、鼓励新兴科技的发展,再加上政策的扶持,智能家居的发展速度也会达到一个不错的水平。希望在经过十几年的发展,智能家居的普及率越来越高,让科技感的便捷生活方式走进千家万户,尽可能的让所有人都感受到科技的力量与先进。参考文献参考文献[1]高思远.智能家居能源调度算法研究[D].河北:河北工程大学,2015.[2]邱凌.浅谈智能家居[J].网络信息技术应用与自动化,2008(5):1-2.[3]张亮.嵌入式智能家居控制系统的设计[J].城市建设理论研究:电子版,2015(25):55-57.[4]熊琼.基于ARMCortex-A8与Android平台的智能家居系统设计[D].太原:太原理工大学,2014.[5]江进,王浩存.物联网智能家居实训系统的设计与实现[J].电子技术与软件工程,2014(10):38-39.[6]申斌,张桂青,汪明,李成栋.基于物联网的智能家居设计与实现[J].自动化与仪表,2013,(02).[7]花铁森.智能家居系统核心技术探讨[J].智能建筑电气技术,2009,(1).[8]沈璞,于志鹏.KNX智能家居控制在中国的应用现状与发展分析[J].仪器仪表标准化与计量,2011,(5).[9]蒙博宇.STM32自学笔记[M].北京航空航天大学出版社,2014.[10]吴麒,高黛陵.控制系统的智能设计[M].机械工业出版社,2003.[11]孙利民,李建中,陈渝等.无线传感器网络[M].清华大学出版社,2005.[12]王春梅,李扬.计及用户舒适性的家庭智能用电调度优化[J].电网与清洁能源,2016,32(4):58-62.[13]ImplementationofSmartHomeSystemBasedonInternetofThings[J].QingMengWang,HuaFengQin,QingSongLiu,TaoSong.AppliedMechanicsandMaterials.2014(475).[14]KhodaparasSahand,BenslimaneAbderrahim,YousefiSalehAsoftware-definedcachingschemefortheInternetofThings[J].ComputerCommunications,2020.[15]Q.Guan,C.Li,X.Guo,andB.Shen,“Infraredsignalbasedelderlydetectionforin-homemonitoring,”inProc.9thInt.Conf.Intell.Human-Mach.Syst.Cybern.(IHMSC),Aug.2017,pp.373–376.[16]E.P.Andrade,B.B.A.Costa,C.R.Chavesetal.STM-electroluminescencefromclusteredC3N4nanodomainssynthesizedviagreenchemistryprocess[J].Ultrasonics-Sonochemistry,2018,40.[17]ManuelPedrero,EladioGutierrez,SergioRomeroetal.ReduxSTM:OptimizingSTMdesignsforIrregularApplications[J].JournalofParallelandDistributedComputing,2017,107.[18]王朝华,陈德艳,黄国宏.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012,22(06):225-228.[19]ChangLongYang,FangJi,WeiWeiWang.DesignofBluetooth-BasedSmatHomeIntelligentController[J].AppliedMechanicsandMaterials,2013,2491(336):116-120.[20]刘潼.基于嵌入式的智能家居系统设计与实现[D].吉林大学,2017.[21]SamuelTang,VineethaKalavally,KokYewNg,JussiParkkinen.Developmentofaprototypesmarthomeintelligentlightingcontrolarchitectureusingsensorsonboardamobilecomputingsystem[J].Energy&Buildings,2017,138(06):26-31.[22]孙培远.智能家居室内环境监测系统的研究与开发[D].吉林建筑大学,2017.[23]孙建朋.基于ZigBee和ARM的智能家居系统的设计与实现[D].安徽理工大学,2017.[24]吴衍标,熊勇,姚炜.基于RESTfulWeb的智能家居系统应用[J]、计算机应用,2015,35(S2):284-289.[25]米秋香.基于2.4G技术的智能家居系统实现[D].广东:华南理工大学,2018.[26]华颖.基于Web和Android的智能家居控制系统的设计与实现[D].广西:广西大学,2018.[27]侯青波.基于OFDM的电力载波通信的智能家居系统设计与实现[D].云南:云南大学,2013.[28]王鹏.基于Android的智能家居及其安防系统的设计与实现[D].成都:电子科技大学,2016.05.19.[29]黄熙程.智能家居的发展应用及挑战[J].科技传播,2019,11(02):117-118.[30]孙兵.基于ARM的智能家居网关设计与实现[D].安徽:安徽理工大学,2017.

附录附录#include"main.h"u8TCPServerIP[]="78";u8ESP8266SendHTTP[100];u8ESP8266GetHTTP[100];u8DeviceIDBuf[30]={0};u32DeviceID[3];structDeviceStatusTypeNewStatus;structDeviceStatusTypeOldStatus={0,0,0,0,0.0,0.0};/*函数功能:main函数函数参数:无返回值:无说明:无*/intmain(void){ doubletmp_temp,tmp_humi; u8ret,UpdateFlag; DeviceID[0]=*(u32*)(0x1FFFF7E8+0x00); DeviceID[1]=*(u32*)(0x1FFFF7E8+0x04); DeviceID[2]=*(u32*)(0x1FFFF7E8+0x08); sprintf((char*)DeviceIDBuf,"%08x%08x%08x",DeviceID[2],DeviceID[1],DeviceID[0]); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); LED_Init(); LED1_ON; TIM2_delayms(300); LED1_OFF; KEY_Init(); USART1_Init(115200); USART2_Init(115200); StepMotor_Init(); DCMotor_Init(); Relay_Init(); OLED_Init(); P9813_Init(); P9813_Contrl(0x000000); ESP8266_Init(); do { ret=ESP8266_ConnectAP((u8*)"GEX",(u8*)); }while(ret); do { ret=ESP8266_ConnectTCP((u8*)"78",(u8*)"8080"); }while(ret); printf("DeviceID=0X%s\r\n",DeviceIDBuf); //为了防止设备是第一使用的新设备,需要先跟服务器报备设备(注册) sprintf((char*)ESP8266SendHTTP,"GET/cgi-bin/getstatus.cgi?deviceid=0X%s&temperature=0&humidity=0&ledclore=56&motor=0&step_motor=0&relay=0HTTP/1.1\r\nHost:%s\r\nConnection:close\r\n\r\n", DeviceIDBuf,TCPServerIP); USART2_Send_Str(ESP8266SendHTTP); TIM2_delayms(200); while(1) { ret=GetDataFromServer(); if(ret==0)//正确接收并解析了服务器的控制数据 { printf("\r\nNewStatus:0x%x,%d,%d,%d\r\n",NewStatus.RGBColor,NewStatus.Motor,NewStatus.Step_Motor,NewStatus.Relay); printf("OldStatus:0x%x,%d,%d,%d\r\n\r\n",OldStatus.RGBColor,OldStatus.Motor,OldStatus.Step_Motor,OldStatus.Relay); UpdateFlag=0; //rgb if(OldStatus.RGBColor!=NewStatus.RGBColor) { OldStatus.RGBColor=NewStatus.RGBColor; P9813_Contrl(NewStatus.RGBColor); printf("**************************RGB=%x\r\n",NewStatus.RGBColor); UpdateFlag=1; } //motor if(OldStatus.Motor!=NewStatus.Motor) { OldStatus.Motor=NewStatus.Motor; printf("**************************Motor=%d\r\n",NewStatus.Motor); if(NewStatus.Motor>0) { DCMotor_Contrl(NewStatus.Motor,1); } else { DCMotor_Contrl((NewStatus.Motor)*(-1),0); } UpdateFlag=1; } //stepmotor if(OldStatus.Step_Motor!=NewStatus.Step_Motor) { if(OldStatus.Step_Motor>NewStatus.Step_Motor) { StepMotor_Contrl(Step_Left,OldStatus.Step_Motor-NewStatus.Step_Motor); } else { StepMotor_Contrl(Step_Right,NewStatus.Step_Motor-OldStatus.Step_Motor); } OldStatus.Step_Motor=NewStatus.Step_Motor; UpdateFlag=1; } //relay if(OldStatus.Relay!=NewStatus.Relay) { if(NewStatus.Relay) { Relay_ON; } else { Relay_OFF; } OldStatus.Relay=NewStatus.Relay; UpdateFlag=1; } //数据有更新 if(UpdateFlag==1) { sprintf((char*)ESP8266SendHTTP,"GET/cgi-bin/getstatus.cgi?deviceid=0X%s&temperature=%.2f&humidity=%.2f&ledclore=%x&motor=%d&step_motor=%d&relay=%dHTTP/1.1\r\nHost:%s\r\nConnection:close\r\n\r\n", DeviceIDBuf, OldStatus.temp, OldStatus.humi, OldStatus.RGBColor, OldStatus.Motor, OldStatus.Step_Motor, OldStatus.Relay, TCPServerIP); USART2_Send_Str(ESP8266SendHTTP); TIM2_delayms(200); } } //温湿度采集 DHT11_Get_Value(&tmp_temp,&tmp_humi); if(tmp_temp!=OldStatus.temp||tmp_humi!=OldStatus.humi) { OldStatus.temp=tmp_temp; OldStatus.humi=tmp_humi; sprintf((char*)ESP8266SendHTTP,"GET/cgi-bin/getstatus.cgi?deviceid=0X%s&temperature=%.2f&humidity=%.2f&ledclore=%x&motor=%d&step_motor=%d&relay=%dHTTP/1.1\r\nHost:%s\r\nConnection:close\r\n\r\n", DeviceIDBuf, OldStatus.temp, OldStatus.humi, OldStatus.RGBColor, OldStatus.Motor, OldStatus.Step_Motor, OldStatus.Relay, TCPServerIP); USART2_Send_Str(ESP8266SendHTTP); TIM2_delayms(200); } TIM2_delayms(500); }}/*函数功能:将数字字符串转换为10进制数函数参数:u8*str("123")返回值:转换结果说明:无*/intStrToInt(u8*str){ intdata=0,status=1; if(*str=='-') { status=-1; str++; } while(*str>='0'&&*str<='9') { data=data*10+*str-48; str++; } returndata*status;}/*函数功能:发送HTTP协议报文获取服务器控制数据并解析函数参数:无返回值:1:数据错误,0:数据正确说明:无*/u8GetDataFromServer(void){ intcnt=500; inttmp; char*ptr; //清除缓存,准备接收响应 memset(USART2_Receivebuf,0,USART2_ReceiveLen); USART2_ReceiveLen=0; USART2_Status&=~0x02; memset(DeviceIDBuf,0,30); DeviceID[0]=*(u32*)(0x1FFFF7E8+0x00); DeviceID[1]=*(u32*)(0x1FFFF7E8+0x04); DeviceID[2]=*(u32*)(0x1FFFF7E8+0x08); sprintf((char*)DeviceIDBuf,"%08x%08x%08x",DeviceID[2],DeviceID[1],DeviceID[0]); //发送请求报文 sprintf((char*)ESP8266GetHTTP,"GET/cgi-bin/getconfig.cgi?deviceid=0X%sHTTP/1.1\r\nHost:%s\r\nConnection:Keep-Alive\r\nUser-Agent:MWH\r\n\r\n", DeviceIDBuf,TCPServerIP); printf("%s\r\n",ESP8266GetHTTP); USART2_Send_Str(ESP8266GetHTTP); //等待接收响应 while((USART2_Status&0x02)==0); //等待接收结束 while((USART2_Status&0x01)==0); if(strstr((constchar*)USART2_Receivebuf,"</html>")==NULL)//响应数据没有接收完成 { cnt=2000; do { TIM2_delayms(1); if(strstr((constchar*)USART2_Receivebuf,"</html>")!=NULL) { break; } cnt--; }while(cnt); } printf("%s",USART2_Receivebuf); if(cnt==0) { printf("******************************失败\r\n"); return1; } else//收到了控制数据 { printf("******************************成功\r\n"); //处理数据 //确定设备ID是否正确 ptr=strstr((constchar*)USART2_Receivebuf,"DEVICE_SN:"); if(ptr==NULL) return1; else { ptr+=10; memset(DeviceIDBuf,0,30); DeviceID[0]=*(u32*)(0x1FFFF7E8+0x00); DeviceID[1]=*(u32*)(0x1FFFF7E8+0x04); DeviceID[2]=*(u32*)(0x1FFFF7E8+0x08); sprintf((char*)DeviceIDBuf,"%08x%08x%08x",DeviceID[2],DeviceID[1],DeviceID[0]); if(strncmp(ptr,(char*)DeviceIDBuf,24)!=0)//设备ID错误 { return1; } } printf("******************************成功\r\n"); //分析每一个数据 ptr=strstr((constchar*)USART2_Receivebuf,"V1:");//R ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.RGBColor=(u32)(tmp<<16); ptr=strstr((constchar*)USART2_Receivebuf,"V2:");//G ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.RGBColor|=(u32)(tmp<<8); ptr=strstr((constchar*)USART2_Receivebuf,"V3:");//B ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.RGBColor|=(u32)(tmp<<0); ptr=strstr((constchar*)USART2_Receivebuf,"V4:");//motor ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.Motor=tmp; ptr=strstr((constchar*)USART2_Receivebuf,"V5:");//stepmotor ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.Step_Motor=(u8)tmp; ptr=strstr((constchar*)USART2_Receivebuf,"V6:");//Relay ptr+=3; tmp=StrToInt((u8*)ptr); NewStatus.Relay=(u8)tmp; // printf("\r\nNewStatus1:0x%x,%d,%d,%d\r\n",NewStatus.RGBColor,NewStatus.Motor,NewStatus.Step_Motor,NewStatus.Relay); return0; }}#include"usart1.h"/*函数功能:USART1初始化函数参数:u32baud返回值:无说明:无*/voidUSART1_Init(u32baud){ GPIO_InitTypeDefGPIO_InitStruct; USART_InitTypeDefUSART_InitStruct; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10; GPIO_Init(GPIOA,&GPIO_InitStruct); USART_InitStruct.USART_BaudRate=baud; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStruct.USART_Parity=USART_Parity_No; USART_InitStruct.USART_StopBits=USART_StopBits_1; USART_InitStruct.USART_WordLength=USART_WordLength_8b; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); USART_Init(USART1,&USART_InitStruct);#if(USART1_IT!=USART1_IT_NONE){ NVIC_InitTypeDefNVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=USART1_PreemPriority; NVIC_InitStruct.NVIC_IRQChannelSubPriority=USART1_SubPriority; NVIC_Init(&NVIC_InitStruct);#if((USART1_IT&USART1_IT_TXE)==USART1_IT_TXE) USART_ITConfig(USART1,USART_IT_TXE,ENABLE);#endif#if((USART1_IT&USART1_IT_RXNE)==USART1_IT_RXNE) USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);#endif#if((USART1_IT&USART1_IT_IDLE)==USART1_IT_IDLE) USART_ITConfig(USART1,USART_IT_IDLE,ENABLE);#endif#if((USART1_IT&USART1_IT_TC)==USART1_IT_TC) USART_ITConfig(USART1,USART_IT_TC,ENABLE);#endif}#endif USART_Cmd(USART1,ENABLE);}/*函数功能:USART1发送单字节函数参数:u8data返回值:无说明:无*/voidUSART1_Send_Byte(u8data){ while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); USART_SendData(USART1

温馨提示

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

评论

0/150

提交评论