郭 鲁,魏 颖,何 金
(沈阳工学院 信息与控制学院,辽宁 抚顺 113122)
家用智能空调是智能家居中重要的组成部分,智能家居是在物联网这一大背景下提出来的。家庭中经常使用的设备如:网络电视、电风扇、地暖、空调、冰箱、微波炉、智能电灯等通过物联网技术组合到一起并连接网络,构成人们经常提及的智能家居。智能家居集开关控制、手机远程控制、室内外远程遥控、防盗报警、室内外环境监测、红外转发以及未来可编程开发拓展等多种功能于一体。与传统家居相比,智能家居不仅具有过去设备的全部功能,还扩展了家居设备自动化和信息化的优势,为使用者提供全方位与设备进行信息交互功能,同时也降低了诸多能源的消耗[1-3]。然而由于各种物联网设备千差万别,使用的通讯协议不尽相同,常用的通讯方式有串口、WIFI、3G、4G、并口等,导致物联网应用开发异常复杂,使用的编程语言和技术纷繁多样,导致应用难以实现传统软件所具有的可维护性和可伸缩性,同时难以自动传输设备的监测数据以及传递执行动作,所以简化物联网应用开发的关键技术势在必行。
家用智能空调控制系统在智能家居物联网背景下应运而生,目前大部分旧时的普通家居还使用红外遥控器通过发送信号对空调进行控制,但许多家庭面临遥控器过多、遥控器失灵,以及找不到遥控器等问题,造成了许多的烦恼,随着科技的发展,针对这类问题某些厂家发明了红外线发射器,只要将红外线发射器插在手机上就能控制家电,但此类产品还存在着明显的局限性,控制距离过短的问题显得尤为突出,再加上需要随时带在身边显得尤为麻烦[4]。
目前家电市场上已有不少推出智能型空调的公司产品[5],实现原理一般以单片机为控制芯片,内置无线通信模块(如WIFI)与控制平台通信。这样的方式须内置无线通信模块,仅供新生产的新型号空调,不能控制老型号普通版空调。
针对以上红外线空调智能控制距离短、新型空调成本高、物联网技术等原因,本文提出一种方法来实现以手机APP为客户端,通过网络连接云平台进行虚拟服务虚拟设备和外置智能空调控制终端,可以实现对普通空调的远程控制。本文的空调智能控制系统基于STM32主控中心、WIFI技术和机智云平台而设计的,关键技术是采用FlyMcu软件用Keil MDK5编程实现机智云平台的SDK和API服务,实现三部分的通信连接,将新的服务器平台应用于物联网的应用开发,简化了物联网应用开发的复杂性,加快了物联网应用的开发效率,提高了应用的可维护性、可升级性和可扩展性。
根据对智能控制系统的总体功能分析,将系统分为以下几个部分进行模块化设计,首先是温湿度数据采集模块,接着是按键控制显示模块,最后是WIFI网络通讯模块。温湿度数据采集模块采集当前环境数据信息,发送给中央处理器,处理器对信息进行读取,再发送给液晶显示模块显示。按键分别控制空调的温度、风速和模式,当按键按下处理器收到信号时进行信号识别,接着把信息发给液晶显示模块显示。当单片机接收到数据信息时,单片机也会将数据信息通过WIFI网络发送给机智云平台,机智云平台再将数据信息发送给手机APP。系统整体框图如图1所示。
图1 系统整体框图
机智云平台是个人或企业开发者的一站式智能硬件开发及云服务平台。平台提供了定义产品、应用开发、硬件设备的开发调试、云端开发、运营管理、数据服务、产品测试等覆盖智能硬件接入到运营管理全生命周期服务的能力。机智云平台为开发者提供了许多帮助,其中以自助式开发工具和开放的云平台对于开发者而言帮助最大。开发者开发硬件联网时,常常止步于相关应用程序的开发,因此硬件联网在这之前只有部分技术经验特别丰富的技术人员才能开发,机智云针对这类问题为开发者提供了完善的SDK与API服务,开发者只需下载下来直接使用即可,这不但大大降低了开发者的技术门槛,而且大大缩短了研发周期,减少了开发者花费在软件开发等方面的精力,为今后的硬件智能化升级提供了许多宝贵精力[6-8]。
机智云开发者平台为开发者提供了固件包,分为GAgent和MCU两部分,其中MCU部分是直接与硬件设备通信的,也就是说,我们通过对MCU内部烧入代码,通过相应的程序编程,实现对硬件的控制;然而GAgent相当于机智云提供给我们WIFI模块的固件包,它的作用分为两方面,一方面为一些硬件模块提供配置入网功能或者是绑定手机功能,另一方面为手机控制硬件或者云端与硬件信息交互提供帮助。
机智云为用户提供丰富的云服务功能,开发者可以在机智云服务平台上注册用户和登录、注册设备和注销、绑定设备和解绑等。机智云上的配置文件服务器可以为开发的设备提供数据点定义和配置,当硬件设备发送二进制数据时,SDK与云服务可以通过数据配置文件解码,通过这种方式对上传来的数据就行解析,当云端下发相应的数据点键值对时,SDK与云服务通过数据配置文件编码成二进制数据,然后将二进制数据传输到设备上,再由设备内部处理,以此达到对设备控制的效果[9-12]。
2.1.1 单片机最小系统
目前市面上的单片机有很多种,比如最常见的8051单片机、STM32单片机、TMS单片机、MSP430系列单片机等,51单片机和STM32单片机作为大学最常用的两款单片机,本作品采用STM32单片机作为主控芯片,它具有高性能、丰富合理的外设、低功耗等优势,除了自身优势外,它还拥有强大的软件支持,即丰富的软件包,具备全面丰富的技术文档,还积累了大批的用户群体[13-14]。
本文选用STM32F103C8T6最小系统板,该系统板作为本套设计的中央处理器,通过PB9端口接收来自DHT11温湿度检测模块的检测数据。单片机I/O模拟SPI连接方式,由PB5~PB8接到OLED液晶显示的模块引脚上。将PA2、PA3与ESP8266WIFI模块的RX、TX端口相连,实现数据互通。按键开关直接连接最小系统板的PB11~PB14端口,单片机接受到低电平信号针对内部数据进行处理。
2.1.2 按键电路
家用空调智能控制系统采用触控按键模拟家用空调产品的按键,使本系统本身也具备硬件控制空调的模式、温度和风速的功能,防止手机丢失导致无法控制空调的突发情况。按键的一端接地,另一端接STM32最小系统板的PB11~PB14引脚。当S1按键按下时,电平拉低,系统PB13端口接收到低电平,系统识别出低电平信号,通过程序处理,最后进行模式改变。另外的三个按键也是同样原理,按键S5是整个家用空调智能控制系统硬件配网的开关,当长按时一键配置网络,短按一下开关实现热点配置功能。
2.1.3 显示电路
OLED又称为有机发光半导体,因其具备发光效率高、亮度高等特性,广泛用于MP3、智能手表、智能车摄像头图像实时显示、电池管理仪、工控手柄、便携医疗仪等产品。OLED引脚定义如表所示。OLED的GND管脚一般直接连接电源地,VCC管脚接电源模块的3.3 V电源端口,SCL管脚接STM32单片机的CLK时钟端口,SDA管脚接MOSI数据端口,RST管脚一般接单片机的复位端口,D/C管脚一般用来接收单片机传输来的数据或命令,从SCL管脚到D/C管脚都是高电平有效,OLED液晶显示电路图如图2所示。OLED模块的分辨率为128*64,通过编程显示16*16点阵以供使用,模块采用SPI接口方式,通过研究GPIO模拟SPI的时序图,不难发现,模拟SPI通信协议其实是向内部的SSD1306芯片写入一个字节信号,这一个字节中包含了命令和数据信息,通过编程,只能向OLED模块内部写入数据不支持读取数据功能,因此只需要写SPI发送给OLED。
图2 OLED液晶显示电路
2.1.4 温湿度检测
DHT11数字传感器是一款温湿度复合传感器,它是基于高性能的温湿度感应元件制作而成的,其内部包括一个电容式感湿元件和一个高精度集成的测温元件,并与一个高性能8位的单片机相连接。该传感器的数字信号已校准,无需使用者担心,该产品温湿度的测量精度得到用户的认可,因此其常应用在检测设备、记录器、医疗产品之中。
DHT11传感器既能测量温度,也能测量湿度,因此它的数据准确度不如一些用于测量单一数据信息的传感器,与它们比较温湿度测量结果精确度要小很多。DHT11数字温湿度传感器工作电压为3.3~5 V之间,数据端口也带有上拉电阻,该模块设有固定的螺丝孔,方便用户的连接,1号引脚是数据管脚和STM32的I/O口相连,2号引脚接电源模块的3.3 V电源,3号引脚接地。引脚接线电路图如图3所示。
图3 DHT11引脚接线电路
DHT11温湿度传感器作为采集模块,使用方法为:首先总线下拉电平18 ms,接着总线由上拉电阻拉高电平,并且传感器设定延时30 μs,其次判断已连接的STM32单片机GPIO口是否有相应的低电平响应,响应后80 μs STM32的GPIO口再发出高电平。当有高电平发出,80 μs后传感器进入数据采集状态和校验阶段。
2.1.5 通信模块
本系统采用WIFI模块来实现硬件与手机APP通信,当前市面上有很多不错的WIFI模块产品,最后决定选取ESP8266开发板。之所以选用ESP8266 WIFI开发板主要是因为该开发板的主模块是ESP-12F,串口芯片型号是CP2102,最重要的原因是支持NodeMCU Lua开发方式,虽然本设计尚未用到该开发方式,但如果使用该开发方式可以不再使用STM32核心处理器,直接通过该开发板D1引脚接OLED液晶屏SDA引脚,D2引脚接OLED液晶屏SCL引脚,3 V接3.3伏电源,GND接电源地。因此选用该开发板为以后硬件升级奠定一定基础[15]。
ESP-12F是由安信可科技开发的,该模块核心处理器ESP8266在较小尺寸封装中集成了业界领先的Tensilica L106超低功耗32位微型MCU,带有16位精简模式,ESP-12F是ESP-12的增强版,无论是工艺上还是外围电路上,相比于上一代都展现了极大进步,在稳定性与抗干扰性方面,都表现极佳,PCB天线经过了专业实验室的测试,也得到了ROHS的认证,ESP-12F在原先基础上又新增了6个IO口,SPI口引出,对于开发者而言,开发也更加便捷,它一方面可以直接通过IO口与STM32单片机进行交流,另一方面通信工作方式分为STA模式、AP模式和 STA+AP模式,并且内部包含了TCP/IP协议,由此实现了云平台通过WIFI网络和串口之间的数据传输[16-18]。
本设计是在机智云平台基础上设计的,在选择好相应的几个功能后,机智云平台会自动生成相应的SDK,因此无需关注其内部协议处理问题,这对开发起到极大的便捷性,WIFI模块的开发设计主要包括配置处理、数据上报、数据下发,其他的软件程序都由机智云平台自动生成,结合软件开发手册调用即可。
本设计直接使用ESP8266 WIFI模块开发板,该开发板的原理图如图4所示,鉴于系统以STM32作为核心处理器,因此本模块只需用到RX端口和TX端口,其余端口留有今后升级使用。将WIFI模块开发板的3V3和GND引脚分别接到电源模块的3.3 V电源端和接地端,RX引脚和TX引脚分别接STM32开发板的PA2引脚和PA3引脚,通过这两个引脚实现信息相互传输。
图4 WIFI模块电路
控制工作流程如图5所示,空调设备供电后,控制器通过无线网络连接远程服务器机智云平台,手机APP操作向服务器发送设备惟一识别码和状态信息,云平台接收到信息后,进行数据分析处理,并查询该设备对应的数据信息编码指令,WIFI模块在配置处理中有两种接入模式,分别是SoftAP模式和AiriLink模式,当通过程序设定使WIFI模块处于AiriLink模式时,WIFI模从会通过WTFI网络连续地接收特定编码的WIFI广播包,当手机连接已联网的WIFI网络时,手机会自动广播,广播的是内容是由手机APP(如Demo APP)发送内部编码后的WIFI网络SSID和密码,WIFI模块接收到广播的内容后,自动尝试连接对应的WIFI网络,当显示连接成功时,相应对的配置也就完成了、当WIFI模块处于AP模式下时,WIFI模块自身就相当于一个热点,可以通过手机的机智云APP直接与WIFI模块连接,通过内部数据信息处理,手机APP会将可用的WIFI网络SSID以及密码发送给WIFI模块,当WIFI模块接收到手机发来的配置信息届会自动不断尝试连接相应的路由器,当WIFI模块显示连接成功时,该设备会自动跳转到正常工作模式。若有发回指令给控制器,控制器接收到指令,通过手机APP,完成对空调设备的控制。
图5 控制工程流程
2.2.1 STM32驱动设计
2.2.1.1 时钟初始化
系统时钟初始化采用系统滴答定时器,函数中RCC-0scInitTypeDef为结构体函数,结构体中包含了是时钟来源,RCC-ClkInitTypeDef函数以结构体的形式定义了总线的时钟的配置,总线时钟一般选择的是内部使能系统时钟,本程序中是使用外部时钟源HSE的8 MHz晶振,通过代码运算实现9倍频,达到72 MHz系统主时钟,APB1总我时钟通过分频实现36 MHz,然而APB2和AHB都为72 MHz:该模块中实现了1 ms延时,是通过HAL-RCC-GetHCLKFreq()/1 000赋值,以此来使系统达到1 ms的中断,接着通过定义HAL_SYSTICK_Config内部形参为1 ms。以此实现系统滴答定时器的初始化配置。
2.2.1.2 串口模块初始化
STM32程序的串行通信中,程度必须包含串口初始化程序,首先要设定其波特率,只有相同波特率,才能实现相互通信,波特率相同每秒中传输的数据位数也就相同,数据传输是以一个字符接着一个字符的顺序传输的,一个字符的传输是由起始位开始,停止位结束,当系统判断了起始位和停止位,表明一个字符传输成功。下方的串口初始化程序表示,USART1选择异步通信方式,接着设定相应的波特率为115 200 Bits/s,并且设定8 Bit数据长度。
2.2.1.3 按键模块初始化
按键初始化函数是keyInit (),该函数定义了2个按键相应的I/0口,通过读取函数的输入值,进行程序判断,对于按键1和按键2需识别是长按还是短按。
2.2.2 OLED液晶显示模块程序设计
OLED模块的分辨率为128*64,通过编程显示16*16点阵以供本系统使用,模块采用SPI接口方式,通过研究GPIO模拟SPI的时序图,不难发现,模拟SPI通信协议其实是向内部的SSD1306芯片写入一个字节信号,这一个字节中包含了命令和数据信息,通过编程,只能向OLED模块内部写入数据不支持读取数据功能,因此只需写SPI发送给OLED即可。
2.2.3 数据采集模块程序设计
DHT11温湿度传感器作为采集模块使用,本课题研究了其相应的工作原理,而总结出一般的软件流程为:首先总线下拉电平18 ms,接着总线由上拉电阻拉高电平,并且传感器设定延时30 μs其次判断已连接的STM32单片机GPIO口是否有相应的低电平响应,如果有响应,响应后80 lusTY32的GPIO口再发出高电平。当有高电平发出,80 μs后传感器进入数据采集状态。
2.2.4 WIFI程序模块设计
WIFI模块在配置处理中有两种接入模式,分别是SoftAP模式和AirLink模式,当通过程序使WIFI模块处于 Airlink模式时,WIFI模块会通过WIFI网络连续地接收特定编码的WIFI广播包,当手机连接已联网的WIFI网络时,手机会自动广播,广播的是内容是由手机APP(如 Demo APP)发送内部码后的WIFI网络SSID和密码,WIFI模块接收到广播的内容后,自动尝试连接对应的WIFI网络,当显示连接成功时,相应对的配置也就完成了,当WIFI模块处于APP模式下时,WIFI模块自身就相当于一个热点,我们可以通过手机的机智云APP直接与WIFI模块连接,通过内部数据信息处理,手机APP会将可用的WIFI网络SSD以及密码发送给WIFI模块,当WIFI模块接收到手机发来的配置信息后会自动不断尝试连接相应的路由器,当WIFI模块显示连接成功时,该设备会自动跳转到正常工作模式。
2.2.5 STM32软件编程
STM32作为本设计的核心枢纽,无论是直接控制空调的几种设定还是将数据显示到手机上都要经过STM32不断检测有无信号输入,当STM32检测到对应的按键串口有低电平输入时,STM32内部处理发送给OLED模块显示。当系统接通电源时,STM32不断向温湿度传感器发送检测信号,由STM32处理发送给OLED显示和通过WIFI模块发送给机智云平台,再经过机智云平台发送给用户手机APP。
控制工程流程如图5所示,远程管理与数据分析系统功能流程如图6所示。首先用手机APP提前设置好空调相关参数,然后启用设备数据分析功能,该功能可以实时存储的空调各状态数据并保存,同时与提前设置好的空调状态变量进行比较分析,判断空调状态是否开启或者是关闭,根据需要生成控制指令来调节空调的温度,根据需要生成报警信息并发送到控制器,同时通知给管理员。同时,根据整个控制过程中记录的设备状态信息来综合分析空调运行情况等信息,了解系统在节能控制方面的效益。
图6 远程管理与数据分析流程图
为了实现真正的远程控制,选择将实物硬件系统接入物联网云平台。在云平台注册一个开发者账号,注册完成后可以开始创建新任务。第一步,先创建智能空调的基本信息。
第二步,创建本系统功能所需的数据点。
第三步,下载生成的APP源码(可以自行对源码进行更改),生成APP。
1)连接电源;
2)若此前WIFI模块已入网,在电源接通后,WIFI模块会自动入网,整个系统处于工作状态。若此前未连接WIFI,此时只需在手机端对WIFI模块进行配网即可。
1)用云平台生成的APP源代码在Android Studio中生成机智云示例APP,在安卓手机上安装APP。
2)进入APP点击一键配置——>输入自己的WIFI名称和密码——>选择WIFI模块的型号——>根据提示按配网按键——>等待配网成功——>配网成功后会显示设备在线,过程附图如下:①一键配置;②输入WIFI密码;③选择WIFI模块型号;④搜索连接设备;⑤配网成功;⑥设备控制界面。(顺序从左到右,从上到下)
连接成功后,可以对空调进行远程控制,远程开启和关闭空调,远程监测家中环境温湿度,远程选择空调的模式,远程设定空调温度;除此之外,空调有智能控制模式,当温度超过设定的阈值,空调可以自动开启进行制冷或制热;空调还保留手动控制模式,可以通过按键控制空调的各参数和模式。
在系统测试时,选择了模拟空调电路作为测试对象,同时手机打开机智云APP,家用空调智能控制系统设计包括对空调的模式、风速和温度的控制,环境温湿度也同时在OLED屏幕上显示,智能家居控制系统可分为硬件控制系统与远程控制系统两方面。在进行实验调试之前,需要将软件平台keil MDK5安装好,keil MDK5用于编写和调试代码,并将代码烧录到STM32最小系统板上,在keil MDK5中编写好代码,并且选择好器件STM32F103C8,最终检查编译成功结束。具体步骤如下。
步骤1:基于keil 软件与面包板搭建的临时电路,根据基本要求实现测试;
步骤2:先安上元件后,焊接电路,用万用表测试电路是否正确连通,以确定无虚焊、漏焊和焊接错误等问题,然后将集成芯片安上。以此可以防止集成芯片由于电压过大而烧坏;
步骤3:检查连接无误后,装载程序,调试,运行;
图7 系统界面图
首先进行硬件系统操控:当按下红色按钮时,模式可以改变;当按下绿色按钮时,风速可以改变;当按下蓝色按钮时,可以调高温度;当按下黄色按钮时,可以调低温度。
其次进行远程操控:当选择模式一栏时,可以选择自己想设定的模式,显示屏也能够显示,当选择风速一栏时,可以选择自己想设定的风速,显示屏会将于手机设定的风速显示出来,当拉动温度条时,显示屏可以根据设定值,将温度显示出来,手机机界面还会实时显示环境温湿度的变化。
首先通过程序获取空调遥控器编码进行分析,其组成按编码模式为:表1模式编码,分别对5种工作模式自动、制冷、加湿、送风、制热进行编码,表2为风速模式,分别对自动、一级、二级、三级进行编码,表3为温度编码,分别对温度范围进行编码。
校验码=[(模式-1)+(温度-16)+5+左右扫风],将十六进制数转换成二进制数保留后4位,再逆序取值;校验码生成后根据通过程序进行编码,编码的不同可以需求控制空调的各种运行状态,来调节室内的温湿度,达到人体舒适状态。
表1 模式编码模式码自动000制冷100加湿010送风110制热001表2 风速编码风速码自动00一级10二级01三级11表3 温度编码温度/℃码16000017100018~29逆序递增300111
表4为系统测试运行状态数据表。其中有进口温度、出口温度、人员状态、状态、时间分别表示进风口温度,出风口温度,人体感应器返回数据、空调的运行状态,运行时间。人员状态有两种表示方法,0表示无人,1表示有人。空调运行状态有两种,H表示制热状态,C表示制冷状态。当室内长时间处于无人状态的时长可以由时间表示(单位:分钟)。一般预设时间15 min,当室内无人超过此时间后,系统则发出报警信息,并自动关闭空调。实验结果表明,智能空调控制系统能实时采集周边环境的温湿度数据,服务器可以正常接收到传送的状态信息,用户通过云平台系统控制发出的信息编码可以实现对空调的控制,运行较稳定,控制成功率达到100%。
表4 系统测试运行数据
本文实现了基于物联网云平台的空调智能控制,智能空调控制终端模块实时采集周边环境的温湿度数据,以STM32单片机作为硬件控制中心结合WIFI技术,云平台与家用空调连接来进行远程操控。手机可以实时显示的房间温湿度,在炎热的夏季或寒冷的冬季,可以在回家之前就通过手机APP调节空调,这样一到家就能平复焦躁的内心,不用再焦急地等待房间温度降下来,更不用再困扰于找不到遥控器或是遥控器没电的烦恼,甚至不用再担心出门上班后家里的空调忘记关了的情况。利用该系统能实时监控环境温湿度数据,有效地控制空调合理使用,控制成功率达到100%,能营造舒适的生活工作环境又不造成浪费,适用于多种空调品牌,具有较高的实用价值。同时,本设计关键技术是采用FlyMcu软件用Keil MDK5编程实现机智云平台的SDK和API服务,实现三部分的通信连接,将新的服务器平台应用于物联网的应用开发,简化了物联网应用开发的复杂性,加快了物联网应用的开发效率,提高了应用的可维护性、可升级性和可扩展性。
对于未来发展而言,首先智能控制系统是需要进行不断完善的,随着各种家用空调的发售,它可以与更多空调设备相关联,进而满足更多使用者的不同需求。人们使用WIFI技术既帮助人们不再烦恼于复杂的布线,又帮助人们节约了布线空间[19-20]。