从0开始做WiFi智能插座:第二步:代码移植
本帖最后由 Kara 于 2019-8-1 13:21 编辑WIFi智能插座是IoT入门的经典案例。使用ESP8266 SoC方案来做智能插座是成本最低的IoT开发案例了,以往我们有几个版本的智能插座实现方案,如使用20元+实现老房子家用插座智能化、巧用代码自动生成工具实现智能插座开发等案例,本案例将分四步,从PCB打样开始,分享如何制作一个Wifi智能插座,并录制了相关视频以供参考。
上期分享了“生成供PCB打样的光绘文件”,这期我们来讲讲如何实现代码移植(相关视频:www.bilibili.com/video/av43083286)。
http://www2.gizwits.com/media/uploads/2019/08/01/1.jpg
[ 2.1 在机智云自助开发平台创建云端产品]
首先,在机智云自助开发平台创建新产品、数据点、生成代码包,下载代码包。
新建数据点:本案例中设置了四种数据点:继电器开关、定时器开关、分钟数、定时器的值;备注很重要,可帮助理解定义的数据点的作用(详细内容见视频)
MCU/SoC开发:几秒钟可以生成代码包,下载代码包,解压缩后如下所示
http://www2.gizwits.com/media/uploads/2019/08/01/2.jpg
其次,开始修改代码:
需要安装AiThink IDE for IoT 、
http://www2.gizwits.com/media/uploads/2019/08/01/3.jpg
此外,开发者在移植前要确保被移植平台的硬件参数满足以下的要求:
[*]A. 平台支持两个串口接口(至少一个),一个负责与wifi模组间的数据收发(必须),一个用于调试信息打印(可复用数据收发串口)。
[*]B.平台支持定时器功能(1ms精确定时)。
[*]C.平台支持至少2K的RAM空间(可调整环形缓冲区大小来解决此问题,但易导致数据协议的处理异常)
了解以下文件:
[*]gizwits_product.c:该文件为产品相关处理函数,如gizwitsEventProcess()。
[*]gizwits_product.h:该文件为gizwits_product.c的头文件,如HARDWARE_VERSION、SOFTWARE_VERSION。
[*]gizwits_protocol.c:该文件为SDK API接口函数定义文件。
[*]gizwits_protocol.h:该文件为gizwits_protocol.c对应头文件,相关API的接口**均在此文件中。
[*]其他文件:a) User/main.c——MCU程序入口函数所在文件,入口函数为main(void)。
导入工程文件
http://www2.gizwits.com/media/uploads/2019/08/01/4.jpghttp://www2.gizwits.com/media/uploads/2019/08/01/5.jpg
接下来,修改第23行至27行的代码(修改后如下图蓝色高亮部分所示),想为什么这么修改?参考:docs.gizwits.com/zh-cn/deviceDev/GoKit3_DEV_SDK_Common_transplant.html或者是看视频了解原理。
http://www2.gizwits.com/media/uploads/2019/08/01/6.jpg
User_Main.C 文件里的代码修改
打开User_Main.C文件,删除一个按键(删除下图所示的蓝色高亮部分)
原因:由于我做的插座只有一个按键,但是代码包默认有两个按键,所以需要删除一个
http://www2.gizwits.com/media/uploads/2019/08/01/7.jpg
因为按键只有1个,按键放在GPIO4上,所以有如下红色框框所示的修改
http://www2.gizwits.com/media/uploads/2019/08/01/8_hNb255Y.jpg
与此同时,需要删除一个按键的消息映射的函数(下图蓝色高亮部分需删除)
http://www2.gizwits.com/media/uploads/2019/08/01/9.jpg
在Key初始化的函数当中,删除“一个按键的初始化”(下图蓝色高亮部分需删除)
http://www2.gizwits.com/media/uploads/2019/08/01/10.jpg
gizwits_product.h文件里的代码修改
增加一个全局变量(用于标识继电器开光和定时器开关)
http://www2.gizwits.com/media/uploads/2019/08/01/11.jpg需要在gizwits_product.c文件中初始化该全局变量
http://www2.gizwits.com/media/uploads/2019/08/01/12.jpg
短按实现继电器开关状态的变化,则按照下图修改代码 Status=!Status
http://www2.gizwits.com/media/uploads/2019/08/01/13.jpg
最后,保存,编译,看看是否正确无误。
接下来,设置长按的时候进入一键配置入网的模式
User_Main.C文件中
修改成Airlink模式,默认长按按键的时候继电器打开
http://www2.gizwits.com/media/uploads/2019/08/01/13_ELVTKpp.jpg
在Key的初始化中增加几行代码
配置蓝色LED灯(GPIO2)为输出
配置5V继电器(GPIO5)为输出
继电器和LED默认是关闭状态(引脚拉高)
http://www2.gizwits.com/media/uploads/2019/08/01/14.jpg
gizwits_product.c文件修改
增加代码:实现控制继电器的开关
http://www2.gizwits.com/media/uploads/2019/08/01/14_oNRwhWn.jpg
增加代码:实现定时器的开关
http://www2.gizwits.com/media/uploads/2019/08/01/14_9dfNZfO.jpg
增加代码:获取计时器的事件
http://www2.gizwits.com/media/uploads/2019/08/01/18.jpg
增加代码:**和定义标识变量
http://www2.gizwits.com/media/uploads/2019/08/01/19.jpg
增加代码:在user_handle函数中
http://www2.gizwits.com/media/uploads/2019/08/01/20.jpg
多少秒进入User_Handle,这里改成50毫秒
http://www2.gizwits.com/media/uploads/2019/08/01/21.jpg
点击保存,Build Project
http://www2.gizwits.com/media/uploads/2019/08/01/22.jpg
相关推荐:
从0开始做WiFi智能插座:
[*]第一步:生成供PCB打样的光绘文件
基于ESP8266+机智云的低成本SOC远程孵化箱:(一)功能实现和材料准备(二)D3推送服务之邮件推送设置
(三)孵化箱制作和孵化记录
http://www2.gizwits.com/media/uploads/2019/08/01/23.jpg
文章由 硬件开发平台 机智云 www.gizwits.com 整理发布
页:
[1]