MicroPython 上手

Table of contents

虽说是上手,但实际我有玩过一阵子了,而且这篇文更接近介绍。本系列博客(?)将尝试给有基础单片机概念的人快速了解 MicroPython。

介绍

MicroPython 是一款面向嵌入式设备的 Python 环境,运行于各种单片机上, Adafruit fork 出的 CircuitPython 是一个对新手更友好的分支,并且是CPython的严格子集,不过也缺少了一部分高级特性,这个参考官方仓库说明。

MicroPython 主要通过串口实现 REPL(Read Eval Print Loop)的交互,也就是 Python Console。 此外在支持的设备上还能使用网络,从网页或者 Telnet 客户端进行操作。

MicroPython 的语法接近 CPython,许多常用标准库能代换,但相比之下精简了很多,并且添加了一部分独有的库,这些独有库通常以字母 u 开头。

使用前言

想使用 MicroPython?买一块兼容开发板,刷上固件,然后就能 Happy 啦! 主要支持的设备是部分基于 STM32、NRF52、ESP32 的开发板。具体支持哪些板子可以看官方下载页面。我个人比较推荐纯新手且仅打算使用 Py 编程的朋友选用基于 ESP32 系列 MCU 的开发板,比如 Node32、Lolin32、LuatOS Core。

我选择的是来自 LuatOS 团队的开发板,它使用 ESP32-C3 这款 RISCV 架构的芯片,支持蓝牙、802.11 b/g/n/e/i,我选购的时候它价格也不错。就是不在官方支持列表上XD。

官方的下载渠道在这里,根据不同的开发板,点进去后会有不同的安装说明。

给 LuatOS Core 安装 MicroPython

这里就写一下这款开发板的安装流程吧。ESP32 系列的其实都差不多,而且一般不需要调试器。

大概分这么几步:

  • 下载工具
  • 下载固件
  • 清空 Flash
  • 写入固件

下载工具

这里需要安装 esptool.py 或者乐鑫提供的 Windows 版刷写工具。工具之类我就不再介绍如何安装了,希望读者能自行搞定(尽管这个可能是大多数人最开始搞不定的地方)。

下载固件 & 清空 Flash & 写入固件

由于我这块板子没有进入官方支持列表,有两种选择:

  • 使用官方通用固件
  • 自行补充开发板定义,并编译

我实际上选择了第二种,从结果上看第一种也没差。这里按第一种方法。ESP32-C3 的官方固件下载和说明页面点击这里

Windows 用户请自行解决工具问题。

对于 Linux 用户,打开命令行终端,使用下面的命令进行刷写。注意,清空 Flash 是为了避免残留数据干扰固件第一次建立文件系统,在第一次刷写时不可避免(当然空 Flash 除外)。

另外,我用的开发板只用了两条数据线读写 Flash,务必选用 DIO 模式。 /dev/ttyACM0 是串口的设备路径,请根据实际情况调整。

# 清空 Flash
esptool.py --chip esp32c3 --port /dev/ttyACM0 erase_flash
# 刷写固件,强制 DIO 模式,波特率460800,刷写固件,从0x0地址开始写入,固件名称 esp32c3-20220117-v1.18.bin
esptool.py --chip esp32c3 --port /dev/ttyACM0 --flash_mode dio --baud 460800 write_flash -z 0x0 esp32c3-20220117-v1.18.bin

这样固件就写入完成了。下篇开始正式玩XD。

结语

这样应该就算上手完了?不是吧 XP。嗯,实际上应该再写一点第一次使用时使用的 Demo,比如 Hello World、Blinky 什么的。 但对于希望小白能全看懂的我来说,或许更适合放在一篇单独的文章中。但实际写出来的好像也不是非常容易看懂啊……