开车时间 发表于 2020-6-10 13:28:29

基于机智云的NEC红外遥控器的设计分享

分享的是本人本科毕业设计:

本设计为一种基于esp8266芯片的智能遥控器。由接在芯片上具有学习功能的单独的红外模块完成控制指令的发送。通过手机APP远程控制来达到解决老式家用电器联网问题的目的。该遥控器同时系统还搭载了DHT11温湿度一体传感器,可以进行实时的环境温湿度采集得到环境温湿度数据,从而更好的协助用户进行远程的家电控制。整个系统采用SOC方案并于eclipse一体化环境下编写控制固件,借助机智云平台的服务器以及与之配套的服务来实现用户的远程遥控功能。(引用自本人论文)这里的红外遥控特指的是使用NEC红外编码的遥控器,本来我打算做空调遥控器,后来发现自己太年轻,空调遥控器的编码很复杂,至今也没整明白,然后看到了机智云一个老哥的soc红外遥控的帖子才换了思路:http://club.gizwits.com/thread-7513-1-1.html(这是他的帖子)我的毕业设计就是在这位老哥的基础上加了一个温湿度模块,可以提供环境实时温湿度,没怎么玩led灯。温湿度参考是官方的教程;http://club.gizwits.com/thread-4562-1-1.html(这官方教程有毒) 设计的演示地址https://www.bilibili.com/video/BV1ov411z7o1 (能三连给个三连吧)我视屏控制的是一个有NEC编码遥控功能额取暖桌,温湿度的演示用了花露水,u1s1这个板子真的耐操我是基本对着板子喷的还能正常工作。
下边说说本人的水平:大学学过C语言(学的还是不错的我当时的计算机二级是用c过的)、51单片机的{自学没学完老师上课也没咋好好学但是大概流程还是懂}。从没接触过STM32和esp8266。

这个设计经过老师推荐我自己选择的机智云这个平台以及他们自己出的gokit3开发板,本以为开发资源像当初51一样有手把手教学,我还是太天真了。本来我买板子的时候这个设计我打算用stm32也就是MCU模式来做的。但是因为官方淘宝给的文件的stm32教程好像不够手把手于是我就想到了soc模式但是淘宝得到的资料说装的开发环境实力劝退。

http://club.gizwits.com/data/attachment/forum/202006/10/003256map4cgq6zkqzxqqc.png.thumb.jpg 开发环境.png (221.56 KB, 下载次数: 0)
下载附件
半小时前 上传



就是这个文档至今我还是没用这种方法搭建成功(尤其没用过那个叫甲骨文的软件后来问我们专业的大佬他说输入密码的时候这个软件是不显示的)
后来处于种种原因我放弃了mcu的方案同时也找到了soc开发环境打搭建方法。P,S 哔哩哔哩是个好地方舞蹈区不光有漂亮小姐姐还有大佬教技术。野火_firege、正点原子都有官方账号,同时还有一堆教学视频无广告还不用下载。
我在B站找到了一个老哥他的目的是推销自己的板子吧但是整个开发过程算是手把手教学看着看不懂建议放弃开发。


https://www.bilibili.com/video/BV164411X7nC   
第二讲,环境搭建、编辑、编译(SOC)

在搭建完开发环境就算步入正轨了,不过也挺蛋疼的有蛮多坑我记得我那时候改了方案把芯片改了位置代码愣是烧写不进去,找我们专业大佬
整了半天愣是没用有看串口助手又是屏幕共享的,后来我自己发现是没取stm32的底板

http://club.gizwits.com/data/attachment/forum/202006/10/005204gcjcpqfpqwyidibn.png.thumb.jpg soc模式.png (348.32 KB, 下载次数: 0)
下载附件
半小时前 上传




用了soc方案还需要一个TTL转串口(我用的是cp340)不然没法烧录虽然板子有个这个功能但是使用来读取板子信息的
不能写而且是在mcu最下边那个地板上


最后烧写的时候也和官方给的不太一样其余按照官方的但是qio的哪里我用的是dio(这是哪个大佬让我尝试的发现有用)
http://club.gizwits.com/data/attachment/forum/202006/10/005559osbn6wv5vwkb7pfv.png.thumb.jpg 烧录.png (164.09 KB, 下载次数: 0)
下载附件
29 分钟前 上传






先说一下我的数据点就三个如下所示

显示名称标识名备注读写类型数据类型数值枚举扩展
分辨率增量数据范围最小值数据范围最大值选项长度
温度(℃)temperature温度只读数值10050
湿度(%)humidity湿度只读数值100100
temp_controltemp_control可写枚举开关,温度增,温度减,暖脚模式

                           

下边说说红外模块:

我用的红外解码芯片有四个引脚而且需要一个5v供电引脚而esp8266只有三个引脚。这个gokit3板子上有5v的引脚参照
http://club.gizwits.com/data/attachment/forum/201708/02/134207zexr7tn40nvtnit1.jpg.thumb.jpg我学习的那个老哥的方法来接就可以

我用的红外模块和帖子里哪个老哥的类似它自带一个芯片只要连接上TTL转接口就可以直接给遥控器解码价格不贵淘宝10块左右很方便。代码基本是用的那个老哥的码源那就再重复一遍吧 红外遥控编码中可能包含0X00,这是字符串结束符,所以不能直接用uart0_sendStr函数了。打开uart.c文件(在app\driver目录下)创建uart0_sendIFR函数,内容下图http://club.gizwits.com/data/attachment/forum/202006/10/012017j2cclbeetlttvete.png.thumb.jpg urar.png (67.5 KB, 下载次数: 0)
下载附件
4 分钟前 上传


我看的那个老哥的教程里我以为把原来的函数替换了其实没有直接在下边加上就好



uart.h (在app\include\driver目录下)里加函数http://club.gizwits.com/data/attachment/forum/201708/02/134206wxcyx1ohy9x0l1ch.jpg.thumb.jpg
gizwits_product.c 文件的修改

http://club.gizwits.com/data/attachment/forum/202006/10/012217y2740amm145jpwjw.png.thumb.jpg发射逻辑http://club.gizwits.com/data/attachment/forum/202006/10/012400y9p004wqav0aw0rd.png.thumb.jpg 发射逻辑.png (81.69 KB, 下载次数: 0)
下载附件
1 分钟前 上传




最坑爹的地方就是这个温湿度部分:我最开始改用soc 方案的时候我我是照着官方的帖子来自己编辑的发现情况不对官方的帖子:估计是以前的版本有部分函数在user_manin.c里, 现在改到gizwits_product.c里了
这个帖子对于目前来说问题很大
其余步骤类似第一步是将官方的头文件放至指定位置.c在app\driver目录下.h在app\include\driver目录下
第二步就是给文件加头文件地址然后是宏定义dht11的参数(这部分文件在gizwits_product.c中处理)

第三步是在gizwits_product.c中的ICACHE_FLASH_ATTRuserHandle函数和ICACHE_FLASH_ATTR userInit函数增加温湿度上报部分

第四部咱们增加增加初始化以及wifi连接模式彩灯的设定(这部分文件都在user_manin.c中处理)先是初始化最后就是连接模式的彩灯设定了至此代码部分说完了
其余的部分哔哩哔哩我推荐的那个老哥教的很详细而且官方的教学帖子也说的比较清楚了。


最后最后码源在这链接:https://pan.baidu.com/s/1BOvvNJW2oVykNYJJ7AY6Gg
提取码:hagj

mylorder 发表于 2020-8-24 11:11:45

感谢楼主分享基于esp8266芯片的智能遥控器:lol

守候g残留 发表于 2020-10-25 12:01:34

为楼主的分享精神点赞
页: [1]
查看完整版本: 基于机智云的NEC红外遥控器的设计分享