时间:2022-01-13 11:22
人气:
作者:admin
接着新建数据点。
本次制作只是控制一个LED的开关, 所以我只定义了一个最简单的可写布尔型数据点,也就是说只有开和关这两种状态。
在MCU开发页面中选择SOC方案和自己的硬件平台 ,注意这里的单位是 Mbit ( 4 MB= 32Mbit) 。在基本信息中复制 Product Secret后粘贴,然后生成代码包。
>>>搭建开发环境开发环境我选择了AiThinker_IDE, 因为它不需要安装 Linux,也不需要虚拟机,在Windows下直接解压就能使用。下载解压后先运行ConfigTool.exe,单击“Default” 后 ,再选择 “Save” 。
打开AiThinker_IDE. exe,这里会用到DotNetFx40 Framework,以前没安装的话可能会提示安装。打 开 “File”, 单 击 “Import”,选择下图所示的文件。
然后单击 “Next”, 选择下载到的机智云代码主目录 。
>>>修改程序打开主目录下的 Makefile,把下图所示的红框内容按照实际情况进行修改。
修改参数如下:BOOT?=none: 不使用 bootBOOT?=old: 用老版本的 boot_*v l . l 十BOOT?=new: 使用新版本的 boot_ v l.2+APP?=0: 不使用远程升级 F0TAAPP?=1: 使用FOTA, 生成 user1...binAPP?=2: 使用 FOTA, 生成 user2...binSPI 工速度和模式,一般不用改动,保持默认即可。SPI SPEED?=40SPI_MODE?=QIOSPI_SIZE_MAP: Flash映射方式注意:有人说用的是多少MB的Flash就写多少,本人试过2MB和4MB都没问题,但用1MB的Flash写SPI_SIZE_MAP?=1时,编译失败。这里还要修改几个选中的文件,我们一个一个来吧。
要实现控制LED的亮灭或继电器的吸合,需要用到一个变量,我们先在 gizwits_ ptoduct.h 中声明一下。因为只有开和关2个状态,用bool型就可以,这有点像KeilC51中的bit类型。
别忘了在gizwits_ product.c中进行初始化设置,这里设置LED是低电平点亮,上电初始化为高电平,默认不点亮。
往下拉,找到 gizwitsEventProcess 函数。这个函数的作用是用云端数据点的值 CurrentDataPoint.valueLED 来控制LED等需要控制的实际电路,当云端为1时(ON),我们自己定义的变量STA=0,LED点亮;云端为0时(OFF),则STA=1,LED熄灭。
继续向下 ,修改userHandle用户定 时器的回调函数,默认为1000ms调用一次 ,也可以在 gizwits_ protocol.c文件中修改 USER_TIME_MS,此处调用时间修改为100ms。把 STA赋值给实际操作的 GPIO来完成 LED的亮灭 ,并把本地状态与云端完成同步。
文件最下面,初始化云端数据点的值。
接下来 ,打开 user_main.c文件, 找到下图所示的位置。

在user_main.c 文件中把与Key2有关的函数都删掉。在Key1ShortPress函数里添加 “STA= ! STA; ”, 即每次短按把STA取反,也就是说短按点亮 LED,再按一下LED灯灭 。Key1LongPress里还有—句“gizwitsSetMode(WIFI_ AIRLINK_ MODE)”, 其作用是在长按按键时让ESP8266模块进入配对模式,此时开发板右上角LED点亮 ,然后通过手机 App把模块接入Wi-Fi。
再往下就是GPIO 的初始化。ESP8266 模块右上角有一个 LED接到了 GPIO2 , 在程序中配置一下用作配对指示 。开发板靠近Micro USB的LED接在了 GPIO16 ,这就是我们最终要控制的指示灯了。值得注意的是,GPIO16的控制与其他端口的控制是不同的。
下图所示是按键与LED的电路图。
到这里程序就修改完了,仔细检查确认无误后保存。在最左侧C/C + + Projects窗口主目录上单击鼠标右键,选择 “Build Project”。如果没有错误,就会看到生成了 user1.4096.new.4.bin 等文件,如下图所示。没看到的话说明程序有错误,请仔细确认。
打开ESP8266烧写工具ESPFIashDownloadTool_ v3 .6.4,选择ESP8266 DownloadTool,按照图所示进行配置 。
设置好后单击 “START”,下载完成后按一下模块的 Reset,模块端配置完成。>>>手机端配置下载安装并打开机智云App。账号 、密码页面直接选跳过,点击右上角的 “ + ”号 ,选一键配置后输入当前手机所连接的 SSID和 Wi-Fi密码。进行下一步 ,模组类型选择乐鑫,在出现 “通电后按以下提示操作”后(如图所示) ,长按 NodeMCU开 发 板 Flash按键 ,右上角 LED点亮后,点 击 “我已完成上述操作”, 稍等一会儿会提示完成设备添加。
试着划动 “开启/关闭”按钮,看NodeMCU开发板上的LED是否可以正常亮灭。
按动NodeMCU开发板上的Flash按键,LED亮灭的同时,手机 App上的开关状态也应同步开关。
到这里,我们已完成了DIY—个Wi- Fi插座的所有知识介绍。接下来找出洞洞板,抄起电烙铁,开工制作。>>>实际制作我找出以前买来的3位插排。拆掉开关和接线端子,用腾出来的空间安装220V转 5V 开关电源、ESP8266控制板和继电器,把开关盖用热溶胶固定在原来的位置。在确定可以放下2个继电器后,我决定做2路的智能插座,剩下的1路用来做常通插座。
找一个手机5V适配器,去掉外壳和USB 接口以减小体积。
电路用洞洞板简单搭一下,ESP07 小板加上 LDO、阻容、继电器,一会就焊好 了 。
修改上面调试好的程序,把数据点改成 2个, 编译完成后烧写到模块,然后用热熔胶固定。高压 、低压之间记得用塑料片隔离,安全第一。
因为没有按键作AIRLINK,所以我将程序改为上电后30s未连接到Wi-Fi自动切换为AIRLINK配网模式,同时板载的蓝色LED点亮, 因为很少会用到此功能,且从侧面也能看到灯光,就没有额外开LED孔位。
在手机端输入Wi-R的SSID和密码就能把插排接入互联网,测试正常后,把插座装好,就可以投入使用了。
智能插排的用途可以自由发挥,只要是能用开关控制的电器都可以接入,比如USB小灯、 普通风扇、电动车充电(可以将程序改为开启后定时关闭)等 。