魏金文,马维华,吴侨
物联网这几年迅速发展,为人们的生活带来便捷。中央空调也已广泛应用,充分体现物联网对人们生活的改变,若将我国建筑中的分体式空调替代成中央空调,在成本上和时间上都是一个巨大的耗费,因此如何对建筑中的分体式空调进行便捷化和人性化的统一管理,成为本课题的研作者:Ethan究方向。
系统结构,如图1所示:
图1 系统整体架构
该系统主要由控制采集节点,传输节点,信息控制中心构成。控制采集节点负责控制空调的开关,调节室内温度,同时采集房间的温度、湿度、光线等数据。采集到的数据将被传送到传输节点,再由传输节点对数据重新封装,通过以太网功能传输到信息控制中心。信息控制中心拥有多台上位机,对各采集控制节点进行统一管理。各采集节点和传输节点之间的数据交换分为有线和无线两种通讯方式:在方便布线的地方采用有线通讯,难以布线的地方则用无线传输。
控制采集节点的MCU采用新唐科技公司的Cortex-M052,它的成本仅相当于传统的8位微控制器,功能却非常丰富:它具有ISP和ICP功能,可直接在电路板上对程序进行升级;还包括了4个定时器,8通道12位逐次逼近模数转换器,两个UART串口;另外它还带有SPI和 I2C接口。基于I2C接口,外部扩展一个32KB的EEPROM存储器AT24C256来存储数据,控制采集节点的硬件结构,如图2所示:
图2 控制采集节点硬件结构图
MCU通过AD转换功能不断从传感器模块获得室内环境参数,通过RS485有线通讯方式或者SI4432无线通讯方式发送给传输节点。红外接收模块则是通过M0的外部中断功能来学习红外编码,然后存入AT24C256中。红外发送模块的职责是先从AT24C256中读出红外编码,然后通过M0的PWM功能,发送红外编码,控制空调运行。数码管显示模块则是留给调试人员的调试接口,用来显示当前操作的是第几条红外编码。
如图3所示:
图3 红外发射电路
红外通讯协议规定:为了减少干扰,信号必须调制成38KHZ后再通讯。所以IR_TXD传输给红外发射模块的就是38KHZ的信号。两个三极管的作用来稳定信号,和开关红外发射管。为了能够多角度的控制空调,此处采用了3个红外发射管,而在安装节点的时候,也可以减少地理方位的局限。
如图4所示:
图4 红外接收电路
红外信号是通过 HS0038B(具有解调功能的红外接收管)来接收。波形即是被调制成38KHZ后的红外信号,如图5所示:
图5 38KHZ红外信号波形
如图6所示:
图6 HS0038B解调后信号
HS0038B解调38KHZ红外信号后,在OUT引脚所输出的波形。比较图 5和图 6,可以得出结论:如果接收到38KHZ的信号,那么接收管会解调信号成为高电平,然后取反,在OUT引脚输出低电平;若收到是低电平信号,就直接取反,在OUT引脚输出高电平。IR_RXD与M052的具有外部中断功能的引脚相连,当有红外信号被接收时,就会触发外部中断,在中断服务程序中读取电平的组合情况,从而获取红外编码。为了增强信号,在OUT引脚添加了一个 47K的上拉电阻,因此,整套接收电路具有很高的可靠性。
如图7所示:
图7 程序整体运行逻辑
软件设计主要任务是如何学习红外编码,从而使得节点具有通用性、发射红外信号以及和传输节点之间通讯。
在采集控制节点上电的之后,系统对节点的各个模块进行初始化,然后系统默认进入 A模式,进行室内温湿度和光线强度的采集;当接收到上位机的命令(可以是通过RS485或 SI4432),则会进入中断,对指令进行解析,而置X为不同值,以此进入其它模式;如果进入 B模式运行,则会开启外部中断,等待学习红外编码;若是 C模式,就会发送红外信号,控制空调,然后回到 A模式,继续采集室内环境参数;D模式是调试模式,使得安装人员在安装节点之前,能够对其进行设置和调试,此时通过数码管显示当前操作的是第几条红外编码,以验证编码的正确性和通用性,从而保证节点的正常运行。
电视机遥控的红外编码,有固定的格式和长度,每个按键有唯一的红外波形,而空调的却不同,不同的厂家编码的格式大相径庭,所以如何实现遥控的通用性,是首要解决的问题。经过观察发现,空调红外的编码一般由引导码、数据码、间隔码组成,但是有的也没有间隔码,如图8所示:
图8 两种不同的红外编码
可以看出不同厂家的引导码时间长短不同,编码格式和长度也没有统一的规范,那么如何通用性地记录下编码格式?
针对这个问题,产生了两种思路:第一种,将常见的编码存储下来,然后将学习到的编码和已知的编码进行比对,经过实验发现,对于同一种编码,多次比对后发现相同电平持续的时间每次都不一样,差值有多有少,如果规定一个误差范围,其值偏大或者偏小都会影响整体解码,很难找到一个适中的误差范围而保证解码的正确性,因此这种方法可行性不高;第二种方法,记录波形法,记下从学习开始到结束的每个高低电平的持续时间,然后存储下来,这种方法虽然耗费空间比较大,但是通用性较高,适合绝大多数情况。
然而要用多少个字节来存储一个编码,怎样才能节省空间,如何判断编码结束?经过对30多种编码的比对,发现最长的编码有 200多个高低电平的组合,而引导码一般在 ms级别,数据码在us级别。为了减少误差,用定时器记录下系统时钟的震动次数是一个很好的选择,外部晶振是12MHZ,那么1ms的时间长度,定时器计数12000下,则存入引导码必须需要4个字节,引导码一般最多为两个电平,故前两个电平要特殊处理;而对于us级的数据码2个字节已经足够了,这样512个字节就可以存储一个红外编码;当数据码的电平持续时间大于60000下,视为结束,因为一位数据码的一个电平不可能持续5ms。流程,如图9所示:
图9 红外学习过程
红外信号发射之前,先从AT24C256中读取空调的红外编码,存入数组中,然后从数组中读出数值,再将信号调制成38KHZ信号发射出去,从而保证实时性,如图10所示:
图10 华凌空调“关”红外编码
从图10中可以看出,信号被调制成38KHZ之后,发送的时序图。
原来调制信号使用的是38KHZ硬件自震荡电路和与非门实现,这样虽然简化了软件设计,却增加了硬件成本,因此本次通过M0的PWM功能来实现。首先初始化PWM功能,配置成38KHZ的方波,通过禁止和使能PWM组合操作,产生如图9所示的时序图。
值得注意的是:空调在通电之后运行于睡眠模式,需要红外编码唤醒,此时需要一个电平跳变从而触发解码程序,否则即使发出的红外编码正确,空调也不受控制,这是由于上一次发送的最后一个数据可能是38KHZ信号也可能是低电平,若发送完的最后一个信号是38KHZ的,那么空调一直收到低电平,如果此时发送正确的编码,接收到的也是低电平,那么空调就无法识别此次编码,所以每次发送完之后要关掉PWM信号,或者每次红外发射前,持续发送时间长度为 1s,且与第一个将要发送的电平信号相反的信号,而产生一个边沿跳变,触发中断,运行内部的解码程序。
通讯模块采用RS485有线通讯和SI4432无线通讯的组合。RS485电路采用经典的光耦隔离电路,有效地防止外部信号干扰,SI4432通过M0的SPI功能实现。两者都是通过中断实现。接收到上位机发送的命令之后,进入各自的服务子程序进行指令的解析而做出相应的动作。
物联网发展到今天,旨在为人们的生活带来更多的便捷,让人类享受科技带来的诸多舒适与人性化,通过此空调集中系统,使物理上分散的空调可以进行统一的管理,实现与中央空调同样的功能,而Cortex内核的低功耗和低成本,很好地解决了成本和功耗问题。
[1]顾晓红.学习型遥控器中的码型识别[J].电子与封装,2009.10
[2]陈在平, 杜金利.面向 RS485协议配置应用的单片机与PC机之间的通信[J].天津理工大学学报,2009.04
[3]任登峰, 师卫.实现万能遥控器的一种新方法[J].科技情报开发与经济,2008.04
[4]刘政,袁国良,王丽芳.基于 Cortex-M0 的室内温控系统的设计[J].中国科技信息,2011.04
[5]Michael Barr.C/C++嵌入式系统编程[ M].于志宏,译.北京: 中国电力出版社,2001.
[6]范云龙,方安平,李宁.Cortex-M0处理器初探[J].单片机与嵌入式系统应用,2010.06