准备工作:

(1)红外线接收管 IR receiver
(2)红外线发射灯 IR transmitter
(3)STM32控制板
(4)面包线 Jumper cables
(5)空调/TV遥控器

硬件

1、 模块
IR发射管VCC,GND,DATA; IR接受管VCC,GND,DATA;

软件

为验证红外录制其录制可靠,先尝试录制大信号;
录制条件:
1、 录制过程循环捕捉PIN上电平;
2、 红外脉宽计算的时基必须可靠;
3、 数据类型溢出处理;
4、 避免外部红外信号干扰;

以下代码在小米电视/美的空调上测试成功,先录制,然后播放,可以正确识别。

部分代码

uint32_t micros(void)
{uint16_t m,t;uint32_t dat;//disableInterrupts();m = T2_overflow;t = TIM_GetCounter(TIM2);//250us irq//enableInterrupts();dat = (uint32_t)m * 250 + t;return dat;
}void custom_delay_usec(unsigned long uSecs) {if (uSecs > 4) {unsigned long start = micros();unsigned long endMicros = start + uSecs - 4;
//      Printf("endMicros = %d\tstart = %d\r\n",endMicros,start);if (endMicros < start) { // Check if overflowwhile ( micros() > start ) {} // wait until overflow}while ( micros() < endMicros ) {} // normal wait}
}
#ifdef IRremote_TX//如果处于播放状态 if(isPlay) {Printf("startPlaying\r\n");LED2_ON;//串口和指示灯示意播放中//信号长度u32 times = IR_loc_ON;u8 i = 0;//播放数组中的信息,由于第0位是高电平(暨没有收到信号)长度,所以舍去不播放for(i = 0; i < times; i++) {if( 0 == (i & 0x01) ) {//奇数位为红外接收头低电平=红外发射头高电平TIM_Cmd(TIM3, ENABLE); custom_delay_usec(IR_res_key_1[i]);TIM_GenerateEvent(TIM3, TIM_EventSource_Update);TIM_Cmd(TIM3, DISABLE);} else//偶数位为不发射{custom_delay_usec(IR_res_key_1[i]);}}isPlay = 0;//每次发射中间应该有间隔IWDG_Feed();delay(900);LED2_OFF;//关闭指示灯}#endif#ifdef IRremote_RX//如果处于录制状态 while(isRecord){if ( (0 == GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_4) ) ){SysTime_buf = micros();LED2_ON;#if 1while(1){if ( Ir_Status != ( GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_4) ) ){//等待脉冲信号改变currentTime = micros();//SysTime_us if ( currentTime > previousTime )cycleTime = currentTime - previousTime;//计算时长elsecycleTime = 0xffffffff - previousTime + currentTime ;//计算时长previousTime = currentTime;//记录起点 GetSysTime(); //ms                    Ir_Status = ( (!Ir_Status) & 0x01 );//状态改变,下一次检测相反状态IR_res[IR_loc1++] = cycleTime;//将结果存入buffer}if((micros() - SysTime_buf> 200000) /*&& IR_loc1>100*/) {//如果超时没有记录到新信息,且已经收集到有效信息,则记录结束for( int i = 1; i<IR_loc1; i++) {//在串口打印输出的信息,因为IO很慢很浪费时间,所以放在信息采集完之后进行,否则会很大程度影响采集到的信息的准确度Printf("%d\t,",IR_res[i]);DelayMs(100);IWDG_Feed();}Printf("IR_loc1len = %d\r\n",IR_loc1);IR_loc = IR_loc1;IR_loc1=0;isRecord = 0;LED2_OFF;//关闭指示灯break;}}#else#endif}elseLED2_OFF;}

STM32 录制与播放空调/TV遥控器的红外信号相关推荐

  1. android手机红外代码HAL,手机红外遥控器发送红外信号到STM32【HAL库】

    现在大部分手机上都有红外遥控功能,而且好像大部分信号STM32都是可以收到的.现在就使用STM32发送红外信号,由STM32上的红外接收器接收后执行不同的操作.以下是注意事项: 在标准库中有  EXT ...

  2. 如何将您的智能手机用作Amazon Fire TV遥控器

    Lost your Amazon Fire TV remote again? Fear not, you can download a free app for your iPhone or Andr ...

  3. 如何检查Apple TV遥控器并为其充电

    The new 2015-edition Apple TV features a brand new remote with a new battery system and a new way to ...

  4. Android录制和播放PCM数据

    PCM是android系统中的原生音频数据,那么我们如何录制和播放这个格式的byte[]数据呢? 录制 录制很简单,使用AudioRecord,注意read前一定要先startRecording va ...

  5. 浅析webrtc中音频的录制和播放流程

    前言 本文是基于PineAppRtc项目https://github.com/thfhongfeng/PineAppRtc) 在webrtc中音频的录制和播放都是封装在内部,一般情况下我们也不需要关注 ...

  6. iOS AudioQueue实现音频的录制和播放(附Demo)

    #基于AudioQueue实现音频的录制和播放 文章目录 背景 总览 Audio Queue 架构 AudioQueueBuffer数据结构 创建 AudioQueueBuffer 释放 AudioQ ...

  7. 取回Apple TV遥控器的D-Pad

    The trackpad on the Apple TV's Siri Remote is frustrating to use at best, but there are several ways ...

  8. 音视频的流程:录制、播放、编码解码、上传下载等

    仿网易云音乐 安卓版-- https://github.com/aa112901/remusic Android本地视频播放器开发- http://blog.csdn.NET/jwzhangjie/a ...

  9. 树莓派 音频本地的录制与播放、远程音频直播

    树莓派4B有两个HDMI和一个3.5mm的音频输出口,默认是自动选择输出口进行播放音乐.录制和播放可直接使用alas系统的arecord和aplay工具.远程直播使用nc以及ffmpeg进行测试. 1 ...

最新文章

  1. cas java web,CAS干单点登陆(SSO)——集成Java Web 项目
  2. 实验4 [bx]和loop的使用
  3. 查看ie保存的表单_解决浏览器保存密码自动填充问题
  4. 面进了心心念念的国企!以为TM上岸了!干了1年!我却再次选择回到互联网大厂内卷!...
  5. STM32 I2C通信(读写eeprom)
  6. 《深度学习笔记》——线性代数基础
  7. php bc 比较,php BC高精确度函数库
  8. python是什么类型的编程语言-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  9. 【cf:1100F】 Ivan and Burgers(多次区间最大异或值查询----线性基+离线+思维)
  10. MTK GPS问题调试
  11. 4、【办公自动化】Python实现Word转PDF
  12. 解决Adobe Illustrator CS5启动后自动关闭的问题
  13. msl3等级烘烤时间_湿敏等级MSL Moisture sensitivity levels Classifications
  14. 基于STM32+华为云IOT设计的云平台监控系统
  15. MD5校验文件完整性
  16. 行锁、间隙锁、next-key锁
  17. 一个中科大差生,8 年程序员生涯感悟(强烈推荐)
  18. Windows下搭建ant+jenkins+jmeter自动化接口测试框架(详细篇)
  19. 计算机实验adda转换心得体会,dsp实验ADDA
  20. 使用 Shell 脚本自动化 Linux 系统维护任务

热门文章

  1. wifi可以用,但是电脑连接出现无互联网情况
  2. KDD Cup'99 数据熟悉和特征分析
  3. js把两个对象合并成一个对象
  4. 吃鸡买个自定义服务器,绝地求生自定义服务器怎么玩 自定义服务器使用说明...
  5. swarm mysql集群_Docker Swarm集群搭建教程
  6. 小红书用户画像分析_数据分析中的用户画像,原来就是这么简单
  7. 树莓派系统搭载arduino单片机 打开双目摄像头
  8. WPS表格 - 根据日期,快速计算出是星期几
  9. double在c语言的运用实例,C语言double和float 实例分析
  10. 根据线性回归模型预测儿童身高