小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?

分享 同时被 3 个专栏收录
1082 篇文章 8 订阅
722 篇文章 31 订阅
67 篇文章 2 订阅

 

01 ESP8266模块下载MicroPython


手边有这类小型的ESP8266WiFi串口模块: ESP-01S 无线透传工业级 ESP8266串口转WiFi模块 。现在有一个问题:它是否可以使用MicroPython进行开发呢? 就像在 ESP8266的一些MicroPython基础实验 中的模块那样下载 ESP8266 MicroPython 的固件。

下面图中的快速制版的PCB使用MAX3232作为接口,连接ESP8266与PCB的RS232 UART接口。
▲ ESP8266通讯模块

▲ ESP8266通讯模块

修改ESP8266的固件可以直接使用下面的 ESP8266固件烧写器 来进行修改。

▲ ESP8266烧录器

▲ ESP8266烧录器

1.模块的接口

▲ 8PIN的外部引脚定义

▲ 8PIN的外部引脚定义

▲ 引脚功能定义

▲ 图1-1-1 引脚功能定义

2.Thonny开发环境

Thonny开发环境 介绍了Thonny MicroPython的开发环境的安装,并对ESP8266进行软件更新的过程。

MicroPython网站Download 选择 ESP8266-20210202-V1.14bin 文件下载到本地计算机目录下。

使用这个软件的 ESP8266 Firmware Installer 对ESP8266-01S进行软件更新。下面是更换过程,但是出现固件下载错误。

▲ 工作模式下出现下载错误

▲ 工作模式下出现下载错误

下面是在Thonny下载界面信息框中给出的出错信息。显示了Thonny无法发送芯片擦除命令。

C:\Users\zhuoqing\AppData\Local\Programs\Thonny\python.exe -u -m esptool --chip esp8266 --port COM1 erase_flash
esptool.py v3.0
Serial port COM1
Connecting........_____....._____....._____....._____....._____....._____....._____

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

Erase command returned with error code 2C:\Users\zhuoqing\AppData\Local\Programs\Thonny\python.exe -u -m esptool --chip esp8266 --port COM1 erase_flash
esptool.py v3.0
Serial port COM1
Connecting........_____....._____....._____....._____....._____....._____....._____

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

Erase command returned with error code 2C:\Users\zhuoqing\AppData\Local\Programs\Thonny\python.exe -u -m esptool --chip esp8266 --port COM1 erase_flash
esptool.py v3.0
Serial port COM1
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:7f:0a:81:6c
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.4s
Hard resetting via RTS pin...
Erasing done
------------------------------------

C:\Users\zhuoqing\AppData\Local\Programs\Thonny\python.exe -u -m esptool --chip esp8266 --port COM1 write_flash --flash_mode keep --flash_size detect 0x0 D:/Temp/esp8266-20210202-v1.14.bin
esptool.py v3.0
Serial port COM1

根据 图1-1-1 中关于ESP8266-01S的8PIN管脚功能定义,需要对于PIN3(GPIO0)拉低,使得模块进入 UART编程状态。

下面使用金属镊子对ESP8266的PIN3(GPIO0)与PIN1(GND)断路,然后上电,此时ESP8266进入了UART下载模式。

▲ 使用金属镊子对PIN3于PIN1断路,再上电使得模块进入程序下载状态

▲ 使用金属镊子对PIN3于PIN1断路,再上电使得模块进入程序下载状态

3.对ESP8266设置下载状态

整个过程需要经过两个步骤:

(1)擦除ESP8266

通过前面使用金属镊子帮助使得ESP8266-01s模块进入下载状态,使用Thonny的Update Firmware对ESP8266进行擦除。

(2)下载ESP8266固件

通过前面使用金属镊子帮助使得ESP8266-01s模块进入下载状态,使用Thonny的Update Firmware对ESP8266进行固件下载。

下载完之后,重新对于ESP8266上电,便可以在Thonny的Shell通过REPL来对于ESP8266-01S进行控制了。下面显示了使用help()命令获得输出。

▲ 固件下载之后通过Thonny 的REPL对于ESP8266进行操作

▲ 固件下载之后通过Thonny 的REPL对于ESP8266进行操作

 

02 测试ESP8266-01S


根据 ESP8266的一些MicroPython基础实验 对于ESP8266-01S进行初步测试。

1.GPIO测试

在ESP8266-01S具有两个GPIO:GPIO0,GPIO2。

(1)测试GPIO2

GPIO2在测试板上有LED连接到地。可以通过它来显示GPIO2的状态。

from machine                import Pin
import time
p = Pin(2, Pin.OUT)
print('Test esp8266-01s GPIO0')
while True:
    p.on()
    time.sleep_ms(250)
    p.off()
    time.sleep_ms(250)

▲ 对于板载上的GPIO2的LED进行控制

▲ 对于板载上的GPIO2的LED进行控制

(2)测试GPIO0

由于GPIO0没有连接任何外设,通过示波器测试该端口的波形。

from machine                import Pin
import time
p = Pin(0, Pin.OUT)
print('Test esp8266-01s GPIO0')
while True:
    p.on()
    time.sleep_ms(25)
    p.off()
    time.sleep_ms(25)

▲ 测量GPIO0的波形

▲ 测量GPIO0的波形

2.测试ADC

由于ADC引脚并没有引出,所以下面的程序可以执行,但是信号与外部没有关系。

import machine
import time
adc = machine.ADC(0)
while True:
    print(adc.read())
    time.sleep_ms(250)

3.测试PWM

测试代码:

import machine
import time
p0 = machine.Pin(0)
pwm0 = machine.PWM(p0)
pwm0.freq(1000)
pwm0.duty(100)

下图显示GPIO0上的波形:

设置PWM的duty 0 ~ 1023。

4.Socket通讯

(1)测试代码

import usocket
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('TENDA626A', 'gniqouhz')
print(wlan.ifconfig())

us = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
sockaddr = usocket.getaddrinfo('0.0.0.0', 8003)[0][-1]
sendaddr = usocket.getaddrinfo('192.168.0.109', 4455)[0][-1]
print(sendaddr)
us.bind(sockaddr)
us.sendto('lalala~!~~~\r\n', sendaddr)

print("Test UDP:")
while True:
    data,addr = us.recvfrom(1024)
    print('Receive from :', addr)
    print(data)
    us.sendto('lalala~!~~~\r\n', sendaddr)

从程序print(wlan.lfconfig())获得模块的IP地址。

('192.168.0.123', '255.255.255.0', '192.168.0.1', '166.111.8.29')

(2)STM32Bootloader终端

使用STM32BOOTLOADER中断来进行UDP发送、接收。在设置IP,Port之后,点动“SET UDP”完成设置。


然后在STM32BOOTLOADER对话窗口发送 ,便可以收到了对应的信息了。

 

▌实验总结


通过实验验证了将ESP8266-01S下载MicroPython的固件过程。并通过Thonny开发环境完成对于ESP8266-01S的固件下载,并进行的内部的编程测试。

▓ 问题所在: 通过测试,对于ESP8266-01S进行编程的时候,它的Python程序无法存储在模块内,也可去除无法通过编程使其能够独立工作。

▓ 问题解释:修改ESP8266-01S MicroPython下载固件,看是否能够烧录程序 实验发现,通过下载 ESP8266-1m-20210202-V1.14.bin 便可以解决这个问题。这个问题的原有是因为所购买的的ESP8266的模块中的Flash的容量为1M,而原来下载的MicroPython的版本是按照2M来配置的。

 


■ 相关文献链接:

  • 3
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值