红外遥控器制作


一、背景

  端午节期间,广州的天气真的好热,恨不得整体泡在空调房里。这让我想起了在公司上班的时候,天气炎热,想开空调,却发现空调遥控器好像偏偏跟我们玩捉迷藏似的,找也找不到,只能看着空调干巴巴地流汗。也常常碰见,公司的空调上班的时候都开着,然后最后一位同事走的时候,想关空调,此时遥控器也不翼而飞,于是各种问同事,大伙知道空调遥控器在哪吗?这种类似的“问候”等等。另外,公司空调比较多的时候,走的时候需要一个空调一个空调检测有没有关了,不然就会造成浪费的情况。总之对我来说,空调遥控器就是一个神奇的东西,你想找的时候,就偏偏找不到。

  基于以上的种种情况,于是我萌发了要做一个方便管理的空调控制器,这个控制器有以下2个特点;

  1. 必须让每个同事都能轻易的对每个空调进行控制(那就是用手机控制啦,大家都有手机~);
  2. 必须满足远程关闭空调,因为如果当我们离开公司的时候,发现空调没关,可以远程关闭;

二、方案选择

  基于空调遥控器的特点,我想到了机智云的Gokit,搭配机智云的平台,能够满足我的需求,(主要是手头刚好有几个Gokit哈哈~);

  那么怎么来做呢?根据经验所得,需要对这个工作拆分为几部分

  1. 机智云平台数据点定义(啥是数据点,请到机智云官网查看);这里我订了两个核心功能,一个是开关,一个是温度调节;(当然,你也可以定义更多的数据点,如,模式,风向等等);
  2. MCU开发,MCU开发需要细分为红外遥控器的协议解码和编码;解码 简单来说就是需要通过工具,来分析遥控器发出来的红外波形,什么波形对应着开,什么波形对应着光和温度设置。编码 就是要把我们下发的命令转换成和空调能识别的红外波形;

三、方案实施

1. 数据点定义

  很简单,两个数据点,温度设置和空调开关,如下图;

upload successful

2. 红外解码

   对于红外解码,有两种方法,一种是找到空调厂商的红外协议,然后根据红外协议,直接编写就可以了,不过很不幸的是,我手头这款空调,我找了很久都没找到对应的空调协议,于是只能另辟途径。也就是第二种方法,红外波形拷贝。

   那么波形拷贝我采用的是,用逻辑分析仪对遥控器进行波形分析,然后使用红外波形拷贝的方法,把对应功能的波形拷贝下来。

  决定了使用红外波形拷贝,那么就需要先要搭建波形捕捉电路,翻开了压箱底多年的红外探头接收器和面板(⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄),步骤如下。

2.1 硬件环境搭建

红外接收头型号 HS0038B

upload successful

HS0038B 电路图搭建
  • 原理图
    upload successful
  • 面包板搭建实物图
    upload successful
    upload successful
抓波形
  • 真实抓包红外码图
    upload successful

    • upload successful

    • upload successful
    • 20度
      upload successful
    • 21度
      upload successful
    • 22度
      upload successful
红外解码程序编写

  对红外波形有一个大概的认识之后,就要编写MCU端的代码,把波形转成红外码。这里我的思路是,对STM32的某个IO,设置为输入下降沿捕捉,然后通过计算每一个高低电平的持续时间,进而把波形转成数组;具体的实现可以看代码,Talk is cheap, show me the code.(主要是懒(/ω\)~)

3. 红外编码

  进过前面的红外拷贝之后,我存储了,几个功能点的红外码,分别低开关,和温度设置(16度到27度);
这里简单说一下,红外的发送原理(主要是网上已经有很多这方面的教程了),首先上面抓到的红外波形,并不是红外发送器真正发送的波形,红外发送的波形一般是要发送的命令“加”在一个38K 的一个波形上;因为接收端有一个波形过滤器,如果不是38K红外波形范围内会被过滤掉。所以一般会以38K的PWM作为一个红外载波;
  那么发送的时候,我对STM32的PA5引脚做为输出PWM为38K的引脚,然后后根据机智云定义好的数据点,拿到对应的串口协议文档,进行命令提前,主要是APP控制和MCU状态上报,这两条协议,(当然还有进入WiFi配网和串口握手等,不过这些在MCU代码自动生成的时候已经帮我们实现好了)串口协议格式如下图

upload successful
upload successful
那么后面的就是根据协议编程了。

这里插播一条,我实现发送的时候,开始我想使用gokit上的红外来作为发送,不过后面发现发送的距离比较短,后面就自己焊接了红外发射头;
当时我对Gokit的改造如下,如果小伙伴要控制的距离不远的话,我想是可以的,具体我的改造如下:

Gokit引脚修改

upload successful
upload successful
upload successful
upload successful

我最后真实的红外发送搭建如下
upload successful
upload successful

完成

最后,我把手头几个Gokit 都接上了红外,这样就能开开心心开空调去啦~~~

upload successful
upload successful
upload successful
upload successful

演示视频

参考


文章作者: Alex.Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex.Lin !
 上一篇
OpenSSL 笔记 OpenSSL 笔记
一些加密知识 摘要算法 : 公钥算法 数字签名 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.htmlhttp://www.jinbuguo.com
2020-07-08 Alex.Lin
下一篇 
QT 笔记 QT 笔记
2020-05-04 Alex.Lin
  目录