当前位置:首页 > 嵌入式 > 程序员小哈
[导读]目录: 涉及知识点 一体化红外接收头VS1838B简介 应用场景 编码标准 数据处理流程 结果展示 接线 键码值输出 红外遥控功能,因其电路简单,控制方便,在电子制作和毕业设计中常常使用。 涉及知识点 GPIO中断接收 STM32中定时器的用法 红外接收头的使用 外部中

目录:

  • 涉及知识点

  • 一体化红外接收头VS1838B简介

  • 应用场景

  • 编码标准

  • 数据处理流程

  • 结果展示

    • 接线

    • 键码值输出


红外遥控功能,因其电路简单,控制方便,在电子制作和毕业设计中常常使用。


涉及知识点

  • GPIO中断接收

  • STM32中定时器的用法

  • 红外接收头的使用

外部中断和定时器的内容比较多,之后网文再详细分享。


一体化红外接收头VS1838B简介

  • 工作电压: 2.7V~5.5V

  • 应用电路

  • 外观、封装及尺寸
    把接收头面向自己,左边为1脚,1脚OUT,2脚GND,3脚VCC。


应用场景

  • 视听器材(音箱、电视、录影机、碟机)

  • 家庭电器(冷气机、电风扇、电灯)

  • 其他红外线遥控产品


编码标准

红外接收头的型号有很多HS0038、VS1838B等,功能大致相同,只是引脚封装不同。


红外接收有几种统一的编码方式,采样哪种编码方式取决于遥控器使用的芯片,接收头收到的都是一样的。


电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放大、驱动红外发射管将信号发射出去。


不同公司的遥控芯片,采样的遥控码格式也不一样,较普遍的有两种,一种NEC标准,一种是PHILIPS标准。


NEC标准: 

当某个键按下时,系统首先发射一个完整的全码,如果按键超过108ms仍未松开,接下来发射的代码(连发代码)将由起始码(9ms)和结束码(2.5ms)组成。


一个完整的全码 = 引导码 +用户码 +用户码 + 数据码 + 数据反码。


其中,引导码高电平9ms,低电平4.5ms;


用户码和数据码共32位;其中前16位为用户识别码,能区别不同的红外遥控设备,以防止不同的机种遥控码互相干扰。


后16位数据码为8位的操作码和8位的操作反码,用于核对数据是否接收准确。


接收端根据数据码的不同做出相应的动作。


连发代码是在持续按键时发送的码。它告知接收端。某键是在被连续的按着。


PHILIPS标准: 逻辑“0”和逻辑“1”的定义。



我们使用的遥控器模块使用的是NEC标准,当我们点击红外遥控器上第一个按键Ch- 时,用示波器测量VS1838B的OUT引脚,示波器中抓取的信号如下:


我们可以看出跟下图标准的NEC协议的典型脉冲链的定义是一致的:

上图为NEC协议的典型脉冲链。协议规定低位首先发送


首先发送9ms+4.5ms的引导码,接下来是两字节用户码,第三字节是数据码(按键码),用来判断按键值,第四字节是数据反码,可以用来校验,提高按键的准确性。

注意:
我们会发现上面两个图中波形的高低电平
实际上是相反的,因为红外接收头将38K载波信号过滤,接收到的波形刚好与发射波形相反。


难点:数据0和1的判断:
所谓的解码就是一个区分脉冲宽度的过程。红外信号的“0”和“1”是通过脉冲持续时间的长短来区分的,NEC标准的“0”和“1”的定义如下:

引导码:9ms 的载波+4.5ms 的空闲。
比特值“0”:560us 的低电平+560us 的高电平。
比特值“1”:560us 的低电平+1.68ms 的高电平。




VS1838B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平。


数据处理流程如下图所示:



结果展示

接线

与VS1838B连接:

  • 红外接收头的OUT引脚连接PA7

  • VCC连接3.3V

  • GND接地

与USB转TTL串口相连: 用于打印调试信息

  • USB转TTL串口的TXD与核心板的PA10相连

  • USB转TTL串口的RXD与核心板的PA9相连

  • USB转TTL串口的VCC与3V3跳线短接



键码值输出


按红外遥控的各个按键,串口打印输出各个按键值如下:


红外遥控器键码值整理如下:


下面视频中抓取的是第一个按键的脉冲信号:



我们通过观察视频发现它的四个字节的数据如下:
00000000 11111111 10100010 01011101

其中:
头两个字节00000000 11111111,即用户码,值为:0x00FF;
第三个字节就是Command命令字,10100010,这个数字对应十进制就是162,对应16进制就是0xA2。

一般我们就利用第三个字节的值,进行不同的功能定义。
第四字节01011101,可以看出与第三字节10100010互为反码。

但是我们通过上面NEC编码部分的介绍可知,NEC协议规定低位首先发送。所以上面打印输出的162(10100010),需要高低位反过来,即第一个按键的二进制真实编码为:01000101,即十六进制的0x45。


我们将所有的按键重新计算,所有编码就能够得到网上的按键编码图了。


其实我们只要每个按键能准确得到一个不同键码值,然后程序中根据不同值,执行不同流程即可,对于“CH-”键码值是162还是0x45,其实对功能的实现没有影响。




推荐阅读:

STM32单片机最小系统详解

STM32F103 串口的使用方法

STM32中精确延时函数的实现

基于STM32固件库的MDK5工程建立

修改Keil工程名称并添加其他模块文件

利用STM32F103C8T6最小系统板点亮流水灯




从六月份开始,每个月会制作一个毕业设计难度的DIY作品,
前期作品以模块组合的形式搭建,降低门槛,方便大家一起跟着做;
DIY过程只在微信公众号中分享,大家没关注的,赶紧关注哈。


每个月时间大致安排:

  • 上个月25号,公布DIY作品名称;

  • 每月1日公布作品功能点及所需要的功能模块链接;

  • 每月10日前绘制完模块配合的线路板;

  • 每月15日之前硬件搭建完毕,之后按模块撰写代码,调试,随时公众号更新进展;

  • 每月月底开源整个作品的源码和PCB工程文件。


题目选取原则:

  • 公众号每个月20日发起投票,25号截止,票数最多的作为下个月的DIY内容;

  • 投票的备选项大家可以后台留言给我,我会选出五种留言最多的作为选项;

  • 每个月的DIY内容尽量与上个月分享的文章有一定的相关度,起到温故知新的作用。


有什么想法或者建议,后台留言给我哈。





免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭