01 ESP8266-01S模块


虽然在小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?验证了对于ESP8266-01S能够下载MicroPython并进行编程,但将变成存储在本地的时候出现无法存储的现象,这就使得ESP8266-01s使用MicroPython变成开发出现了问题。

根据网络上相关的提示,通过修改下载固件的版本,寻找512M Flash版本,看是否能够解决这个问题。

1.基本介绍

esp8266-01s 是个比较常用的wifi模块 体积小 功能强大(说是可以用于工业)。常见到的ESP-01S是在原来的ESP-01的基础上优化了PCB天线设计,并对于内部集成了上拉电阻。

▲ ESP-01模块及其外部引脚定义

相应的ESP8266-01s的 8PINs管脚定义如下表所示:

【表1-1 ESP8266管脚配置】

▲ ESP8266-01S Pin Configuration

从上面表格来看,ESP8266中可以使用可的管脚只有四个:GPIO0,GPIO2,RXD,TXD。

2.存在问题

小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython? 验证了给 ESP8266-01s下载MicroPython固件的过程。

▲ 利用串口通讯板对于ESP8266进行下载固件

但是存储MicroPython到本地时出现错误。这有可能时域下载的MicroPython版本有关系。

▲ 存储MicroPython到本地时出现错误

02 重新下载固件


1.改造下载插座

为了方便对于ESP8266下载固件,将GPIO0与GND短接。这样就无须手动对GPIO0与GND进行短接了。

▲ 将GPIO0与GND短接

在这个过程,需要两次上电:

  • 第一次上电,Thonny软件完成对于ESP8266 的擦除;
  • 第二次上电,Thonny完成对于ESP8266的编程过程;

2.下载512kFlashMicroPython固件

MicroPython Download 页面下载面向512kflash的固件版本: ESP8266-512k-20210202-V1.14.bin

【下载测试错误】

下载完之后,运行出现如下错误。

ERROR   thonny.plugins.micropython.backend: Crash in backend
Traceback (most recent call last):File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\backend.py", line 135, in __init__self._prepare_after_soft_reboot(clean)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\backend.py", line 154, in _prepare_after_soft_rebootself._execute_without_output(script)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\backend.py", line 531, in _execute_without_outputout, err = self._execute(script, capture_output=True)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\backend.py", line 505, in _executeself._execute_with_consumer(script, consume_output)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\bare_metal_backend.py", line 708, in _execute_with_consumerself._submit_code(script)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\bare_metal_backend.py", line 567, in _submit_codeself._submit_code_via_raw_paste_mode(to_be_sent)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\plugins\micropython\bare_metal_backend.py", line 655, in _submit_code_via_raw_paste_moderaise AssertionError("Got %r instead of raw-paste confirmation" % response)
AssertionError: Got bytearray(b'OK\r\nMPY: soft reboot\r\n') instead of raw-paste confirmationBackend terminated or disconnected. Use 'Stop/Restart' to restart.────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

3.下载1M Flash版本

下载 ESP8266-1M-20210202-中.14bin 进行下载。

测试之后,仍然出现以下错误。

Traceback (most recent call last):File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\workbench.py", line 1708, in event_generatehandler(event)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\shell.py", line 433, in _handle_program_outputself._update_visible_io(None)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\shell.py", line 512, in _update_visible_ioself._apply_io_event(data, stream_name)File "C:\Users\zhuoqing\AppData\Local\Programs\Thonny\lib\site-packages\thonny\shell.py", line 555, in _apply_io_eventself.active_extra_tags.pop()
IndexError: pop from empty list

下载 esp8266-20210412-unstable-v1.14-157-g2668337f3.bin 仍旧出错。

4.对于错误现象的解释

在前面【2-1 ~ 2-3】中下载测试的过程中,所出现的错误,都是源自于一个问题:也就是使用插座A进行下载,使用B进行测试。

即使将原来的最初ESP8266固件下载,在B座上进行测试依然出现错误。

将A插座的短路线去除,将下载后的ESP8266模块放在A进行测试,则一切正常。所以现在看来这个问题依然是由于所使用的插座对应的问题。

▲ 下载插座A,B

03 重新下载


1.在A座增加一个跳线子

使用一个跳线子连接在A座的PIN5(GPIO0)与PIN1(GND)之间。这样在下载的时候使用跳线子将PIN5与PIN1进行短接。在测试的时候将PIN5与PIN1断开。

2.下载不同版本进行测试

(1)下载最新版本

经过测试可以工作;但是仍然无法存储本地的文件。

(2)下载512M Flash版本

下载之后,不能够工作,进而也无法测试是否可以存储本地的文件。

(3)下载1M Flash版本

ESP8266模块可以运行MicroPython REPL了。

可以存储本地文件了!!!!!

▲ 本地文件系统存储文件

(4)下载2M版本

可以工作,但无法存储。

04 原因解释


1.最初存储问题解释

在所使用的ESP8266-1S模块上, Flash的型号为25080A,它是一个1M bytes的 Flash,所以,在下载版本的时候需要使用1M Flash版本。

2.测试程序

使用PIN2输出125Hz的PWM波形。

from machine                import Pin,PWM
import time
pin = Pin(0)
pwmpin = Pin(2, Pin.OUT)
pwm = PWM(Pin(2), Pin.OUT)
pwm.freq(125)
pwm.duty(512)
count = 0
while True:print('pin:%d'%pin.value())if pin.value() == 0: breakcount += 1time.sleep_ms(150)
print('User stop.')

▓ 奇怪的是,在上述代煤种,需要明确将pwmpin声明为 Pin.OUT,这样才能够在GPIO2输出波形。

▲ Pin2 管脚输出PWM波形

3.将上述程序存储在boot.py

将上述程序存储在本地的Boot.py中,再上电之后,便可以运行该程序了。

但是此时使用Thonny已经无法在与模块联通了。

(1)使用GPIO0退出

在上述程序中设置了对于GPIO0置低之后,可以跳出循环,所以通过对于GPIO0置低,可以重新回到REPL状态。

(2)Boot.py不设置死循环

如果程序不进入死循环,仅仅进行初始化。那么该程序被烧制成Boot.py之后,便可以进入REPL状态。

from machine                import Pin,PWM
import time
pin = Pin(0)
pwmpin = Pin(2, Pin.OUT)
pwm = PWM(Pin(2), Pin.OUT)
pwm.freq(125)
pwm.duty(512)
count = 0
print('User stop.')

4.GPIO2在上电的时候需要保持高电平

如果GPIO2外部连接负载,则需要能够保证GPIO2在上电的时候能够保持高电平。否则模块便不会进入工作状态。

▲ GPIO2需要在上电的时候保持高电平

▌实验结论


对于ESP8266-1s下载编程的时候,需要根据所使用的ESP8266-01S的板上的Flash的型号确定对应的容量,这样下载之后,才能够获得正确的运行以及本地的 Flash File System。

实验中,测试了将应用程序存储在ESP8266本地的Boot.py中,这样模块一上电便可以直接运行相应的程序了。

如果在Boot.py中存在着死循环,此时就无法与REPL相联系了。唯一的方法,就是重新在将MicroPython下载的本地。

解决这个问题的方法:

  • 在本地的程序中设置调出死循环的条件。比如将某个管脚的电平状态坐在条件;
  • 或者在程序运行过程中直接能够退出本地的程序。

■ 相关文献链接:

  • 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
  • MicroPython Download
  • ESP8266-512k-20210202-V1.14.bin
  • ESP8266-1M-20210202-中.14bin
  • esp8266-20210412-unstable-v1.14-157-g2668337f3.bin

修改ESP8266-01S MicroPython下载固件,看是否能够烧录程序相关推荐

  1. DSP下载器接口引脚以及烧录程序中的两个错误解决

    1.DSP下载器引脚的定义 下图是TI-14Pin DSP下载器引脚的定义 其中pin6是NC,一般该pin是空的,不存在的. 最重要的是:VCC必须是5V: 如果是VCC=3.3V在烧录程序时会提示 ...

  2. Python实战之小说下载神器(二)整本小说下载:看小说不用这个程序,我实在替你感到可惜*(小说爱好者必备)

    前言 这次的是一个系列内容给大家讲解一下何一步一步实现一个完整的实战项目案例系列之小说下载神器(二)(GUI界面化程序) 单章小说下载保存数据--整本小说下载 你有看小说"中毒"的 ...

  3. 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型

    简 介: 本文给出了利用CH340C芯片制作ESP32,ESP8266下载器的方法,并进行了实测测试. 关键词: ESP32,CH340C,MicroPython,下载器 ▌01 ESP的MicroP ...

  4. esp8266 刷 MicroPython固件,并使用MicroPython File Uploader python文件上传工具上传python文件

    1.使用模块esp8266 2.进入固件官网:https://micropython.org/download/esp8266/ 3.将下载的esp8266-20220618-v1.19.1.bin放 ...

  5. 为什么有时候我们在测试ESP32或ESP8266模块使用 QOUT/QIO 下载固件,程序无法正常运行? (DIO/DOUT 正常)另外ESP32功耗怎么校验?

    我们在测试ESP32或ESP8266模块使用 QOUT/QIO 下载固件时,首先需要确认模组内 flash 支持哪些模式,以及模组设计的走线是否满足模式需要: 其次检测 Flash状态寄存器的 QE ...

  6. 毕业设计--20200301--domoticz的智能家居设备---esp8266(micropython)+MQTT 做一个可控开关

    继续分享我的智能家居毕设的进度,这次主要实现的就是在domoticz下的一个智能开关的实现. 关于 domoticz 和天猫精灵的对接 请参考我的上一篇文章 这篇文章主要是受到了大佬的启发,如果你也是 ...

  7. 自编译 micropython ESP32固件指南以及16MB固件分享

    自编译 micropython ESP32固件攻略以及16MB/8MB固件分享 本教程是连续奋斗了好几天才走向编译成功的.一路都是采坑过来的,为了后面学习者少走弯路少采坑的原则,这里将分享microp ...

  8. 【丁丁历险记】ESP8266配置microPython

    [丁丁历险记]全篇索引​​​​​​ ESP8266安装microPython环境,其中包括了Python脚本的上传与下载. 一.安装microPython到ESP8266 microPython提供了 ...

  9. ESP8266/ESP32 + MicroPython (一) 初识

    Arduino 大概来说是基于 c.c++.java 的,程序需要编译再上传,单一用途还算顺溜,但是如果有一些比较灵活的场合,就没有解释型环境来的方便. Python 也是基于 c.c++,但是默认是 ...

最新文章

  1. entity framework5 sqlserver2005 事务(TransactionScope)报未启用MSDTC错误解决办法
  2. 每日英语:The Invasion of the Online Tutors
  3. MySQL 是如何实现RC事务隔离级别的
  4. 【codevs2304】【BZOJ1875】HH去散步,第一次的矩阵加速DP
  5. FE.ES-理解Event Loop
  6. D3.js学习(一)
  7. Logistic(对数几率)回归
  8. 拓端tecdat|R语言蒙特卡洛方法:方差分量的Metropolis Hastings(M-H)、吉布斯Gibbs采样比较分析
  9. python头像右上角加红色数字_「微信头像右上角数字」微信头像右上角红色数字怎么添加? - seo实验室...
  10. 消费品企业,会员营销四大痛点
  11. 如何提高英文的科研写作能力——施一公
  12. jodconverter下载地址
  13. 域名注册查询API接口工具
  14. (二)验证码模块(随机英文验证and随机英文数字混合验证+Session)
  15. ubuntu下bochs的安装和配置
  16. android系统优化启动时间(Google官方推荐)
  17. extjs json 数据的操作 自由操作服务器返回的json数据
  18. springboot校园二手交易市场网站毕业设计-附源码071008
  19. QT_地图导航 源码下载
  20. 写网站没有模板?这几个可以下载模板的网站,非常惊艳

热门文章

  1. mycheckpoint
  2. 接班 RT 系统?Windows 10 云服务版首次亮相
  3. ehcache.xsd
  4. 算法----选择排序(select sort)
  5. 将选定的文本对象左对齐、右对齐或对中
  6. C++的那些事:你真的了解引用吗
  7. ID--HANDLE--HWND三者之间的互相转换
  8. LYNC2013部署系列PART2:后端部署
  9. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题
  10. 顺天则昌,逆天则亡(2006-03-13 21:07:17)(新浪)