ESP8266 模组(我这里选择了机智云的 gokit3(s),上面的 ESP8266 型号是esp-12F)
一根 USB 转 TTL 的线
可选:一根 USB 线(用来给机智云的 gokit3(s)供电)
机智云账号的注册(参考链接:机智云官方注册链接)
安信可推出的基于windows的esp8266IDE(百度网盘提取码:m75u
固件烧写工具FLASH_DOWNLOAD_TOOLS(百度网盘提取码:ck59 )
手机机智云app(用来进行调试)(机智云手机 app))
准备好上述内容后,那我们从软件部分出发,正式开始吧!
首先,我们需要打开机智云官方注册链接进行免费注册(参考链接:机智云官方注册链接)。
注册完毕后,我们点击右上角的 “开发者中心”。如下图。
继续点击右上角的 “创建新产品”。如下图。
选择符合自己设计的产品分类(不影响具体功能),取一个自己喜欢的产品名称,选择 Wi-Fi /移动网络方案。之后直接点击保存。如下图。
这样我们就有一个自己的产品啦,然后点击左边选项栏里的数据点,之后点击页面中部的 “创建数据点”。如下图。
然后我们就可以开始添加我们想要的数据点了,首先我们添加数据点 “开关”。如下图。按图示填好后点击 “添加”。
接下来我们继续添加第二个功能:使用 ESP8266 自带的 adc 引脚检测电压,这里我添加了两个数据点,第一个数据点为控制 adc 接口是否检测电压,第二个数据点为显示检测到的电压值,由于 ESP8266 的 adc 接口为 10 位,所以他的测量范围是(0 - 1024),阅读 ESP8266 手册后发现测量的电压范围为(0 - 1v),所以我们需要在后续程序或者自行进行进一步电压数值换算。数据点设置如下图。
然后我们在 “数据点”页面能看到三个数据点,点击 “应用”,这样我们就完成了数据点的设置。
然后我们点击左边选项栏的 “基本信息”,之后点击 “显示完整密钥”。输入我们刚刚创建机智云账号时使用的密码,获取并复制产品密钥(product secret)。
之后我们点击左边选项栏里的 MCU 开发,由于我们没有 MCU,所以选择 SOC 方案,硬件平台选择 ESP8266_32M ,最后粘贴刚刚复制的产品密钥,点击 “生成代码包”。
生成完毕后点击 下载,此时我们在机智云平台的代码构建部分全部结束。
首先,我们得确认是否下载好我下载最前面的 ESP8266IDE 以及烧写工具,在下载解压完成之后,我们解压上一步下载好的机智云代码包,然后点开 ESP8266 IDE (在文件夹 AITHINKER-ESP8266-SDK-v2.0 里,这个文件夹直接通过下载解压我在文章开头发的百度云盘文件得到),如下图(我使用的 win10 系统环境)
之后我们发现 eclipse 打开了,提示选择工作区间,我直接点击了 ok,你也可以选择你想要的工作区间。
打开 eclipse 后,我们点击左上角的 file,在弹出的选项栏里点击 Import。
选择 Existing Code as Makefile Project
,然后点击 Next
点击 Browse
,在弹出的目录中找到我们刚刚下载解压的机智云代码包,之后在 Toolchain for Indexer Settings
里选择 Cygwin GCC
。
到这里,我们 eclipse 的配置就完成了。
首先我们在左边打开工程,在根目录里找到 Makefile 文件,打开。对 23-27 行进行修改,关于 SPI_MODE,如果你的 ESP8266 模块上写的安信可就输入 QIO,如果是“汇思锐(HYSIRY)”就输入 DOUT (问题总结一)如图。
之后我们可以点开 app/user
目录下的 user_main.c 进行功能函数的编写,由于我们这个教程要实现的功能比较简单,所以我们直接进入 app/Gizwits
里的 gitwits_product.c 里进行编写调用,我们定义 GPIO 5 口为 swtich 开关。如下图。
之后我们回到 app/user
目录下的 user_main.c,根据大家自身的 ESP8266 模组情况进行对应的调试,如果没有 gokit3(s)SOC 开发板的话,可以将 145-146 行按如下图所示自行调整(也可以不调,使用对应的波特率和串口即可)。我在这里用的是之前默认的(默认为波特率(9200,115200)和将打印信息输出到 UART 1)。
如下图,在 user_main.c 里可以看到,按键 1 接到了 GPIO 0 上,按键 2 接到了 GPIO 14 上。有 1 个输出需要连接到 GPIO 5。
按键 1 短按:运行出厂测试代码
按键 1 长按:模块复位
按键 2 短按:AP 模式
按键 2 长按:airlink 模式
最后,我们右键点击左边项目栏里的 SOC_ESP8266_32M_source
项目,然后先点击 clean project
,再点击 build project
,在下方 "Console"里显示如下的时候,说明代码部分已经全部完成,可以进行后续的固件烧录和 app 测试了。(如果 build project 后报 makefile 之类的错误,需要点击左上角 “file” 里的 “save all” 保存后,再 build 就好了。)
首先我们打开之前下载的串口烧写工具(文章开头提供的固件烧写工具 FLASH_DOWNLOAD_TOOLS(百度网盘提取码:ck59 ))
选择第一项 ESP8266 DownloadTool
因为我们需要使用到 adc 接口外接电路检测电压(如果不打算使用 adc 接口,可以直接忽略这一步),所以接下来我们需要点击“RFConfig”,将 vdd_const 位改成 33(3.3 V),最后点击 GenInitBin,将生成的 esp8266_init_data_setting
复制到机智云代码包的 bin 文件目录下
将 esp8266_init_data_setting
复制到机智云代码包的 bin 文件目录下(不使用 adc 接口的话,可以忽略)。
打开此文章开头提供下载的串口烧录工具,选择第一项 “ESP8266 DownloadTool”
然后使用 USB 转 TTL 线连接 ESP8266,一般需要使用四根,
VCC 接 ESP8266 模块上的 VCC(没有的话直接使用 +5 V 电压进行供电),
TTL 线上的 RX 接 ESP8266 模块上的 TX,
TTL 线上的 TX 接 ESP8266 模块上的 RX,
TTL 线上的 GND 接 ESP8266 模块上的 GND,
(如果 TTL 有 UART0 线,也可以接上,我这里的 ESP8266-12F UART0 部分由 key1 直接可以控制进入烧录模式还是正常运行模式,这部分模块不同可自行百度如何接线)
如图
接完后将 ESP8266 模块上 +5 V的电(3.3 V 是工作电压,5 V 是烧录电压),将 key1 下拨至 GND,然后烧录软件各项参数如下设置,注意 SPI MODE 需要根据你的 ESP8266 模块而定(在之前的程序修改中也有不同),如果你的 ESP8266 模块上写的安信可就输入 QIO ,如果是 “汇思锐(HYSIRY)”就输入 DOUT。选择你自己的 TTL 转 USB 串口,不会查看 COM 型号的话见文章末尾的(常见问题 6.2)。最后点击软件下方的 erase,然后点击 start,此时应显示“等待上电同步”。
注意:第三个烧录文件 esp8266_init_data_setting
,如果不需要使用 adc 接口,请将 esp8266_init_data_setting
替换成 bin 目录下的 esp_init_data_default
。
此时串口工具会开始大约 30 s 计时,如果使用 ESP8266-12F 的话,将 key1 拨至 GND 端,按一下 RESET 即可进行烧录,其他 ESP8266 模块需要调整 UART0 和 RESET 的电平,也可以进行烧录。直到提示 “FINISH”。
接下来我们将 5 V 的烧录阶段供电电压替换成 3.3 V 的工作阶段供电电压,然后将 ESP8266-12F 上的 key1 拨到 key1 端,之后按一下reset,我们的程序就开始运行了。
由于之前我们已经将配网需要的控制电路已经配置好:
按键 1 接到了 GPIO 0 上,按键 2 接到了 GPIO 14 上。有 1 个输出需要连接到 GPIO5。
按键 1 短按:运行出厂测试代码
按键 1 长按:模块复位
按键 2 短按:AP 模式
按键 2 长按:airlink 模式
ESP8266-12F 各引脚功能如图所示
我们选择通过 ap 模式进行配网,如果跟我一样使用的 gokit3(s),只需要在 SOC 板接上 USB电源后,在 ESP8266-12F 的 key1 键拨至key1 端的情况下按一下 “reset”,再按一下 gokit SOC 板上的 key2 键即可进入 ap 模式。
如果没有 gokit3(S),可以根据上述文本和图片对 GPIO14 引脚接一个开关,或者通过导线进行电平短暂切换,也能达到短按 key2 的效果,进入 ap 模式。
在明白如何进入 ap 模式后,我们打开手机上下载的机智云手机 app,创建一个账号(跟之前创建的机智云电脑端账号不互通),进入 app 主页后我们点击右上角的 “+” 号,然后点击 “热点配置”,同时要让 ESP8266 模块进入 ap 模式(短按 gokit3 soc 板上的 key2 或者对 gpio 14 引脚进行电平迅速调整),如下系列图
然后继续,随便进入一个可用你当前 Wi-Fi 环境。然后点击“下一步”。
然后选择模组类型,这里我们 ESP8266-12F 选择“乐鑫”(基本都是乐鑫)。
如下图,按之前所述的操作保证 ESP8266进入 ap 模式后。点击“我已完成上述操作”。
点击“去连接设备热点”。
在WIFI列表里找到 XPG-GAgent-503
(尾号是你 ESP8266 模块序列号的最后三位),输入默认密码 123456789
,然后会提示连接成功,返回 app 后就发现成功建立连接啦。
在完成上一步后,我们发现机智云 app 主页已经出现了我们的设备。
点击进入我们的设备,然后点击 switch 右边的开关键,我们发现引脚也在进行对应的高低电平切换(通过外接 led 小灯进行检测),如图。
然后我们在设备的操作页面打开 switch_adc 的开关,我们发现示数在50左右,然后我们通过外接电压(注意检测范围位 0-1 v,如果要检测更大的电压可以先接缩小电路,然后在程序或者机智云数据点里加放大系数)。我接入了 0.5 V 左右的电压,示数相应的发生了变化,如图。
到这里,我们已经完成了所有的步骤。最后我补充一些过程中常见的问题和注意事项:
1.eclipse 中最后的 build project
阶段如果出现类似于 “ makefile…” 之类的错误,需要点击左上角 “file”,然后点击 “save all”,保存所有文件之后在 build project
就能成功了。
在 USB 连接上电脑后,我们右键点击“我的电脑”,然后点击“属性”,进入“系统”。
点击左边的“设备管理器”。然后点击“端口”就能查看具体选择 COM 的数值。
其他注意事项
1.SPI MODE 需要根据你的 ESP8266 模块而定(在之前的程序修改中也有不同),如果你的 ESP8266 模块上写的安信可就输入 QIO,如果是“汇思锐(HYSIRY)”就输入 DOUT。
2.第三个烧录文件 esp8266_init_data_setting
,如果不需要使用 adc 接口,请将 esp8266_init_data_setting
替换成 bin 目录下的 esp_init_data_default
。
3.如果出现“串口连接失败”,先通过上述确认串口操作,确认选择的串口没有问题。然后如果还有问题,下载一个“驱动精灵”进行驱动扫描。驱动精灵会自动安装需要的串口驱动。
4.如果在按 start 和复位时出现 ESP8266 Chip stub error esp_stub_and_set_baud.
的错误。往往是线没有接好(TX,RX 线长度不一致,或者接口松动都可能导致这个问题)。注意 USB 转 TTL 线的TX端接esp8266模块的 RX 端,USB 转 TTL 线的 RX 端接 ESP8266 模块的 TX 端.
附:win10 最好不要买 Prolific USB-to-Serial Comm Port
这型号的 USB 转 TTL 的线,因为需要手动更新驱动程序才能用- -,这里有问题可以留下评论。最后希望大家能多多指导,共同进步!