这是ESP8266上的第二个项目,在这个项目中,我将向您展示如何使用Arduino在ESP8266中刷新官方espresso固件。如果您想要更新到最新的ESP8266固件,也可以使用该项目。
在之前的ESP8266项目中,我们已经看到了如何使用Arduino IDE在ESP8266中编写自己的程序,并使用GPIO引脚控制LED。在同一个项目中,我已经提到,默认情况下,ESP8266 ESP-01模块附带AT命令固件。
但是,如果我们编写自己的程序来访问GPIO pin(就像我们在前一个项目中所做的那样),那么现有的固件将被完全擦除,并将编写新程序。
尽管ESP8266 WiFi模块是由espresso Systems生产的,但许多第三方制造商使用SoC来实现他们自己的定制模块。在我的情况下,我有ai -思考者的ESP8266 ESP-01模块。
这导致了许多问题,如固件是否是原始的,固件是否是最新的,以及许多其他问题。
因此,在这个项目中,我们将使用Espressif系统提供的官方ESP8266 flash工具(ESP8266 flash下载工具和Arduino UNO作为USB到串行接口)为ESP8266模块闪存官方es8266固件。
安装ESP8266固件有两个原因:如果您想将ESP8266固件更新到最新版本,或者完全安装新固件(以防它被任何程序覆盖)。让我们开始吧。
ESP8266固件更新的硬件设置
在进入更新ESP8266 SoC的固件的过程之前,将ESP8266 WiFi模块配置为下载模式或编程模式是很重要的。
如果你还记得开始使用esp8266和arduino项目中,我已经提到了在下载模式下配置ESP8266模块的GPIO0和RST引脚起着重要作用。
我们将在这里实现相同的设置。联系如下。
- VCC 3.3 v
- 接地,接地
- Arduino UNO的TX到TX
- Arduino UNO的RX对RX(通过电平转换器)
- GPIO0,接地
- 通过按钮RST到GND
- CH_PD 3.3 v
Firmware到ESP8266的闪烁电路图
下图为ESP8266开启闪烁模式的电路图。为了使ESP8266 SoC处于闪烁模式,GPIO0引脚必须连接到GND和RST引脚上的瞬时GND脉冲。
组件的要求
- Arduino UNO
- ESP8266 ESP-01(任何ESP8266模块)
- 1 KΩ电阻器
- 2.2 KΩ电阻器
- 按钮
- 领域开关
- 连接电线
- 微型电路试验板
重要的笔记
- 在继续之前,请参考前面的项目来配置Arduino IDE并准备好Arduino UNO来刷新固件。
- 我已经把GPIO0引脚直接连接到地。在刷新固件后,我就把它和地线断开了。您可以使用SPDT开关来实现此操作,即在一个位置,GPIO0连接到GND,在另一个位置,它可以自由地用作GPIO。
- ESP8266不能容忍5V。必须接3.3V。甚至ESP8266的RX引脚也通过电平转换器连接。
检查当前固件版本
在安装固件之前,我们将首先使用串行通信检查ESP8266模块中现有的固件。为此,我们需要断开GPIO0引脚与GND的连接。* *重要。
按照上面的电路图进行连接(并断开GPIO0与GND的连接)后,将Arduino的USB线插入计算机,打开任意一个串口监视器软件。我正在使用Arduino的串行监视器。你可以使用任何软件,如Putty, Terminal等。
在Arduino IDE中,选择正确的COM Port,打开Serial Monitor。设置波特率为115200,并在串口监视器上选择“NL和CR选项”。之后,按下ESP8266的RST按钮一秒钟并释放。ESP8266模块将重置和显示“就绪”后,一些垃圾数据在串行监视器上。
为了检查固件版本,您需要输入以下AT命令并点击send。这个命令将返回ESP8266模块的固件版本。所有AT命令都应该是大写的。
如果你注意到,我的固件是由ai -思考者技术,我的ESP8266 ESP-01模块的制造商,它是一个相当老的。AT命令集版本是0.21.0.0,SDK版本是0.9.5。
我现在将用Espressif固件(ESP8266 SoC的制造商)替换此固件。
请注意:确认GPIO0引脚连接到GND后,再进行下一步操作。
下载最新的ESP8266固件
ESP8266有两种类型的SDK或软件开发工具包:非操作系统SDK和RTOS SDK。非操作系统SDK,顾名思义,不基于任何操作系统。使用这个SDK,你可以编译IOT_Demo和AT命令。另一方面,RTOS SDK是基于FreeRTOS的。
我将使用非操作系统SDK(从技术上讲,基于非操作系统SDK的固件文件)。ESP8266固件文件是二进制文件的形式,即.bin文件。
现在,因为我将只使用ESP8266的AT命令集,我将只下载与AT命令相关的Bin文件。如需下载AT Commands Firmware for ESP8266,请访问官方链接在这里或者直接从这里下载链接.
ESP8266模块还有其他固件版本。首先尝试本项目中提到的过程,如果成功,可以尝试安装其他ESP8266固件。其他固件可以从上面提到的SDK部分下载。
下载ESP8266 Flash下载工具
下一步是下载工具来更新ESP8266的固件。espresso系统公司专门为此开发了一个小软件。它被称为ESP Flash下载工具。
如需下载ESP8266固件Flash下载工具,请访问这链接,在工具部分下载ESP Flash下载工具,或直接从这链接。
现在我们已经下载了ESP8266的固件和flash工具,我们将继续在ESP8266中安装固件。
在ESP8266中安装固件
为了在ESP8266中闪存固件,首先打开flash下载工具或ESP8266的flash软件。在做这个项目的时候,我的版本是3.6.2.2。因此,打开应用程序文件ESPFlashDownloadTool_v3.6.2.2。
然后,您将得到各种选项,如ESP8266下载工具,ESP8285下载工具,ESP32下载工具和ESP32D2WD下载工具。选择ESP8266下载工具。
打开ESP8266 Flash下载工具后,需要选择我们需要安装的固件文件。你需要在四个不同的地址上传四个文件。下表将为您提供文件列表及其对应地址。
注意:此列表是针对带有1MB Flash的ESP8266模块的FOTA (Firmware over the Air)闪存映射。其他闪存尺寸,请参考ESP8266入门指南,从这个链接。
文件 |
闪存中的地址 |
boot_v1.7.bin |
0 x00000 |
user1.1024.new.2.bin |
0 x10000 |
esp_init_data_default.bin |
0 xfc000 |
blank.bin |
0 xfe000 |
在ESP8266下载工具中,在SPI下载选项卡中,通过单击(…)按钮,在“下载路径配置”选项中选择必要的文件。另外,在空白处添加相应的地址。
在选择四个文件并填写地址后,设置晶体频率为26MHz(通常是26MHz,但如果您的ESP8266板有不同的晶体,请输入该值)。接下来选择flash大小。因为我有一个1MB的闪存,所以我选择了8mb(等于1MB)的闪存大小选项。
最后,选择正确的“COM端口”,将波特率设置为“115200”。确保所有串行终端都是关闭的。
在开始闪烁之前,检查GPIO0连接到GND,并在RST引脚上给出一个LOW脉冲(按Reset按钮)。
现在点击START按钮。ESP8266中的固件应该开始闪烁。如果你注意到在ESP8266 Firmware Flash Tool中,当你点击START时,你会得到两个MAC地址作为AP和STA,以及在DETECTED INFO部分中关于模块的信息。
如果一切顺利,ESP8266模块必须更新为新的固件。如果有错误,断开USB连接线,重新连接,单击“开始”后,按下ESP8266的复位按钮。
您将在工具上得到一个FINISH消息,在此之后您可以关闭工具。断开GPIO0与GND的连接,复位设备。再次打开Arduino的串行监视器,检查是否有新的固件。
请注意:打开串口显示器后,点击Reset按钮。
为了检查固件版本,输入AT+GMR并点击发送。您将得到一个带有AT版本号和SDK版本号的响应。在我的例子中,新的AT命令集版本是1.5.0.0,SDK版本是2.1.0。
在这个项目中,您已经看到了如何使用官方的Espressif ESP8266固件在ESP8266模块中更新/flash固件。
21的反应
这就跟你问声好!我确实遵循了程序,并在最后看到了成功的FINISH。然而,在断开GPIo和重置设备后,它给出了一些垃圾字符,并说等待WIFI..........然后继续画点?它不响应来自串行监视器(arduino)的AT调用。请建议…
似乎做不到这一点。下载很顺利,但当我重置ESP12时,它说:
ets 1月8日2013,rfirst cause:2, boot mode:(3,6)
加载0x40100000, len 2592,房间16
尾巴0
chksum 0 xf3
加载0x3ffe8000, len 764,房间8
尾巴4
chksum 0 x92
加载0x3ffe82fc, len 676,房间4
尾巴0
chksum 0将
csum 0将
第二引导版本:1.7(5d6f877)
SPI速度:40MHz
SPI模式:QIO
SPI Flash大小和地图:4Mbit(256KB+256KB)
跳到运行user2 @ 41000
错误的魔法!
备份启动失败。
用户代码完成
这是怎么呢ESP12有不同的BIN吗?
不。ESP-12也基于ESP8266EX SoC,但具有额外的功能,如更多的GPIO引脚,ADC, SPI, I2C等。我不知道这是怎么回事。
我也遇到过同样的问题。然后我意识到“路径”旁边的复选框没有勾选。实际上是在说“我不想将这些文件中的任何一个闪存到esp8266”。勾选文件选择框,一切工作正常。
非常感谢!!
谢谢你的信息。然而,在遵循您的步骤后,我一直得到这个错误。ESP8266芯片同步错误esp_sync_blocking。你能帮忙吗?
我想这和波特率有关。尝试设置正确的波特率。
我遵循了这个过程两次,第一次是试图使用v1 ..6.2固件。我对装载地址有点紧张??这有效地砖了第一个单元。
我再次尝试,阅读并遵循每一个步骤,但这一次使用相同的v 1.5.1固件。
我得到了同样的结果,又是一个砖砌的单位!
两个单元都发送输出,比特的范围是12.3uSec,大约是80,000波特(不是标准波特率)我猜?固件中有损坏的东西或加载地址是错误的?
你能告诉我你是怎么找到这些收货地址的吗?
自从我把它贴在这里以来,我一直使用相同的地址,没有任何问题。几天前,我甚至使用相同的程序将我的ESP-01升级到较新的固件(V1.6.2)。
这些地址在ESP8266EX SoC的官方数据表中提供(可以从Espressif网站下载),也有一些github页面。
请问你用的是什么模块?另外,它是否有5V到3.3V电平转换器(用于ESP8266的RX)?模块的电源呢(只有3.3V)。
ESP8266下载工具有问题。我没有探究它在什么版本启动,但在3.6.4下SPIDownload选项卡将不能正确闪光,当你试图使用AT接口时,你会看到jiberish。
简单的修复,使用MultiDownload选项卡,扩大窗口,只是设置和加载单个模块。它将正确加载和运行。这不是上面说明的问题,硬件或固件(1.6.2)的问题,而是下载工具的问题。
你好,我想知道我的ESP 8266是不是砖的。
1)最初我能用AT命令与我的ESP 8266交谈,但它有时不稳定,有时不接受我的AT命令。但我很确定它起作用了。
2)我尝试了几次通过arduino UNO上传草图,有一次它显示EEPROM失败的错误信息,但尝试了几次后成功
3)现在它没有响应我的at命令,无法检测到tESP 8266 WiFi
4)我试着根据你的教程来闪。但WiFI和At命令没有响应。
它应该怎么做?
我用这个程序更新了我的ESP-01模块的固件,但没有成功。尽管检查了所有的东西,但当我启动闪烁过程时,所有的东西都挂了,没有任何迹象表明闪烁过程正在进行。我不知道现在该怎么办,不知道有没有人能给点建议。
你好。我也有闪光加载的问题。出现如下内容:ESP8266芯片熔解检查错误esp_check_mac_and_熔解。这是什么,我怎么解?
谢谢。
我希望这篇文章能帮助那些有闪光ESP模块问题的人:我有多次不成功的闪光尝试。这有点像一场噩梦。
在升级到一个新的SDK版本之前,我使用这个工具将我的ESP模块降级到一个旧版本:点击这里
一旦flash工具用旧版本更新模块,我就会使用Espressif工具(以及所述的过程)升级到最新的SDK版本。这对我来说似乎很有效。我无法从技术上解释为什么它会起作用,但它确实起作用了。
希望它可以帮助。
非常感谢你写下这篇文章。
我将讲述我的经历。
1.如果你之前上传过一些Arduino代码,你不会在一些垃圾数据后看到“ready”。别担心,跳过这个,按照下面的说明做。
2.通过将波特率切换到74880波特,然后按复位按钮,可以看到什么是垃圾数据。
3.这是我ESP8266上的数据。
ets 1月8日2013,rfirst cause:2, boot mode:(3,6)
加载0x40100000, len 2592,房间16
尾巴0
chksum 0 xf3
加载0x3ffe8000, len 764,房间8
尾巴4
chksum 0 x92
加载0x3ffe82fc, len 676,房间4
尾巴0
chksum 0将
csum 0将
第二引导版本:1.7(5d6f877)
SPI速度:40MHz
SPI模式:QIO
SPI Flash大小和地图:8Mbit(512KB+512KB)
跳到运行user1 @ 1000
Rf CAL扇区:251
频率跟踪使能
射频[112]:03
射频[113]:00
射频[114]:01
SDK ver: 2.1.0(ace2d95)编译@ 10月24日2017 12:04:16
Phy ver: 1134_0, pp ver: 10.2
4.在“闪存地址”表中有一个错误。user1.1024.new.2.bin文件的地址应该是0x01000,而不是0x100000。
谢谢,给出正确的地址输出
ets 1月8日2013,rfirst cause:2, boot mode:(3,7)
加载0x40100000, len 2592,房间16
尾巴0
chksum 0 xf3
加载0x3ffe8000, len 764,房间8
尾巴4
chksum 0 x92
加载0x3ffe82fc, len 676,房间4
尾巴0
chksum 0将
csum 0将
第二引导版本:1.7(5d6f877)
SPI速度:40MHz
SPI模式:QIO
SPI Flash尺寸和地图:16Mbit(1024KB+1024KB)
跳到运行user1 @ 1000
但没有操作/ AT cmd似乎工作。如何进行呢?
固件在ESP8266上显示得很好。终端已准备好设备报告。但是它不响应AT命令。
使用AT固件1.7从espressif
你想出来了吗?我也有同样的问题。闪烁,但没有响应AT命令。
在我成功闪现ESP后,它只输出串行监视器中的垃圾。而且它并没有准备好。
谁知道什么吗?
首先,感谢一个伟大的向导,真的帮助我把一个没有反应的设备复活了。
我花了一段时间才找到合适的固件,但一旦我找到了,我设法将我的设备闪到1.5.1。(ESP8266 AT Bin V1.5.1)
有趣的是,我似乎能够升级到的最大版本是1.6.2 (ESP8266 AT Bin V1.6.2),使用相同的地址作为指南。1.7.1传输,但设备没有响应。1.6.2似乎满足了我的需要。
问候
安德鲁