0.1元成本柿饼派实现红外控制空调了
本文由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×tamp=1626798009&unique_k=3lC8MB
0.1元成本柿饼派实现红外控制空调了相关推荐
- 【奇思妙想】0.1元成本柿饼派实现红外控制空调了
柿饼派实现红外红控制 突发奇想,柿饼派如果可以控制红外设备是不是很方便?遗憾的发现空调的UI界面,没有红外输出控制设备的能力,于是决定自己动手实现! 查阅资料发现,柿饼派只剩下一个引脚,PE10了,这 ...
- IRremoteESP8266库 红外控制空调方法
笔者最近在学习使用esp8266控制空调,其控制方法有如下三种,各方法均验证成功. 下载安装IRremoteESP8266 想要通过ESP8266控制空调,首先需要下载安装库,具体方法请读者自行查阅. ...
- 三家快递公司涨派费:9月1日起每票上调0.1元
昨日,据媒体报道,从9月1日起,申通.圆通两家公司全网派费将上调0.1元/票.前一天,中通也发布了同样的规定. 为保障这一派费的上调能直接进入快递员手中,申通快递表示,严令网点必须严格贯彻落实政策,不 ...
- 【RW007系列综合实战3】柿饼派上怎样更新RW007固件和驱动?
前面已经分享过部分关于 RW007 模块如何更新的带 BLE 功能的方法,这里也再次分享一下在柿饼派上怎样更新 RW007 固件和更新 RW007 的驱动,并且测试 RW007 的 BLE 功能. 步 ...
- “柿饼派”免费体验名单公布!
本周三,我们上线了柿饼派免费体验活动~经过了两天的严谨筛选,最终入围名单出炉啦!让我们恭喜下面15位小伙伴,获得体验资格! Congratulations 免费体验名单 请以上获得体验资格的童鞋加 & ...
- 如何在柿饼派中用mqtt接收数据并进行解析
如何在柿饼派中用mqtt接收数据并进行解析 1.json数据 {"name":"fyywhy","date":"2021-09-0 ...
- WIFI手机将登陆上海 打国际长途每分钟0.3元
来源:新闻晨报(06/04/04 08:29) □晨报记者 徐斌忠 陈杰 手机也能打网络电话(VoIP,voice over internet protocol的缩写,即基于IP协议的语音通信),而且 ...
- 徐登科浅谈币圈:从口罩现在只需0.9元/只,看看机会变成陷阱最短需要多久呢?
前言:说什么能够预测行情,那都是鬼话连篇,鬼知道下一秒有没有个任性的庄家来个拉升砸盘啥的.行情造不造,上帝都不敢打包票!我一直倡导的是科学的投资理念,所有的分析都建立在科学的基础上,杜绝人为幻想.投资 ...
- RT-Thread 柿饼派M7 全志F133 ddr 运行xboot
前言 最近拿到 RT-Thread 柿饼派M7的开发板,默认运行的是RT-Thread Persim OS,不过我把固件给擦除了,无法开机了,所以先从最基本的启动下手 开发板板子SDEMMC,也就是板 ...
最新文章
- 快速排序(快排)--->注释超详细
- androidstudio环境配置常见问题解决
- 嵌入式开发常用工具软件
- cookies与session
- 分布式系统面试 - 常见问题
- 维珍银河创始人布兰森成功进入太空 早于贝佐斯9天
- MySQL The JSON Data Type(JSON格式数据)
- php中背景图怎么设置不重复,css 图像不重复怎么设置
- 使用内部(com.android.internal)和隐藏(@hide)API手记
- 程序员之道——编程也是一门艺术
- 发布Android程式步骤
- [转载]使用Response.Filter过滤非法词汇
- 轻量却超强——推荐几款好用的截图工具(1) FScapture
- html有多少种居中方式,html常用的几种居中方法
- java击鼓传花游戏list_击鼓传花游戏作文集合15篇
- PAT 乙级 1055 集体照
- 显卡虚拟化--最强实践
- 【光学】基于matlab相互垂直的光波叠加仿真【含Matlab源码 2071期】
- 【J】BeanCreationException: Error creating bean with name 'shiroFilter' defined in class path resource
- FME助力新型基础测绘之存量测绘成果数据转换地理实体
热门文章
- 蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
- oracle 远程访问配置,C#教程之Oracle 远程访问配置
- python文件的两种编译方法
- Python .pyc的编译和反编译
- python编写hello程序_python第一个程序“Hello, world”
- 编写java程序计算梯形面积_【Java】编写一个应用程序计算梯形和圆形的面积。...
- 一线PPT制作理论——简洁电磁环境构建
- 福大软工 · 第十次作业 - 项目测评(团队)
- 宝哥哔哔|去中心化借贷协议Trister‘s Lend主网已经上线全面内测已经开始!
- ubuntu18.04系统安装WiFi适配器驱动