通过串口连接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下的输出为例:
scorpion@tl ~/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配图,实物接线图,效果图