从0开始做WiFi智能插座:第二步:代码移植
Wifi智能插座是IoT入门的经典案例。使用ESP8266 SoC方案来做智能插座是成本最低的IoT开发案例了,以往我们有几个版本的智能插座实现方案,如使用20元+实现老房子家用插座智能化、巧用代码自动生成工具实现智能插座开发等案例,本案例将分四步,从PCB打样开始,分享如何制作一个Wifi智能插座,并录制了相关视频以供参考。
上期分享了“生成供PCB打样的光绘文件”,这期我们来讲讲如何实现代码移植(相关视频:www.bilibili.com/video/av43083286)。
[ 2.1 在机智云自助开发平台创建云端产品 ]
首先,在机智云自助开发平台创建新产品、数据点、生成代码包,下载代码包。
新建数据点:本案例中设置了四种数据点:继电器开关、定时器开关、分钟数、定时器的值;备注很重要,可帮助理解定义的数据点的作用(详细内容见视频)
MCU/SoC开发:几秒钟可以生成代码包,下载代码包,解压缩后如下所示
其次,开始修改代码:
需要安装AiThink IDE for IoT 、
此外,开发者在移植前要确保被移植平台的硬件参数满足以下的要求:
-
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)。
导入工程文件
接下来,修改第23行至27行的代码(修改后如下图蓝色高亮部分所示),想为什么这么修改?参考:docs.gizwits.com/zh-cn/deviceDev/GoKit3_DEV_SDK_Common_transplant.html 或者是看视频了解原理。
User_Main.C 文件里的代码修改
打开User_Main.C文件,删除一个按键(删除下图所示的蓝色高亮部分)
原因:由于我做的插座只有一个按键,但是代码包默认有两个按键,所以需要删除一个
因为按键只有1个,按键放在GPIO4上,所以有如下红色框框所示的修改
与此同时,需要删除一个按键的消息映射的函数(下图蓝色高亮部分需删除)
在Key初始化的函数当中,删除“一个按键的初始化”(下图蓝色高亮部分需删除)
gizwits_product.h文件里的代码修改
增加一个全局变量(用于标识继电器开光和定时器开关)
需要在gizwits_product.c文件中初始化该全局变量
短按实现继电器开关状态的变化,则按照下图修改代码 Status[0]=!Status[0]
最后,保存,编译,看看是否正确无误。
接下来,设置长按的时候进入一键配置入网的模式
User_Main.C文件中
修改成Airlink模式,默认长按按键的时候继电器打开
在Key的初始化中增加几行代码
配置蓝色LED灯(GPIO2)为输出
配置5V继电器(GPIO5)为输出
继电器和LED默认是关闭状态(引脚拉高)
gizwits_product.c文件修改
增加代码:实现控制继电器的开关
增加代码:实现定时器的开关
增加代码:获取计时器的事件
增加代码:声明和定义标识变量
增加代码:在user_handle函数中
多少秒进入User_Handle,这里改成50毫秒
点击保存,Build Project
相关推荐:
从0开始做WiFi智能插座:
基于ESP8266+机智云的低成本SOC远程孵化箱:
(一)功能实现和材料准备
(三)孵化箱制作和孵化记录
扫一扫,开启您的IoT开发之旅
文章由 硬件开发平台 机智云 www.gizwits.com 整理发布