跳转至

通过串口连接REPL

概要

MicroPython固件烧录完毕之后,我们需要使用工具通过串口来连接至MicroPython的REPL。

本文便为大家介绍在Windows,linux,和mac上有哪些好用的工具,以及如何使用这些工具。

keywords ESP32 MicroPython REPL picocom putty

连接到电脑

你只需要用USB数据线将你的ESP32和你的电脑连接在一起,理论上就可以通过你的电脑访问REPL。但是在我们的电脑上需要终端仿真程序,才能够使用REPL。

在Windows,Linux和Mac这三个不同的平台上,有着很多的终端仿真程序,接下来分别介绍在三个平台下使用工具连接到REPL的方法。

Windows10下连接REPL

在windows下笔者推荐使用Putty来进行连接。

点击下载链接后,找到如图所示的下载项:

下载后的可执行文件双击即可执行。

将上图中的设置保存为 micropython 方便下次进行连接。

点击上图中的Open按钮,则将弹出命令行窗口,如下图所示:

如若出现上面图片中的输出,则连接成功。

Linux和Mac下连接REPL

Linux和Mac下,我推荐使用picocom进行连接。picocom是基于命令行的串口(终端)调试工具, 十分简单易用。

Linux下安装picocom

按照Linux发行版自行对号入座:

  • Arch Linux

    sudo pacman -S picocom
    

  • Ubuntu

    sudo apt-get install picocom
    

    其余发行版的安装在此便不在赘述,如有需要自行百度。

Mac下安装picocom

使用Homebrew来安装,如果你是Mac小白,可能你需要了解并安装Homebrew

Homebrew官网: https://brew.sh/

Homebrew的安装很简单,将下面这句脚本粘贴到你的命令行终端中执行即可:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

之后,使用brew指令安装picocom

brew install picocom

通过picocom连接ESP32终端

连接的命令如下:

sudo picocom -b 115200 /dev/ttyUSB0

-b 是制定波特率boundrate 为115200

在linux下的端口号是:

/dev/ttyUSB+数字的格式,如笔者的是/dev/ttyUSB0

在Mac下,笔者的端口号是:

/dev/cu.SLAB_USBtoUART

根据你具体的情况,输入正确的端口号, 即可连接。

连接上窗口的时候,会打印一些ESP32开发板的信息,以linux下的输出为例:

[email protected] ~/P/MicroPython> sudo picocom -b 115200 /dev/ttyUSB0
[sudo] password for scorpion: 
picocom v2.2

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Type [C-a] [C-h] to see available commands

Terminal ready

如果没出出现如下的命令行提示符标识,请按下回车,如果还未出现命令行提示符,说明正在执行其他程序, 你需要先将程序中断。

>>> 

CTRL+C 中断程序,接下来你就可以在终端里面敲入Python的指令。

picocom的连接至此就介绍完毕。

尝试在REPL中编写代码

现在你已经从上文的教程中知道了什么是REPL,以及如何在Windows,Linux和Mac中通过串口连接REPL了,接下来我们一起尝试尝试在REPL中编写几句代码。

Hello World

让我们从Hello World开始吧!

>>> print('Hello World')
Hello World

最简单的print函数,快试试吧~

尝试点亮一个LED灯吧

首先导入machine 模块,machine模块几乎包含了整个ESP32的硬件资源的接口.

>>> import machine

然后写入machine. 按下Tab按键

>>> machine.

必修技能 TAB

TAB 可以补全代码,在一个模块后输入.然后使用TAB键可以提示出该模块中的所以内容

然后我们就可以看到machine下都有哪些子模块。

随着MicroPython版本的迭代,可能你看到的选项和笔者有所出入。

>>> machine.
__name__        mem8            mem16           mem32
freq            reset           unique_id       idle
disable_irq     enable_irq      time_pulse_us   Timer
WDT             Pin             Signal          TouchPad
ADC             DAC             I2C             PWM
SPI             UART

NodeMCU32-S开发板上有一个蓝色的LED, 由P2引脚的输出来控制,高电平亮,低电平灭,因此我们可以控制P2引脚的输出来点亮该LED:

声明一个管脚,GPIO编号为2,在板子的引脚上标记为P2, 模式为输出模式,即设置为machin.Pin.OUT

>>> pin2 = machine.Pin(2, machine.Pin.OUT)

管脚写入高电平

>>> pin2.value(1)

这时你应该可以看到该led灯被点亮,散发出宝石般的蓝色光芒。

REPL快捷键

在MicroPython的REPL里面有一些控制指令的快捷键。

  • CTRL + C 中断程序

  • CTRL + D 软重启

  • CTRL + E 进入代码片段粘贴模式

  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

粘贴整段代码

如果你觉得一行一行的代码敲起来比较麻烦,你可以整段整段copy。

MicroPython有一个粘贴模式。

你可以先copy下面的代码片段:

'''
功能介绍: LED闪烁例程
'''
import utime
import machine

# 声明一个引脚 例如 D13 作为LED的引脚
led_pin = machine.Pin(13, machine.Pin.OUT)

while True:
    # 点亮LED -> 高电平
    led_pin.value(1)
    # 延时 500ms
    utime.sleep_ms(500)
    # 关闭LED -> 低电平
    led_pin.value(0)
    # 延时500ms
    utime.sleep_ms(500)

*Windows下,直接鼠标右键putty的命令行窗口,即可粘贴 *

Linux或Mac下,点击右键菜单的粘贴选项粘贴

警告

无论在Windows下和Linux或Mac下,都不要尝试再命令行中直接使用CTRL+V来进行粘贴,这丝毫不起作用,而且会输入特殊的字符

注意:粘贴好代码后,不要尝试修改粘贴好的代码,或者追加

>>> 
paste mode; Ctrl-C to cancel, Ctrl-D to finish
=== 

然后中端会提示你Ctrl + C 撤销刚才粘贴的代码, 就当什么也没发生过。

你可以按Ctrl+D 执行你刚才粘贴的代码。

注意: 如果代码片段长了之后,可能会出现粘贴不全的问题, 这类情况,建议直接上传文件。

忠告

代码长了,还是老老实实保存到脚本文件中去执行吧,粘贴模式会存在很多的问题,不建议使用。

断开REPL的连接

Windows下,你可以直接关闭putty的窗口。

Linux或Mac下,当然你也可以直接关闭你的终端窗口。但是只需要退出picocom, 即可断开与ESP32开发板的连接,你需要依次使用到如下的快捷键:

  • 先按 Ctrl + A

  • 再按Ctrl + Q

参考文章

Getting Started with MicroPython on ESP32 – Hello World, GPIO, and WiFi

https://www.cnx-software.com/2017/10/16/esp32-micropython-tutorials/

TODO

  • led配图,实物接线图,效果图