ESP8266 NodeMCU MicroPython 串行垃圾,无法擦除闪存或上传文件

Posted

技术标签:

【中文标题】ESP8266 NodeMCU MicroPython 串行垃圾,无法擦除闪存或上传文件【英文标题】:ESP8266 NodeMCU MicroPython garbage in serial, cannot erase_flash or upload files 【发布时间】:2021-12-10 18:26:25 【问题描述】:

看来我的 NodeMCU Lolin esp8266 模块坏了,请确认)

首先一切正常,但后来...

    我上传了一个有点奇怪的boot.py来玩UART0
#boot.py
import uos, machine
import gc
gc.collect()

import esp
import time

esp.osdebug(None)
uart = machine.UART(0, 115200)

def uart_test():
    print('before disabling REPL on UART')
    uos.dupterm(None, 1) # disable REPL on UART(0)
    print('after detaching REPL')
    time.sleep(5)
    uart.write('123')
    r=uart.read()
    # reattach REPL
    uos.dupterm(uart, 1)
    print('after attaching REPL')
    print('r: ')
    print(r)
    然后我上传了main.py,并在无限循环中使用 time.sleep() 来检查状态,同时我将模块装入框中。
#main.py
import time
from machine import Pin, Signal

led = Signal(2, mode=Pin.OUT, invert=True)
while True:
    led.on()
    time.sleep(1)
    led.off()
    time.sleep(1)
    然后,当我在盒子中安装模块时,我不小心从 PCB 上撕掉了一个元件,然后将它焊接回去。我不知道这个元素是什么,它的目的是什么。我在图片上标记了这个元素 IMG: broken element

毕竟我无法通过串口连接到模块,我只看到屏幕上的垃圾,尝试了不同的波特率。 IMG: screen is empty and doesen't react to keys or Ctrl+C

重置板后屏幕上只有垃圾IMG: garbage after reset

我也不能使用esptool擦除闪存。

MCU 正在工作,因为它在供电时 LED 闪烁,因为它在 main.py 中编程

我尝试通过将GPIO0GND 连接来启用引导加载程序模式,blink 在此模式下不起作用,但esptool.py 在此模式下也不起作用。 esptool日志

python3 -m esptool --port /dev/cu.usbserial-142240 --baud 9600 erase_flash
esptool.py v3.1
Serial port /dev/cu.usbserial-142240
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header

带有 --trace arg 的 esptool 日志

python3 -m esptool --port /dev/cu.usbserial-142240 --baud 115200 --trace erase_flash
esptool.py v3.1
Serial port /dev/cu.usbserial-142240
Connecting...TRACE +0.000 command op=0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
TRACE +0.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
TRACE +0.023 Read 1 bytes: e2
TRACE +0.000 Read invalid data: e2
TRACE +0.000 Remaining data in serial buffer: 
    6efe6ee43cfe2792 07eceeee708ef21c | n.n.<.'.....p...
    1e0e1c906e6c6c1c 9227c71eeee76c   | ....nll..'....l
.TRACE +0.056 command op=0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
TRACE +0.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
TRACE +0.002 Read 1 bytes: ee
TRACE +0.000 Read invalid data: ee
TRACE +0.000 Remaining data in serial buffer: 
    240eec6e9c9c8c9c e70e026c6ce4ee9c | $..n.......ll...
    6e6e00f26c62e4ee 70e26ee2ec626c   | nn..lb..p.n..bl
...
# and a lot of similar messages

我的 nodemcu 模块是怎么回事,它死了还是没有?我可以尝试做什么?

【问题讨论】:

【参考方案1】:

正如您自己暗示的那样,您遇到硬件相关问题的可能性要大于软件相关问题。

重新焊接断裂的部分,然后重试。您可能损坏了用于对输出进行噪声过滤的电阻器/电容器(我不是硬件专家)或对调节电路板运行所需的电压至关重要的东西。

编辑

正如https://raw.githubusercontent.com/hallard/NodeMCU-Gateway/master/pictures/NodeMCU-Lora-Gateway-top.png 所指出的那样,尽管该板的设计不同,但您似乎断开了电容器或二极管。要么转焊,要么给自己买一个新的 (100nf) 或二极管 (1N4148)

【讨论】:

我试了几次,都没有效果。我想我烧了 CH304 串行到 USB 转换器电路中的一些元件。这就是为什么它不起作用的原因。我有外部 USB 到 UART 转换器,也许我会尝试通过它连接,或者购买新的 nodemcu。无论如何,谢谢你的建议! 我发现它是PCB板上的二极管,我把它和类似的相邻二极管焊接了出来。在二极管测试模式下用万用表检查,两者都正常工作。然后将其焊接回来,但没有帮助。【参考方案2】:

结论:

今天我收到了 USB 转 UART 转换器,将它连接到我的 ESP8266 板的 TX 和 RX,一切正常。所以问题出在板载 CH340 转换器上。

【讨论】:

以上是关于ESP8266 NodeMCU MicroPython 串行垃圾,无法擦除闪存或上传文件的主要内容,如果未能解决你的问题,请参考以下文章

ESP-NOW ESP8266 NodeMCU单板双向通信

ESP8266 nodemcu

ESP8266 NodeMCU 内存不足

基于MacOS搭建ESP8266 NodeMCU CP2102开发环境

基于MacOS搭建ESP8266 NodeMCU CP2102开发环境

基于MacOS搭建ESP8266 NodeMCU CP2102开发环境