红外万能遥控器2.0,把家里的红外遥控器改成能用语音和手机app控制

红外万能遥控器2.0制作

功能描述

模拟家用电器的遥控器功能。
接入blinker平台,通过手机可以远程控制。
接入小爱同学、小度和天猫精灵,可以动动嘴就能控制你的家用电器。
带红外学习功能,只要用遥控器的电器设备都可以接入。

红外万能遥控器2.0,红外遥控器改成能用语音和手机app控制

硬件准备

硬件:
红外发射模块 *1
红外接收模块 1
Nodemcu(826612f) 1
面包板
1
杜邦线
4根

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个esp8266-01/01s的接线
手机遥控
在这里插入图片描述

APP配置里面的布局代码

{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fad fa-siren-on¨¨mode¨Ê¨t0¨¨点我开关灯¨¨clr¨¨#389BEE¨¨t1¨¨文本2¨¨bg¨É¨cols¨Ë¨rows¨Ë¨key¨¨btn-0¨´x´Ï´y´Ê¨speech¨|÷¨lstyle¨Ê}{ßA¨num¨ßF¨接收指令¨ßC¨fad fa-american-sign-language-interpreting¨ßHßI¨min¨É¨max¨¢1c¨uni¨´次´ßLÉßMÍßNËßO¨num-irr¨´x´É´y´ÊßQ|÷ßRÊ}{ßAßBßC¨fad fa-toggle-off¨ßEÉßF¨打开电视¨ßJßKßLÉßMËßNËßO¨btn-1¨´x´É´y´ÐßQ|÷ßH¨#00A90C¨}{ßAßSßF¨发送指令¨ßC¨fad fa-handshake-alt¨ßHßIßVÉßWº0ßX´次´ßLÉßMËßNËßO¨num-irs¨´x´Í´y´ÊßQ|÷}{ßA¨cha¨ßLɨsty¨¨line¨ßHßc¨sty1¨ßi¨clr1¨ßI¨sty2¨ßi¨clr2¨ßIßMÑßNÍßO¨irdata¨´x´É´y´ÌßQ|÷¨key0¨¨sensor¨ßF¨历史控制¨ßRÊ}{ßA¨tex¨ßF¨万能红外遥控器¨ßJ´´¨size¨¨20¨ßLÉßC´´ßMÍßNÊßO¨tex-ohk¨´x´É´y´ÉßQ|÷ßRÊßHßc}{ßAßBßCßZßEÉßF¨关闭电视¨ßJßKßLÉßMËßNËßO¨btn-2¨´x´Ë´y´ÐßQ|÷ßHßc}{ßAßBßCßZßEÉßF¨关闭空调¨ßJßKßLÉßMËßNËßO¨btn-3¨´x´Í´y´ÐßQ|÷ßHßc}{ßAßBßC¨fal fa-power-off¨ßEÉßF¨文本1¨ßJßKßLÉßMËßNËßO¨btn-10¨´x´Í´y´¤BßQ|÷}{ßAßBßCß10ßEÉßFß11ßJßKßLÉßMËßNËßO¨btn-6¨´x´Ë´y´ÒßQ|÷}{ßAßBßCß10ßEÉßFß11ßJßKßLÉßMËßNËßO¨btn-5¨´x´É´y´ÒßQ|÷}{ßAßBßCß10ßEÉßFß11ßJßKßLÉßMËßNËßO¨btn-7¨´x´Í´y´ÒßQ|÷}{ßAßBßCßZßEÉßF¨打开空调¨ßJßKßLÉßMËßNËßO¨btn-4¨´x´Ï´y´ÐßQ|÷ßHßc}{ßAßBßCß10ßEÉßFß11ßJßKßLÉßMËßNËßO¨btn-8¨´x´É´y´¤BßQ|÷}{ßAßBßCß10ßEÉßFß11ßJßKßLÉßMËßNËßO¨btn-9¨´x´Ë´y´¤BßQ|÷}{ßA¨deb¨ßEÉßLÉßMÑßNÌßO¨debug¨´x´É´y´¤D}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡´on´¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ß1E¨source_zh¨¨开关状态¨¨state¨|´on´ß1H÷¨state_zh¨|´打开´´关闭´÷}÷}

在点灯app这个地方配置
在这里插入图片描述

注册blinker账号,获取密钥auth
第一步:下载blinker APP下载地址:blinker APP第二步: 安装并配置
app安装完成后,增加一个设备,为设备增加一个按钮 方便测试
在这里插入图片描述
复制key,这就是我们要的blinker 设备密钥auth
为设备增加按钮 方便测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装驱动
1,将你的硬件NodeMCU 通过USB接到电脑的usb口上。安装ch340/cp210x的usb驱动,在工具包里有cp210x的安装包cp210x.drivers.rar,ch340在window10下免安装,安装成功后,设备管理里能看到多出来一个设备,记住端口号,我这里是COM6,后面会用。在这里插入图片描述
安装固件(nodemcu下载)

链接: https://pan.baidu.com/s/14_uA8wqNHuUNtHblGA7Qqg 密码: e55w

给esp8266安装程序,打开nodeMCU_pyflasher-4.0-x64.exe,这是nodemcu的烧录工具。
在这里插入图片描述
选择设备端口号,我这里是com6,你那可能不一样。点击Brows 选择固件包(8266安装包)其它设备如果下图所示
在这里插入图片描述
点击Flash NodeMCU开始下载
在这里插入图片描述
下载成功
配置wifi上网
1, 重启nodeMcu
在这里插入图片描述
在这里插入图片描述
用手机连接到esp8266的wifi热点,热点名不是根据型号会不一样,多半以esp-xxx开头
在这里插入图片描述
在这里插入图片描述
在手机端或电脑的浏览器打开http://192.168.4.1
在这里插入图片描述
选择要配置的wifi,点击
在这里插入图片描述
2,输入密码和点灯科技创建的设备ID
在这里插入图片描述
3,点确定开始配网
在这里插入图片描述
成功后
在这里插入图片描述
接入小爱同学配置
参考"改造家里的开关成为智能开关,保留原有开关控制,零火版"的配置
接入小度配置
参考"改造家里的开关成为智能开关,保留原有开关控制,零火版"的配置
接入天猫精灵配置
参考"改造家里的开关成为智能开关,保留原有开关控制,零火版"的配置
接入siri配置
参考"改造家里的开关成为智能开关,保留原有开关控制,零火版"的配置

资源下载

链接: https://pan.baidu.com/s/14_uA8wqNHuUNtHblGA7Qqg 密码: e55w

在这里插入图片描述
关注我接你进群
在这里插入图片描述

本文在阐述了嵌入式语音识别原理和红外遥控技术的基础上,介绍了一种非常适合进行嵌入式语音处理的单片机—凌阳SPCE061A微控制,并且通过运用此控制数字语音处理功能和红外遥控技术设计出一种新型的基于语音控制万能遥控器。 本设计有如下特点: 一、有别于采用专用集成发射芯片来实现遥控码发射的传统遥控器,而是采用微控制模拟发射红外遥控码,具有灵活性和多样性。 二、能够利用微控制接收和分析红外遥控码,并可以保存遥控码的信息特征,以便重新发射相同功能的遥控码,具有智能性。 三、该设计依据特定人语音识别原理,将经过处理的输入语音的特征参数作为未知模式,与预先存储的标准模式进行比较,通过调用SPEC061A的C函数库和语音处理函数库中的函数来实现语音识别、处理与控制,并采用SACM _480语音编码算法播放提示语音。与组成系统复杂、编程难、价格高的处理语音信号的专用芯片相比,开发人员只需应用SPEC061A的处理语音信号的API接口函数,缩短了开发周期。 该遥控器语音命令来替代普通遥控器的按键功能,弥补了目前遥控器人机交互界面和功能单调的缺陷,提供了更友好、更人性化的操作方式,同时利用此系统的学习功能使得该遥控器具有“一多用”的功能。 最后,在结论中提到系统功能的扩展,利用SPCE061A内部的丰富资源,在不增加成本的前提下,嵌入其他常用功能,具有升级性好、性价比高的优点。
由于涉及到硬件操作,需要通过外部模块来实现控制。 以下是参考代码: 1. 添加权限信息 ``` <uses-permission android:name="android.permission.TRANSMIT_IR" /> ``` 2. 编写控制代码 ``` private ConsumerIrManager mConsumerIrManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mConsumerIrManager = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE); Button powerOnButton = findViewById(R.id.power_on_button); powerOnButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int[] pattern = {3500, 1750, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 9000}; mConsumerIrManager.transmit(38000, pattern); } }); Button powerOffButton = findViewById(R.id.power_off_button); powerOffButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int[] pattern = {3500, 1750, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 9000}; mConsumerIrManager.transmit(38000, pattern); } }); } ``` 3. 控制指令解释 红外线遥控空调的指令通常是由前导码和数据码组成,前导码是一个长时间的脉冲或闪烁信号,用于告知空调接下来的指令数据信息的长度和格式。数据码通常是一个二进制编码,用于表达空调的不同操作状态。 控制指令需要结合具体的空调品牌和型号来设计,可以通过在线提供的空调红外码库来获取。 参考链接: - [探秘红外线遥控](https://developer.android.com/reference/android/hardware/ConsumerIrManager) - [红外遥控与使用](https://developer.android.com/guide/topics/connectivity/irda) - [NEC红外遥控编码](https://www.sbprojects.net/knowledge/ir/nec.php)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘祖记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值