从小工具或“夏季准备推车”配置对空调的红外控制

在现代家庭自动化系统中,要解决的任务清单中最经常使用的气候控制是在使用照明设备之后的第二位。在这种情况下使用的设备范围非常广泛。排在最前面的是用于HVAC(供暖,通风和空调-加热,通风和空调)的专业设备,包括地板采暖,空气再循环系统和冷天花板。在可访问的部分中,我们看到传统的家用空调以及众多的电加热器和燃气锅炉,并且通常通过“手动”打开窗户的方法来解决通风任务。

控制空调最方便的方法是通过专用接口连接到空调,该接口不仅提供发送命令,而且还提供状态监视以及通知状态和可能的故障。但是,此选项仅在某些型号中可用,它可能需要购买其他单元,很难称得上负担得起。但是,如今,随着AllJoyn,HomeKit和SmartThings等标准的泛滥,类似的模型开始出现在更大规模的细分市场中。

幸运的是,还有另一种控制空调的方法-使用IR通道。这种方法的优点包括多功能性(一个红外发射器可以同时为房间中的各种设备提供服务)和低成本。缺点是完全缺乏受管设备的反馈。另外,该解决方案甚至不能保证命令的交付。这种方法适合您决定,但是,我们认为,这种选择的可用性要比完全缺乏控制要好。


选择设备


让我们看看有哪些选项可以发送IR命令。当今最流行和通用的设备之一可以称为Global Cache制造的设备。该产品线包括六种型号,可通过IR,RS-232和干触点提供监视和控制。我们建议您将这些可靠的解决方案用于此任务,作为专业安装的一部分,对此您必须承担责任。



为了与所有变送器一起使用,使用了网络接口(有线或无线)和基于TCP / IP的协议。拥有详细的文档可以轻松地将这些解决方案集成到您的自动化系统中。请注意,iRidium软件包具有用于Global Cache设备的内置配置数据库,从而进一步简化了使用它们的工作。



该制造商的设备的缺点是其相当高的成本。作为更实惠的替代方案,尤其是对于那些喜欢自己动手做的事情,我们可以称之为制造基于微控制器的变送器。著名的Arduino平台非常适合培训和面包板组装。您将需要任何一块板(此项目对输入和输出的要求最低),一个用于提供远程访问的合适的网络接口或模块,一个红外LED以及一些其他详细信息。可以轻松找到网络上此类设备的示例,并根据您的任务进行调整(例如,参见SparkFun的一个选项)。



还建议购买红外接收器模块,这是研究空调协议所必需的。请注意,物理IR协议的主要参数之一是调制频率(最常见的值为38和36 kHz)。可以“教”一台设备以不同的频率发送数据,但是接收器被调整为固定值,因此可能要花费一些时间。

我们研究协议


下一步是解密空调的控制协议。遥控器通常具有一组基本的按钮-升高和降低温度,选择模式,控制风扇,选择出风口的方向,关闭电源。



与音频视频设备不同,在发送的每个命令中,空调遥控器均使用完整的所有参数集。因此,通常不需要了解协议详细信息的传统选项“按按钮,记录所有命令,回放记录”在这里不适用。

在我们的情况下,首先我们需要记录仅改变一个参数(例如温度)的记录。然后修复它,并尝试通过将数据写入第二组来更改另一个参数。请注意,如果使用Arduino,则很可能需要修复标准库的文件,以增加RAW模式下记录的命令的最大持续时间。



在不赘述的情况下,我们展示一些示例。 iLearn专有实用程序中全局缓存的输出可能如下所示:

sendir,1:1,24,37914,1,1,116,115,116,168,22,62,21,20,22,62,21,20,22,20,21,62,22,20,21,62,21,20, 21.63,21.62,21,21,21,20,21,21,21,62,21,62,21,20,22,20,21,62,22,62,21,20,22, 20,21,62,21,21,21,20,22,20,21,21,21,62,21,21,21,62,21,62,21,21,21,20,21,21, 21,21,21,20,21,63,21,62,21,20,21,21,21,62,21,63,21,20,21,21,21,21,21,21,20,21, 21,21,20,21,21,21,21,21,62,21,21,21,20,21,21,21,20,21,21,21,21,21,21,20,21,21, 21,21,21,20,21,21,21,20,21,21,21,21,21,21,20,21,63,21,62,21,62,21,63,22,20,21, 21,21,3700


对于Arduino中IRremote,输出格式是不同的:

Raw (150): 4316 3050 -3000 3050 -4350 600 -1600 550 -550 550 -1600 600 -500 550 -550 550 -1600 600 -500 600 -1550 550 -550 650 -1500 600 -500 650 -450 550 -550 600 -1550 550 -1600 600 -500 650 -450 650 -450 600 -1550 650 -450 600 -500 600 -500 600 -450 650 -450 600 -500 600 -450 650 -1550 550 -550 600 -1550 550 -550 600 -500 600 -450 650 -450 650 -450 600 -500 600 -500 600 -1550 600 -1550 600 -500 650 -450 600 -500 600 -500 550 -500 600 -500 600 -500 600 -500 600 -450 650 -450 600 -450 650 -450 650 -1550 600 -500 600 -500 600 -450 650 -450 600 -450 650 -450 600 -500 600 -500 600 -500 550 -500 650 -450 650 -450 600 -450 650 -450 600 -1600 600 -500 500 -1650 600 -1550 650 -1550 600 -1550 650 -1550 600


通过对记录的行的数据进行简单的操作(例如,来自站点的资料可以为您提供帮助),我们获得了二进制代码,在我们的示例中,该代码为9个字节。在研究了所有参数之后,有可能找出我们的空调所使用的编码,这些编码不是由最著名的品牌生产的,其领域是:

10100101 tttt011p dd100000 00101000 00001100 ff000000 mmm00000 00000000 ssssssss
                                                              
tttt:预设温度-16(调节-从16到30度)
p:0-启用,1-禁用 
dd:摆动(00-自动,01-向上,10-向下,11-运动)
ff:风扇(00-自动,11-第一速度,10-第二速度,01-第三速度)
毫米:模式(000-自动,001-冷却,010-排水,011-加热,100-风扇)
ssssssss:校验和(前八个字节的总和为模256)


我们管理


根据这些数据,编写用于为Global Cache和Arduino进行空调控制创建所需的二进制代码的程序已经很容易了。在这种情况下,最好使用具有编程支持的控制器或面板,这将允许您“即时”生成必要的命令,并像原始遥控器一样将所有参数记录在其中。特别是,在iRidium Mobile中,您可以使用JavaScript编程功能,并通过局域网发送到执行设备,您需要AV&Custom Systems驱动程序。



请注意,您还可以在此处实现并显示空调的当前模式。但是,必须注意,信息将来自控制面板的内部变量,而不是直接来自空调,因为在这种情况下IR控制是单向的。

如果在同一房间中使用多个空调,并且为了更可靠地发送IR命令,则可能有必要将IR LED直接安装在每个设备的接收器窗口上。



如果房间中只有一台空调,则一个正确安装的红外发射器就足够了,这对于控制其他设备(例如风扇或音乐中心)也很有用。

如有必要,可以在控制系统中补充实际温度传感器,空调消耗传感器(以控制其包含),用于阻止操作的窗户传感器,自动控制模式,并考虑街道温度的动态变化,时间表和其他功能。

Source: https://habr.com/ru/post/zh-CN389049/


All Articles