STM32-红外遥控控制原理与示例(源码)

一、简介:

          由于在B站上很多人私信我要红外遥控源码,因此本期出一期讲解,不会涉及很深入的理论讲解请放心享用,如果需要源码评论区留下邮箱,笔者看到第一时间会发送到指定邮箱。本章讲解红外收发原理以及实验,如有不对请大家指出改正。

二、传感器:

          市面上有很多红外收发模块,以及遥控器,遥控器里面也是内嵌一个红外发射模块哈,我们可以购买如下常见的传感器作为本次实验器件。

三、红外收发原理:

          3.1、 原理:

                      首先红外收发是基于NEC协议的,要知道它发送时是以38Khz的载波将数据发送出去的,为什么使用38Khz?因为38Khz不容易被干扰!,因此只需要将定时器调制成38Khz,然后按照NEC协议即可发送数据;那么接收呢?很简单接收的时候与发送是反相的电平,比如发送9ms高电平,那么接收的时候是9ms低电平;为什么是反相?这就跟NEC协议有关了,我们继续往下看。

          3.2、NEC协议:

                    3.2.1 简介:

                             NEC协议红外遥控通信中广泛使用的一种协议,通常使用38kHz的载波频率进行调制,它采用了反相逻辑,在传输过程中,逻辑‘1’可能对应于红外LED的关闭状态(即没有光发射),而逻辑‘0’则对应于开启状态(即有光发射),因此接收时反过来接收判断即可。

                     3.2.2 NEC协议帧:

                               协议帧内由几个重要的码制,如下图,后面的高低电平时间的组合就得到前面的码制,引导码就可以理解为帧头,重复码就是长按的时候命令的重复发送,而不重新发送完整的地址和命令数据。

                              ① 引导码:9ms的低电平+4.5ms的高电平

                              ② 重复码:9ms的低电平+2.25ms的高电平   

                              ③ 数据1:    560us的低电平+1680us的高电平

                              ④ 数据0:    560us的低电平+560us的高电平                            

                     3.2.3 NEC数据格式:

                               通过3.2.2学习我们知道了各种码制,可见下图,实际上结束码不存在图里面显化,这是因为结束码实际就是一个时间间隔,标志着一次完整消息的结束。这个高电平的时间长度可以更长,取决于控制器何时开始下一次传输。一帧完整的数据帧格式应由如下组成: 

五、代码实现:

          5.1、STM32红外发送逻辑:  

extern uint16_t cmt;


/************************************************************************** 
** -------------------------------------------------------------------- **
** @name          : ADVANCE_TIM_Mode_Config
** @brief         : None
** @param         : None
** @retval        : None
** @author data   : 轩哥	2023-05-15
** @attention     : None
** -------------------------------------------------------------------- **
**************************************************************************/

static void ADVANCE_TIM_Mode_Config(void)
{
    TIM_OCInitTypeDef  TIM_OCInitStructure;													//输出比较定时器结构体声明
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;									//定时器时基结构体声明

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);							// 开启定时器时钟,即内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值