前言
Arduino IDE除了可以编写在Arduino上运行的程序,还可以配置成esp8266的开发环境,这样就可以直接在Arduino IDE上开发esp8266的固件程序。但是正常流程安装非常慢,还会频繁报错或者不能使用。所以下面我不仅会展示正常流程如何安装,也会讲解正常流程安装的原理,从而找出一些非正常安装的方法。
正常安装流程
- 打开Arduino IDE(这里安装IDE就不讲了,可以到官网下载安装包,不过要记住安装位置),在菜单"文件->首选项"弹出的对话框的"附加开发板管理网址"框中填入http://arduino.esp8266.com/stable/package_esp8266com_index.json
如图:
- 重启IDE,然后在菜单"工具->开发板->开发板管理器"弹出的对话框最上方的搜索栏中输入"esp",搜索。如图:
可以搜到esp8266 by Conmmunity,我因为已经安装过了,下面显示是更新和删除,第一次安装显示是一个安装按钮。点击安装,就开始爬进度条了。 - 安装完成后,就会在"工具->开发板"菜单中显示esp8266开发板,如图:
正常流程的安装原理
我知道,如果你们能通过上述方法能安装成功,也就不会搜索到我的博客了(成功了记得点个赞)。所遇到的问题无非有两种:下载太慢,频繁出错;下载完成后,刷程序时出错。我这里先告诉大家正常流程的安装原理,这样就可以取巧手动安装环境了。后面我还会讲,如何验证是否环境配置成功。
其实流程不是很麻烦O. o。首先是Arduino IDE会根据你选择的版本到github的esp8266 Arduino项目网址去把项目整个拉下来,然后会在配置文件设置的目录下新建一个文件夹存储这个项目。可以在首选项菜单弹出的对话框的最下方看到配置文件的路径。我的esp8266项目的目录就是在这个目录下的package文件夹里,具体是C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266。
内部路径如下:
其中2.4.2代表我下载的esp8266项目的版本号,目录下面就是整个项目的解压后的内容,注意有一个很重要的python脚本get.py。而下面esp8266/tools目录下的工具就是由get.py下载安装的。
阅读了get.py可知,get.py是根据我们之前在首选项里配置的那个链接下的json文件来下载依赖配置的。这个json文件也是在首选项的配置目录下,比如我的就是在C:\Users\Administrator\AppData\Local\Arduino15\,下面有一个package_esp8266com_index.json文件,可以看到和我们按正常流程配置的附加开发板管理网址的那个最后文件名是一样的。get.py会从这个配置文件中读取tools目录下那三个工具的下载网址、版本号等配置,然后判断在dist目录下是否已经下载了这三个工具的压缩文件,如果已经有,则解压,然后按照我上面的esp8266/tools目录存放(工具名\版本号\解压内容)。如果dist目录没有,则下载下来,再按上述步骤解压存放。
手动安装原理
根据上述流程,我们首先需要在配置文件目录下将esp8266项目目录配置好,然后在esp8266 Arduino项目git网址上下载项目解压,如果还想试试被墙住之后网速情况,在配置了python环境的情况下,可以直接执行get.py脚本。但是如果你之前esp8266 Arduino项目都无法下载,这里基本可以放弃,可以采用下面方式继续。
打开package_esp8266com_index.json(应该gradle的依赖配置,我一直用maven,这个没有深入了解)文件,里面列出了各个版本esp8266 arduino项目的相关配置,包括依赖工具的版本。
//我安装的2.4.2,所以工具依赖也选这个的版本
"toolsDependencies": [
{
"packager": "esp8266",
"version": "0.4.13",
"name": "esptool"
},
{
"packager": "esp8266",
"version": "1.20.0-26-gb404fb9-2",
"name": "xtensa-lx106-elf-gcc"
},
{
"packager": "esp8266",
"version": "0.2.0",
"name": "mkspiffs"
}
]
在这个json文件中也能分别搜索到这三个工具对应版本的下载网址,随便贴一个给大家参考:
{
"version": "2.5.0-4-b40a506",
"name": "xtensa-lx106-elf-gcc",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-4/aarch64-linux-gnu.xtensa-lx106-elf-b40a506.1563313032.tar.gz",
"archiveFileName": "aarch64-linux-gnu.xtensa-lx106-elf-b40a506.1563313032.tar.gz",
"checksum": "SHA-256:88c5e9a813bd01c97fe2a07a7280e0685cf18a937ad3ea756d33f8bfbbcbfec3",
"size": "40983153"
}
.....
然后我们就能根据给出的url手动把这三个工具对应的压缩文件也下载下来了。
接下来还有两种选择。你可以新建一个dist目录,把这三个压缩文件放进去,然后执行get.py。get.py检测到目录下有对应版本的工具压缩包后,会自动帮你解压,部署到文件夹esp8266/tools。但是这里有个问题需要注意一下,get.py里会进行SHA安全验证,如果因此而失败,你需要注释掉安全验证这个语句。与其这么麻烦,不如直接按照我给出的目录结构自行解压,部署。
判断安装成功
首先你需要一个USB2TTL工具和一块esp8266板,如何验证这两个是能工作的,可以参考我的另一篇esp8266-01刷AT固件。当然接线图我也直接转到这里。
- 接线图如上。如果插上usb不能识别,需要安装驱动,也参考上面的文章。
- 打开Arduino IDE,开发板选中"Generic ESP8266 module"。
我标记的配置需要改成和下图一致。注意端口是要选取你插入的USB端口。
- 编译上传。测试程序如下(你可以直接在文件->示例->esp8266中找到很多demo,比如blink之类,这里选输出配置),这个程序会在串口输出端不停输出板的配置信息。
// ESP8266 CheckFlashConfig by Markus Sattler
// This sketch tests if the EEPROM settings of the IDE match to the Hardware
void setup(void) {
Serial.begin(115200);
}
void loop() {
uint32_t realSize = ESP.getFlashChipRealSize();
uint32_t ideSize = ESP.getFlashChipSize();
FlashMode_t ideMode = ESP.getFlashChipMode();
Serial.printf("Flash real id: %08X\n", ESP.getFlashChipId());
Serial.printf("Flash real size: %u bytes\n\n", realSize);
Serial.printf("Flash ide size: %u bytes\n", ideSize);
Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed());
Serial.printf("Flash ide mode: %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
if (ideSize != realSize) {
Serial.println("Flash Chip configuration wrong!\n");
} else {
Serial.println("Flash Chip configuration ok.\n");
}
delay(5000);
}
- 成功判断:成功日志输出如下:
还可以在工具->串口监视器中看到类似:
如果没有成功,建议可以尝试下将RST插口接地,重置芯片,然后再试一遍,不懂这个操作可以参考esp8266-01刷AT固件。如果还是没有成功,说明环境没有安装成功。
百般无奈的最终解决方案
如果实在被墙的没办法,而且其他方法也一直解决不了问题,我发现还有一个诀窍。在晚上,我所在的网络使用标准安装流程是无论如何走不通的,一直失败。但是当在早上进行安装的时候,就像风一样快了。我不知道这中间是因为git的代理服务器问题还是墙的问题。如果你实在没办法了,可以一试。