【STM32 Net MF开发板学习-14】红外遥控器编码识别

本文介绍了如何使用.NET Micro Framework开发板获取红外遥控信息,以驱动智能小车。通过简单的硬件电路,结合STM32,实现红外信号的接收与解码。程序通过比较按键特征来识别遥控器按键,绕过了解码红外遥控编码的难点。文章提供了底层代码和托管代码封装接口,以及一个键识别类,帮助用户识别按键。示例展示了如何使用IRController类并打印按键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

   一年前我写过一篇博文《自制电脑红外遥控接收器(PC软解码)》,文中介绍借助几个简单的器件通过PC串口,来获取红外遥控器的按键信息。现在我们已经学会了如何用PWM技术驱动智能小车(参见《PWM驱动智能小车),正好缺少一个遥控机制,所以本篇文章先介绍一下,.NET Micro Framework开发板如何获取红外遥控信息,下一篇文章将介绍用遥控器驱动智能小车相关实现细节。

    这次我们红外接收的硬件电路更为简单,仅需红外接收头、两个电阻,一个电容即可,其原理图如下:

 

   我所选取的具体器件型号如下:

 1100欧电阻

218K欧电阻

3、电容1040.1uF

4HS0038A红外接收头

    5、电压接入3.3v

    实际的器件连接图如下:

   

    以上是红外接收部分,至于红外发送,我想每个家庭基本上都会有电视遥控器(此外还有机顶盒遥控器,DVD遥控器、空调遥控器等等),我的想法是红外接收设备可以接收任何红外遥控器发出的按键信息,这样用户就不需要再采购相关的遥控器设备了。

 

但是非常困难的是,电视遥控器厂家不同,型号各异,其红外遥控编码更是千差万别,如果一一对其解码,不仅工作量巨大,并且实际操作上不甚可能,因为短时间内也无法获取这些遥控器进行解码测试。

遥控器所发送的功能指令码一般采用多位二进制串行码,其编码规律为:头脉冲、系统码、资料码、资料反码和结束位。头脉冲用做一帧命令的起始位;系统码用于区别不同类的电器;资料码用于完成命令功能。不过这仅仅是一般规律,对有些遥控器适用,对另一类就不适用。

所以综上,我还是借鉴了我一年前所写的那篇文章中的思想,采集红外遥控器的按键特征(高低电平持续时间的集合)来识别红外遥控器按键,这样就绕过了对红外遥控器进行解码的难点,程序只需要比对按键特征就可以识别红外按键(需要预先采集并存储按键特征)。

红外信号采集的底层代码如下:

void IR_GPIO_ISR( GPIO_PIN Pin, BOOL PinState, void* Param )

{

     if(!IR_RunFlag)

     {

        IR_RunFlag = TRUE;

             IR_Count = 0;

             IR_DataCount=0;

             IR_Index = 0;

             IR_Time[IR_Index]=0;

             IR_PinState = CPU_GPIO_GetPinState(IR_Pin);       

             CPU_TIMER_Start(IR_Timer);

     }

}

void IR_TIMER_ISR(void* param)

{

  if(++IR_Time[IR_Index]>100 || IR_Index>250)

  {

    CPU_TIMER_Stop(IR_Timer);   

         IR_RunFlag=FALSE; 

         IR_Count = IR_Index;

         if(IR_DataCount==0)

    {

       memcpy(IR_TimeData,IR_Time,IR_Count);

            //GenerateEvent(0xF1,IR_Count);  //产生事件

            IR_DataCount=IR_Count;

    }

         return;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值