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

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

3天内不再提示

使用红外发射模块自制空调遥控器

CHANBAEK 来源:嵌入式大本营 作者:小小飞飞哥 2023-05-23 15:43 次阅读

我们家里的空调、电视等,它们的遥控器都是通过红外信号来控制的。 其实,我们可以自己用红外发射模块来做一个遥控器。

关于红外的知识,大家可以参考我之前的文章,这里就不再赘述了。

要自己实现红外遥控器的功能,思路其实很简单,首先,我们需要知道原来遥控器发射的信号是怎么样的,然后我们只要用红外发射模块发射一个一模一样的信号就行了。

实验器材准备:

红外接收模块、红外发射模块、逻辑分析仪。

一、获取遥控器的波形

我们使用红外接收模块,连上逻辑分析仪,然后使用空调遥控器对着红外接收模块发射信号,这时逻辑分析仪就采集到了红外信号。 这一部分不需要什么代码。

这是我用逻辑分析仪采集到格力空调按下“打开”按钮时的波形。

图片

分析一下波形,可以知道,先是有一段约9ms的低电平,然后是4.5ms的高电平,再是一段0 1构成的序列,中间是20.5ms的高电平,再经过一段序列结束。

那些序列就是真正的信号,里面有控制空调的相关信息,当然,不同的空调肯定是不一样的,这是厂家定义的。

二、用单片机产生红外信号

知道了遥控器发射的波形,我们不需要去理解它是什么含义,只要照着来发射一段相同的波形,就能实现功能。

这里就是要稍微注意一下红外信号的特点,这在我之前的文章里有详细讲过,这里再说一下:

对于红外信号来说,当你发射一段脉冲时(脉冲频率通常是38khz),红外接收端收到的是低电平,否则,收到的是高电平。

也就是说,你如果希望接收端收到的是低电平,你不是要发射低电平,而是发射一段脉冲。 比如上面最开始是9ms的低电平,那么你需要发射一段持续9ms的脉冲。

还有就是逻辑0是一段低电平加上一段不长的高电平,逻辑1是一段低电平加上一段较长的高电平。 在这里,0是0.62ms低电平+0.56ms高电平,1是0.65ms低电平+1.7ms高电平。

首先我们把上面的序列保存在数组里面,因为中间有一段较长的高电平时间,所以把它分成两段来保存。

char open_1[]={1,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0};
char open_2[]={1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1};
char close_1[]={1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0};
char close_2[]={1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0};

然后我们把发送逻辑1或者逻辑0封装成函数

//发送红外格式的1或者0。1:0.65ms高电平+1.67ms低电平   0:0.56ms低电平+0.55ms高电平
void sendData(int n)
{
  if(n==0)
  {
    endcount=t(650-100);           //理论计算与实际有偏差,需要进行一定的修正
    flag=1;         //表示需要发送低电平,体现为一段脉冲
    count=0;
    while(count

把发送一段长时间的高电平或者低电平封装成函数

//发送普通的电平,电平1或者电平0,第二个参数是由上面的宏定义得到
void sendUsrLevel(int level,int t)
{
  endcount=t;
  count=0;
  if(level==0)
  {
    flag=1;
  }
  else{
    flag=0;
  }
  while(count

最后调用上面的函数把控制空调的信号发射出去

//控制空调的开或者关,0:关闭空调,1:开启空调
void ControlAirConditioner(int cmd)
{
  char len=0;
  sendUsrLevel(0,t(9000-600));    //理论计算与实际有偏差,需要进行一定的修正
  sendUsrLevel(1,t(4500-350));
  if(cmd==0)   //关闭空调
  {
    len=sizeof(open_1)/sizeof(open_1[0]);
    for(int i=0;i

在main函数中进行调用,通过按键来控制空调的开或者关

int main()
{
  u8 i,ret=0;
  count = 0;
  flag = 0;
  OP = 0;
  IR_OUT = 1;
  SysTick_Init(72);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
  LED_Init();
  KEY_Init();
  TIM4_Init(13,72-1);  //定时13us



  while(1)
  {
    i++;
    if(i%20==0)
    {
      led1=!led1;
    }
//    delay_ms(1000);  

    ret=KEY_Scan(0);
    if(ret==KEY_LEFT)
    {
      ControlAirConditioner(1);      //开空调
//      sendUsrLevel(0,t(9000));
//      sendUsrLevel(1,t(4500));
    }
    if(ret==KEY_RIGHT)
    {
      ControlAirConditioner(0);       //关空调
    }
  }
}

经过实际测试,确实可以控制我们的空调。

总的来说,思路比较简单,就是捕获遥控器的信号,这个作为标准信号,然后使用红外发射模块发射一个和他一样的信号,另外就是这个需要使用逻辑分析仪去好好分析你实际产生的波形和标准波形的偏差,理论计算与实际难免有误差。

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

    关注

    6001

    文章

    43973

    浏览量

    620854
  • 模块
    +关注

    关注

    7

    文章

    2484

    浏览量

    46530
  • 空调
    +关注

    关注

    11

    文章

    1185

    浏览量

    58110
  • 信号
    +关注

    关注

    11

    文章

    2640

    浏览量

    75388
  • 遥控器
    +关注

    关注

    18

    文章

    815

    浏览量

    64246
收藏 人收藏

    评论

    相关推荐

    红外遥控器DIY自制

    自制一个电脑遥控接收器,是非常容易的。我们制作的电脑遥控器必须使用红外方式的红外遥控器(不能是射
    发表于 12-22 15:46 2.3w次阅读

    自制红外遥控器

    想用51单片机自制一个红外遥控器,望各位学长不吝赐教!
    发表于 10-29 13:22

    红外遥控器

    我们有个实训是这样要求的:题目是:红外遥控器功能描述:在发送电路中按不同的键,则接收电路对应的指示LED亮所用电路模块:CPU模块,点阵LED模块
    发表于 05-24 07:54

    格力空调y502k遥控器怎么写代码

    求大神指点格力空调y502k遥控器发射程序编写。我们想自己通过红外发射通过52单片机编程控制空调
    发表于 08-17 19:50

    智能遥控器 红外发射接收系统

    完成了项目,本智能红外遥控器可以对16个键的红外信号学习和发射,同时还做了第二功能键,对两个不同遥控器的键可以学习后同时发出,比如电视机和机
    发表于 04-25 22:36

    春泉云遥控器CYK200空调智能遥控器手机远程遥控开关

    的最佳选择,适用于住宅、企事业单位、公共建筑、办公楼等分体空调(包括挂机和柜机),可直接替代普通遥控器,为您提供方便快捷的空调智能节能管理。  云遥控器由云控
    发表于 06-23 16:23

    关于万能空调遥控器的制作

    网上买了一个带空调码库的学习型红外遥控器模块,请问一下实现将它做成万能空调遥控器需要哪样的步骤。
    发表于 08-02 10:33

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

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

    手机红外空调遥控器DIY制作

    里,能不能用手机作为遥控器来开空调呢?答案当然是肯定的,有些智能手机本身就会标配有红外发射器,那么只需要下载相应的空调
    发表于 07-10 00:31

    请问有红外遥控器发射原理图吗?

    红外遥控器发射原理图
    发表于 10-29 23:22

    如何自制一款功能固定的红外遥控器

    如题现有自带红外遥控器的家庭影院音响一套,想应用在酒店场景中,即插卡上电以后,音响自动打开并播放。由于音响本身上电以后保持待机状态,必须要通过遥控开关或者主机开关按钮才能是开机状态。因此想自制
    发表于 01-10 15:51

    如何用普通遥控器遥控电脑

    ,一般的电视机遥控器即可,售价在十几元。注意,不要使用空调遥控器,尽管它也是红外发射的,但是每次按键后,它都会把
    发表于 04-27 07:40

    红外遥控器模块+红外测试代码

    红外遥控器模块+红外测试代码,不错的资料。
    发表于 11-10 11:04 42次下载

    Remote红外遥控器

    派-Remote红外遥控开源硬件,快速方便控制你的空调~ 概述 小安派-Remote具有2.4寸液晶显示模块、电池电量检测模块、离线语音
    的头像 发表于 08-28 16:21 598次阅读

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

    如何提高红外线发射管在遥控器上的发射距离  遥控器成为了我们日常生活中不可或缺的一部分,我们通过遥控器
    的头像 发表于 01-31 14:47 582次阅读