关闭视频

从0开始做WiFi智能插座:第二步:代码移植

发表于:2019年08月01日 12:35更新于:2024年04月19日 11:55

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远程孵化箱:

(一)功能实现和材料准备

(二)D3推送服务之邮件推送设置

(三)孵化箱制作和孵化记录

扫一扫,开启您的IoT开发之旅

 

 

 

文章由 硬件开发平台 机智云 www.gizwits.com 整理发布