当前家电市场上已经有不少厂家推出了智能空调产品[1], 实现原理通常是以单片机作为控制芯片, 内置无线通信模块(比如WiFi)与控制平台通信. 这种方式需要内置无线通信模块, 只适用于新生产的新型号空调, 无法控制旧型号普通空调. 本文提出并实现了一种以手机APP作为客户端, 通过OneNet云平台上的虚拟设备和外置智能空调控制终端, 实现对普通空调进行远程控制的系统[2].
1 系统框图整个系统分成3部分(如图1): 手机APP, OneNET云平台上的虚拟设备, 智能控制终端. 手机APP通过无线网络(通信运营商网络、WiFi等)接入Internet与OneNET云平台通信, 智能空调控制终端通过WiFi[3]接入Internet与OneNET云平台通信, OneNET云平台上建有与手机APP和智能空调控制终端分别对应的虚拟设备, 实现手机APP与智能空调控制终端的点对点通信.
智能空调控制终端内置温湿度模块采集周边环境的温湿度数据, 通过WiFi上传给OneNET云平台, OneNET云平台将数据记录到智能空调控制终端在OneNET云平台上对应的虚拟设备下, 再转发给手机APP在OneNET云平台上对应的虚拟设备, 虚拟设备会将温湿度数据传给手机APP, 在手机上能查看当前环境的温湿度数据.
用户可根据当前温湿度数据, 通过手机APP发送空调控制命令(开、关、设定温度等)给OneNET云平台, OneNET云平台将控制命令记录到手机APP在OneNET云平台上对应的虚拟设备下, 再转发给智能空调控制终端在OneNET云平台上对应的虚拟设备, 虚拟设备会将控制命令传给智能空调控制终端, 智能空调控制终端内置红外模块, 产生红外信号与普通空调通信, 达到控制普通空调的效果.
2 数据流图如图2所示, 智能控制终端、手机APP采用Socket方式与云平台通信, 通过心跳保持与云平台的长连接. 系统中传输的数据根据方向分为2类: 1)上行数据, 采集到的传感器数据; 2)下行数据, 用户通过手机APP发出的控制指令.
上行数据流: 智能空调控制终端主控芯片STM32通过GPIO口接温湿度传感器, 采集温湿度数据, 通过串口发送给ESP8266无线通信模块, 由ESP8266发送给OneNET云平台, 再由云平台转发给手机APP.
下行数据流: 手机APP发出控制指令, 通过OneNET云平台转发给智能控制终端, 控制终端根据指令构造出空调控制码, 通过串口发送给空调控制模块, 空调控制模块调制产生红外信号, 发送给普通空调, 普通空调接收解调红外信号.
3 硬件设计本系统设计了智能空调控制终端的硬件部分, 并进行了验证, 主要分为6个模块(如图3): 温湿度采集模块、无线通信(WiFi)模块、空调控制(红外通信)模块、微处理器(主控)模块、SD卡读取(存储)模块、供电模块.
微处理器模块采用了STM32F429IGT6作为MCU, 该芯片配置非常强大, 芯片主频高达180 MHz, 具有256 KB SRAM、1024FLASH、12个16位定时器、2个32位定时器、2个USB、140个通用IO口、8个串口等, 完全能满足现有的需求和后续的功能拓展.
温度控制模块采用DHT11, DHT11是一款能够采集温湿度数据的数字传感器, 与单片机等微处理器进行简单的电路连接就能够实时采集本地湿度和温度. DHT11与单片机之间可采用单总线进行通信, 仅仅需要一个I/O口. 采集一次, 共产生40 bit的温湿度数据, 通过单总线一次性传给单片机, 数据采用校验和方式进行校验, 有效保证了数据传输的准确性. 功耗很低, 5 V电源电压下, 最大平均工作电流0.5 mA.
无线通信模块采用ALIENTEK推出的高性能UART-WIFI (串口—无线)模块ATK-ESP8266[4]. ATK-ESP8266板载ai-thinker公司的ESP8266模块, 内置TCP/IP协议栈, 通过串口与微处理器通信, 能够实现串口与WiFi之间的转换. 通过ATK-ESP8266模块, 微处理器只需进行简单的串口配置, 即可通过网络(WiFi)传输数据. ATK-ESP8266模块支持LVTTL串口, 兼容3.3 V和5 V, 方便与微处理器模块连接.
空调控制模块采用XK2233-1作为主控芯片, 内置丰富的定时器用来调制遥控信号, 丰富的数据存储器来存储海量的空调控制码表, 覆盖了市场上常见的空调品牌及其主要型号. 工作电压2~3.6 V, 通过串口与微处理器连接. 使用时, 首先和普通空调对码, 微处理器从SD卡中读取配置文件, 获取空调型号信息, 构造设置空调型号的数据帧通过串口发送给空调控制模块, 该模块即被设置为该型号空调对应的遥控器. 后续接收到空调控制命令时, 空调控制模块会调制出与普通空调相匹配的红外信号, 用于控制普通空调.
微处理器通过SDIO口读取SD卡数据. 系统使用USB接口为微处理器模块提供5 V电源, 通过AMS1117-3.3产生3.3 V的输出电压, 同时可为其他模块提供5 V和3.3 V电源.
4 OneNET平台设置OneNET[4]是中国移动通信集团的物联网开放云平台, 开发文档详细完善, 开发者只需按照OneNET平台的规范接入平台, 上传设备数据, 平台实现数据传输、数据存储、数据管理等功能, 支持HTTP、EDP、MQTT、RGMP等多种接入协议[5].
本系统采用EDP协议接入, 利用OneNET云平台实现手机和智能空调控制终端点对点通信. 在OneNET云平台上建立的设备情况如图4.
图中APIKey和设备ID用于建立虚拟设备和实际设备的对应关系, 云平台上的stmdata设备ID对应实际的智能空调控制终端, temp设备ID对应手机APP, APIKey表示设备关联到平台上某个应用, 两个设备的APIKey相同, 即表示关联到同一个应用. 智能空调控制终端和手机APP作为终端连接OneNET云平台, 在登录时需发送APIKey和设备ID给云平台, 平台依据设备ID判断某个设备上线, 依据APIKey关联应用. 终端发送EDP协议的消息时带上目的设备ID, 云平台根据目的设备ID进行消息转发, 实现不同终端间的点对点通信[6].
5 软件设计该系统软件部分由手机APP和基于STM32的单片机程序组成.
5.1 手机APP手机APP以Android studio作为开发平台, 设计登录、日志、温湿度显示、温湿度控制4个UI (图5), 移植EDP协议到Android平台, 实现手机APP以EDP协议和云平台通信, 使用了Android的Activity, Thread, Intent, Handler, Message, MessageQueue等组件和特性.
5.2 基于STM32的单片机程序
单片机程序采用中断加轮询方式实现多任务并行[6], 整个程序使用3个串口中断, 1个定时器中断, 主流程采用轮询方式. 定时器用于定时改变LED灯的状态, 提示系统正在工作. 串口1用于输出调试信息, 串口2外接XK2233-1, 用于发送空调控制码, 串口3外接ATK-ESP8266, 用于上传温湿度数据、接收云平台转发的控制指令和维护和云平台的心跳消息. 串口3负责上传温湿度数据, 为保证能尽量实时反映现场温湿度, 且发送给空调的控制命令首先是由串口3负责接收, 为保证发出的控制命令是最新的命令, 将串口3优先级设为最高; 为保证系统的响应速度, 串口2优先级次之; 定时器优先级中断再次; 串口1调试用, 优先级最低.
主流程负责: 1)程序初始化(读取配置文件, 获取设备ID、目的设备ID、API-key、接入热点名、接入热点密码、云服务器IP地址、云服务器端口、空调型号等关键信息, 开启中断等), 2)定时采集温湿度数据, 通过串口3发送给ATK-ESP8266, 3)定时检查串口3是否有云平台发送过来的指令, 若有, 进行解析, 将解析出来的结果通过串口2发送给XK2233-1, 进而发出红外控制命令给普通空调.
程序流程图如图6.
配置文件采用明文文本方式, Key-Value键值对存储, 方便修改, 格式如图7.
6 通信协议
手机APP、智能空调控制终端和OneNET云平台采用EDP协议通信(如图8), 自定义了登陆、温湿度数据上传、空调控制命令等应用层消息.
6.1 登陆
登陆消息如图9, 消息体格式如下:
设备Id长度(2字节) | 设备Id | Api-key长度(2字节) | Api-key |
6.2 温湿度上传
温湿度上传消息如图10, 消息体格式如下:
设备Id长度(2字节) | 设备Id | 实际数据{温度, 湿度} |
6.3 空调控制命令
空调控制命令如图11, 消息体格式如下:
设备Id长度(2字节) | 设备Id | 数据类型格式
(1表示json格式) |
数据长度(2字节) | 控制命令(符合JSON格式) |
命令消息格式中, JSON格式中value值不同即代表开、关、设置温度等不同的控制命令, 智能控制终端接收到命令后需进行格式转化, 按照空调控制模块的命令格式构造出数据帧发送给空调控制模块. 通信协议格式紧凑, 数据量不大, 传输效率高.
7 结语本文提出并实现了一种基于中国移动开放物联网云平台OneNET, 通过增加外置控制模块远程控制普通空调的系统, 该系统可改造用于其他带有红外通信的普通家电, 实现普通家电上云接入物联网, 具有一定的普遍性.
[1] |
崔丽珍, 徐锦涛, 丁福星, 等. 基于物联网的农业大棚气象数据监测系统设计. 电子技术应用, 2018, 44(12): 73-76, 80. |
[2] |
高丽英. 融合网联车辆的智能家居协同监控系统. 电子技术应用, 2018, 44(1): 60-64. |
[3] |
徐军, 杨帆, 朴金宁, 等. 室内环境参数远程监测系统设计. 电子技术应用, 2018, 44(2): 48-51. |
[4] |
刘晓剑. 基于Onenet的物联网监控系统[硕士学位论文]. 郑州: 郑州大学, 2016.
|
[5] |
范兴隆. ESP8266在智能家居监控系统中的应用. 单片机与嵌入式系统应用, 2016, 16(9): 52-56. |
[6] |
朱月振. 基于Arduino的智能空调控制系统的设计与实现[硕士学位论文]. 天津: 南开大学, 2014.
|