智能家居系统——网络结构搭建与算法研究


    




    智家居系统设计
    ——网络结构搭建研究
    智家居系统设计
    ——网络结构搭建研究


    全球智化发展浪潮利先进网络技术控制技术布线技术计算机等技术智家居系统出现正浪潮想追求更高质量生活品质体现智家居系统体工程学原理仅融合消费者需求机结合日常家庭生活中安全防御温度调节湿度调节灯光调节气体检测等种功模块体种技术通网络化综合智控制理实现全新家居生活体验
    次毕业设计针智家居系统中网络结构搭建研究系统硬件系统软件系统两部分组成硬件部分STM32嵌入式单片机位机STC89C52单片机位机ESP8266模块线通讯工具温度测试模块湿度测试模块AD转换模块等功模块Keil uVision4Keil MDK5软件开发台通串行通信技术实现位机ESP8266模块位机ESP8266模块间通讯具体说利ESP8266模块实现STM3252单片机通WIFI技术进行数通信实现STM32通线通信技术控制52单片机模块智家居系统利运行文详细描述次系统网络结构搭建研究功实现具体程

    关键词:智家居系统STM32STC89C52RCWIFI串行通信


    Intelligent home system design
    network structure construction and research

    Abstract
    Under the tide of global intelligent development the quality of life pursued by people is getting higher and higher and more and more smart homes are gradually entering people's life Smart home system including computer technology network communication technology intelligent controlComprehensive wiring technology
    Smart home is according to the principle of human engineering which is integration of consumer demand It makes the daily household system related together organically Such as security defense system temperature control system humidity control system lighting control system gas detection system Realize intelligent control and intelligent management through wireless communication so that people can feel the most comfortable and convenient new home life experience
    This graduation project mainly aims at the construction and research of the network structure in the intelligent home system The system is mainly composed of two parts the hardware system and the software system About the hardware system the STM32 MCU is the principal computer and the AT89C52 MCU is the slave computer The ESP8266 wireless module is a tool which make them connection establishment In addition the hardware system is also include the temperature test module humidity test module ADDA converter module and so on About the software system we use the serial port communication technology make the MCU and the ESP8266 establish communication Using the Keil uVision4 and Keil MDK5 Software development platform to write programs In order to convey information between principal computer and the slave computer To be specificusing the WIFI technology to realize the electronic data interchange between the STM32 MCU and the STC52 MCU After that we can use the STM32 MCU to control all the parts of the STC52 MCU by using wireless communication technique and makes the smart home system operation This thesis not only describe about how to set up the wireless communication between principle computer and slave computer and also describe some arithmetic research for the programs
    Key words Smart home system STM32 STC89C52RC MCU WIFISerial port communication
    目 录
    1 绪 1
    11 智家居系统研究背景 1
    12 智家居中网络结构搭建研究目意义 1
    2 智家居系统设计原理方案 2
    21网络结构搭建基原理 2
    22 网络结构设计方案 4
    23 位机功模块方案 5
    3 硬件设计 6
    31 位机具体功分析 6
    311温度系统 6
    312 湿度系统 6
    313 烟雾系统 6
    314 灯光系统 6
    32 位机具体数接发收功分析 6
    33 硬件选择 7
    331 位机选型 7
    332 位机选择 9
    333 线模块选择 9
    334 湿度采集模块 10
    335 烟雾采集模块 11
    336 ADDA转换器 12
    337 温度采集模块 12
    4 开发工具介绍 13
    41 Keil编程软件 13
    42 串口调试助手 14
    43 STCISP 15
    44 网络调试助手 15
    45 FlyMCU 16
    5 智家居系统位机功设计 17
    51 智干湿度系统设计 17
    511 湿度检测模块设计 18
    512 智干湿度控制系统设计 19
    52 智温度调节系统设计 21
    521 温度测试模块设计 21
    522 智温度系统设计 23
    53 智灯光系统 23
    531 ADDA转换器设计 24
    532 灯光动控制模式 27
    533 手动调灯光模式 29
    54 烟雾报警系统 30
    6 网络结构搭建 31
    61 ESP8266模块初始化 31
    62 位机串口通信搭建 32
    63 位机串口通信搭建 34
    64 位机位机网络结构搭建 38
    641 位机网络结构搭建 38
    642 位机程序设计 40
    7 调试程 42
    71 智干湿度动模式系统搭建调试 42
    72 智温度系统动模式搭建调试 45
    73 烟雾报警系统搭建调试 47
    74 智灯光系统搭建调试 48
    75 位机位机通信程调试 51
    751 STC89C52RCESP8266通信程 51
    752位机位机通信程 52
    76 位机模块手动模式搭建调试 53
    761 位机基功模块手动模式搭建调试 53
    762 智灯光系统手动控制模式 56
    8 结 60
    81 总结 60
    82 展 60
    参考文献 61
    致谢 62
    附录 63
    附录1 52单片机程序源码 63
    附录2 STM32程序源码 82
    附录3 英文文献 99
    附录4 中文文献 105

    1 绪
    11 智家居系统研究背景
    全球智化发展浪潮日常生活中家居品品质求越越高智家居出现仅满足家居智化便利化信息化等需求时应全球智化发展背景日家居行业种新发展趋势
    智家居种家居指生活类日常家居设备智指利程序类家居设备进行动控制利网络家居设备进行远程理控制通日常生活中种生活惯设计思路通智化方式全新家居生活体验传统普通家居相传统普通家具够通工方式控制家居启动关闭离开电器启动事情屡见鲜法动关闭者远程监控控制智家居够完美解决类问题够做远程监控远程控制够动监测动检测动控制调节需操作控制甚够学前者惯做出满足需求调节控制
    智家居系统日常居住场搭建环境通网络通信技术居住环境角落进行实时监测通房间家具设备进行动远程控制智家居系统说集安全便利舒适节美观体种高效住宅
    12 智家居中网络结构搭建研究目意义
    着第五代通信技术出现万物互联构想已步步走物联网技术飞速发展开始展拳脚智家居中重时基求做系统中位机位机间信息通信网络结构搭建优化实现数间信息交互成智家居系统中核心部分
    前线通信技术方式种样流线通信技术蓝牙ZigBee射频识全球移动通信系统WiFi红外通信限载波通信等种线通信技术适频段调制方式作距离数率应相应应领域
    通利网络线通信技术智家居系统中利通客户端登陆方式通网络数传输实现家连接着wifi智家居进行远程监控操控者智动控制实现种期命令
    2 智家居系统设计原理方案
    通ESP8266线模块作桥梁实现位机位机相互连接达位机数交互功实现者通位机触摸台连接位机智家居模块智干湿度调节系统温度动手动调节系统智灯光系统等远程控制时通位机电路中种数利线通信技术传位机种数者时家中系统进行控制真正做机手家居走(图2)
    图2 智家居系统

    21网络结构搭建基原理
    WLAN线局域网络种利线技术进行数传输系统正常情况定范围方够接收网络信号WIFI作WLAN种标准采WLAN协议种线联网技术日常生活中常短距离线技术
    TCP传输控制协议种面连接基字节流传输层通信协议TCP协议三次握手(图21)连接互连计算机通信网络计算机中成进程间TCP提供通信服务
    WIFI通讯模式建立TCP server(TCP服务器)数根TCP协议进行发送接收数TCP传输协议图(图22):
    图21 TCP三次握手


    图22 TCPIP协议传输示意图

    22 网络结构设计方案
    次毕业设计智家居系统分位机位机两部分利WIFI通信技术作数传输桥梁STM32嵌入式单片机位机STC89C52RC单片机位机位机位机利串口通信技术建立ESP8266模块数交互数通ESP8266利TCPIP传输协议互相发送
    首先STM3252单片机通串行通信技术(图23)实现STM32ESP826652单片机ESP8266串行通信次STM3252单片机利ESP8266线模块WIFI技术连接WIFISTM3252单片机传输信息数通串行通信传输ESP8266模块局域网利TCP传输控制协议进行线传输
    ESP8266线模块接收信息数串行通信方式数发送52单片机STM32形成完整通信回路整体结构搭建框架图(图24):




    接收设备
    D0
    D1
    D2
    D3
    D4
    D5
    D6
    D7
    D0
    D1
    D2
    D3
    D4
    D5
    D6
    D7
    发送设备
    D0
    D1
    D2
    D3
    D4
    D5
    D6
    D7
    图221 异步串行通信技术

    串行通信
    STM32
    ESP8266
    串行通信
    STC89C52
    ESP8266
    TCP传输协议
    路器
    WIFI连接
    WIFI连接
    图24 整体网络结构框架
    TCP传输协议



    23 位机功模块方案
    次毕业设计务中仅完成网络结构搭建时需完成智干湿度调节系统温度动调节系统智烟雾系统智灯光系统搭建数交互实现智系统实时数时传位机时位机通发送命令控制智系统运行
    智干湿度调节系统中利DHT11模块前环境中干湿度进行数收集通判断前干湿度数值否舒适时环境中干湿度进行调节
    温度动调节系统中利DS18B20模块前环境中温度进行检测通判断温度否舒适时环境中温度进行调节
    智烟雾系统中通MQ135模块环境中氯化物浓度进行判断超设定值屋产生量燃烧气体启动灭火装置时发出警报
    智灯光系统利PCF8591 ADDA转换器通判断前室外采光值屋灯光进行时调节
    3 硬件设计
    31 位机具体功分析
    311温度系统
    (1) 实时温度采集传温度数位机
    (2) 动室温度进行时调节温度低增温温度高降温室保持体舒适温度
    (3) 手动室温度进行调控
    312 湿度系统
    (1)实时湿度采集传湿度数位机
    (2)动室干湿度进行调节湿度低动加湿湿度高动抽湿室保持体舒适湿度
    (3)手动室干湿度进行调节
    313 烟雾系统
    (1)实时烟雾状况采集烟雾数传位机
    (2)发生火灾烟雾异常状况动开启水泵抽风系统
    (3)出现烟雾异常情况动发出警报报
    314 灯光系统
    (1)采集前光感数
    (2)根前光感数动调节灯光亮度达眼舒适光亮
    (3)手动调节灯光亮度

    32 位机具体数接发收功分析
    (1)接收位机发送温度数
    (2)接收位机发送湿度数
    (3)接收位机发送烟雾数
    (4)够温度系统湿度系统烟雾系统灯光系统等系统进行远程操作

    33 硬件选择
    331 位机选型
    STM32(图31)系列专求高性低成低功耗嵌入式应设计ARM CortexM系列核单片机根次设计位机实际功开发需求位机需编写完成种嵌入式应符合位机单片机选择需求仅STM32嵌入式单片机中含异步收发器够通串口实现ESP8266串口通信满足设计需求次设计决定选STM32F103ZET嵌入式单片机开发板作开发硬件板时次设计程中STM32F103C8T6单片机系统作开发硬件


    图31(a) STM32单片机


    图31(b) STM32F103ZET



    图31(C) STM32F103C8T6


    STM32具体优点:
    (1) 价格低廉仅8位机价格购买32位STM32单片机
    (2) 带种样外设功I2C总线AD转换器DA转换器等种外部设备
    (3) 强性引脚作中断输入时设计等级中断优先级
    (4) 低功耗STM32种外部设备关闭实现低功耗运行
    (5) 开发方式样成低STM32开发简单时支持种代码载方式济简单方法仅串口实现

    332 位机选择
    STC89C52RC40引脚中32外部双输入输出IO口满足温度系统湿度系统灯光调节系统烟雾系统等智家居系统引脚接入时含全双工串行口ESP8266通串行口52单片机进行通信仅52单片机含定时计数器外部中断满足次设计需通讯求

    图32 STC89C52RC

    333 线模块选择
    常见线通讯技术蓝牙WIFIZIGBEEZWave等通讯技术WIFI技术覆盖范围广覆盖半径高达百米蓝牙技术仅十米仅WIFI技术相ZIGBEE传输速度更快安全性更强时WIFI技术带宽更宽射频信号更强功耗更低特点重家种安装WIFI已成绝部分家庭选择次设计采WIFI技术进行网络结构搭建
    ATKESP8266(图33)款兼容33V5V单片机系统高性串口线模块模块采串口MCU通信置TCPIP协议栈户需通配置相关指令通网络传输数综STC89C52RCSTM32单片机进行通信满足设计需求模块具体特性(表333):
    表333 ATKESP8266基特性
    项目
    说明
    网络标准
    线标准 IEEE 802 11b1EEE 80211gIEEE 802 lIn
    线传输速率
    802 11b高达11Mbps
    频率范围
    2 412GHz2484GHz
    发射功率
    11 18dbm
    通信接口
    TTL电
    天线
    板载PCB天线
    工作温度
    40℃~ 85℃
    工作湿度
    10~ 90RHH
    外形尺寸
    19mm*29mmn

    图33 ESP8266模块

    334 湿度采集模块
    湿度采集模块DHT11温湿度模块(图34)具体参数表334:
    表334 DHT11温湿度模块参数
    检测数
    湿度温度
    湿度测量范围
    20%~95%(0℃~50℃范围)湿度测量误差±5%
    温度测量范围
    0℃~50℃范围温度测量误差±2℃
    工作电压
    33V~5V
    输出形式
    数字输出
    尺寸
    32*14mm

    图34 DHT11模块
    图35 MQ135模块

    335 烟雾采集模块
    烟雾采集模块采MQ135 空气质量模块(图35)家中产生火灾火灾中燃烧物产生硫化物空气中浓度会升高MQ135传感器输出电压会升高电压变化程度作时空气中污染气体浓度指数优点低成种害污染气体够进行监测时灵敏度高具体参数表335:

    335 MQ135空气质量模块参数
    产品类型
    半导体气敏元件
    检测气体
    氨气硫化物苯系蒸汽
    监测浓度
    101000ppm(氨气甲苯氢气)
    灵敏度
    Rs(inair)Rs(100ppmNH3)≥5
    336 ADDA转换器
    烟雾传感系统调节智灯光系统等系统中输出仅仅电压变化肉眼见实际物理模拟量(Analog)需肉眼见模拟量转换肉眼见数字量(Digital)需通AD模数转换器者DA数模转换器模拟量数字量相互转换实现系统数值化控制
    PCF8591模块具模拟输入端模拟输出端通输入端进行
    AD模数转换输入(光采集烟雾采集等)通输出端进行DA数模转换输出(灯光亮度值)符合设计求选择PCF8591转换器


    图36 PCF8591模块
    图37 DS18B20模块


    337 温度采集模块
    次设计温度采集电路中采DS18B20模块(图37)模块检测范围55℃~+125℃误差±05℃~2℃间检测范围精度远高DHT11温湿度检测模块仅DHT11温度测试接工作范围均0~50℃间发生火灾结冰情况时DHT11法时检测前温度数值法时报报警减少安全隐患增加检测精度次设计采DS18B20温度测试模块进行设计
    4 开发工具介绍
    41 Keil编程软件
    次设计Keil uVision4Keil MDK5两种编程软件Keil 系列编程软件(图41)单片机设计C语言软件开发系统Keil软件提供包括C编译器宏汇编链接器库理仿真调试器等功组合起软件
    keil uVision4款非常适调试51类单片机C语言单片机调试软件Keil MDK5支持新版ARM CortexM核嵌入式单片机调试软件次毕业设计时STC89C52RCSTM32单片机Keil uVision4 Keil MDK5两款软件
    图41(a) Keil uVision4

    图41(b) Keil MDK5

    42 串口调试助手
    串口调试助手(图42)串口调试相关工具STC89C52ESP8266STM32ESP8266进行数传递时串行通信技术仅需通串口调试助手调试52单片机STM32需通串口调试助手ESP8266进行wifi连接波特率设置工作模式初始化等前期工作准备
    图42 串口调试助手

    43 STCISP
    STCISP(图43)针STC系列单片机设计款单片机载编程烧录软件STC89C52RC单片机完成编程务通STCISPkeil uVision4生成HEX单片机执行格式文件通串口载该类文件载入52单片机中

    图43 STCISP

    44 网络调试助手
    网络调试助手(图44)款支持TCPUDP网络调试台通Keil uVision4Keil MDK5编写完成STC89C52STM32分ESP8266串行通信验证52单片机ESP8266否正常串行通信实现通建立TCP server服务器完成通TCPIP协议进行位机数交互STM32否ESP8266正常串行通信实现加入52单片机创建TCP server服务器进行正常数交互问题网络调试助手进行验证数收发校验
    图44 网络调试助手

    45 FlyMCU
    FlyMCU(图45)针STM32设计款单片机载编程烧录软件STM32程序编写完成通FlyMCUKeil MDK5生成HEX文件单片机执行文件载入STM32单片机中
    图45 FlyMCU

    5 智家居系统位机功设计
    51 智干湿度系统设计
    智干湿度系统针家庭干湿度环境进行动调节手动调节智系统检测环境湿度低体舒适湿度环境时智湿度系统会动变成加湿模式处环境进行加湿处理检测环境湿度高体舒适湿度环境时智湿度系统会动转变成湿模式处环境进行湿处理具体工作流程:(图51)
    开始
    湿度检测
    手动调节
    工作模式
    动调节
    否舒适
    调节类型
    加湿
    湿
    图51 智干湿度系统工作流程图



    511 湿度检测模块设计
    次设计湿度检测系统中DHT11模块采单总线传输技术52单片机建立通信输出8位整数湿度值8位温度整数值DHT11具体通讯程(图52):
    (1) 初始化程
    52单片机拉低总线约18ms低电2040us高电DHT11会发出占空50间隔周期120us脉信号作响应时DHT11已接收52单片机指令准备开始传输数
    (2) 数传输程
    初始化完成DHT11通总线52单片机发送温湿度数位数50us低电时隙开始高电时间长短决定输出值高电时长26us28us时数0’高电时常70us时数1’
    (3) 数接收完成通读取接收8位湿度整数数读取出前湿度值


    图52(a) DHT11数0’信号

    图52(b)DHT11数1’信号

    512 智干湿度控制系统设计
    根中国气象报科学研究显示环境温度18℃25℃相湿度4070时体感觉舒适动模式通判断前室湿度值确定工作模式动调控前室湿度值根图51干湿度控制系统工作流程图设计智干湿度系统模式思路
    设置默认模式智干湿度系统动模式动模式中环境湿度处45~70间时器件工作环境湿度低45环境湿度高70时智干湿度系统动启动加湿功湿功环境湿度重新处50~60间时器件停止工作
    手动模式中户位机通TCP传输协议利WIFI位机进行控制信号传输控制应湿度器件进行工作改变工作模式具体方式:位机通ESP8266接收位机数时判断位机发送前两位数RA时(RH Auto)智干湿度系统设置动模式前两位数RM时(RH Manual)智干湿度系统设置手动模式继续判断接收第三位数确定智干湿度系统中需工作功模块部分程序:
    #include 引DHT11湿度模块头相关文件
    uint RHMode0 默认干湿度模块动模式
    uchar ReceiveBuf[20]接收函数长接收10字符(前9~10特定数)

    sbit jiashiP2^3 定义加湿功IO口
    sbit qushiP2^4 定义湿功IO口

    void IO() interrupt 4 判断接收位机工作模式
    {
    ……
    switch(ReceiveBuf[9]) 数接收前8位数
    {
    case R’ if(ReceiveBuf[10]’A’)RHMode0 变动模式
    else if(ReceiveBuf[10]’M’)
    {
    RHMode1 变手动模式
    if(ReceiveBuf[11]’1’)jiashi0
    else if(ReceiveBuf[11]’2’)jiashi1
    else if(ReceiveBuf[11]’3’)qushi0
    else if(ReceiveBuf[11]’4’)qushi1
    }
    break
    }
    }

    void AutoControl()
    {
    Swtich(RHMode)
    {
    case 0 if (DHT()<45) jiashi 1 加湿启动
    *中DHT()湿度读取函数*
    else if(DHT()>70) qushi 1 湿启动
    else if(DHT()>50 && DHT()<60) 达适宜值停止工作
    {
    jiashi 0
    qushi 0
    }break
    case 1 break 手动模式(中断中判断执行)
    }
    }
    52 智温度调节系统设计
    智温度调节系统针屋前温度智动调节系统温度略低体舒适温度时动启动加热系统温度高时动启动降温系统室温度够控制体舒适温度范围具体流程程智干湿度调节程相似流程参图51
    521 温度测试模块设计
    DS18B20模块DHT11结构相似样采单总线技术进行52单片机通讯步次输出十六位温度数值模块通运算转换十六位温度数值转换位五位温度数值具体流程(图53):
    ①初始化:
    (1) 总线置低电
    (2) 延时500us(范围480us~960us)
    (3) 总线高电
    (4) 延时500us期间果模块接入接收初始化信号会80us返回60us~240us低电作应答信号

    图53(a) DS18B20初始化程

    ②写时序DS18B20发送ROM指令RAM指令
    (1) 总线置低电
    (2) 延时15us
    (3) 发送1位数
    (4) 延时60us
    (5) 总线高电
    (6) 次发送1位字节重复前五步直指令发送完成
    (7) 发送完成拉高数线

    图53(b) DS18B20时序


    ③写入ROM指令RAM指令(表521)
    (1) 查ROM指令表次芯片单片工作需引ROM址DS18B20发送0xcc时序指令
    (2) 先DS18B20写入0x44指令转换读取温度
    (3) DS18B20写入0xbe指令读取部RAM9位温度数
    (4) 接收读取数进行9位变5位转换输出五位温度数值

    表521(a) DS18B20 ROM指令表
    读ROM
    33H
    读取DS18B20中ROM编码(64位)
    符合ROM
    55H
    发出命令紧接着发送64位ROM编码寻找应DS18B20做出读写准备
    跳ROM
    0CCH
    忽略64位ROM编码适合单片工作


    表521(b) DS18B20 RAM指令表
    温度变换
    44H
    启动DS18B20部温度转换模式12位转换时长750ms结果存入部9位RAM中
    写暂存器
    4EH
    发出部RAM 34字节写限温度数命令传送两字节数
    读暂存器
    0BEH
    读部RAM中9位字节


    ④读数
    (1) 总线低电
    (2) 总线高电读取DS18B20返回电
    (3) DS18B20返回低电数0返回高电1
    (4) 读取电延迟40us~45us
    执行完DS18B20基程序利转化函数十六位温度数值进行温度转化5位温度数值通读取5位温度数值获前温度值
    522 智温度系统设计
    智干湿度系统相环境温度处18℃25℃时体感觉舒适动模式通判断前室温度值确定工作模式动调控前室温度值智温度系统模式设计
    智温度系统默认模式设置动模式前环境温度处18℃25℃时处体舒适温度器件工作环境温度18℃时系统会进入增温模式温度25℃时系统会进入降温模式果器件工作环境温度达20℃23℃时温度回体舒适值器件停止工作
    手动模式中户位机通TCP 传输协议利WIFI位机进行控制命令传输控制应器件工作改变工作模式具体方式:位机通ESP8266接收位机数时判断位机发送前两位数TA时(TP Auto)智温度系统设置动模式前两位数TM时(TP Manual)智温度系统设置手动模式继续判断接收第三位数确定智温度系统需工作功模块具体程序智干湿度系统相似详见附录

    53 智灯光系统
    智灯光系统针室种情况需求设计灯光智调节模式动模式智灯光系统会根前室采光数值灯光进行智调控室采光低时灯光会动亮起会根采光度灯光亮度进行调节时户根实际需求设置动进入模式时间时手动模式支持娱乐模式养生模式等智灯光模式具体流程图图54:
    图54 智灯光系统流程图
    4


    531 ADDA转换器设计
    PCF8591采I2C总线包含四输入通道1输出通道ADDA转换模块模块包含光敏电阻通AD转换AD数值进行判断根前光敏电阻采光值控制DA输出电压控制灯光亮度开发灯光控制系统
    PCF8591具体配置方式:
    ①SDASCL高电时SDA高变低跳变视开始信号
    ②接收开始信号时钟线1时数线0结束接收数0数线1时结束接收数1时接收完节数等4us开始接收字节写SendByte函数时候需0x80进行判断数0时SDA0数1时SDA输出1(发送8位数)
    ③发送次字节器件会发出接收反馈信号ACK应答通判断ACK应答判断否接收数
    ④接收完成SCL高电SDA低电SDA高低跳变视停止信号
    设置完I2C总线时序发送接收函数需转换模块接入PCF8591AD模数转换接口(AIN0~AIN3)时写入应接口值通读取接收函数接入模块实时AD模数转换数值
    通计算利I2C发送数函数写入需DA模数转换输出电压
    通AOUT接口输出DA模数转换电压控制接入AOUT接口模块电压值
    根飞利浦公司提供DATA SHEETPCF8591模块设置方式:
    ADC:
    ①通I2C总线发送数函数写入PCF8591址(0x90)
    ②写入需读取AIN口址(图55)
    ③根I2C传输协议利发送数函数选择工作模式(图56)
    ③利I2C数接收函数接收需读取AIN口AD模数转换数值
    DAC:
    ①通I2C总线发送数函数写入PCF8591址(0x90)
    ②利发送数函数进行工作模式选择
    ③利发送数函数发送DAC需输出电压值
    时DAC输出电压计算方法:
    设需电压X总电压N发送值Y
    Y(XN)*256
    Y通进制转换十进制(OCT)转换成十六进制(HEX)输出DA数值十六进制数通I2C总线发送数函数发送十六进制数PCF8591AOUT接口输出应电压
    解析:通输出电压总电压率十六进制值(256)输出电压值十六进制数通I2C总线发送函数发送十六进制数通DAC转换输出应电压
    图55 PCF8591 ADDA转换器


    图56(a) 写入工作模式DA模式


    图56(b) 写入工作模式位AD模式


    532 灯光动控制模式
    灯光动控制系统设计设置默认模式动控制模式接收位机通TCP传输协议利WIFI位机发送灯光控制命令接收位机发送前两位数LA时灯光系统设置动模式利PCF8591模块通AD转换模块光敏电阻电压模拟量进行实时采集转化实时数字量通读取实时光敏电阻(着光强度增加电阻增)电压数值判断前光值利采集光值DA转换器控制LED灯两端电压输入进行控制控制LED灯光亮度部分程序:
    #include 引PCF8591相关文件
    #include 引I2C相关文件
    #include 引灯光模式相关文件

    uint LTMode
    uint light
    sbit LEDP2^0
    void AutoControl
    void IO() interrupt 4 判断接收位机工作模式
    {
    ……
    switch(ReceiveBuf[9]) 数接收前8位数
    { 判断工作模块
    case L’ if(ReceiveBuf[10]’A’)LTMode0
    else if{……}break
    }
    }

    void AutoControl()
    {
    ……
    switch(LTMode)
    {
    case 0 lightADC_OUT(0x40) 赋值采光值进行判断
    if(light>240) 判断前采光值控制电压输出
    {
    DAC_OUT(0x99)
    }
    else if(light<100) 判断前采光值控制电压输出
    {
    DAC_OUT(0x00)
    }
    else if(light>220&&light<240) 判断前采光值控制电压输出
    {
    DAC_OUT(0x95)
    }
    else if(light>200&&light<220) 判断前采光值控制电压输出
    {
    DAC_OUT(0x90)
    }
    else if(light>180&&light<200) 判断前采光值控制电压输出
    {
    DAC_OUT(0x88)
    }
    else if(light>160&&light<180) 判断前采光值控制电压输出
    {
    DAC_OUT(0x86)
    }
    else if(light>140&&light<160) 判断前采光值控制电压输出
    {
    DAC_OUT(0x84)
    }
    else if(light>120&&light<140) 判断前采光值控制电压输出
    {
    DAC_OUT(0x82)
    }
    break
    ……
    }
    533 手动调灯光模式
    手动调灯光模式设计接收位机通TCP传输协议利WIFI位机发送灯光控制命令时读取位机发送灯光值输出应灯光亮度具体程:接收位机发送前两位数LM时灯光系统设置手动模式读取第三第六位数确定需输出电压值(灯光亮度)部分程序:
    #include 引PCF8591相关文件
    #include 引I2C相关文件
    #include 引灯光系统相关文件
    uchar Reslight

    void IO() interrupt 4 判断接收位机工作模式
    {
    ……
    switch(ReceiveBuf[9]) 数接收前8位数
    { 判断工作模块
    case L’ if{……}
    else if(ReceiveBuf[10]’M’)
    {
    {
    LTMode1
    Reslight((10*(ReceiveBuf[11]'0')+(ReceiveBuf[12]'0')))
    *数字字符变成数字*
    }
    }
    break
    }
    }
    void AutoControl()
    {
    switch(LTMode)
    { case 0……
    case 1 DAC_OUT2(0x80+Reslight)
    break
    }
    }
    54 烟雾报警系统
    次烟雾报警系统采MQ135模块空气中含定量燃烧产生氯化物时MQ135模块电压会迅速升高通PCF8591模块利AD转换MQ135电压模拟量成数字量通判断数值出否火灾火灾发生时动控制排风机水泵报警蜂鸣器启动
    烟雾报警系统模式设计设置默认模式动模式位机通TCP 传输协议利WIFI位机进行控制命令传输改变工作模式具体方式:位机通ESP8266接收位机数时判断位机发送前两位数SA时(SMK Auto)烟雾报警系统系统设置动模式前两位数SM时(SMK Manual)烟雾报警系统设置手动模式继续判断接收第三位数确定烟雾报警系统需工作功模块具体程序智温度系统智干湿度系统相似程序详见附录1

    6 网络结构搭建
    61 ESP8266模块初始化
    次网络结构搭建模块时ESP8266模块
    ESP8266模块默认波特率115200bpsSTC89C52RC单片机性增强型单片机选晶振部定时器落原产生115200波特率波特率误差然非常稳定先ESP8266模块进行初始化设置具体步骤:
    利USB转TTL数线ESP8266连接电脑通串口通信助手ESP8266发送初始化数:
    ①重新配置波特率:
    通USB转TTL串口线ESP8266模块发送:AT+UART96008100
    引指令:AT+UART
    解析:设置ESP8266波特率9600bps8位数位1位停止位校验位需流控
    ②设置工作模式
    通USB转TTL串口线ESP8266模块发送:AT+CWMODE3
    引指令:AT+CWMODE
    解析:ESP8266三种工作方式:
    mode1时ESP8266station模式staion模式中ESP8266wifi连入模式通接入wifi进行通讯
    mode2时ESP8266AP模式AP模式ESP8266作AP接入点外发出热点接入AP接入点ESP8266外部发送WIFI信号仅设备连接ESP8266发出WIFI进行通信
    mode3时ESP8266station+AP模式ESP8266作station作AP接入点连接wifi作wifi源
    ③位机ESP8266开WIFI位机ESP8266连入位机WIFI
    ④更改位机APIP址位机够准确找位机IP址
    通USB转TTL串口线ESP8266模块发送:AT+CIPAP19216888
    引指令:AP+CIPAP
    解析:位机IP址更改19216888
    ⑤查ESP8266IPMAC址
    通USB转TTL串口线ESP8266模块发送:AT+CIFSR
    引指令:AT+CIFSR
    时ESP8266返回APIP址已改19216888STAIP址1921682102
    62 位机串口通信搭建
    利串口通信技术STC89C52ESP8266进行通信
    硬件设计:
    ESP8266RX接收端接52单片机TX输出端ESP8266TX发送端接52单片机RX接收端ESP826652单片机进行串口通信
    程序设计:
    ①设置52单片机波特率9600bps通信模块波特率致设置TMOD0x20(工作方式1)SMOD0(波特率加倍)利波特率计算工具计算出TH1TL1初值0xFD
    ②SCON设置0x50串口工作方式1单片机发送指定数时数通写入发送缓器SBUF52单片机TX端口输出发送完成开启发送完成中断置位REN允许接收数数写入单片机时数通RX端口输入存入SBUF写入完成申请中断单片机SBUF取走收数
    ③开启中断允许开启接收允许开启定时器T1
    ④编写串口发送函数发送字节写入发送缓器SBUF中
    ⑤编写串口中断服务函数读取接受数值串口接收数接收寄存器SBUF会动RI接收中断动置1需通程序解RI中断时需接收接收寄存器SBUF中数存入接收缓区读取接收数
    具体程序:
    ****************
    * 波特率设置 *
    ****************
    void Init_UART() 串行口波特率设置
    {
    SCON 0x50 设置串行口控制寄存器0x50
    TMOD 0x20 设定定时器工作方式1
    TH1 0xFD
    TL1 0xFD
    ET1 0 禁止定时器1中断
    EA 1 总开
    TR1 1 开启定时器T1
    }
    ******************
    *单字节发送函数*
    ******************
    void sendChar(uchar byte) 发送字符
    {
    SBUF byte 字节写入发送缓器SBUF中
    while(TI0) 等串口发送中断(等发送完成)
    TI0 重置串口发送完成中断
    }
    ****************
    *字符串发送函数*
    ****************
    void sendString(uchar *s) 发送字符串
    {
    while(*s'\0') 判断字符串否发送完成空继续发送
    {
    sendChar(*s) 字节写入发送字节函数中
    s++ 装载字符
    }
    }
    需注意ESP8266模块处透传模式程中接收数时候接收数前面数会默认+IPDidlength通串数告诉接入机ESP8266接收数时报告数源id址数长度52单片机通串口通信接收ESP8266接收数时需接收数进行处理接收第位+’号时接收数进行读取否便丢弃该接收数
    void IO() interrupt 4
    {
    if(RI 1)
    {
    ES 0
    RI 0 清串口接收标志位
    ReceiveBuf[count]SBUF
    if(ReceiveBuf[0]'+') 果接收信息会受+IPDidlength
    { count++ }
    else
    { count0 }
    if(count >11)
    { count0
    Switch(ReceiveBuf[9])
    { …… }
    }
    ES 1
    }
    }
    63 位机串口通信搭建
    利串口通信技术STM32ESP8266进行通信
    硬件设计:
    STM32USARTUART烧录程序需通USART1STM32PAIOPIN9PIN10端方便烧录选择ESP8266插口时量避免接入PAIO口PIN9PIN10脚选STM32USART3作通信IO口ESP8266RX接收端接STM32单片机PBIO口PIN10ESP8266TX发送端接STM32单片机PBIO口PIN11STM32ESP8266串口通信
    程序设计:
    ①52单片机时STM32需初始化脚需GPIO口时钟应PIN脚STM32先GPIOB时钟PB10PB11脚时根STM32手册(表631)外设GPIO配置设置TX端输出方式推挽复输出RX端输入方式浮空输入GPIO口输出驱动电路响应速度10MHz

    表631 外设GPIO配置USART
    USART引脚
    配置
    GPIO配置
    USARTx_TX
    全双工模式
    推挽复输出
    半双工步模式
    推挽复输出
    USARTx_RX
    全双工模式
    浮空输入带拉输入
    半双工步模式
    未作通IO
    USARTx_CK
    步模式
    推挽复输出
    USARTx_RTS
    硬件流量控制
    推挽复输出
    USARTx_CTS
    硬件流量控制
    浮空输入带拉输入

    ②脚激活需USART3串口通信串口时初始化USART3串口配置包含设置波特率设置硬件流控制设置工作模式奇偶校验位设置停止位设置串口通信中数位长度设置等
    ③面设置设置USART3允许USART3工作
    ④USART3USART3中断
    ⑤STM32包含串口通信USART口UART口设置USART3中断优先级包括选择中断口抢断优先级子优先级紧急事件中断等
    ⑥USART3接收数会触发串口中断服务函数需编写程序读取接收数值
    具体程序:
    ******************
    *串口3收发缓存区*
    ******************
    u8 USART3_RX_BUF[USART3_MAX_RECEIEVE_LEN] 储存接收数
    u8 USART3_TX_BUF[USART3_MAX_SEND_LEN] 储存发送数
    vu16 USART3_RX_STA0 设置接收状态位0
    *接收状态位:前14位数接收位15位数否正确位接收0x0d时ASCII回车键代表数接收完成第16位数处理位第15位接收完成数接收数放入接收缓区中接收完成数处理数处理位置1表示完成*

    ********************
    *串口3中断服务函数*
    ********************
    void USART3_IRQHandler(void)
    { u8 res
    if(USART_GetITStatus(USART3 USART_IT_RXNE) RESET)
    接收数判断接收缓区否空查否接收完成
    { res USART_ReceiveData(USART3)
    USART_SendData(USART1res)
    if((USART3_RX_STA & 0x8000) 0)数处理未完成
    {
    if(USART3_RX_STA&0x4000)
    *表示接收0x0d意第15位接收回车数已接收完成*
    {
    if(res0x0a)USART3_RX_STA0
    *判断res数值果res接收数0x0aASCII值位\n换行符表示接收数错误重新开始*
    else USART3_RX_STA|0x8000
    *果接收res\n表示接收数完成STA设置0x8000表示数处理完成 *
    }
    else
    *表示数没接收0x0d继续接收数直接收0x0d\r止*
    {
    if(res0x0d)USART3_RX_STA|0x4000
    *果接收数0x0d代表置STA0x4000代表已接收回车次接收换行*
    else
    {
    USART3_RX_BUF[USART3_RX_STA&0X3FFF]res
    *果没接收0x0d换行继续接收数接收数放入接收数缓区中*
    USART3_RX_STA++
    *STA0开始加接收14位数*
    if(USART3_RX_STA>(USART3_MAX_RECEIEVE_LEN1)) \USART3_RX_STA0
    *果接收数接收长度接收数错误重新开始接收*
    }
    }
    }
    }
    }
    ******************
    *串口3初始化函数*
    ******************
    void USART3_Init(u32 bound2) bound波特率
    { *变量声明*
    NVIC_InitTypeDef NVIC_InitStructure
    GPIO_InitTypeDef GPIO_InitStructure
    USART_InitTypeDef USART_InitStructure

    **************
    * GPIO口配置*
    **************
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE)
    GPIOB时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3ENABLE)
    串口3时钟
    USART_DeInit(USART3) 复位串口3
    *USART3_TX PB10*
    GPIO_InitStructureGPIO_Pin GPIO_Pin_10 PB10
    GPIO_InitStructureGPIO_Speed GPIO_Speed_50MHz
    GPIO_InitStructureGPIO_Mode GPIO_Mode_AF_PP 复推挽输出
    GPIO_Init(GPIOB &GPIO_InitStructure) 初始化PB10
    *USART3_RX PB11*
    GPIO_InitStructureGPIO_Pin GPIO_Pin_11
    GPIO_InitStructureGPIO_Mode GPIO_Mode_IN_FLOATING浮空输入
    GPIO_Init(GPIOB &GPIO_InitStructure) 初始化PB11
    USART_InitStructureUSART_BaudRate bound2波特率般设置9600
    USART_InitStructureUSART_WordLength USART_WordLength_8b
    字长8位数格式
    USART_InitStructureUSART_StopBits USART_StopBits_1停止位
    USART_InitStructureUSART_Parity USART_Parity_No奇偶校验位
    USART_InitStructureUSART_HardwareFlowControl USART_HardwareFlowControl_None硬件数流控制
    USART_InitStructureUSART_Mode USART_Mode_Rx | USART_Mode_Tx 收发模式
    USART_Init(USART3 &USART_InitStructure) 初始化串口 3
    USART_Cmd(USART3 ENABLE) 串口
    接收中断
    USART_ITConfig(USART3 USART_IT_RXNE ENABLE)开启中断
    设置中断优先级
    NVIC_InitStructureNVIC_IRQChannel USART3_IRQn
    NVIC_InitStructureNVIC_IRQChannelPreemptionPriority2 抢占优先级2
    NVIC_InitStructureNVIC_IRQChannelSubPriority 2 子优先级2
    NVIC_InitStructureNVIC_IRQChannelCmd ENABLE IRQ通道
    NVIC_Init(&NVIC_InitStructure) 根指定参数初始化VIC寄存器
    }
    64 位机位机网络结构搭建
    641 位机网络结构搭建
    通单片机ESP8266发送创建TCP server指令ESP8266开启TCP server服务TCP server服务ESP8266通TCP传输控制协议限连接设备进行端端面连接全双工数传输时传输程性高传输速率快具体开启步骤:
    ⑤设置server服务通道数
    利52单片机串口通信方式通程序ESP8266发送指令:AT+CIPMUX1
    引指令:AT+CIPMUX
    解析:mode1时ESP8266TCP server开启路连接模式连入五设备进行server服务mode0时仅单路连接模式单设备进行通信
    ⑥开启ESP8266TCP server服务
    利52单片机串口通信方式通程序ESP8266发送指令:AT+CIPSERVER18080
    引指令:AT+CIPSERVER
    解析:mode1时开启TCP server服务port端口号server服务门牌号接入端通查找应端口号接入正确服务器处指令含义开启TCP server服务端口号8080
    ⑤⑥指令ESP8266重启便生效(指令断电消)法ESP8266初始化步骤中设定指令通52单片机串口通信通已编写①④串口发送函数ESP8266发送⑤⑥指令具体程序:
    void Init_ESP8266()
    {
    for (X0X<10000X++) ESP8266接收处理数时间约1015ms
    sendString(AT+CIPMUX1\r\n) 发送设置连接模式指令
    for (X0X<10000X++)
    sendString(AT+CIPSERVER18080\r\n) 发送开启TCPserver服务指令 设置端口号8080
    RI 0 发送完成清空接收中断位准备开始接收
    ES 1 总开
    }
    设置完成ESP8266TCP server服务52单片机通ESP8266利TCP server服务外部连接设备(位机)发送收集数位机够实时监控52单片机功模块(家中处)实时情况具体步骤:
    ⑦52单片机通TCP server服务外部设备发送收集种数值通串口通信方式利程序ESP8266发送指令:AT+CIPSEND018
    引指令:AT+CIPSENDidsize
    解析:id通道号size字节ESP8266设置路连接需发出指令设置具体发送通道号发送数字节具体处设置通通道0发送18位字节数
    具体程序:
    *****************************
    *函数(断发送18位数)*
    *****************************
    uchar Send[20] 定义发送数函数
    uchar SendCombine() 声明发送数合函数
    void main
    {
    Init_UART()
    Init_ESP8266()
    while(1)
    {
    SendCommbine() 数进行合
    for (X0X<10000X++) 延时段时间等数发送完成
    sendString(AT+CIPSEND018\r\n)
    for (X0X<10000X++) 延时段时间等数发送完成
    sendString(Send) 数储存数组
    Delay1ms(500)
    }
    }

    ******************
    *发送数合函数*
    ******************
    void SendCommbine()
    {
    Send[0] 'T'
    Send[1] 'P'
    Send[2] sendNumb[TrueTemp(Ds18b20ReadTemp()) 10000 1000]
    Send[3] sendNumb[TrueTemp(Ds18b20ReadTemp()) 1000 100]
    Send[4] sendNumb[TrueTemp(Ds18b20ReadTemp()) 100 10]
    Send[5] sendNumb[TrueTemp(Ds18b20ReadTemp()) 10 1]
    Send[6] 'R'
    Send[7] 'H'
    Send[8] sendNumb[DHT() 10]
    Send[9] sendNumb[DHT() 10 1]
    Send[10] '0'
    Send[11] '0'
    Send[12] 'S'
    Send[13] 'M'
    Send[14] sendNumb[ADC_OUT(0x42) 1000]
    Send[15] sendNumb[ADC_OUT(0x42) 1000 100]
    Send[16] sendNumb[ADC_OUT(0x42) 100 10]
    Send[17] sendNumb[ADC_OUT(0x42) 10 1]
    Send[18] '\0'
    }
    642 位机程序设计
    通STM32ESP8266发送连接TCP server指令连接步骤:
    ⑦建立TCP server连接:
    利STM32串口通信方式通程序ESP8266发送指令:
    AT+CIPSTARTTCP19216821028080
    引指令:AT+CIPSTART
    解析:id指连入通道号type连入方式addr连入址port连入端口(门牌号)该发送指令指0号通道连入TCP服务器连入址1921682102(位机ESP8266 STAIP址)连入端口8080(位机TCP server设置路连接端口8080)
    具体程序:
    ********************************
    *位机连入位机ISP服务器程*
    ********************************
    u8 Esp8266Init[] {AT+CIPSTART\TCP\\19216888\8080\r\n}
    STM3252单片机连接
    if(KEY71)
    {
    delay_ms(100) 防抖动
    if(KEY71)
    {
    while(KEY7) 模拟手指等抬起
    for(i0i<41i++)
    { while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)Ⅰ
    USART_SendData(USART3Esp8266Init[i]) Ⅱ
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)Ⅲ
    }
    delay_ms(1000) 延时1s防止次重复发送
    }
    *Ⅰ:通GetFlagStatus库函数检查串口3发送数寄存器否空发送数寄存器空代表数已发送移位寄存器移走开始次数发送进行数读取开启连接TCP指令发送*
    *Ⅱ:通串口3发送连接指令*
    *Ⅲ:通GetFlagStatus库函数检查串口3发送移位寄存器发送移位寄存器空代表数已发送完成*

    7 调试程
    次调试程中实物搭建位机控制界面组员完成抗力影响法合汇总调试程中部分系统搭建调试中关实物输出界面输入部分均二极开关代
    二极代部分包括:增温系统降温系统湿系统加湿系统水泵排风机报警蜂鸣器等
    开关代部分包括:位机连接钮位机部分手动控制系统钮位机动控制钮类控制开关等

    71 智干湿度动模式系统搭建调试
    通STCISP烧录工具利Keil uVision4编写智干湿度系统动模式程序烧录进入52单片机利网络调试助手接收52单片机发送实时湿度数值进行智干湿度系统动模式搭建调试
    智干湿度系统动模式湿度低时系统加湿模块发送指令开启加湿功湿度高时系统湿模块发出指令开启湿功湿度达体舒适湿度时停止前运行中湿度功模块
    次智干湿度系统动模式中湿度高70时开启湿功湿度低45时开启加湿功工作环境湿度处50~60时停止湿度器件工作
    图71环境中湿度升高70时湿模式启动利燃烧木棍燃烧检测模块周围模拟湿度降低场景湿度低45时加湿模式启动器件工作湿度处50~60时湿度器件停止工作
    综智干湿度系统动模式搭建成功
    图71(a) 湿度高舒适值

    图71(b) 湿模式启动

    图71(c) 湿度低舒适值

    图71(d) 加湿模式启动

    72 智温度系统动模式搭建调试
    通STCISP烧录工具利Keil uVision4编写智温度系统动模式程序烧录进入52单片机利网络调试助手接收52单片机发送实时温度数值进行智温度系统动模式搭建调试
    智温度系统动模式温度低时系统增温模块发送指令开启增温功温度高时系统降温系统发出指令开启降温功温度达体舒适温度时停止运行中温度功模块
    次智温度系统动模式中温度高25℃时开启降温功温度低18℃时开启增温功(处冰袋模拟低温环境)工作环境温度处20℃~23℃时停止温度器件工作
    图72环境中温度升高25℃时降温模式启动温度低18℃时增温模式启动
    综智温度系统动模式搭建成功
    图72(a) 温度高舒适值

    图72(b) 降温模式启动

    图72(c) 温度低舒适值

    图72(d) 增温模式启动

    73 烟雾报警系统搭建调试
    烟雾报警系统动模式搭建调试程智干湿度系统智温度系统相似搭建程详细说明图73烟雾传感值高设定值80时烟雾报警系统启动开启水泵开启排风机开启蜂鸣器报警
    综烟雾报警系统动模式搭建成功
    图73(b) 检测烟雾报警
    图73(a) 检测烟雾

    74 智灯光系统搭建调试
    通STCISP烧录工具Keil uVision4编写灯光控制系统设计程序烧录进入52单片机利数码显示光敏电阻数值进行光值采集测试利PCF8591 ADDA模数数模转换器连入模块中光敏电阻进行电压采集采集电压值转换实时光值
    利采光值进行智灯光系统程序编写光值低某数值时灯光亮起光值高某数值时灯光熄灭图74采光值低140时灯光熄灭采光值处140~255间时灯光点亮时等级灯光亮度适应采光值采光值处140~180区间时灯光1级亮度采光值处180~200区间时二级亮度200~220区间时三级亮度高220时四级亮度灯光亮综智灯光系统动模式动模式搭建完成
    图74(a) 灯光熄灭

    图74(b) 二级灯光亮度

    图74(c) 三级灯光亮度亮度


    75 位机位机通信程调试
    751 STC89C52RCESP8266通信程
    通STCISP烧录工具Keil uVision4编写灯光控制系统设计程序烧录进入52单片机利网络调试助手观察52单片机ESP8266模块否开启TCP server服务数否够正常收发ESP8266设置AT+CWMODE3AP+Station模式先电脑连入发射WIFI通网络调试助手中TCP Client方式连入52单片机通串口通信开启 IP址19216888端口号8080TCP server服务器中图75TCP Client连入指定TCP server服务器停接收单片机模块实时数出结52单片机ESP8266通信正常外部连接设备接收发送数
    图75 网络调试助手接收52单片机信息

    752位机位机通信程
    通fly mcu烧录工具Keil MDK5编写STM32ESP8266通信程序烧录进入STM32利USART1串口通串口调试助手观测STM32ESP8266连接USART3串口数确定STM32否STC89C52RC连接进行数传输
    图76果52单片机ESP8266TCP server服务器未开果KEY0钮(连接钮)STM32ESP8266发送连接TCP server指令连接钮显示CONNECT FAIL开启52单片机ESP8266TCP serverSTM32KEY1钮STM32接入52单片机ESP8266创建TCP server服务器显示CONNECT持续收52单片机发出模块实时数
    STM32STC89C52RC网络结构搭建完成TCP server服务器位机位机全双工方式彼互发数

    图76 STM3252单片机通信

    76 位机模块手动模式搭建调试
    761 位机基功模块手动模式搭建调试
    图77STM32蜂鸣器钮松开(模拟手指触摸屏接触松开)STM32ESP8266发送手动控制指令52单片机烟雾模块进入手动模式蜂鸣器灯亮起(蜂鸣器启动)次蜂鸣器钮松开STM32ESP8266发送手动控制指令52单片机蜂鸣器灯光熄灭(蜂鸣器关闭)
    理排风机水泵加湿湿降温增温等钮样成功控制52单片机模块进入手动模式进行手动控制
    仅图77(f)控制水泵属烟雾模块然降温系统动运行受影响时52单片机断STM32传输实时模块数
    综位机模块手动模式搭建完成

    图77(a) 蜂鸣器钮等松开


    图77(b) 蜂鸣器手动模式启动


    图77(c) 蜂鸣器钮等松开


    图77(d) 蜂鸣器手动关闭
    图77(e) 水泵系统钮


    图77(f) 水泵手动开启

    762 智灯光系统手动控制模式
    智灯光系统手动控制模式中利网络调试助手模拟STM32STC89C52RC发送数(STM32需发送样代码利网络调试助手更加直观方便)
    智灯光手动模式中设置设置0~20等级灯光亮度者通位机拖动相应灯光亮度条发送应灯光亮度代码进行位机智灯光系统手动控制模式控制图78次调试通网络调试助手STC89C52RC发送LM00LM05LM15三命令控制灯光发出0级5级15级灯光亮度灯光根灯光亮度指令完成相应灯光亮度调整智灯光系统手动模式设计完成
    图78(a) 发送灯光亮度指令

    图78(b) 0级亮度

    图78(c) 5级亮度

    图78(d) 15级亮度

    8 结
    81 总结
    综次毕业设计成功搭建系统:
    (1) 搭建完成智干湿度系统
    (2) 搭建完成智温度系统
    (3) 搭建完成烟雾报警系统
    (4) 搭建完成智灯光系统
    (5) 完成位机位机网络结构搭建
    次设计设计目标设计套智家居系统利STM32单片机STC89C52RC单片机分作位机位机组成整系统控制单元ESP8266模块作位机位机网络结构搭建桥梁建立位机位机间数传输功实现智家居系统中模块实时监控实时监测实时控制
    户仅位机发送指令1s左右时间位机便接收信息进行处理执行相应指令动作时位机中观察位机模块实时数值做实时监测房间里种数仅位机动功安防功房间舒适度种突发状况进行时调控时报时防御等功

    82 展
    次毕业设计程中仅式样单片机类型功技术发展程度进步解学STC5152系列单片机STM32系列单片机等更加深刻认识理解仅线网络网络传输协议初步认识动学动尝试中获益良
    次毕业设计深刻认识知识永止境需断学断探索断钻研够创造出更加更加产品未越越新更加优秀单片机渐露头角越越落单片机需淘汰断学淘汰着更加优秀美未断前进

    参考文献
    [1]竺春祥 夏彬 穆爽 陈泽杰 邱婷婷 孙嘉悦 基WIFI网络实验室智电理系统[J] 信息技术信息化 2019(05)151154
    [2]汪思德 陈乙鑫 基物联网智环境监测系统设计实现[J] 现代计算机(专业版) 2019(10)8790
    [3]永明 张琴 张伟彬 龙馨宇 张新贺 智门锁设计[J] 科技创新导报 2019(11)106106
    [4]郭桂绵 钟志浮 侯斌 刘雪锋 陈少锋 王丽媛 罗中良 WiFi控制智空气净化器设计[J] 日电器 2018(8)44
    [5]洪烁彬 张冰 海区公明灯智保护系统设计[J] 信息电脑(理版) 2019(10)5758
    [6]姚刚 毛江 熊学琴 温度传感器智水杯设计中应[J] 山西煤炭理干部学院学报 2013(03)136137
    [7]吴沛 张珣 种基ZigBee家居环境质量评测系统设计[J] 硅谷 2014(13)4042
    [8]张玲莉 基STC12C5A60S2调光台灯设计[J] 南方农机 2019(12)3031
    [9]张海龙 基SPCE061 A线环境监控系统设计[J] 单片机嵌入式系统应 2014(10)44
    [10]王云亮 蒋斌 线交通灯远程监控系统设计实现[J] 计算机测量控制 2014(06)128130
    [11]路士兵 面智网络信息安全技术研发实践[J] 电子世界 2018(7)22
    [12]温娟娟 王溢琴 基51单片机嵌入式核心板设计[J] 山西学学报:然科学版 2016(2)44
    [13]刚 梁丰研 俞巧君 潘瑾 古林馨 动态监测智物流贴[J] 物联网技术 2016(1)55
    [14]杜振宁 种基线传感器温室环境监测系统实现方法[J] 价值工程 2014(34)252254
    致谢
    次毕业设计程中指导老师曹彦玲老师悉心指导尤刚刚开始毫头绪时候曹老师时沟通时许理知识帮助明确方工作效率明显提高疫情期间老师早网课晚回家时沟通线开会督促设计进度终完成系统设计曹老师表示衷心感谢老师您辛苦
    时感谢组员作组长时候没办法时沟通导致进度致程度样样默默支持鼓励时予程度帮助意见谢谢家
    学四年转瞬逝感谢工业动化学院全体老师悉心教导耐心授业学校栽培掌握种专业知识专业技收获颇丰
    感谢答辩老师百忙中抽出时间阅读文祝全体老师身体健康工作利
    附录
    附录1 52单片机程序源码
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    sbit LED1 P2^0
    sbit LED2 P2^1


    sbit La P0^0
    sbit Lb P0^1
    sbit Lc P0^2
    sbit Ld P0^3
    sbit Le P0^4
    sbit Lf P0^5
    sbit Lg P0^6
    sbit Ldp P0^7

    sbit fan P2^6

    sbit L1 P1^0 第位
    sbit L2 P1^1 第二位
    sbit L3 P1^2 第三位
    sbit L4 P1^3 第四位


    uchar LEDNumb[10]{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}
    uchar sendNumb[10]{'0''1''2''3''4''5''6''7''8''9'}
    uchar Send[20]
    uchar ReceiveBuf[10]
    uchar DisplayData[4]
    uint X
    uint count

    uint a



    函数声明
    void delay(uchar i)
    void Init_UART() 串行口通信
    void sendChar(uchar byte) 发送字符
    void sendString(uchar *s) 发送字符串
    void datapros(int Number) 数码显示赋值
    void Display() 数码显示
    void Autocontrol()
    void Init() 单片机IO口初始化
    void Init_ESP8266() ESP8266初始化
    void SendCommbine()
    void main()
    {
    uint Y
    Init_UART()
    Delay1s(1)
    Init_ESP8266()
    Delay1s(1)
    Init()
    Delay1s(1) 等wifi进入工作
    for(Y0Y<500Y++) 概循环300次实现稳定
    {
    ADC_OUT(0x42)形参部分通道选择位存返回值(smoke)
    TrueTemp(Ds18b20ReadTemp()) DS18B20温度模块稳定
    DHT() 湿度模块稳定
    }
    while(1)
    {
    *************
    TrueTemp(Ds18b20ReadTemp()) DS18B20温度模块
    DHT() DHT11湿度模块
    ADC_OUT(0x42) ADC模数转换通道0
    *************
    AutoControl()
    SendCommbine()
    if(a1)
    {
    for (X0X<10000X++)
    sendString(AT+CIPSEND03\r\n)
    for (X0X<10000X++)
    sendString(OK1)
    a0
    }
    for (X0X<10000X++) 发送温度数值
    sendString(AT+CIPSEND018\r\n)
    for (X0X<10000X++)
    sendString(Send)
    Delay1ms(100)
    }
    }

    void delay(uchar i)
    {
    while(i)
    }

    void Init_UART() 串行口通信
    {
    SCON 0x50
    TMOD 0x20
    TH1 0xFD
    TL1 0xFD
    ET1 0 禁止定时器1中断
    EA 1
    TR1 1
    }

    void sendChar(uchar byte) 发送字符
    {
    SBUF byte
    while(TI0)
    TI0
    }

    void sendString(uchar *s) 发送字符串
    {
    while(*s'\0')
    {
    sendChar(*s)
    s++
    }
    }

    void Init()
    {
    La0
    Lb0
    Lc0
    Ld0
    Le0
    Lf0
    Lg0
    Ldp0
    L10
    L20
    L30
    L40
    }

    void Init_ESP8266()
    {
    for (X0X<10000X++)
    sendString(AT+CIPMUX1\r\n)
    for (X0X<10000X++)
    sendString(AT+CIPSERVER18080\r\n)
    RI 0
    ES 1
    }


    void SendCommbine()
    {
    Send[0] 'T'
    Send[1] 'P'
    Send[2] sendNumb[TrueTemp(Ds18b20ReadTemp()) 10000 1000]
    Send[3] sendNumb[TrueTemp(Ds18b20ReadTemp()) 1000 100]
    Send[4] sendNumb[TrueTemp(Ds18b20ReadTemp()) 100 10]
    Send[5] sendNumb[TrueTemp(Ds18b20ReadTemp()) 10 1]
    Send[6] 'R'
    Send[7] 'H'
    Send[8] sendNumb[DHT() 10]
    Send[9] sendNumb[DHT() 10 1]
    Send[10] '0'
    Send[11] '0'
    Send[12] 'S'
    Send[13] 'M'
    Send[14] sendNumb[ADC_OUT(0x42) 1000]
    Send[15] sendNumb[ADC_OUT(0x42) 1000 100]
    Send[16] sendNumb[ADC_OUT(0x42) 100 10]
    Send[17] sendNumb[ADC_OUT(0x42) 10 1]
    Send[18] '\0'
    }

    void IO() interrupt 4
    {
    if(RI 1)
    {
    ES 0
    RI 0 清串口接收标志位
    ReceiveBuf[count]SBUF
    if(ReceiveBuf[0]'+') 果接收信息会受+IPDidlength
    {
    count++
    }
    else
    {
    count0
    }

    if(count>12)
    {
    count0
    switch(ReceiveBuf[9])
    {
    case 'R' if(ReceiveBuf[10]'A') RHMode0
    else if(ReceiveBuf[10]'M') RHMode1
    {
    if(ReceiveBuf[11]'1') jiashi0
    else if(ReceiveBuf[11]'2') jiashi1
    else if(ReceiveBuf[11]'3') qushi0
    else if(ReceiveBuf[11]'4') qushi1
    }
    break


    case 'T' if(ReceiveBuf[10]'A') TPMode0
    else if(ReceiveBuf[10]'M') TPMode1
    {
    if(ReceiveBuf[11]'1') jiangwen0
    else if(ReceiveBuf[11]'2') jiangwen1
    else if(ReceiveBuf[11]'3') zengwen0
    else if(ReceiveBuf[11]'4') zengwen1
    }
    break


    case 'S' if(ReceiveBuf[10]'A') SMMode0
    else if(ReceiveBuf[10]'M') SMMode1
    {
    if(ReceiveBuf[11]'1') shuibeng0
    else if(ReceiveBuf[11]'2') shuibeng1
    else if(ReceiveBuf[11]'3') paifeng0
    else if(ReceiveBuf[11]'4') paifeng1
    else if(ReceiveBuf[11]'5') beep0
    else if(ReceiveBuf[11]'6') beep1
    }
    break


    case 'L' if(ReceiveBuf[10]'A') LTMode0
    else if(ReceiveBuf[10]'M')
    {
    LTMode1
    Reslight((10*(ReceiveBuf[11]'0')+(ReceiveBuf[12]'0')))

    }
    break


    }
    }

    ES 1
    }

    }

    ****************************
    * PCF8591 *
    ****************************
    #include
    #include
    #include

    #define uchar unsigned char
    #define PCF8591 0x90 PCF8591 址
    uchar x1

    ****************************
    * ADC *
    ****************************
    uchar adc()
    {
    uchar z
    Start_I2c()
    SendByte(0x91)
    Ack_Check()

    zRecieveByte()

    Ack_Check()
    Stop_I2c()
    return(z)
    }


    void dacc(uchar cl) 通道选择位
    {
    Start_I2c()
    SendByte(0x90)
    Ack_Check()
    SendByte(cl)
    Ack_Check()
    Stop_I2c()

    }

    uchar ADC_OUT(uchar dac) 模拟量转数字量输出dac通道选择位smoke返回值
    { 0x40位通道041通道12通道23通道3
    dacc(dac)
    x1adc()
    return x1
    }
    ****************************
    * DAC *
    ****************************

    * 需电压x总电压(5v)相出率x5率256(十六进制值)x5*256
    值换算成十六进制*

    void DAC_OUT(unsigned char DAT) DAT输出模拟电压(电压应十六进制数)
    {
    Start_I2c()
    if(SendByte(PCF8591) 1)
    {
    Stop_I2c()
    return
    }
    SendByte(0x40)
    SendByte(DAT)
    Stop_I2c()

    }


    ***部分I2C总线驱动程序*****

    #include
    #include
    #include

    #define NOP() _nop_() * 定义空指令 *
    #define _Nop() _nop_() *定义空指令*
    #define delay_5t { _nop_() _nop_() _nop_()\
    _nop_() _nop_()}


    sbit SCLP3^6 I2C 时钟
    sbit SDAP3^7 I2C 数
    bit ack *应答标志位*


    *******************************************************************
    起动总线函数
    函数原型 void Start_I2c()
    功 启动I2C总线发送I2C起始条件
    ********************************************************************
    void Start_I2c()
    {
    SDA1 *发送起始条件数信号*
    _Nop()
    SCL1
    delay_5t
    SDA0 *发送起始信号*
    delay_5t
    SCL0 *钳住I2C总线准备发送接收数 *
    _Nop()
    _Nop()
    }

    *******************************************************************
    结束总线函数
    函数原型 void Stop_I2c()
    功 结束I2C总线发送I2C结束条件
    ********************************************************************
    void Stop_I2c()
    {
    SDA0 *发送结束条件数信号*
    _Nop() *发送结束条件时钟信号*
    SCL1 *结束条件建立时间4μs*
    delay_5t
    SDA1 *发送I2C总线结束信号*
    delay_5t
    }

    *******************************************************************
    字节数发送函数
    函数原型 void SendByte(UCHAR c)
    功 数c发送出址数发完等应答
    状态位进行操作(应答非应答ack0)
    发送数正常ack1 ack0表示控器应答损坏
    ********************************************************************
    uchar SendByte(uchar DAT)
    {
    uchar itemp
    temp DAT
    for(i0i<8i++) *传送数长度8位*
    {
    SCL 0 先拉低判断SDA值
    if((temp&0x80)0x80) *判断发送位*
    SDA1
    else
    SDA0
    delay_5t
    SCL1 *置时钟线高通知控器开始接收数位*
    temp temp <<1
    }
    SCL0
    ack Ack_Check() 判断否应答
    return ack
    }

    *******************************************************************
    字节数接收函数
    函数原型 UCHAR RcvByte()
    功 接收器件传数判断总线错误(发应答信号)
    发完请应答函数应答机
    ********************************************************************
    uchar RecieveByte()
    {
    uchar retc
    uchar i

    retc0
    SDA1 *置数线输入方式*
    for(i0i<8i++)
    {
    _Nop()
    SCL0 *置时钟线低准备接收数位*
    delay_5t
    SCL1 *置时钟线高数线数效*
    delay_5t
    retcretc<<1
    if(SDA1)retcretc+1 *读数位接收数位放入retc中 *
    _Nop()
    _Nop()
    }
    SCL0
    _Nop()
    _Nop()
    return(retc)
    }

    ********************************************************************
    应答子函数
    函数原型 void Ack_I2c(bit a)
    功 控器进行应答信号(应答非应答信号位参数a决定)
    ********************************************************************
    uchar Ack_Check(void)
    {
    bit check
    SDA1
    delay_5t
    SCL1
    delay_5t

    check SDA

    SCL0 *清时钟线钳住I2C总线便继续接收*
    _Nop()
    _Nop()
    return check
    }

    ***********************
    * DHT11 *
    ***********************
    #include
    #include
    #include
    sbit DHT11P3^4
    uchar U8FLAGU8comdata
    uchar Data_THData_TLData_RHData_RL
    uchar THTLRHRL
    uchar ComData0
    uchar checktemp

    void DHT11_delay_us(uchar n)
    {
    while(n)
    }

    uchar DHT()
    {
    初始化
    DHT110
    Delay1ms(20) 机总线拉低18ms
    DHT111
    DHT11_delay_us(30) 机拉高2040us
    if(DHT11)
    {
    U8FLAG2
    while((DHT11)&&U8FLAG++) 等返回80us低电 (U8FLAG++指加溢出
    uchar值256溢出0约机器周期
    U8FLAG2
    while((DHT11)&&U8FLAG++) 等电重新拉高
    COM()
    Data_RH U8comdata
    COM()
    Data_RL U8comdata
    COM()
    Data_TH U8comdata
    COM()
    Data_TL U8comdata
    COM()
    check U8comdata
    DHT111
    Delay10us(3)
    }
    return Data_RH
    }

    void COM()
    {
    uchar idat0
    for(i0i<8i++) 高低次接收8位数
    {
    U8FLAG2
    while((DHT11)&&U8FLAG++) 等50us低电
    DHT11_delay_us(8) 延时60us果高数1否0
    dat0
    if(DHT11)dat1 数1时dat加1接收数1
    U8FLAG2
    while(DHT11&&U8FLAG++)
    if(U8FLAG1)break
    移位正确接收8位数数0时直接移位

    U8comdata<<1
    U8comdata|dat 等数线拉低
    }
    }

    ****************************
    * 动控制 *
    ****************************
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    uint TPMode0
    uint SMMode0
    uint RHMode0
    uint LTMode0

    void AutoControl()
    {
    switch(TPMode)
    {
    case 0 if (TrueTemp(Ds18b20ReadTemp())>2500) jiangwen 0 降温启动
    else if(TrueTemp(Ds18b20ReadTemp())<1800) zengwen 0 增温启动
    else if(TrueTemp(Ds18b20ReadTemp())>2000&&TrueTemp(Ds18b20ReadTemp()<2300)) 达适宜值停止工作
    {
    jiangwen 1
    zengwen 1
    }
    break

    case 1 break
    }

    switch(SMMode)
    {
    case 0 if (ADC_OUT(0x42)>100)
    {
    beep 0 降温启动
    paifeng 0
    shuibeng 0
    }
    else
    {
    beep 1
    paifeng 1
    shuibeng 1
    }
    break

    case 1 break

    }

    switch(RHMode)
    {
    case 0 if (DHT()>70) qushi 1 降温启动
    else if(DHT()<45) jiashi 1
    else if(DHT()>50 && DHT()<60)
    {
    qushi 0
    jiashi 0
    }
    break

    case 1 break
    }

    switch(LTMode)
    {
    case 0 LED_Out()
    break
    case 1 DAC_OUT2(0x80+Reslight)
    break
    }
    }

    *************************
    * 延时 *
    *************************
    #include
    #include
    #include
    #include
    void Delay1ms(uint y) 1ms延时
    {
    uint x
    for(yy>0y)
    {
    for(x110x>0x)
    }
    }

    void Delay1s(int d) 误差 0us
    {
    unsigned char abc
    for(dd>0d)
    for(c13c>0c)
    for(b247b>0b)
    for(a142a>0a)
    _nop_() if Keilrequire use intrinsh
    }

    void Delay10us(int c) 误差 0234375us
    {
    unsigned char a
    for(cc>0c)
    for(a3a>0a)
    }


    ************************
    * LED *
    ************************

    #include
    #include
    #include
    #include
    #include
    uint light
    void LED_Out()
    {
    lightADC_OUT2(0x40)
    if(light>240)
    {
    DAC_OUT2(0x99)
    }
    else if(light<100)
    {
    DAC_OUT2(0x00)
    }
    else if(light>220&&light<240)
    {
    DAC_OUT2(0x95)

    }
    else if(light>200&&light<220)
    {
    DAC_OUT2(0x90)

    }
    else if(light>180&&light<200)
    {
    DAC_OUT2(0x88)
    }
    else if(light>160&&light<180)
    {
    DAC_OUT2(0x86)
    }
    else if(light>140&&light<160)
    {
    DAC_OUT2(0x84)
    }
    else if(light>120&&light<140)
    {
    DAC_OUT2(0x82)
    }
    }

    *******************
    * DS18B20 *
    *******************
    #include
    #include
    #include
    char temperature
    sbit DS P3^5 数线

    uchar Ds18b20Init() 初始化成功返回1 否0
    {
    uchar i 0
    DS 0 数线拉低
    i 70
    while(i) 延时642us
    DS 1 延时数线拉高DS初始化成功会返回低电
    i 0
    while(DS) 初始化成功 DS 会动低电
    {
    Delay1ms(1)
    i++
    if(i>5)
    {
    return 0
    }
    }

    return 1
    }
    void Ds18b20WriteByte(uchar dat) DS18B20时序(DS发送字节)
    {
    uchar ij
    for(j0j<8j++)
    {
    DS 0
    i++ 稍微延时(>1us)
    DS dat&0x01
    i 6
    while(i)
    DS 1
    dat >> 1
    }

    }
    uchar Ds18b20ReadByte() Ds18B20读数
    {
    uchar byte bi
    uint i j
    for(j0 j<8 j++)
    {
    DS 0 先总线拉低1us
    i++
    DS 1 然释放总线
    i++
    i++ 约延时10us
    bi DS 读取数低位开始读取
    byte (byte >> 1) | (bi << 7)
    假设bi接收0000 0001第次循环1000 0000
    第二次循环0100 0000
    第8次byte0000 0001
    i 4
    while(i) 读取完等48us接着读取数
    }
    return byte
    }
    void Ds18b20ChangTemp() 温度转换命令
    {
    Ds18b20Init()
    Delay1ms(1)
    Ds18b20WriteByte(0xcc) 跳ROM操作命令(单片工作需DS18B20时应访问Ram址)
    Ds18b20WriteByte(0x44) 温度转换命令
    Delay1ms(100) 等转换成功果直刷着话延时
    }
    void Ds18b20ReadTempCom() 读取温度命令
    {
    Ds18b20Init()
    Delay1ms(1)
    Ds18b20WriteByte(0xcc) 跳ROM操作命令
    Ds18b20WriteByte(0xbe) 发送读取温度命令
    }
    int Ds18b20ReadTemp() 读取温度值命令
    {
    int temp 0
    uchar tmh tml
    Ds18b20ChangTemp() 先写入转换命令
    Ds18b20ReadTempCom() 然等转换完发送读取温度命令
    tml Ds18b20ReadByte() 读取温度值16位先读低字节
    tmh Ds18b20ReadByte() 读高字节(继续读取前8位左移操作已覆盖0)
    temp tmh
    temp << 8 高八位放前头实现表达
    temp | tml 通运算第八位数放入temp中
    return (temp)
    }
    int TrueTemp(int temp) 五位温度数值
    {
    float tp
    if(temp< 0) 温度值负数
    {
    temptemp1
    temp~temp
    tptemp
    temptp*00625*100+05
    temp 0temp
    }
    else
    {
    tptemp
    temptp*00625*100+05
    }
    return temp
    }

    附录2 STM32程序源码
    #include delayh
    #include usart3h
    #include stdargh
    #include stdioh
    #include stringh
    #include timerh

    *****************
    * 串口收发缓存区 *
    *****************
    u8 USART3_RX_BUF[USART3_MAX_RECEIEVE_LEN]
    储存接收数
    u8 USART3_TX_BUF[USART3_MAX_SEND_LEN]
    储存发送数
    vu16 USART3_RX_STA0 设置接收状态位0
    u8 i0
    *接收状态位:前14位数接收位15位数否正确位接收0x0d时ASCII回车键代表数接收完成
    第16位数处理位第15位接收完成数接收数放入接收缓区中接收完成数处理数处理位置1表示完成*


    ********************
    * 串口3中断服务函数 *
    ********************
    void USART3_IRQHandler(void)
    {
    u8 res

    if(USART_GetITStatus(USART3 USART_IT_RXNE) RESET)接收数判断接收缓区否空查否接收完成
    {
    res USART_ReceiveData(USART3)
    USART_SendData(USART1res)

    if((USART3_RX_STA & 0x8000) 0)数处理未完成
    {
    if(USART3_RX_STA&0x4000)表示接收0x0d表示0100 0000 0000 0000第15位接收回车数已接收完成
    {
    if(res0x0a)USART3_RX_STA0判断res数值果res接收数0x0aASCII值位\n换行符表示接收数错误重新开始
    else
    {
    USART3_RX_STA|0x8000 果接收res\n表示接收数完成STA设置0x8000表示数处理完成
    i0
    }
    }
    else 表示数没接收0x0d继续接收数直接收0x0d\r止
    {
    if(res0x0d)USART3_RX_STA|0x4000 果接收数0x0d代表置STA0x4000代表已接收回车次接收换行
    else if(res''|i>0)
    {
    i++
    USART3_RX_BUF[USART3_RX_STA&0X3FFF]res 果没接收0x0d换行继续接收数接收数放入接收数缓区中
    USART3_RX_STA++ STA0开始加接收14位数
    if(USART3_RX_STA>(USART3_MAX_RECEIEVE_LEN1))USART3_RX_STA0果接收数接收长度接收数错误重新开始接收
    }
    }
    }

    }
    }

    ******************
    * 串口3初始化函数 *
    ******************
    void USART3_Init(u32 bound2) bound波特率
    {

    NVIC_InitTypeDef NVIC_InitStructure
    GPIO_InitTypeDef GPIO_InitStructure
    USART_InitTypeDef USART_InitStructure

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE) GPIOB时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3ENABLE) 串口3时钟

    USART_DeInit(USART3) 复位串口3
    USART3_TX PB10
    GPIO_InitStructureGPIO_Pin GPIO_Pin_10 PB10
    GPIO_InitStructureGPIO_Speed GPIO_Speed_50MHz
    GPIO_InitStructureGPIO_Mode GPIO_Mode_AF_PP 复推挽输出
    GPIO_Init(GPIOB &GPIO_InitStructure) 初始化PB10

    USART3_RX PB11
    GPIO_InitStructureGPIO_Pin GPIO_Pin_11
    GPIO_InitStructureGPIO_Mode GPIO_Mode_IN_FLOATING浮空输入
    GPIO_Init(GPIOB &GPIO_InitStructure) 初始化PB11

    USART_InitStructureUSART_BaudRate bound2波特率般设置9600
    USART_InitStructureUSART_WordLength USART_WordLength_8b字长8位数格式
    USART_InitStructureUSART_StopBits USART_StopBits_1停止位
    USART_InitStructureUSART_Parity USART_Parity_No奇偶校验位
    USART_InitStructureUSART_HardwareFlowControl USART_HardwareFlowControl_None硬件数流控制
    USART_InitStructureUSART_Mode USART_Mode_Rx | USART_Mode_Tx 收发模式

    USART_Init(USART3 &USART_InitStructure) 初始化串口 3
    USART_Cmd(USART3 ENABLE) 串口
    接收中断
    USART_ITConfig(USART3 USART_IT_RXNE ENABLE)开启中断

    设置中断优先级
    NVIC_InitStructureNVIC_IRQChannel USART3_IRQn
    NVIC_InitStructureNVIC_IRQChannelPreemptionPriority2 抢占优先级2
    NVIC_InitStructureNVIC_IRQChannelSubPriority 2 子优先级2
    NVIC_InitStructureNVIC_IRQChannelCmd ENABLE IRQ通道
    NVIC_Init(&NVIC_InitStructure) 根指定参数初始化VIC寄存器


    }

    ********************
    * 串口3发送数函数 *
    ********************
    *
    void UART3_Send(char* fmt)
    {
    u16 ij
    va_list ap
    va_start(apfmt)
    vsprintf((char*)USART3_TX_BUFfmtap)
    va_end(ap)
    istrlen((const char*)USART3_TX_BUF) 次发送数长度
    for(j0j {
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET) 循环发送直发送完毕
    USART_SendData(USART3USART3_TX_BUF[j])
    }
    }
    *

    #include stm32f10xh
    #include keyh
    #include sysh
    #include delayh

    键初始化函数
    void KEY_Init(void) IO初始化
    {
    GPIO_InitTypeDef GPIO_InitStructure

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOAENABLE)PORTA时钟

    GPIO_InitStructureGPIO_Pin GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3KEY123
    GPIO_InitStructureGPIO_Mode GPIO_Mode_IPD 设置成xia拉输入
    GPIO_Init(GPIOA &GPIO_InitStructure)初始化GPIOAPin123
    }


    ************
    * 函数 *
    ************
    #include stm32f10xh
    #include delayh
    #include sysh
    #include LEDh
    #include usart1h
    #include usart3h
    #include keyh

    u8 Esp8266Init[] {AT+CIPSTART\TCP\\19216888\8080\r\n}
    u8 Esp8266RST[] {AT+RST\r\n}
    u8 Send[] {AT+CIPSEND3\r\n}


    u8 jiashiclose[] {RM1}
    u8 jiashiopen[] {RM2}
    u8 qushiclose[] {RM3}
    u8 qushiopen[] {RM4}

    u8 jiangwenclose[] {TM1}
    u8 jiangwenopen[] {TM2}
    u8 zengwenclose[] {TM3}
    u8 zengwenopen[] {TM4}

    u8 shuibengclose[] {SM1}
    u8 shuibengopen[] {SM2}
    u8 paifengclose[] {SM3}
    u8 paifengopen[] {SM4}
    u8 beepclose[] {SM5}
    u8 beepopen[] {SM6}

    u8 tpauto[] {TA}
    u8 rhauto[] {RA}
    u8 smauto[] {SA}




    int main(void)
    {
    u16 t
    u16 i
    unsigned int a0b0c0d0e0f0g0

    u16 len
    delay_init()
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2) 系统优先级设置2
    USART1_Init(115200)
    USART3_Init(9600)
    LED_Init()
    delay_init()
    delay_ms(3000)
    KEY_Init()

    while(1)
    {
    if(KEY71)
    {
    delay_ms(100)
    if(KEY71)
    {
    while(KEY7)
    for(i0i<39i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Esp8266Init[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    delay_ms(1000)
    }
    }

    if(KEY01)
    {
    delay_ms(100)
    if(KEY01)
    {
    while(KEY0)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(a0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3beepopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3beepclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3smauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    a~a
    }
    }


    if(KEY11)
    {
    delay_ms(100)
    if(KEY11)
    {
    while(KEY1)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(b0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3paifengopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3paifengclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3smauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }



    b~b
    }
    }

    if(KEY21)
    {
    delay_ms(100)
    if(KEY21)
    {
    while(KEY2)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(c0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3shuibengopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3shuibengclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3smauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    c~c
    }
    }


    if(KEY31)
    {
    delay_ms(100)
    if(KEY31)
    {
    while(KEY3)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(d0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3jiashiopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3jiashiclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3rhauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    d~d
    }
    }


    if(KEY41)
    {
    delay_ms(100)
    if(KEY41)
    {
    while(KEY4)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(e0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3qushiopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }


    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3qushiclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3rhauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    e~e
    }
    }


    if(KEY51)
    {
    delay_ms(100)
    if(KEY51)
    {
    while(KEY5)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(f0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3jiangwenopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3jiangwenclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3tpauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    f~f
    }
    }


    if(KEY61)
    {
    delay_ms(100)
    if(KEY61)
    {
    while(KEY6)
    delay_ms(50)
    for(i0i<15i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Send[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    if(g0)
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3zengwenopen[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    else
    {
    delay_ms(50)
    for(i0i<4i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3zengwenclose[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }

    delay_ms(50)
    for(i0i<3i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3tpauto[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    }

    g~g
    }
    }
    }
    }

    *
    for(i0i<9i++)
    {
    while(USART_GetFlagStatus(USART3USART_FLAG_TXE)RESET)
    USART_SendData(USART3Esp8266RST[i])
    while(USART_GetFlagStatus(USART3USART_FLAG_TC)RESET)
    }
    delay_ms(3000)*
    *
    if(USART1_RX_STA&0x8000)
    {
    lenUSART1_RX_STA&0x3fff次接收数长度
    printf(\r\n您发送消息\r\n\r\n)
    for(t0t {
    USART_SendData(USART3 USART_RX_BUF[t])串口1发送数
    while(USART_GetFlagStatus(USART1USART_FLAG_TC)SET)等发送结束
    }
    printf(\r\n\r\n)插入换行
    USART1_RX_STA0
    }
    if((USART3_RX_STA&0x8000))
    {
    lenUSART3_RX_STA&0x3fff次接收数长度
    printf(\r\n您发送消息\r\n\r\n)
    for(t0t {
    USART_SendData(USART1 USART3_RX_BUF[t])串口1发送数 while(USART_GetFlagStatus(USART3USART_FLAG_TC)SET)等发送结束
    }
    printf(\r\n\r\n)插入换行
    USART3_RX_STA0
    }
    if(USART3_RX_STA&0x8000)
    {
    lenUSART3_RX_STA&0x3FFF 判断字节长度
    for(t0t { while(USART_GetFlagStatus(USART1USART_FLAG_TC)RESET) 等发送完成
    USART_SendData(USART1USART3_RX_BUF[t])
    }
    USART3_RX_STA0
    }
    *


    附录3 英文文献
    A System Design of Smart Home Based on Wireless Communication Technology
    LUO Fanglei YANG Houjun FAN Yanbin ZHAO Yufeng
    (College of Information Engineering Qingdao University Qingdao 266071 China)
    Abstract To solve the problem of high cost and low performance of communication network in Smart Home system based on ZigBee and WiFi wireless communication technology a new smart home network solution is designed This solution can save costs and improve the efficiency of data transmission The ZigBee module and WiFi module are expanded to achieve the construction of Smart Home wireless network Meanwhile the structure composition and design concept of the Smart Home system are shown The new smart home network solution is feasible effective and stable
    Keywords Smart Homewireless communication technologyZigBee WiFi
    1 Introduction
    With the rapid development of technology and the improvement of living standards more and more people hope to have a convenient and highquality life As a result the technology of smart home turns out and develops quickly as the network progresses[1]
    Research on smart home began in the late 1980’s with the intent on making homes more intelligent to alleviate the occupant(s) of daily tasks to handling emergency situations By the mid 1990’s the focus had turned to incorporating these innovations into the lives of the elderly[23]
    Since the concept of smart home is proposed and introduced into the domestic it gradually becomes one of the symbols of high quality life which people are eager to pursue During the last two years the middle class in China has grown in a large scale which drives the sale volume and gross sales of smart home systems to rise continuously The smart home market also continues to develop in the coastal areas that are mostly advanced regions and further expands to the large and mediumsized cities in the inland areas which are slightly languished behind The statistics from Ministry of Housing and UrbanRural Development shows that the gross sales of smart home market are 42 billion yuan in 2009 and the high rate of growth in this market sometimes above 20 a year It suggest the gross sales are expected to reach 124 billion yuan in 2015
    However there are still some challenges in designing wireless sensor network systems and applications First the sensors operate using a limited power resource such as a battery Thus the network lifetime is greatly influenced by the battery lifetime Second sensors have limited hardware capabilities (e g limited communication storage and processing capabilities) Thus each sensor is not able to have the whole softwaremiddleware component and is not able to provide complex services Third the wireless link bandwidth is scarce in WSN(wireless sensor network) and needs to be managed carefully[4]
    In this paper in order to create a lowenergy wireless Smart Home system the WiFi and ZigBee are integrated The ZigBee (IEEE 802 15 4 standard) technology for networking and communication is used because of his lowpower and lowcost characteristics which enable ZigBee to be widely used in home and building environments
    2 Related Work
    The existing systems about smart home systems and applications based on the wireless communication technology are briefly discussed
    Han designs a home energy management system (HEMS) using a ZigBee technology to reduce the standby power[5] The system contains a power cutoff outlet a ZigBee hub and a management server The proposed HEMS provides easy way to add delete and move home devices to other power outlets When a home device is moved to the different outlet the energy information of the home device is kept consistently and seamlessly regardless of location change
    Gaddam proposes a smart home monitoring system for elders[6] The smart system consists of an optimum number of cognitive wireless sensors which are used to detect usage of electrical devices bed usage pattern flow of water etc and also incorporates a panic button The cognitive sensors provide information that can be used for monitoring the elderly by detecting any abnormality pattern in their daily activities around the house
    Gill designs a flexible home automation architecture[7] A ZigBee based home automation system and WiFi network are integrated through a common home gateway The home gateway provides network interoperability a simple and flexible user interface and remote access to the system A dedicated virtual home is implemented to cater for the system's security and safety needs
    Large amounts of researches have been done on many different aspects of WSN sensor placement security and many other aspects of WSNs[89] Compared to the existing related research this paper focus on wireless and lowenergy sensor to be effectively deployed in home environments and effectively applied to the smart home services
    3 Experiments
    All of the experiments took place in a controlled lab environment in order to determine the usefulness of integrating ZigBee and WiFi A smart home system is designed The smart home system consists of a home server several home networking terminal nodes and remote monitoring software
    In the system home server is the core part of the system which is responsible for controlling the entire smart home environment As the core part of the smart home system the home server is a bridge that connects all parts in the system
    Remote monitoring software can be realized through rj45 WiFi or 3G4G Our system uses WiFi to transmit control signals can achieve controlled easily and lowcost Users can obtain the realtime information of home environment through the remote monitoring software and then perform corresponding operations to control the home environment
    In the system Wireless Sensor Networks are networks made up of relatively low power motes which are connected wirelessly The wireless sensor network includes a ZigBee coordinator node with sensors control function and several terminal nodes of sensor with wireless communication capability like smoke detection sensor digital temperature sensor and hydropower data acquisition In this star topology sensor network all the terminal nodes can only communicate with the ZigBee coordinator If a terminal node needs to transmit data to the other one it first sends the data to coordinator node and then this coordinator node retransmits the data to the aiming terminal node in return They are responsible to collect different kinds of home environment indicators and control various home furnishing devicesBecause the information types that home environment involved are diverse the potential networking terminals need to collect information are too many Besides there are many parts in the smart home system need to transmit data So a welldesigned communication protocol is very important It should not only improve the efficiency of smart home system but also ensure the scalability of the system which can add or remove networking terminals easily
    Based on the design of smart home system above the home environment information transmission mode can be divided into two different types One is used by terminals to collect all kinds of environment information and transmit them to the home server The size of information collected by an environmental sensor is small which the frequency is high and the physical device is responsible for transmission The other one is used by the communication between home server and monitoring software The home server packs the overall home environment information and sends to monitoring software through Internet The size of transmitted environmental information is realtime and pretty large while the frequency is low considering the access pattern of users
    The first type of information transmission occurs between all information acquisition terminals and home server Since each networking terminal works independently and communicates with home server in a realtime manner the wireless energy saving and selfnetworking ZigBee devices are selected to be the information acquisition terminals The home server in our prototype is an ARM development board that carries an Android platform[1011] Therefore the first transmission type in the communication system should take into account both the two different hardware environments
    Since the home server does not support ZigBee protocol it cannot directly accept and resolve the information from the devices Thus a conversion module is needed to translate the information between the ZigBee protocol and the TCPIP protocol (see Figure 1) The details of information communication mechanism are depicted as follows

    (1) Each terminal packs the environment information collected by itself and sends the data to the ZigBee coordinator using ZigBee wireless protocol The coordinator will send out the home environment information uniformly
    (2 ) The ZigBee coordinator sends data to the protocol converting module through the serial ports and the conversion module unpacks data and repacks it in TCPIP package format Then the coordinator transmits the information to the home server using TCP/IP protocol through home wireless LAN
    (3)Home server receives and unpacks the information from the conversion module from the network packet protocol conversion device Then the server analyzes classifies and processes these data to depict overall home environment status and stores the status
    The second type of information transmission occurs between home server and monitoring software Because the monitoring software is portable and its communication demand is uncertain so its communication pattern is designed to be based on the Internet When monitoring software is to obtain the home environment information or to control the home environment it first sends a service request to the home server through the Internet» and then the home server sends the environmental information to the monitoring software or directs corresponding terminals to perform control instructions
    The monitoring software is implemented both for PC and for mobile terminal The monitoring software for PC is installed on the home computers that are in the same WiFibased LAN with home server The software for mobile terminals is installed on the smart phones or other mobile devices Since these two kinds of software runs in different network environment we design different communication modes for them
    Because the monitoring software for PC and the home server are in the same WiFibased LAN all the communication can be accomplished directly through the home network The home server and PCs can be assigned with fixed IP address which is convenient for them to communicate with each other Alternatively only the IP address of the home server is prefixed and the monitoring software establishes connection with home server by broadcasting a specific message in the home network Obviously the second way is more flexible and the system is more scalable
    Due to the mobility of monitoring software on mobile terminals the software is able to be anywhere so it cannot directly communicate with home server through home WLAN However the smart mobile devices nowadays generally have the ability to access the Internet so the Internet is utilized to communicate with home server in our design Specifically home server is equipped with a global IP address that is accessible from external The monitoring software mobile sends access requests to this IP address thought the Internet and it will get responses from the home server once the server verifies the legitimacy of this software
    In order to verify the system in the simulated home scenario was built in the laboratory for the smart home system and perform functional was tested on theory and model The lab environment and prototype system in the experiments were showed in Figure2

    4 Conclusions
    There are some researches on Smart Home services especially the methods to relieve constraints of WSNs Recently the wireless technologies have been applied to home automation system in order to provide the residents with smart home services However due to the fixed system architecture) existing sensor systems are not wellsuited in dynamic environments such as a smart home system Therefore this paper proposes a situation based wireless scheme and a lowenergy sensor network in order to make consumer devices more energy efficient and wireless This paper designs and implements the corresponding hardware and software The system is implemented in the test environment and an experiment which is used to verify the efficiency of the proposed system is conducted The experimental results show that our lowenergy and wireless smart home system is efficient stable and reliable

    Reference
    [1] Liang Lili Huang Lianfen Jiang Xueyuanet al Design and implementation of wireless smarthome sensor network based on ZigBee protocol[C] Proceedings of Communications Circuits and Systems IEEE 2008434 438
    [2] Hussain S Schaffner S Moseychuck D Applications of wireless sensor networks and RFID in a smart home environment[C] Proceedings of Communication Networks and Services Research Conference IEEE 2009153 157
    [3] Alam M R Reaz M B I Ali M A M A Review of Smart HomesPast Present and Future[J] IEEE Transcation on System Man and Cybernetics Part C Applications and Reviews 2012 42 (6) 1190 1203
    [4] Byun J Jeon B Noh J et al An intelligent selfadjusting sensor for smart home services based on ZigBee communications [J] IEEE Trans Consumer Electronics 2012 58(3) 794 802
    [5] Han J Choi C S Lee I More efficient home energy management system based on ZigBee communication and infrared remote controls[JJ IEEE Trans Consumer Electron 2012 57(1) 85 89
    [6] Gaddam A Mukhopadhyay S C Gupta G S Elder Care Based on Cognitive Sensor Network[J] IEEE Sensors Journal 2011» 11(3) 574 581
    [7] Gill K» Yang S H Yao Fet al A zigbeebased home automation system[J] IEEE Trans Consumer Electron 2009 55(2) 422 430
    [8] Dhillon S S Chakrabarty K Sensor placement for effective coverage and surveillance in distributed sensor networks[D] Durham: Duke University 2003
    [9] Du Wenliang Deng Jing Han Y Set al A key management scheme for wireless sensor networks using deployment knowledge[C] Proceedings of Annualjoint Conference of the IEEE Computer and Communications Societies IEEE 2004 572 597
    [10] Wu Yi Liu Pai Wu Tong Smart Home System Based on ZigBee and ARM[C] Proceedings of Electronic Measurement and Instruments IEEE 2013 : 754 759
    [11] Feng Jianfeng Design of Smart Home System Based on ARM and ZigBee Technology[j] Chengdu University of Electronic Science And Technology Of China 2014
    附录4 中文文献
    基线通信技术智家居系统设计
    骆方磊杨厚俊范延滨赵玉凤
    (青岛学信息工程学院青岛266071)
    摘:针智家居系统中组建通信网络成高性低问题釆ZigBeeWiFi结 合线通信技术设计种新型智家居网络搭建方案该方案节约成提高数 传输效率通WiFiZigBee技术融合建立家居部线网络提出基线通 信技术智家居系统组成结构系统设计思想实验结果表明新型智家庭网络 搭建方案行高效稳定
    关键词:智家居线通信技术ZigBee WiFi

    1 介绍
    着科技快速发展生活水提高越越希方便高质量生活智家居技术应运生着网络[1]发展迅速发展智家居研究始20世纪80年代末目家居更智减轻者处理紧急情况时日常工作负担
    20世纪90年代中期重点已转创新融入老年生活[23]
    智家居概念提出引入家庭逐渐成渴追求高品质生活象征两年中国中产阶级规模增长带动智家居系统销量总销量持续增长智家居市场断发展海区 发达区中城市进步扩住房城乡建设部统计数显示2009年智家居市场销售总额420亿元增速快时甚超20预计2015年总销售额达1240亿元
    然线传感器网络系统应设计方面存挑战首先传感器限电力资源电池网络寿命程度受电池寿命影响次传感器硬件力限(例限通信存储处理力)传感器拥整软件中间件组件提供复杂服务第三线传感器网络中线链路带宽足需谨慎理
    文WiFiZigBee相结合构建低耗线智家居系统ZigBee (IEEE 80215 )低功耗低成特点ZigBee技术广泛应家庭建筑环境


    2相关工作
    简介绍现基线通信技术智家居系统应
    Han设计家庭源理系统(HEMS)ZigBee技术降低备电源[5]该系统包含电源切断插座ZigBee集线器理服务器建议边缘提供简单方式添加删家庭设备移动电源插座家庭设备移动出口时位置变化家庭设备源信息保持致缝
    Gaddam提出针老年智家居监控系统[6]该智系统包括佳数量认知线传感器检测电子设备情况床模式水流等包括紧急钮认知传感器提供信息监测老年异常模式日常活动房子周围
    吉尔设计灵活家庭动化架构[7]基ZigBee家庭动化系统WiFi网络通通家庭网关集成家庭网关提供网络互操作性简单灵活户界面系统远程访问满足系统安全性安全性需求实现专虚拟家庭量研究已WSN传感器布置安全等诸方面进行[89]已相关研究相文研究重点线低耗传感器效部署家居环境中效应智家居服务中
    量研究已WSN传感器布置安全等诸方面进行[89]已相关研究相文研究重点线低耗传感器效部署家居环境中效应智家居服务中

    3 实验程
    实验受控实验室环境中进行确定集成ZigBeeWiFi效性设计智家居系统智家居系统家庭服务器家庭网络终端节点远程监控软件组成
    系统中家庭服务器系统核心部分负责控制整智家居系统环境家庭服务器作智家居系统核心部分连接系统部分桥梁
    远程监控软件通rj45 WiFi 3G4G实现系统采WiFi传输控制信号实现简单低成控制者通远程监控软件获取实时家庭环境数然执行相应操作控制家庭环境
    该系统中线传感器网络相低功耗微尘通线方式连接成网络该线传感器网络包括具传感器控制功ZigBee协调节点具线通信力传感器终端节点烟雾探测传感器数字温度传感器水电数采集等星形拓扑传感器网络中终端节点ZigBee协调器进行通信果终端节点需节点传输数首先数发送协调节点然协调节点数重新发送目标终端节点负责收集种类家居环境指标控制种家居设备家庭环境涉信息类型样潜网络终端需收集信息太外智家居系统中部分需传输数设计良通信协议非常重仅够提升智家居系统效率时保障系统扩展性方便户增加移网络终端
    基智家居系统设计家居环境信息传递模式分两种类型终端收集种环境信息传输家庭服务器环境传感器采集信息量频率高物理设备负责传输种家庭服务器监控软件间通信家庭服务器整家庭环境信息包通网络发送监控软件考虑户访问方式环境信息传输规模实时较频率较低
    第种类型信息传输发生信息采集终端家庭服务器间网络服务器间独立工作时ZigBee设备限实时节终端采集设备原型中家庭服务器ARM开发板携带Android台[1011]通信系统中第种传输类型应该时考虑两种硬件环境通信系统中第种传输类型应该时考虑两种硬件环境服务器支持ZigBee协议直接接受解析设备信息需转换模块转换ZigBee协议TCPIP协议间信息(见图1)

    (1) 环境终端包身进行信息收集时节点ZigBee线协议利ZigBee进行数发送节点发送格式家庭环境信息
    (2) ZigBee协调器通串口数发送协议转换模块转换模块TCPIP包格式数进行解包重新包然协调器通家庭线局域网TCPIP协议信息传输家庭服务器
    (3)服务器网络包协议转换设备接收解压转换模块信息然服务器数进行分析分类处理描述整家庭环境状态存储状态
    第二种类型信息传输发生家庭服务器监控软件间监控软件便携性通信需求确定性通信模式基互联网监控软件获取家庭环境信息控制家庭环境时首先通网络家庭服务器发送服务请求然家庭服务器环境信息发送监控软件指示相应终端执行控制指令
    利已连入WIFI基础端口服务器监控软件已安装家电脑中监控软件PC机移动终端进行监测移动终端监测软件安装智手机移动设备两种软件网络环境运行设计通信模式
    PC机监控软件家庭服务器基WiFi局域网中通信通家庭网络直接完成家庭服务器pc机分配固定IP址方便间通信
    种选择服务器IP址监控软件建立连接连入家庭网络发送特定消息时建立连接显然第二种方法更灵活系统伸缩性更强
    监控软件移动终端移动性软件方运行法通家庭WLAN家庭服务器直接通信时 现智移动设备通常访问网络力设计外部设备连入网络进行连接具体说服务器配备外部访问全局IP址移动监控软件通互联网IP址发送访问请求旦服务器验证该软件合法性会收家庭服务器响应
    验证该系统仿真家居场景中行性实验室中搭建针智家居系统功测试系统进行理模型测试实验实验室环境原型系统图2示


    4结
    关智家居服务特解线传感器网络约束方法已定研究前线技术已应家庭动化系统中提高智家居服务环境然固定系统架构现传感器系统适合动态环境智家居系统篇文章提出该线网络方案拥低耗传感器网络 整线设备更节篇文章设计实现相应硬件软件该系统已测试环境中实现通实验验证该系统效性实验结果表明低功耗线智家居系统高效稳定信赖


    参考文献
    [1] Liang Lili Huang Lianfen Jiang Xueyuanet al 基ZigBee协议线智家居传感器网络设计实现[C] 通信电路系统学报 IEEE 2008434 438
    [2] Hussain S Schaffner S Moseychuck D 线传感器网络RFID智家居环境中应[C] 通信网络服务研究会议文集 IEEE 2009153 157
    [3] Alam M R Reaz M B I Ali M A M A 回顾智家居——现未[J] IEEE 系统控制超越第三部分应评 2012 42 (6) 1190 1203
    [4] Byun J Jeon B Noh J et al 种基ZigBee通信智调整智家居服务传感器[J] IEEE 反式消费电子 2012 58(3) 794 802
    [5] Han J Choi C S Lee I 更高效基ZigBee通信红外遥控家庭源理系统[J] IEEE 反式消费电子 2012 57(1) 85 89
    [6] Gaddam A Mukhopadhyay S C Gupta G S 基认知传感器网络老年护理[J] IEEE 传感器杂志 2011» 11(3) 574 581
    [7] Gill K» Yang S H Yao Fet al 基zigbee家庭动化系统[J] IEEE 反式消费电子 2009 55(2) 422 430
    [8] Dhillon S S Chakrabarty K 分布式传感器网络中放置传感器实现效覆盖监视[D] 达勒姆杜克学 2003
    [9] Du Wenliang Deng Jing Han Y Set al种基部署知识线传感器网络密钥理方案[C] 计算机通信协会年度联席会议记录 2004 572 597
    [10] Wu Yi Liu Pai Wu Tong 基ZigBeeARM智家居系统[C] 计算机通信协会年度联席会议记录 IEEE 2013 : 754 759
    [11] Feng Jianfeng 基ARMZigBee技术智家居系统设计[j]成中国电子科技学 2014


    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 20 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    智能家居系统

    山西大学本科毕业论文(设计)开题报告选题的目的和意义: 由于技术革新、经济发展,人们对生活质量提出了越来越高的要求,各种人性化、智能化的家居产品被不断推出,智能家居系统能够给人提供更加轻...

    2年前   
    696    0

    智能家居系统设计

    智能家居系统设计—家用智能照明系统设计智能家居系统设计—家用智能照明系统设计摘要从“电力”的出现,到人们使用白炽灯作为照明工具,再到如今普遍的LED照明,说明着人们不断在追求更高的生活。科技是...

    2年前   
    487    0

    基于内点法的电力系统最优潮流算法研究毕业论文

     本科毕业设计 题 目 基于内点法的电力系统最优潮流算法研究 XX大 学 毕 业 设 计(论文) 题目...

    5年前   
    2036    0

    基于模糊PID算法的双闭环直流调速系统仿真研究

    XX学院毕业设计(论文) 基于模糊PID算法的双闭环直流调速系统仿真研究 学 生:学 号:专 业:电气工程及其自动化班 级:...

    3年前   
    888    0

    智能家居系统的设计与实现

    几年前,美国、欧洲和东南亚等国家先后提出了“智能家居”(smart Home)的概念•其目标是:“将家庭中各种与信息相关的通讯设备、家用电器、家庭安防装置等通过家庭总线技术连接到一个家庭智能化平...

    5年前   
    2074    0

    智能家居系统设计与实现66

    论文关键词:智能家居 嵌入式系统 Windows CE Visual C++ Delphi  论文摘要:本文讨论了基于Windows CE.net 5.0嵌入式操作系统,以使用Intel XS...

    2年前   
    494    0

    某中学网络结构化布线系统方案

    某中学网络结构化布线系统方案目录第一章 结构化布线系统概述 2第1节 综合布线目标 3第2节 综合布线系统设计依据 4第二章 中国建筑电气化设计规范 5第1节 安装与设计环境 5第2节 总体设...

    3年前   
    634    0

    激光器电源的高精度温度控制器系统与算法的研究

    激光器是二十世纪最重要的发明之一,激光器的使用极大地改变了人们的生活方式。但是在实际生产生活中,在稳定性、耐用性等方面对激光器要求极为苛刻,特别是在温度控制系统方面。

    3年前   
    394    0

    电力系统线路参数辨识算法的研究毕业论文(设计)任务书

    青  岛  大  学 毕业论文(设计)任务书             院    系: 自动化工程学院电气工程系               专    业:   电气工程及其自动化   ...

    11年前   
    11008    0

    关于无刷电机FOC驱动算法的研究

    近些年来,高新技术产业得到了迅速发展,很多技术产品也随着成产,但是,人们对产品性能的要求也愈加高。无刷直流电机是很多技术产品的核心部分,遍及于交通工具和工业设备等各个高新技术领域,相对于传统的控...

    3年前   
    1393    0

    Bezier和B-样条曲线的算法研究

     毕业论文 题 目: Bezier和B-样条曲线的算法研究 系 别: 数学与计算机科学系 班 级: ...

    5年前   
    1092    0

    基于视觉的车道线识别算法研究毕业论文

    毕业设计基于视觉的车道线识别算法研究Research on Algorithms of Vision-basedLane Recognition 2009 届 电气与电子工程 分...

    4年前   
    989    0

    关联规则挖掘算法研究与应用

    关联规则挖掘算法研究   [人口·资源与环境学院 地理信息系统0501 任雄伟 200501440108]   摘要:本文介绍了数据挖掘的概念、发展现状以及研究方向,重点介绍了数据仓库...

    5年前   
    1395    0

    大数据处理算法研究与实现

    因为要适应不同的人的上网要求,提供一些企业的一些网络地址,是网上比较重要的一部分、成套动力设备中起主要作用的机器、寄件系统、系统控制在内的完整的网络平台服务。我们有一个自己的平台,现如今数据发展...

    4年前   
    859    0

    基于智能家居供应链管理的智能合约设计研究

    科技在发展,时代在进步,随着物联网、大数据、5G技术等信息技术的飞速发展,智能家居等以柔性化生产为主的产业发展尤为迅速,但是其供应链的上下游结构变得日益复杂,因此将会导致的供应链上出现首尾信息难...

    3年前   
    665    0

    操作系统实验四主存空间的分配与回收首次适应算法和循环首次适应算法

    实验报告【实验名称】 首次适应算法和循环首次适应算法 【实验目的】理解在连续分区动态的存储管理方式下,如何实现主存空间的分配与回收。【实验原理】首次适应(first fit,FF...

    3年前   
    1044    0

    基于Zigbee的智能家居系统毕业设计

    学 号_______ ___ henhuangmahenshuang毕 业 论 文 课 题基于Zigbee的智能家居系统设计 学生姓名 基于Zigbee的智能家居系统设计...

    3年前   
    855    0

    智能家居语音控制系统

    智能家居语音控制系统Intelligent home voice control system摘要近年来,随着信息技术的发展,智能产品得到了快速发展,并深入到人们生活的方方面面,人们对智能产品...

    2年前   
    1063    0

    基于51单片机的智能家居报警系统

    随着网络和信息技术的飞速发展以及生活水平的提高,现在的社会有了很大的发展,信息化的概念已经越来越贴近我们的生活。伴随着社会的发展,家庭安全问题也被更加重视了。

    3年前   
    856    0

    基于物联网的智能家居控制系统设计与实现

    物联网是在信息社会发达的今所衍生的产品,他是基于互联网的模块上,利用射频识别技术、无线网等技术,打造一个联系世界不同物体,不同模块的“Internet of Things”。在这个模块网络中,...

    5年前   
    6135    0

    文档贡献者

    平***苏

    贡献于2022-04-15

    下载需要 20 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档