本文由RT-Thread论坛用户14510690原创发布:https://club.rt-thread.org/ask/article/2893.html

柿饼派实现红外红控制

  • 突发奇想,柿饼派如果可以控制红外设备,是不是很方便,但是发现只有空调控制UI界面,没有输出设备,感觉缺少点什么,动手干!
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxFIbjaN-1626836602196)(https://oss-club.rt-thread.org/uploads/20210719/ccada94f68b473ec79d45a29665019a0.png)]

  • 查阅资料发现,柿饼派只剩下一个引脚,PE10了,这个引脚还不支持PWM,苍天啊,大地呀,不会这样子吧。

  • 不死心,再找找,看到市面有种手机通过耳机孔实现红外控制,觉得挺神奇,查阅资料发现,原来是音频模拟发射38k载波。

  • 能否通过我们的柿饼派喇叭输出口外接一个0.1元的红外发射二极管。

  • 详细实现过程,及代码见第二季,你的点赞是我的动力…

柿饼派实现红外红控制第二季

38K载波实现方法

  • 下图是常见的红外遥控NEC协议,比较关心的是560us那段38K载波的实现。每个脉冲是一个560us长的38kHz载波脉冲(大约21个周期)。一个逻辑“1”需要2.25毫秒来传输,而一个逻辑“0”只需要一半的时间,即1.125毫秒。建议载波占空比为1/4或1/3。
  • 分析有几个因素注意。
  • 1 因为红外载波频率38K,理论上要求采样率至少是38K的2倍76k,查阅资料,发现柿饼M3的DAC支持的采样率8k-192k。为了保证效果,选择192K采样率。或许会好奇地小伙伴问,为什么不配置标准的38K的整倍数采样率呢?其实我也想啊,但这是个CODEC,寄存器只有4BIT配置,只有16种固定好的采样率,供我们选配而已。为了保证输出红外发射足够的距离,将音量配置99。虽然这样做有点夸张。配置DAC的代码如下所示。
    struct rt_audio_caps caps = {0};snd = rt_device_find("sound0");rt_device_open(snd, RT_DEVICE_FLAG_WRONLY);/* 设置采样率、通道、采样位数等音频参数信息 */caps.main_type               = AUDIO_TYPE_OUTPUT;                           /* 输出类型(播放设备 )*/caps.sub_type                = AUDIO_DSP_PARAM;                             /* 设置所有音频参数信息 */caps.udata.config.samplerate = 192000;    /* 采样率 */caps.udata.config.channels   = 1;         /* 采样通道 */caps.udata.config.samplebits = 16;                                          /* 采样位数 */rt_device_control(snd, AUDIO_CTL_CONFIGURE, &caps);caps.main_type = AUDIO_TYPE_MIXER;caps.sub_type  = AUDIO_MIXER_VOLUME;caps.udata.value = 99;rt_device_control(snd, AUDIO_CTL_CONFIGURE, &caps);
  • 2 载波的560us时间长度计算方法。目前采用了192k采样率,也就是1ms内有192个采样点,很容理解吧?那么560us就是0.56ms,算了一下, 192*0.56=107大约有107个采样点,192k/38k=5.052631...,大约是5倍左右的样子,表示大约5个采样点表示38k载波的一个周期。于是定义一个数组,并且赋值32767,-32768,因为这样的数值可以使DAC可以输出比较陡峭的方波,最后通过rt_device_write写入soud0设备中,大约重复写入107/5=21次,每个脉冲是一个560us长的38kHz载波脉冲(大约21个周期)。即可实现长度560us的载波了,是不是很简单?
int16_t pcm[5]={32767,32767,32767,-32768,-32768};
for(int i=0, i<21; i++)
{rt_device_write(snd, 0, pcm, sizeof(pcm));
}
  • 3 逻辑1之后大约有2.25-0.56=1.69ms空载波区,意思这部分时间段没有发送38k载波,怎么实现呢,很简单,写入‘0’就可以了。实现代码如下。
int16_t pcm[5]={0,0,0,0,0};
for(int i=0, i<21; i++)
{rt_device_write(snd, 0, pcm, sizeof(pcm));
}
  • 4 输出的波形,细心的小伙伴发现没有,空载波区电平1/2电压,这样有个好处,红外LED不分正负极啦。是不是很方便呢?

  • 5 目前的测试是在海尔空调测试的,如果小伙伴比较关心海尔空调的协议,请你留言告诉我。我会更新一下这部分的实现方法以及代码。
  • 6 如果小伙伴这个红外控制不想写代码实现,其实还有个简单的办法,我们可以制作一个wav文件,比如命名turn_on_25.wav,turn_off.wav,使用wavplayer播放,这样就可以0代码实现控制空调了。是不是感觉很酷?
  • 7 实操测试的视频。顺便告诉大家,柿饼派M3加入激动人心的语音识别啦,离线控制空调了,如果小伙伴需要关心语音这方面的情况,那请你给我点个赞吧!你的点赞是我更新第三季的动力哦!:https://club.rt-thread.org/ask/article/2893.html

https://m.bilibili.com/video/BV1iV411H7AX?p=1&share_medium=android&share_plat=android&share_source=WEIXIN&share_tag=s_i&timestamp=1626798009&unique_k=3lC8MB

0.1元成本柿饼派实现红外控制空调了相关推荐

  1. 【奇思妙想】0.1元成本柿饼派实现红外控制空调了

    柿饼派实现红外红控制 突发奇想,柿饼派如果可以控制红外设备是不是很方便?遗憾的发现空调的UI界面,没有红外输出控制设备的能力,于是决定自己动手实现! 查阅资料发现,柿饼派只剩下一个引脚,PE10了,这 ...

  2. IRremoteESP8266库 红外控制空调方法

    笔者最近在学习使用esp8266控制空调,其控制方法有如下三种,各方法均验证成功. 下载安装IRremoteESP8266 想要通过ESP8266控制空调,首先需要下载安装库,具体方法请读者自行查阅. ...

  3. 三家快递公司涨派费:9月1日起每票上调0.1元

    昨日,据媒体报道,从9月1日起,申通.圆通两家公司全网派费将上调0.1元/票.前一天,中通也发布了同样的规定. 为保障这一派费的上调能直接进入快递员手中,申通快递表示,严令网点必须严格贯彻落实政策,不 ...

  4. 【RW007系列综合实战3】柿饼派上怎样更新RW007固件和驱动?

    前面已经分享过部分关于 RW007 模块如何更新的带 BLE 功能的方法,这里也再次分享一下在柿饼派上怎样更新 RW007 固件和更新 RW007 的驱动,并且测试 RW007 的 BLE 功能. 步 ...

  5. “柿饼派”免费体验名单公布!

    本周三,我们上线了柿饼派免费体验活动~经过了两天的严谨筛选,最终入围名单出炉啦!让我们恭喜下面15位小伙伴,获得体验资格! Congratulations 免费体验名单 请以上获得体验资格的童鞋加 & ...

  6. 如何在柿饼派中用mqtt接收数据并进行解析

    如何在柿饼派中用mqtt接收数据并进行解析 1.json数据 {"name":"fyywhy","date":"2021-09-0 ...

  7. WIFI手机将登陆上海 打国际长途每分钟0.3元

    来源:新闻晨报(06/04/04 08:29) □晨报记者 徐斌忠 陈杰 手机也能打网络电话(VoIP,voice over internet protocol的缩写,即基于IP协议的语音通信),而且 ...

  8. 徐登科浅谈币圈:从口罩现在只需0.9元/只,看看机会变成陷阱最短需要多久呢?

    前言:说什么能够预测行情,那都是鬼话连篇,鬼知道下一秒有没有个任性的庄家来个拉升砸盘啥的.行情造不造,上帝都不敢打包票!我一直倡导的是科学的投资理念,所有的分析都建立在科学的基础上,杜绝人为幻想.投资 ...

  9. RT-Thread 柿饼派M7 全志F133 ddr 运行xboot

    前言 最近拿到 RT-Thread 柿饼派M7的开发板,默认运行的是RT-Thread Persim OS,不过我把固件给擦除了,无法开机了,所以先从最基本的启动下手 开发板板子SDEMMC,也就是板 ...

最新文章

  1. 快速排序(快排)--->注释超详细
  2. androidstudio环境配置常见问题解决
  3. 嵌入式开发常用工具软件
  4. cookies与session
  5. 分布式系统面试 - 常见问题
  6. 维珍银河创始人布兰森成功进入太空 早于贝佐斯9天
  7. MySQL The JSON Data Type(JSON格式数据)
  8. php中背景图怎么设置不重复,css 图像不重复怎么设置
  9. 使用内部(com.android.internal)和隐藏(@hide)API手记
  10. 程序员之道——编程也是一门艺术
  11. 发布Android程式步骤
  12. [转载]使用Response.Filter过滤非法词汇
  13. 轻量却超强——推荐几款好用的截图工具(1) FScapture
  14. html有多少种居中方式,html常用的几种居中方法
  15. java击鼓传花游戏list_击鼓传花游戏作文集合15篇
  16. PAT 乙级 1055  集体照
  17. 显卡虚拟化--最强实践
  18. 【光学】基于matlab相互垂直的光波叠加仿真【含Matlab源码 2071期】
  19. 【J】BeanCreationException: Error creating bean with name 'shiroFilter' defined in class path resource
  20. FME助力新型基础测绘之存量测绘成果数据转换地理实体

热门文章

  1. 蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
  2. oracle 远程访问配置,C#教程之Oracle 远程访问配置
  3. python文件的两种编译方法
  4. Python .pyc的编译和反编译
  5. python编写hello程序_python第一个程序“Hello, world”
  6. 编写java程序计算梯形面积_【Java】编写一个应用程序计算梯形和圆形的面积。...
  7. 一线PPT制作理论——简洁电磁环境构建
  8. 福大软工 · 第十次作业 - 项目测评(团队)
  9. 宝哥哔哔|去中心化借贷协议Trister‘s Lend主网已经上线全面内测已经开始!
  10. ubuntu18.04系统安装WiFi适配器驱动