简述micropython环境如何把Python源程序写进ESP8266模块?

从玩microPython 到现在,一路荆棘一路坎坷。

不知道只有我遇到这样的问题还是microPython太不稳定,还是我买的板子太糙。总之遇到了太多问题了。

最重要,也是最让我烦躁的问题是:刷不进程序,刷不进程序。

到头来,依旧解决不了问题,依据是上传一半,就上传不了了。只能重新刷固件。才能勉强上传一两次,之后就又上传不了了。

之后又用另一款软件,需要用命令行来打开和使用。--uploader

一开始不在意,到最后才发现那么好用。但是连接件要最先下载,就是刷好固件之后,马上下载链接件,不然无法使用这个软件的。

flash的擦出有两种方法,之前我都是用第一种,到后来才知道后面的方法,那么好用。

二,利用刷固件的软件,一键清除flash

转载请注明文章来源,更多教程可自助参考,QQ技术交流群:,公众号:MicroPython玩家汇

- 结合ESP-01模块完成局域网内的TCP通信实验。

第一步:烧写AT指令的固件

ESP-01模块的引脚图:

烧写固件还需用到USB转TTL,ESP-01模最好使用其他外部器件进行供电。这里,我用的TPYBoardv102开发板。但是,别忘记了开发板与TTL之间需要共地。

USB转TTL插上电脑,设备管理器查看端口号。

我这里下载的是合成的固件,所以地址直接设置为0x00000,其他设置参考如下:

选择好端口,点击【START】开始烧写。

出现等待上电同步,这时给ESP-01模块上电,或者复位一下,等待下载成功。

烧写固件完成之后,将GPIO 0 连接的线拔掉,使其悬空,ESP-01模块会进入正常模式。

ESP-01模块启动时,会输出一堆乱码。(其实不是乱码,是一些内部信息)如下:

出现乱码的原因,如下:

输出的内部信息,我们可以忽略掉,只要输出ready,就说明模块一切正常。

(注意:后面需跟一个回车换行,选择在工具中勾选加回车换行)

模块返回AT\\r\\nOK,说明模块已经成功进入AT指令模式。

第三步:局域网TCP通信测试

1、首先,让ESP-01接入我们的路由器。

2、接下来,我们做一个局域网内TCP通信的测试。本地用网络调试助手建立一个TCP Server如下:

TCP链接建立,开始发送数据。单路链接时发送指令为AT+CIPSEND=x,x为发送的字节数。出现符号">"后就可以发送数据了。

模块会把收到的数据自动通过串口透传过来。

以上,我们都是结合USB转TTL实现的AT指令转发。接下来,我们通过TPYBoardv102开发板实现上面的功能。

#等待ESP-01模块初始化,忽略启动时的内部信息

# 说明AT指令执行成功

# 成功进入AT指令模式

# 设置sta模式成功,连接AP

注意:ESP-01模块上电启动时电流比较大,会导致板子的REPL无反应。关闭putty等工具,按板子的RST复位一下,再连接就好。最好方式采用外部电源给ESP-01模块供电,注意要与板子共地。

综上,TCP的测试实验完毕。本实验只是做了一些简单的示例,大家可根据自己的想法结合文档开发出更有意思的作品,比如智能控制开关、智能WIFI小车等。

如果我们想开发硬件设备的时候,非专业硬件工程师的我们往往会使用开发板,而开发板中,比较流行的又不得不提 Arduino,但是比如说我们想做一些 IoT 的原型设备,或者一切其他小项目小玩具,使用带有 Wifi 功能的 esp8266 和带有 Wifi 和 蓝牙的 ESP32 更为合适。尽管这两款开发板都支持 Arduino,并且在 Arduino 这个平台上有很多现成的库可以作为参考。

不过如果想进行快速的开发测试,在这两款开发板上使用 MicroPython 也是一个很好的选择。

MicroPython 大致的操作步骤就是先把固件刷到开发板上,然后可以通过串口连接进行交互式编程(REPL)或者通过上传main.py 到开发板上,开发板就会自己运行你写好的代码。

然而事实上,整一个操作体验并不是在介绍上的代码复制粘贴即可,而是存在各种坑。以下将罗列一下我所遇到的坑,可以帮大家避免,当然,如果你想加深理解,也可以往坑里跳,然后深入研究学习一下。

  • pyboard ,很多教程都介绍使用 pyboard.py 这个库将写好的 main.py 上传到开发板上,但是我在 Window 系统下,尝试了各种配置,包括修改这个 python 脚本,修改系统环境变量,但都无法完全正常使用(可以查看到开发板,但不能上传),我不太清楚是我的系统问题,还是这个库有问题。所以如果你也是按网上教程使用 pyboard.py 库,如果成功,继续用即可,如果不成功,建议像我一样,使用 adafruit-ampy ,能剩下不少折腾的时间。

  • 终端连接的问题。首先,我习惯了 Linux 和 macOS 下使用命令行工具,所以这个 MicroPython 既然有提供 REPL,那么如果有命令行工具在终端下连接然后继续进行命令行交互即可。然而,在 Window 下没有找到简单好用的命令行工具。然后网上有介绍 SecureCRT 的,我在他们的官网上注册,然后等邮件验证再拿到下载地址,下载完才发现并不是免费软件,只可以使用一段时间。然后我又看到介绍一个交 Tera Term 的软件,这个软件虽然免费,但是十分简陋,而且经常会乱码。最后找到一个 PuTTY 的工具,这个工具算是比较正常且免费的,所以这里如果没有习惯串口工具的朋友,不妨就用这个。

  • REPL 与 main.py 冲突,REPL将无法使用。这一点我似乎没有看到网上有说的。这个问题就是我们如果上传了 main.py 到开发板上,我们再用终端工具进行串口连接,我们是不能使用 REPL 的,表现就是终端没有任何反应,就像卡住一样。这时如果像使用 REPL,将开发板上的 main.py 删除或者下载到本地再删除开发板上的 main.py

  • 自动补全功能。在 Arduino 那个那么简陋的 IDE 都有自动补全功能,在这个 MicroPython 上并没有那么方便。因为我们在本地使用 VSCode 之类的工具写 python ,然后上传到开发板上,但是我们的本地是没有类似 machine 之类的库的。如果需要有代码提示,需要在本地有对应的库。这里可以安装 Settings ,如果不选后面的那个选项,你会出现 import 错误的提示。

  • 不要尝试 PyMakrMicropython IDE 。Arduino 可以在 VSCode 里面有 PlatfromIO 这样的插件,非常好用。很自然的想法,也想同样的用在 MicroPython 上,然后很多教程会让你使用上面这两个工具,我尝试了,这两个工具 PyMakr 无法连接开发板,无论怎么配置都不行,而那个 IDE,经常卡死和无法连接端口。我们使用 MicroPython无非就像快和简单,所以直接使用 ampy put 上传文件就好了。

在刷固件之前,我们需要先准备好固件,这个固件可以在 MicroPython 网站上找到,这里提供了很多开发板的固件,我们选择我们所使用的 ESP8266 即可。

这里我们下载 esp8-v1.15.bin 这个固件即可,当然也可以根据自己的需要自行选择。

我们需要一个交 esptool 的工具来帮助我们刷固件,可以使用 pip 来安装。

安装完成后,我们把开发板接入电脑,通过 read_mac 命令来获取开发板的信息以及串口的位置。


可以看到已经获取到开发板的信息,这里可以看到开发板的串口在 COM3

接下来就可以开始刷固件了。


这样,我们的 MicroPython 已经刷好固件了。

如上图,打开 PuTTY,新建一个连接,这里我们选择 Serial 串口连接,端口选择 COM3 (具体根据自己的情况设置),然后这里的波特率需要修改为 115200,完成后可以在下面 Saved Sessions 填如一个名字,如 esp8266,然后点击一下 Save ,这样下次就可以直接连接不需要重新输入端口信息了。

然后我们点击 Open,就可以进入 REPL 模式。

我们可以在这里进行交互式编程,类似 ipython 的模式。

接下来我们改用 VSCode 来进行后续的编程。首先先来配置自动完成功能,这里需要先安装一个 micropy-cli 的工具:

接下来打开 VSCode,新建一个项目目录,然后 `Ctrl+`` 打开终端。然后确认当前目录为项目根目录:


接下来就可以在 VSCode 中编写程序了。我们来完成一个最简单的点亮开发板上自带的LED灯闪烁功能。这里注意的是,我的开发板 Pin-2 就是控制那个自带 LED 的,但并不是所有开发板都一样的,在开始前可以先查看一下硬件手册。

我们可以使用 ampy 来上传我们写好的代码。首先来安装:

安装完成后,可以使用 ampy --help 来查看可用命令。下面我们先来查看一下当前开发板上的文件:

这里可以看到我们的开发板上只有一个文件。接下来将我们刚刚写好的 main.py 上传到开发板上

这样,我们就把代码上传到开发板上了。

接下来我们需要重启一下开发板,按一下开发板上的 RESET 按钮,我们就可以看到开发板上的LED灯出现亮1秒熄3秒的不断循环了。

硬件开发比单纯的代码开发更有难度,有时一样的步骤,却又不能跑通。本文开篇介绍了遇到的一些坑,以及手把手的演示如何给 esp8266 配置 MicroPython 环境、VSCode 自动补全配置以及如何上传代码。希望本文对你有用。如果你觉得文章对你用,记得关注收藏。你的关注和收藏是继续更新的动力哦。

我要回帖

更多关于 micropython能做产品吗 的文章

 

随机推荐