基于物联网云平台的空调源码库

2019-04-15 05:22张加书韩跃平张瑞珍
测试技术学报 2019年3期
关键词:一键模组遥控器

张加书, 韩跃平, 张瑞珍

(中北大学 信息与通信工程学院, 山西 太原 030051)

0 引 言

物联网作为新一代信息技术的重要组成部分, 在信息化发展中起到了举足轻重的作用[1]. “云+端”模式[2]到来之后, 基于物联网云平台的远程控制[3]、 语音控制[4]等一些智能化控制产品慢慢普及到人民的生活. 必须承认, 由于平台的可扩展性、 兼容性、 时效性以及开发周期的原因, 这些概念和产品并没有打开最广阔的智能家居市场[5].

本文利用智能通信模组(以下称为智能模组)对接云平台并且发射红外波形信号到空调电控板, 移动客户端APP与智能模组绑定连接到云平台, 下发控制命令. 智能模组利用红外发射接口, 将数据转换成红外波形信号, 发射到空调电控板的红外接收端口[6], 进而用户通过APP的UI界面[7]即可控制空调电控板. 本文提出了一种借助云端部署、 一键匹配开发控制不同品牌空调遥控器源码库的开发方法, 实现了品牌空调控制的兼容性, 通过精简内存提高了匹配以及控制效率, 本文重点对空调源码库的开发做了深入的研究.

1 系统总体设计

1.1 系统结构设计

研究基于智能模组与云平台(broadlink云)服务[8]相结合, 实现移动客户端一键学习匹配空调设备进行远程控制、 兼容多品牌空调等功能. 智能模组硬件设备集成了WiFi模块通信与红外模块通信的功能, 通过WiFi模块与云平台建立网络连接. 云平台核心业务面向家电产品实现了产品的创建、 标准功能参数属性设置、 产品部署等功能. 云空调的实现不需要对传统空调厂商产品进行二次开发, 智能云空调取代传统的空调遥控器, 在保证产品智能化、 最优化的情况下节约了开发成本. 如图 1 所示为系统整体结构框图.

图 1 系统整体结构框图Fig.1 System overall block diagram

1.2 系统软件设计

移动客户端APP用户账号注册登陆, APP设置为LAN模式和WLAN模式[7]. 云平台创建的产品列表提供了空调遥控器标准功能参数以及枚举值, 如表 1 所示, 列表属性针对本次开发设计可满足用户基本需求, 可根据用户需求提供灵活性的自定义添加. 前端开发利用云平台提供的不同功能参数, 对其中的枚举值进行相对应功能的UI界面开发, UI开发界面如图 2 所示.

移动客户端用户可采用局域网WiFi、 广域网WiFi两种主要的联网方式: 局域网下, 移动客户端APP下发控制指令到智能模组, 智能模组接受命令后对空调电控板发送控制指令, 同时APP把参数值上传云平台; 广域网下, APP发送的控制命令先改变云平台的对应参数, 之后云平台将参数值传递到本地设备. 局域网下移动客户端APP(client端)通过UDP协议[9]建立网络套接字的方式实现与云平台(server端)通信, 局域网通信方式如图 3 所示; 广域网下移动客户端APP通过建立一个线程向云平台发送HTTP的GET/POST请求去查询云平台的功能参数变化以及下发控制命令.

表 1 空调功能参数列表及枚举值Tab.1 List of air conditioning function parameters

图 2 UI开发界面Fig.2 Development interface of UI

图 3 局域网通信方式Fig.3 Communication mode under LAN

2 源码库开发

源码库的开发是整套产品的核心部分, 也是本文的研究重点, 研究云空调的源码库开发, 对云空调产品的品牌兼容性、 一键匹配、 控制高效性起到了不可或缺的作用.

2.1 源码库开发环境搭建

网上下载虚拟机VMware安装包, 并安装64 b ubuntu, 版本号16.04, 用于编译调试开发的c语言文件. 配置虚拟机的网络设置为桥接方式(NAT方式不要), 为了方便后期的云端调用操作配置静态IP地址, 在ubuntu终端中输入$sudo vi /etc/network/interfaces, 再打开的网络配置文件输入配置内容设置静态IP地址. 注意在桥接方式下, 虚拟机相当于是局域网中一台独立的主机, 因此这个静态IP地址不能和局域网中别的主机冲突. 如果对网络设置做了更改后无法连接网络, 可以尝试重启网络. 安装samba服务器[10]进行Windows和ubuntu平台文件共享实时同步更改, 服务器重启命令sudo /etc/init.d/samba restart. 安装Sourceinsight进行源程序的读取和编辑. 安装红外遥控编码分析仪PC端软件IRReader以及红外遥控编码分析仪驱动用于分析空调遥控器输出的红外波形.

2.2 源码库开发原理

选用通用型智能红外遥控编码分析仪分析遥控器波形, 提供了被测红外遥控器的所有脉宽信息和波形[11]. 分析仪接入PC端打开上位机软件, 界面能清晰稳定地显示信号完整波形, 这是很多示波器达不到的; 可测试脉冲宽度、 码串长度、 数据位数、 引导码、 客户码、 数据码等; 支持一键多码的解码; 4通道显示波形, 方便波形对比, 每个通道支持两种模式.

在开机状态温度、 模式、 风速、 风向一定的情况下, 在上位机界面采集显示某品牌空调遥控器输出的红外波形如图 4 所示.

图 4 采集红外波形图Fig.4 Acquisition of infrared waveforms

通过温度增减按键以及在上位机界面的红外遥控编码分析仪的数据波形显示, 空调遥控器实际是给空调电控板红外接收器发送一连串的红外波形, 进而实现控制空调功能的作用[12]. 分析红外遥控编码分析仪给出的数据: 空调遥控器与电控板的通信数据格式为起始码、 数据区、 结束码; 其中起始码和结束码以比特为单位, 数据区以字节为单位; 波形由高到低证明是波形发射端; 数据区中的一段高低电平(1/0)的定义见图 5; 波形上面显示的数字代表的是电平的大小, 见图 6. 由此可以观察一款空调遥控器发射的某个功能参数下的数据区有几个字节, 根据波形分析对应的数据值(小端模式)以及起始、 结束几个bit位.

图 5 高低电平(1/0)的定义Fig.5 Definition of high and low level

图 6 电平大小Fig.6 Level size

将其他辅助功能关闭(APP里没有添加这个辅助功能按键, 按照用户需求可以灵活添加), 找出固定字节、 找出各功能按键对应影响的字节.

某些品牌遥控器某些功能的温度递增受影响的不止两个字节, 如图 7 所示, 为某品牌遥控器字节控制温度. 风向本有上下30°, 60°, 90°扫风, 由于控制面板里面没有添加可以改变风向的按键, 故取一个常用的值拿来做固定值.

图 7 字节控制温度Fig.7 Byte control temperature

某些品牌遥控器的某些功能参数没有开发, 但是UI界面具有的功能则取有效的控制波形当默认值.

某些品牌遥控器, 红外遥控编码分析仪采集的波形数据可能有多个起始码、 多个结束码, 其按规律进行输出波形的编码添加.

某些品牌遥控器输出的波形按照大端模式输出, 添加电平反转函数输出正确电平.

2.3 主要功能代码

选用一款通用型三菱品牌空调遥控器进行源码库的开发, UI界面控制功能参数包括: 温度递增、 温度递减、 模式、 风速、 风向、 状态6个功能按键(按用户需求可以逐个添加), 其中模式分为自动、 制热、 制冷、 除湿、 送风5个模式; 风速分为自动、 低、 中、 高4个等级; 风向包括固定风向和自动扫风; 状态包括开机状态、 关机状态. 采集UI界面包含的功能按键数据, 逻辑开发写入底层继而实现控制功能.

列出底层源码库开发的一些主要代码为: 一键匹配函数、 数据输出转换波形函数以及温度获取函数.

2.3.1 一键匹配函数功能码

int fujistu_type_check(irda_local_frame_t*frame)

{

irda_frame_pos_t frame_pos;

irda_parse_data_t data_stream1;

memset(&frame_pos, 0, sizeof(irda_frame_pos_t));

frame_pos.frame=frame;

//匹配起始码字节

if(irda_parse_basic_logic(&frame_pos, &startup_code)<0) return-1;

//匹配数据区字节数以及第一个字节

irda_parse_data_frame(&frame_pos, &bit01, &data_stream1, DATA_STREAM1_BIT);

if(data_stream1.bit_count

//匹配结束码字节

if(irda_parse_basic_logic(&frame_pos,&end_code)<0) return -1;

return 0;

}

2.3.2 数据输出波形转换函数

int irda_merge_basic_logic(irda_local_frame_t *frame, const irda_baisc_bit_t *basic_bit)

{

//添加一个电平到数据流 0: 低电平 1: 高电平

irda_add_level(basic_bit->level0, frame, 1);

if(basic_bit->level1 != 0)

irda_add_level(basic_bit->level1, frame, 0);

return 0;

}

2.3.3 温度获取逻辑函数

char temp_gain(int mod_flag,int temp_flag)

{

char temp=0;

switch(temp_flag){

case 17: tmp=(mod_flag≪4 ) | 0x00; break;

case 18: tmp=(mod_flag≪4 ) | 0x08; break;

case 19: tmp=(mod_flag≪4 ) | 0x0c; break;

case 20: tmp=(mod_flag≪4 ) | 0x04; break;

case 21: tmp=(mod_flag≪4 ) | 0x06; break;

case 22: tmp=(mod_flag≪4 ) | 0x0e; break;

case 23: tmp=(mod_flag≪4 ) | 0x0a; break;

case 24: tmp=(mod_flag≪4 ) | 0x02; break;

case 25: tmp=(mod_flag≪4 ) | 0x03; break;

case 26: tmp=(mod_flag≪4 ) | 0x0b; break;

case 27: tmp=(mod_flag≪4 ) | 0x09; break;

case 28: tmp=(mod_flag≪4 ) | 0x01; break;

case 29: tmp=(mod_flag≪4 ) | 0x05; break;

case 30: tmp=(mod_flag≪4 ) | 0x0d; break;

default: break;

}

return (tmp);

}

3 系统功能联调

按照红外遥控编码分析仪输出的数据波形、 云平台提供的功能参数枚举值以及寻找功能参数变化逻辑规律, 进行函数的逻辑判断编码, 编译开发c程序和脚本程序代码. 其中在IRReader界面采集的电平有效误差范围根据智能模组硬件电路的识别精度经实验取值在80~200之间.

一键匹配功能函数的实现包括对起始码的匹配、 数据区的匹配以及结束码的匹配, 为了提高匹配的效率以及准确性, 多次进行起始码、 结束码匹配, 数据区只匹配1~2个字节的实验, 实验结果显示能达到正常的匹配功能并且相对于全部数据区匹配提高了时效性, 进而缩短了代码段的内存空间.
图 8 为空调一键匹配成功结果. 代码编译完成后通过更改输入功能参数在ubuntu环境下验证c编译后的可执行文件和脚本程序输出的红码相等, 调试对比之后上传到云端部署.

图 8 空调一键匹配成功结果Fig.8 Successful result of air conditioning key match

智能家居控制APP用户登录成功之后, 长按智能模组复位按键到配网状态, APP添加设备绑定, 通过一键学习匹配空调遥控器, 学习成功后弹出控制界面.

传统空调遥控器和APP在其他功能参数保持一致的情况下, 同时改变温度,
图 9 是传统遥控器和APP控制在温度从20 ℃~21 ℃的温度变化过程对比, 结果显示APP和传统遥控器红外输出的波形是一致的, 通过实验验证都能达到远程、 实时、 准确控制的目的.

图 9 空调遥控器和APP数据对比图Fig.9 Contrast diagram of air conditioning remote controller and APP data

一款传统空调遥控器对应开发一款应用c文件, 对应生成一个可执行文件, 同理收录海量空调遥控器进行红外码录入, 系统开辟一定的内存空间来存储海量的空调红码及云端部署, 形成最终的源码库.

4 结 论

基于物联网云平台的空调源码库开发以及后期测试验证分析结果表明:

1) 智能终端APP远程控制的可行性以及控制的准确性和时效性, 实现了和传统空调遥控器一样的控制功能.

2) 海量收录空调遥控器云端部署一键匹配形成了一套源码库, 通过大量的实验证明了整套方案的时效性以及控制准确性, 符合产品市场的要求以及客户的需要, 最终能够实现移动客户端对不同品牌空调的实时远程操作控制.

猜你喜欢
一键模组遥控器
冷轧机一键式升降速轧制的实现
我是“糊涂虫”
“一键报贫”助力脱贫攻坚
时间遥控器
爸妈有个“遥控器”
光学薄膜技术及在背光模组中的应用研究
行走的飞行遥控器
一键观影,一键K歌 菱杰 TRS IW影院系列5.1音响套装
高速公路表贴透镜模组设计浅谈
浅谈石墨烯材料在LED路灯模组中的应用及该模组的设计