ESP8266烧写micropython固件

0 背景

今天翻出了很久没有使用的ESP8266开发板,还记得是当时同学做IOT开发的时候推荐给我的,可以基于micropython进行开发,就顺便入手了几块。然后试了网上很多先用esptool擦除固件,再用esp flasher download tool完成烧写的教程,但是一直出现Error。后来使用nodemcu-flasher完成烧写,而且过程简单。

1 前提准备

环境:Windows 10

下载CH340驱动:http://www.pc6.com/softview/SoftView_198175.html

下载micropython固件:https://micropython.org/download/#esp8266

下载烧写工具:https://github.com/nodemcu/nodemcu-flasher

下载putty:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

下载webrepl客户端:http://www.wbudowane.pl/download/

2 烧写固件

1.打开nodemcu-flasher,在Config选项中添加指定路径的micropython固件(.bin文件)。

ESP8266烧写micropython固件_第1张图片

2.在Advanced选项中修改如下参数。

ESP8266烧写micropython固件_第2张图片

3. 在Operation选项中选择COM端口后点击FLASH即可完成固件的烧写。

ESP8266烧写micropython固件_第3张图片

3 使用PuTTY连接WIFI

 1.打开PuTTY,设置端口和波特率(115200)后打开端口。

ESP8266烧写micropython固件_第4张图片

 2.在对话框中依次输入下面的命令,即可连接WIFI。

import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.scan()                             # Scan for available access points
sta_if.connect("", "") # Connect to an AP
sta_if.isconnected()                      # Check for successful connection

 结果如下:

ESP8266烧写micropython固件_第5张图片

4 使用webrepl上传文件

断开PuTTY中打开的端口后,打开webrepl软件,选择对应的端口,点击open。在对话框中输入import webrepl_setup以进行配置webrepl:

import webrepl_setup

 接下来选择Enable it running on boot,然后连续输入两次密码完成配置。

ESP8266烧写micropython固件_第6张图片

在此之后,按下ESP8266开发板上的复位键后重新在webrepl客户端中打开端口,输入下面的命令启动webrepl并查看ESP8266的IP地址。

import webrepl
webrepl.start()
import network
sta_if = network.WLAN(network.STA_IF)
sta_if.ifconfig()

 

ESP8266烧写micropython固件_第7张图片

 sta_if.ifconfig返回的元祖的第一个参数就是分配给ESP8266的IP地址。

打开webrepl的在线客户端,将IP地址修改为在上一步获得的IP地址“ws://192.168.0.46:8266/”后点击连接,出现[welcome to micropython]后在password中输入密码后,出现[WebREPL connected],表示成功连上开发板,接下来就可以摆脱那个特别容易闪退的本地客户端,通过这个在线客户端上传文件了。

5 设置上电自动连接WIFI

micropython初始化后会自动执行main,py文件,因此我们只需要在其中设置上电自启动时连接WIFI即可,main.py参考程序如下,具体的语法规则可以参考micropython官网的参考手册。下面的两个程序均可以使用,上传程序,复位ESP8266开发板后生效。

程序1

# main.py
import network
import utime

SSID = "VM6118544"
PASSWORD = "Dw3tnnjmmYdr"

def do_connect():
	wlan = network.WLAN(network.STA_IF)
	wlan.active(True)
	if not wlan.isconnected():
		wlan.connect(SSID, PASSWORD)
		start_time = utime.time()
		end_time = start_time + 5
		while utime.time()

程序2

# main.py
import network
import utime

SSID = "VM6118544"
PASSWORD = "Dw3tnnjmmYdr"

def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASSWORD)

    start = utime.time()
    while not wlan.isconnected():
        utime.sleep(1)
        if utime.time()-start > 5:
            print("connect timeout!")
            break

    if wlan.isconnected():
        print('network config:', wlan.ifconfig())

do_connect()

6 GPIO/开发板引脚对应关系

开发板引脚在ESP8266的使用中还是比较普遍的,在实际测试中发现开发板引脚在micropython中不能直接定义,因此找出了开发板引脚与GPIO引脚间的对应关系。其中GPIO16只能做DIO,不支持PWM和中断。GPIO[9, 10]是ESP - 12E以后才提供的,但是GPIO9不能做通用IO,GPIO10和GPIO16类似。

开发板引脚 GPIO引脚 开发板引脚 GPIO引脚
D0 GPIO16 D1 GPIO5
D2 GPIO4 D3 GPIO0
D4 GPIO2 D5 GPIO14
D6 GPIO12 D7 GPIO13
D8 GPIO15 D9/RX GPIO3
D10/TX GPIO1 D11/SD2 GPIO9
D12/SD3 GPIO10    

7 参考文献

https://blog.csdn.net/yannanxiu/article/details/53966374

https://blog.csdn.net/qq_28266137/article/details/78214756

 https://blog.csdn.net/makeryzx/article/details/79872567

https://blog.csdn.net/solar_Lan/article/details/79248440

http://blog.sina.com.cn/s/blog_537da9e40102x7vl.html

你可能感兴趣的:(micropython)