找回密码
 立即注册
查看: 539|回复: 8

红外解码(TCL 空调)

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-20 14:43:12
已绑定手机

1

主题

1

回帖

25

积分

新手上路

积分
25
发表于 2024-12-18 11:40:31 | 显示全部楼层 |阅读模式

upload 附件:红外遥控器.zip## 项目简介

TCL空调遥控器

项目功能

简单完成一款能够实现学习的空调遥控器

硬件所需

  • 打样并完成焊接。
  • 逻辑分析仪+若干杜邦线

软件编写

  • 首先根据将开发板直接供电并通过逻辑分析仪获取到红外接收输出的红外协议。
    • 假定我的空调是TCL ,此时我需要学习或者使用它来做到控制空调简单的开关。
    • 我们需要用逻辑分析仪器抓取它收到的协议,空调遥控器也好,手机万能遥控也好,只要是可以正常的控制空调的都行,逻辑分析仪设置为下降边沿捕获,最后分析协议的特点进行编程。
  • 根据捕获的协议编写发送的协议,低电平一般表示的就是38Khz 的载波,高电平呢就表示当时为空闲。

使用逻辑分析仪器抓取的协议如下图 例:

ba6d436f06a54abd95435754a3b88a44.png

以TCL 空调为例子,它的协议和NEC 的协议就有略微的不同,它具有14 位数据,接收管接收的数据开始码是3150us 的低电平和1600us 的高电平,0和1 的区分是采用脉冲位置调制(PPM),通过脉冲之间的时间间隔来区分“0”和“1”,0的脉冲间隔是1150us,1的脉冲间隔是450us。

  • 接收代码如下。

    void Get_Infrared_Code(uint8_t *buf)
    {
    	uint8_t data_bits=0,timer_10us=0;
    	while(1)
    	{
    		if(P22==1)
    		{
    			if(timer_10us<255)
    				timer_10us++;
    		}else
    		{
    
    			buf[data_bits/8]&=~(0x01<<(data_bits%8));
    			if(timer_10us<70)
    				buf[data_bits/8]|=(0x01<<(data_bits%8));
    
    			if(timer_10us>140)
    				data_bits=0;
    			else
    				data_bits++;
    			timer_10us=0;
    			while(P22==0);
    		}
    		if(data_bits==112)
    			break;
    		Delay10us();
    	}
    }
    
  • 发送代码如下,其中延时均通过stc下载软件生成,并通过逻辑分析仪校准查看过,使用的系统时钟为33.1766MHz:

void start2(void)
{
	uint8_t i=0;
	for(i=0;i<239;i++)
	{
		Delay13us();
		P03=~P03;
	}
	P03=0;
	Delay1600us();
}

void send_38k(void)
{
	uint8_t i=0;
	for(i=0;i<34;i++)
	{
		Delay13us();
		P03=~P03;
	}
	P03=0;
}

void send_IR_Ctl(uint8_t *buf)
{
	uint8_t i=0,j=0,tp;
	start2();
	for(i=0;i<14;i++)
	{
			tp=buf[i];
			for(j=0;j<8;j++)
			{
				send_38k();
				if(tp&0x01)
				{
					Delay450us();
				}else
				{
					Delay1150us();
				}
				tp>>=1;
			}
	}
	send_38k();
}
  • 主函数功能实现
void main(void)
{
	uint8_t tp=0;
	uint8_t mode=0;
	uint8_t buf[14];
	char xdata show[29];
	WTST = 0; 
	EAXSFR(); 
	CKCON = 0; 

	P0M0 = 0x00; P0M1 = 0x00; 
    P1M0 = 0x00; P1M1 = 0x00; 
    P2M0 = 0x00; P2M1 = 0x04; 
    P3M0 = 0x00; P3M1 = 0x00; 
    P4M0 = 0x00; P4M1 = 0x00; 
    P5M0 = 0x00; P5M1 = 0x00; 
    P6M0 = 0x00; P6M1 = 0x00; 
    P7M0 = 0x00; P7M1 = 0x00; 


	I2CCFG = 0xc2;  
	I2CPSCR = 0x00; //MSSPEED[13:6]
	I2CMSST = 0x00;
	OLED_Init();
	OLED_ShowString(0,0,"state:Rx",16);
	Get_Infrared_Code(&buf);
	my_sprintf(show,buf,14);
	OLED_ShowString(0,2,show,16);
	Delay100ms();
	OLED_ShowString(0,0,"state:Rx",16);
	while(1)
	{
		if(P32==0)
		{
			send_IR_Ctl(&buf);
		}
	}
}

验证功能

  1. 开机显示 state:Rx,说明设备进入学习功能模式了。

c84eb0a61f814285a89e2233cc290d7e.jpg

  1. 使用TCL空调遥控器或者红米手机中的我万能遥控功能对着接收管按下按键.此时OLED 会显示出接收到的红外码。

470e5137c0084afe9a697851f48bc176.jpg

  1. 按下确认按键可以发送刚才收到的红外编码
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 2024-12-18 15:40:21 | 显示全部楼层
能够储存多少组空调命令?

如果能解析出模式、温度、风速等信息就好了
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-20 14:43:12
已绑定手机

1

主题

1

回帖

25

积分

新手上路

积分
25
发表于 2024-12-18 17:21:28 | 显示全部楼层
VC*** 发表于 2024-12-18 15:40
能够储存多少组空调命令?

如果能解析出模式、温度、风速等信息就好了

可以通过带红外的手机上对照着查看,必须用手机一直切换模式,那么变化的那位自然就是表示着模式了。这些信息基本可以解析出来。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:108
  • 最近打卡:2025-04-28 08:34:00
已绑定手机

5

主题

118

回帖

674

积分

高级会员

积分
674
发表于 2025-1-4 08:25:20 | 显示全部楼层
高级软件工程师-唐工
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:167
  • 最近打卡:2025-05-02 15:27:34
已绑定手机

34

主题

171

回帖

1181

积分

金牌会员

积分
1181
发表于 2025-1-10 08:03:57 | 显示全部楼层
楼主威武,牛,学习
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:419
  • 最近打卡:2025-05-01 07:24:50

4

主题

511

回帖

1991

积分

金牌会员

积分
1991
发表于 2025-1-10 08:36:09 | 显示全部楼层
,向电视遥控一样,加给个学习功能
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-02 08:06:55
已绑定手机

1

主题

834

回帖

1447

积分

金牌会员

积分
1447
发表于 2025-1-10 09:11:04 | 显示全部楼层
很赞
靡不有初,鲜克有终
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-03-14 14:56:59

2

主题

69

回帖

410

积分

中级会员

积分
410
发表于 2025-1-10 10:14:20 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2025-05-02 09:38:13

109

主题

1900

回帖

5214

积分

论坛元老

积分
5214
发表于 2025-1-10 11:08:40 | 显示全部楼层
高手,真的是高手 !
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:10 , Processed in 1.246581 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表