0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

红外线简介 美的空调红外遥控器协议R05D说明

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-05-28 18:42 次阅读

1.红外线简介

光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。目前几乎所有的视频音频设备都可以通过红外遥控的方式进行遥控,比如电视机、空调、影碟机等,都可以见到红外遥控的影子。这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。

2.美的空调红外遥控器协议R05D

美的空调红外遥控器采用R05D格式,载波频率为38KHZ。
数据格式:引导码+48位数据+分隔码+48位数据(LAA’BB’CC’ S LAA’BB’CC’)

L为引导码;
ABC为实际数据,A’为A的反码,B’为B的反码,C’为C的反码;
S为分隔码;
第二帧数据和第一帧一样;
L引导码4.5ms低电平+4.5ms高电平(以解析方分析,编码方刚好相反,下面不再概述)

在这里插入图片描述

数据A:A为识别码(A=10110010=0xB2,预留方案时A=10110111=0xB7)

数据B

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

数据C

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

关机键值
  关机为固定编码键值:
  A=1011 0010 --0xB2
  B=0111 1011 --0x7B
  C=1110 0000 --0xE0

数据0格式

在这里插入图片描述

数据1格式

在这里插入图片描述

分隔码

在这里插入图片描述

完整时序图

在这里插入图片描述

3.软件设计

  本次采用外部中断+定时器方式完成红外数据解析。
  1.红外数据解析程序

/*********红外线初始化************
**
**REMOTE_IN --PB9
**
***********************************/
void HS0038_Init(void)
{
  RCC->APB2ENR|=1<<3;//PB
  GPIOB->CRH&=0xFFFFFF0F;
  GPIOB->CRH|=0x00000080;
  EXTI_Config(GPIO_B,9,EXTI_FTSR);//下将沿触发
  STM32_NVIC_SetPriority(EXTI9_5_IRQn,0,0);//设置优先级
  TIMx_Init(TIM1,72,65535);//定时器1初始化
}
/*************获取高电平时间****************/
u16 Infrared_GetTimeH(void)
{
  TIM1->CNT=0;//清空计数器值
  TIM1->CR1|=1<<0;
  while(REMOTE_IN);//等待引脚拉低
  TIM1->CR1&=~(1<<0);
  return TIM1->CNT;
}
/******************获取低电平时间**************/
u16 Infrared_GetTimeL(void)
{
  TIM1->CNT=0;//清空计数器值
  TIM1->CR1|=1<<0;
  while(REMOTE_IN==0);//等待引脚拉高
  TIM1->CR1&=~(1<<0);
  return TIM1->CNT;
}
//美的空调17~30℃数据顺序排放
const char r05d_temp[15]={0,1,3,2,6,7,5,4,12,13,9,8,10,11,14};//温度数据,17~30
u32 infrared_data=0;//保存解析的32位数据
u8 infrared_stat=0;//解析成功标志位
u8 infrared_buff[6]={0};
/*******EXTI5~9中断服务函数**********/
void EXTI9_5_IRQHandler(void)
{
  u16 time;
  u8 i=0,j=0;
  EXTI->PR|=1<<9;//清除标志位
  /*1.接收引导码:4.5ms低电平+4.5ms高电平*/
  time=Infrared_GetTimeL();
  if(time<=3500 || time>=5500)return;
  time=Infrared_GetTimeH();
  if(time<3500 || time>5500)return ;  
  for(i=0;i<6;i++)
  {
    for(j=0;j<8;j++)
    {
      time=Infrared_GetTimeL();//间隔码:540us低电平
      if(time<350 || time>650)return ;
      time=Infrared_GetTimeH();
      if(time>=1550 &&  time<=1850)
      {
        infrared_buff[i]<<=1;
        infrared_buff[i]|=0x01;
      }
      else if(time>=420 && time<=700)
      {
        infrared_buff[i]<<=1;
      }
     else return ;
    }
  }
  infrared_stat=1;//数据解析完成
}

2.主函数

int main()
{
  u8 i=0;
  u8 wind;
  u8 mode;
  u8 temp;
  Beep_Init();
  Led_Init();
  Key_Init();
  u8 data[6];
  Usartx_Init(USART1,115200,72);
  HS0038_Init();
  while(1)
  {
      if(infrared_stat==1)
      {
        BEEP=1;
        Delay_Ms(50);
        BEEP=0;
        for(i=0;i<6;i++)
        {
          if(data[i]!=infrared_buff[i])break;
        }
        if(i!=6)
        {
          for(i=0;i<6;i++)
          {
            data[i]=infrared_buff[i];
          }
          //printf("data:%#xrn",infrared_data);
          if(data[2]==0x7B && data[4]==0xE0)
          {
               printf("关机rn");
          }
          else if(data[2]==0x6b && data[4]==0xE0)
          {
            printf("左右扫风rn");
          }
          else if(data[0]==0xb5 && data[2]==0xf5)//其它
          {
            
          }
          else
          {
            wind=(data[2]>>5)&0x7;//风速
            mode=(data[4]>>2)&0x3;//模式
            temp=(data[4]>>4)&0xf;//温度
            //printf("风速:%drn",wind);
            //printf("模式:%drn",mode);
            //printf("温度:%#xrn",temp);
            if(wind==WIND_1)printf("自动,");
            else if(wind==WIND_2)printf("低风,");
            else if(wind==WIND_3)printf("中风,");
            else if(wind==WIND_4)printf("高风,");
            else if(wind==WIND_5)printf("固定风,");
            
            if(mode==MODE_1)printf("自动,");
            else if(mode==MODE_2)printf("制冷,");
            else if(mode==MODE_3 && temp==T_31)printf("送风,");
            else if(mode==MODE_3)printf("抽湿,");
            else if(MODE_4)printf("制热,");
            for(i=0;i<15;i++)
            {
              if(temp==r05d_temp[i])printf("温度:%drn",17+i);
            } 
          }
        }
        infrared_stat=0;
      }
  }
}
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center在这里插入图片描述


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 空调
    +关注

    关注

    11

    文章

    1236

    浏览量

    58682
  • STM32
    +关注

    关注

    2272

    文章

    10923

    浏览量

    357319
  • 美的
    +关注

    关注

    13

    文章

    469

    浏览量

    37666
  • 红外遥控器
    +关注

    关注

    3

    文章

    133

    浏览量

    21720
收藏 人收藏

    评论

    相关推荐

    想用stm32发射红外线控制寝室空调,但是不知道奥克斯空调遥控器 YKR-H/112 发出的红外线编码格式,有大神可以知道吗?

    初学者,想用stm32发射红外线控制寝室空调,但是不知道奥克斯空调遥控器 YKR-H/112遥控器发出的
    发表于 01-03 21:32

    红外线遥控器原理及编程 精选资料分享

    红外线遥控器内部有发射不同对应红外线信号的芯片,而其接收端则是一个光感二极管,该二极管可根据遥控器发射的红外线信号进行相应的电压改变,但是是
    发表于 07-21 09:22

    如何用R05D红外接收管对遥控器红外接收进行波形分析呢

    R05D红外协议的原理是什么?如何用R05D红外接收管对遥控器红外接收进行波形分析呢?
    发表于 02-15 07:18

    红外遥控器协议R05D具有哪些特性参数?

    红外遥控器协议R05D具有哪些特性参数?
    发表于 02-15 06:26

    红外线遥控器解码程序

    红外线遥控器解码程序 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线
    发表于 02-02 10:52 3182次阅读
    <b class='flag-5'>红外线</b><b class='flag-5'>遥控器</b>解码程序

    PC红外线遥控器

    PC红外线遥控器大家可以试一试哈,欢迎下载!
    发表于 12-10 16:16 7次下载

    PC红外线遥控器

    PC红外线遥控器,很好设计资料,快来学习吧。
    发表于 05-09 17:07 0次下载

    红外线遥控器电路原理图

    红外线遥控器电路原理图
    发表于 02-08 02:02 129次下载

    自制电脑红外线遥控器的详细资料说明

    本文档的主要内容详细介绍的是自制电脑红外线遥控器的详细资料说明
    发表于 11-28 08:00 11次下载
    自制电脑<b class='flag-5'>红外线</b><b class='flag-5'>遥控器</b>的详细资料<b class='flag-5'>说明</b>

    红外线的基本特性有哪些

    红外线技术是在近几十年发展起来的一门学科。红外线是一种十分丰富的波语{目前已在工业、农业、国防、日常生活、医疗卫生等多方面得到了广泛应用,例如红刊热、红外线治疗仪、红外线通信、金融保安
    的头像 发表于 02-13 17:40 4.1w次阅读

    【STM32】R05D电控红外协议美的空调遥控器

    2.R05D时序实现3.调用函数并验证一、设计思路通常红外遥控采用NEC传输协议,而美的空调采用
    发表于 12-17 17:46 22次下载
    【STM32】<b class='flag-5'>R05D</b>电控<b class='flag-5'>红外协议</b>的<b class='flag-5'>美的</b><b class='flag-5'>空调</b><b class='flag-5'>遥控器</b>

    STM32解析美的空调红外遥控器

    空调、影碟机等,都可以见到红外遥控的影子。这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。2.
    发表于 12-17 17:50 42次下载
    STM32解析<b class='flag-5'>美的</b><b class='flag-5'>空调</b><b class='flag-5'>红外</b><b class='flag-5'>遥控器</b>

    使用红外线遥控器可以随时打开电视

    电子发烧友网站提供《使用红外线遥控器可以随时打开电视.zip》资料免费下载
    发表于 12-23 17:49 1次下载
    使用<b class='flag-5'>红外线</b><b class='flag-5'>遥控器</b>可以随时打开电视

    红外线遥控器使用方法

    红外线遥控器是一种常见的电子设备,广泛应用于家庭、商业和工业领域。它可以通过红外线信号与相应的设备进行通信,实现控制和操作。本文将详细介绍红外线遥控
    的头像 发表于 12-20 11:31 5723次阅读

    如何提高红外线发射管在遥控器上的发射距离

    如何提高红外线发射管在遥控器上的发射距离  遥控器成为了我们日常生活中不可或缺的一部分,我们通过遥控器可以控制电视、空调、音响等大量设备。而
    的头像 发表于 01-31 14:47 3672次阅读