MicroPython 交互终端
前言¶
很多单片机没有 USB控制器,只有一个 UART/TTL/RS232 串口,所以在开发阶段的大部分交互依赖于单片机串口。 通常情况下,串口用来上传源代码文件或输出调试信息。
串口交互软件¶
串口需要使用串口软件方可交互。Windows 下有很多为人熟知的工具,不过我个人用得不多。GNU/Linux 用户可以使用 screen
当作临时的终端,但各个方面都差一点意思。这里我习惯了使用 terminal-s,简单又好用。
不过上传文件的时候就都不怎么方便了。这里可以用 adafruit-ampy
进行文件操作。这个程序我就先不介绍了。
通过串口输入程序¶
下面给出了一个交互实例,开关 GPIO12 所连接的 led,最后打印了默认的帮助信息。
> terminal-s
--- /dev/ttyACM0 is connected. Press Ctrl+] to quit ---
MPY: soft reboot
MicroPython v1.18-422-g7c0402338 on 2022-05-11; LuatOS C3 CORE with ESP32C3
Type "help()" for more information.
>>> from machine import Pin
>>> led = Pin(12, Pin.OUT, value=0)
>>> led.on()
>>> led.off()
>>> help()
Welcome to MicroPython on the ESP32!
For generic online docs please visit http://docs.micropython.org/
For access to the hardware use the 'machine' module:
import machine
pin12 = machine.Pin(12, machine.Pin.OUT)
pin12.value(1)
pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP)
print(pin13.value())
i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22))
i2c.scan()
i2c.writeto(addr, b'1234')
i2c.readfrom(addr, 4)
Basic WiFi configuration:
import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan() # Scan for available access points
sta_if.connect("<AP_name>", "<password>") # Connect to an AP
sta_if.isconnected() # Check for successful connection
Control commands:
CTRL-A -- on a blank line, enter raw REPL mode
CTRL-B -- on a blank line, enter normal REPL mode
CTRL-C -- interrupt a running program
CTRL-D -- on a blank line, do a soft reset of the board
CTRL-E -- on a blank line, enter paste mode
For further help on a specific object, type help(obj)
For a list of available modules, type help('modules')
根据帮助信息,REPL 有几个快捷键:
- Ctrl+A:在空行的情况下输入,用于进入
raw
模式; - Ctrl+B:在空行的情况下输入,用于进入
normal
模式,也就是默认模式; - Ctrl+C:在任意情况下输入,用于中断当前运行的程序,即为 Python 程序员熟知的 KeyboardInterrupt;
- Ctrl+D:在空行的情况下输入,软重启开发板,换言之 Python 解释器环境重置了;
- Ctrl+E:在空行的情况下输入,进入粘贴模式,适合用来粘贴测试代码,原默认情况下会自动缩进,这个模式就没有了;
通过串口上传文件¶
使用 adafruit-ampy
进行文件传输是比较常见的做法,此外还有使用 WebREPL
在网页上上传内容、使用编辑器插件等等多种方法。此处暂不详叙。BTW 不少编辑器插件其实也是 ampy 包装来的。
为了延长 Flash 整体寿命、增强稳定性,可以使用 LittleFS 取代 FAT,不过 v1 和 v2 版可能在特殊情况下不稳定。MicroPython 的文档在这里