基于STM32的智能空调遥控器——主控代码端实现

代码实现框架

在本次智能遥控器的程序设计中,对格力空调控制采用对格力空调遥控器控制红外码进行解码来对格力空调进行控制的思路,对新的红外控制信号采用红外接收-->主控进入中断程序-->数据写入flash进行编号存储-->调用已存数据进行红外信号的再现或修改-->发送红外信号为主要的设计思路。

如下为设备学习其他红外控制码并存储到自身的flash存储区的框架设计。

红外接收存储

本红外收发设备使用自主设计的红外接收电路。当运行函数Re_Record_On()时使能定时器初始化引脚。每当红外接收电路接收到红外信号则触发单片机的定时器4中断来将接收到的信号传递至单片机。捕获思路是当捕获到下降沿时开始记录持续时间,并将触发捕获的方式改为上升沿捕获,并记录持续时间,一直循环往复。而后通过函数Re_Record_Save()函数来将所接收到的红外信息存储至flash中。所接收到的红外数据以高电平持续时间和低电平持续时间的形式存于单片机的flash中(单位为us)。具体的实现方式为,定义一个全局变量data[350]来记录红外高低电平的持续时间,将所接收到的红外信号的高低电平持续时间依次写入data。此时data的作用为缓冲数组。当用户需要调用存储的数据时则可使用Re_Record_Get()函数来进行信息的传递。如下图所示为部分输入捕获代码函数定义:

红外发射控制

对于格力空调控制,我们进行对应的解码,可直接上电运行来控制格力空调,无需外部学习存储。如下为部分解码函数定义:

对于外部学习的红外控制信号,单片机接收到的后红外数据无一例外地都事先编号后存储于Flash中,用户需要对数据进行调用查看的时候只需要访问FLASH的地址即可。用户可使用Re_Record_Get()函数来调用数据。得到指定的数据之后在主程序里通过运行TR_SendTimeData(u16 * pBuffer, u16 sta)可以通过IO口输出特定的电信号,发射红外信号时,以38kHz的载波频率发射,即使用PWM来产生38kHz的载波频率。此外,该系统还提供了标准的NEC格式的另一种发射方式。用户可使用TR_SendData(u32 data)函数发送标准NEC格式的32位数据,数据可以随意指定。发射控制的部分代码如下图所示:

按键交互

单片机在接收到红外信号后提前进行flash的初始化Save_Init(),而后在中断子程序中将数据写入“按键值与偏移量的和”所指向的flash位置中。当用户对数据进行查看、调用、修改的时候,首先要通过key_scan1()扫描并返回按键值与偏移量相加后得到数据在flash中存储的位置信息,而后调用Re_Record_Get()来获取该位置的红外信息。而后用户即可修改该红外数据。此外,该红外收发设备通过IIC驱动oled,在数据传递至oled后用户可以在oled显示屏上查看该指定的已存信息。同时,对访问到的码值对应位对应的高低电平持续时间进行修改以实现对不同码值的实现,从而实现对不同设备不同模式的切换,完成按键与存储空间码值的匹配。如下图所示为部分红外信号处理函数定义:

存储数据查看

在单片机将数据学习,记录到flash区后,进入到的查看模式可对特定区域存储的控制信号的码值,即一段高电平和低电平持续时间的记录,用户可以在特定的区域查看自己存入的信号是否正确。

如下图所示为查看控制信号电平时间。(由于拍摄问题,高低电平横线显示不全)

小结

本次智能遥控器项目成功实现了红外信号的学习、存储及发射功能。通过自主设计的红外接收电路和单片机定时器中断,我们能够精确捕获并记录来自各种设备的红外控制信号,并将其保存至Flash存储器中。对于特定品牌如格力空调,我们直接实现了控制协议的解码与执行;而对于其他设备,则提供了灵活的数据调用和自定义发射选项。

在用户交互方面,我们利用按键操作结合OLED显示屏,让用户可以方便地查看、编辑已存储的红外信号数据,确保了良好的用户体验。此外,采用38kHz载波频率的PWM技术保证了红外信号发射的质量和兼容性。

源代码下载

源码放在gitte仓库,有需要自取。

https://gitee.com/liu-jixwa/mytest/tree/master/%E7%BA%A2%E5%A4%96%E9%81%A5%E6%8E%A7%E5%99%A8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值