完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、红外基础知识
红外遥控有发送和接收两个部分组成。发射端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收完成对红外信号的接收、放大、检波、整形、并解调出遥控编码脉冲。 红外遥控发射装置,其主要元件为红外发光二极管,单只红外发光二极管的发射功率约为100mw。 红外遥控的控制距离约为10米。 二、数据协议 最常见的数据协议是:NEC编码。 还有其他协议:ITT 、a Nokia 、NRC、Sharp、Sony 红外遥控协议组成: 一般是引导码、用户码、按键码、重复码、按键反码、结束码等组成。 红外遥控载波频率: 33K 、 36K 、 36.6K 、 38K 、 40K 、 56K 。常用38K,以37.916K最准确。红外载波占空比:1/3 、1/2、不常用的有1/4。 三、编码 1.编码基础 红外遥控发射采用PPM编码方式,当发射时,将发射一组108ms的编码脉冲。遥控编码脉冲由前导码、16位地址码(8位地址码、8位地址码的反码)和16位操作码(8位操作码、8位操作码的反码)组成。 通过对用户码的检验,每个遥控器智能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。 编码后面还要有编码的反码,用来检测编码接收的正确性,防止误操作,增强系统的可靠性。 2.编码格式 前导码是一个遥控器的起始部分,由一个9ms的高电平(起始码)和一个4.5ms的低电平(结果码)组成,作为接收数据的准备脉冲。 以脉宽为0.56ms、周期为1.12ms的组合表示二进制的”0“,以脉宽为1.68ms、周期为2.24ms的组合表示二进制的”1“。 四、红外解码过程 1 、单片机配置寄存器,开启P32脚下降沿中断和定时器中断,定时器推荐使用 8 位自动重装,最大定时96us. 2 、当引导码38KHz红外照射接收器的时候,接收器输出低电平给单片机P3.2脚,触发下降沿中断 。 3 、先保存定时器的时间值,然后清零定时器的自定义变量(不是寄存器) ) 。 4 、下一次38KHz来临的时候,继续触发下降沿中断。和前面一次一样。都是先保存时间值,再清零自定义变量。 5 、上述 2次下降沿中间的时间差,就是红外遥控器的最基本时间差。 6 、根据时间长短,判断正确的引导码出现后,保存后来紧接的32个时间长度(即连续的下降沿,时间差) ) 。 7 、分 4次、分别判断8位数据的时间长度。根据协议识别出1和0。 8位是低位在前高位在后。 8 、 整个NRC协议的顺序是 :9ms+4.5ms 引导码 、8位用户机器码 、8位机器反码 、8位按键码 、8位按键反码。 配套的红外遥控器编码 五、控制空调 1.准备阶段 首先有一个空调的遥控器和一个红外接收头,还需要一个逻辑分析仪和带的上位机软件。 2.解码 首先我们需要先知道空调遥控器的编码格式 我们把逻辑分析仪的一个通道接到红外接收头的数据引脚,然后打开上位机逻辑分析仪, 点击start开始采集,在采集的过程中我们按下遥控器要解码的一个按键。 之后逻辑分析仪就会出现一个波形, 如下: 这里我已经把波形表示的是0还是1都已经写出来了。 要记得编码的格式是: 每8个二进制数据是一个字节,然后这8个二进制是按从低到高开始发送的, 例如:1011 0010 表示第一个字节 那么我们知道前面的是低位,后面的是高位,所以从高到低应该是0100 1101 正确的编码是4D,后面也是如此。 这里我测的是关空调的指令,所以得出结论,关空调的指令是 uchar code ir_close[6]= {0x4D,0xB2,0xDE,0x21,0x07,0xF8};//关空调指令 后面的测试也是类似的,我就不写出来了。 下面是美的空调(型号:RN02U/BG)的一些编码。 == 固定编码== 下面这些编码是固定的,不改变。 unsigned char shangxiafeng[6] = {0x9D,0x62,0xAF,0x50,0x20,0xDF}; //上下风unsigned char zuoyoufeng[6] = {0x9D,0x62,0xAF,0x50,0xE0,0x1F}; //左右风 == 不固定编码== 下面这些编码不是固定的,是组合编码。 关于组合编码的格式: 4D B2 :这两个码是固定的模式: 1.自动 1110 E 2.制冷 1111 F 3.抽湿 1101 D 4.制热 1100 C 风速 AU: FD 02 20%:FF 00 40%:F9 06 60%:FA 05 80%:FC 03 F%(测试不成功):FC 03 温度: 17: 0000 0 18:1000 8 19:1100 C 20:0100 4 21:0110 6 22:1110 E 23:0101 A 24:0100 2 25:1100 3 26:1011 B 27:1001 9 28:0001 1 29:1010 5 30:1101 D 3.编写程序 更多详细的内容,请查找完整的代码。 4.烧写程序 将程序烧录到开发板,验证即可。 六、遥控器硬件制作 1.主控芯片 主控芯片我采用的是STC8A8K-44脚的单片机,主要是因为我手里头还有两个。这个功能也是非常强悍的,但我都没有用到,有点浪费了。 2.红外发射 之前那个红外电路不能正常工作,捣鼓了好久,就是不行。之前开发板上有一个红外发射,我换成那个电路就可以工作了。 3.OLED显示屏 为什么我要加一个显示屏呢,这是因为我需要显示当前空调的一些状态信息,这样我就能清楚直观的看到空调的当前状态,方便我进行下一步操作。 4.稳压电路 没什么好说的,就是把5V转化为3.3V使用。 5.升压电路 因为是遥控器吗,那么肯定是便携式的,那肯定要加一个电池,电池是3.7V左右,我的单片机工作在5V,那么肯定要转换为5V。 6.充电电路 既然我们都用到电池,那么肯定要有充电电路,电池没电了,总不能把电池扣下来,充好电再装上去吧,太麻烦,直接插电充。 7.矩阵按键 因为空调的控制按键比较多,这里我就用了一个4x4的矩阵按键, 这样可以用更少的IO口控制更多的按键,可以节省单片机资源。 8.时钟电路 这个是扩展功能,后续会在屏幕上显示当前的时间,这样,可以更大的利用单片机的资源。 9.存储芯片 这个也是扩展模块,后续如果想做成学习型的红外遥控器,那么保存数据肯定少不了,这个模块可以存储数据,并且速度也不慢。 10.WIIF模块 这也是扩展模块。后续想要做成联网的,只要把遥控器放到空调旁边,通过手机就可以控制空调的打开和关闭,实现远程控制,这个应用也是非常方便的。 七、电路板焊接调试 1.先焊接单片机和电源部分 首先我们要确定电源没有问题,因为这个是内部晶振,所以晶振不用管,焊接这一部分之后,我们就可以看看是否能把程序烧录到单片机。 这一部分如果没有问题的话,基本就成功了,后续都是辅助。 2.焊接升压电路 升压电路是把电池的3.7V升压到5V。 3.焊接时钟和存储芯片 这一部分是扩展电路,我们需要就焊,不焊也没有影响 4.焊接背面 背面是按键的一些电阻,蜂鸣器的三极管,红外的三极管 5.焊接红外和按键 焊接完这一部分,我们基本就焊接完毕 6.最后效果 最后我们下载程序,可以出现这个界面,按每个按键(看丝印)执行对应的功能。 |
|
|
|
只有小组成员才能发言,加入小组>>
3308 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:23 , Processed in 1.425048 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号