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
中编程
我尝试通过将GPIO0
与GND
连接来启用引导加载程序模式,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 串行垃圾,无法擦除闪存或上传文件的主要内容,如果未能解决你的问题,请参考以下文章
基于MacOS搭建ESP8266 NodeMCU CP2102开发环境