M5Stack学习笔记(2)—— 命令行

书接上回……

把玩了一会儿M5Stack Fire,我觉得M5Stack挺不错的,可是为什么网上的相关文档和资料这么的少,是不是这玩意很小众?

它也支持Arduino编程,但是好像和UIFlow不能共存。UIFlow可以在系统内装入若干程序,然后选择其中一个启动,还是挺好的。而且,UIFlow的后面是MicroPython,更易用。以前买过pyboard,所以也了解过MicroPython,只是没有深入,所以我暂时不打算研究M5Stack的Arduino编程,先仔细玩玩MicroPython再说,况且,Python可比C可爱多了

说到pyboard,看那光秃秃的小板子,虽然是32位的U,“但是看起来并不比Arduino UNO强大”,只不过能直接插SD卡罢了。对比起来,M5Stack要顺眼许多。我记得pyboard插入电脑的USB后,系统会出现一个虚拟的U盘,然后里面有boot.py、main.py什么的,再然后可以往里面拷贝python代码文件,重启就可以运行…… 我很期待M5Stack也是如此,然而并不是。

M5Stack的USB接口只是虚拟了一个串口,虽然不能像访问U盘一样优雅,但是MicroPython的REPL还是可以用的,一样很强大。

连接USB,然后在命令行输入:(我用的macOS,如果是Windows,可以用putty之类的连COM口,也很方便。)

$ screen /dev/tty.SLAB_USBtoUART 115200

然后可能会什么都没有,你可以试试按下Ctrl-C,就会出现一些错误信息,然后出现python的命令提示符:

Traceback (most recent call last):
  File "flow.py", line 12, in <module>
  File "m5flow/wifisetup.py", line 78, in auto_connect
  File "m5flow/wifisetup.py", line 66, in auto_connect
  File "m5flow/ubutton.py", line 74, in wasReleased
KeyboardInterrupt:
MicroPython ESP32_LoBo_v3.2.24 - 2018-09-06 on M5Stack with ESP32
Type "help()" for more information.
>>>

看起来M5Stack里面是ESP32_LoBo版的MicroPython,不知道和pyboard的有什么区别,先看看再说。

执行help()

>>> help()
Welcome to LoBo MicroPython for the ESP32
 
For online documentation please visit the Wiki pages:
https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki
 
Based on official MicroPython, this port brings many new features:
 
 - support for two cores and 4MB SPIRAM (psRAM)
 - improved 'network' module
 - greatly improved thread support
 - support for 3 different internal file systems on top of ESP32 VFS
 - ESP32 native support for SD Card
 - built-in FTP & Telnet servers
 - support for OTA updates
 - many new and improved hardware access modules implemented in C
 and many more...
 
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')
>>>

blabla……关于LoBo版本的MicroPython说了一堆,这里是wiki: https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki

然后,Ctrl-A,B,C,D,E什么的和MicroPython一样。 Ctrl-D应该比较常用,可以让M5Stack来一次重启。

我觉得主要的python部分应该和official版本一样吧。

看看文件系统里有什么:

>>> os.getcwd()
'/flash'
>>> os.listdir()
['image_app', 'flow_usb.py', 'sys_lib', 'emoji', 'res', 'config.py', 'lib', 'boot.py', 'img', 'flow.py', 'blocks', 'apps', 'debug.py', 'main.py', '.vscode', 'modeconfig.json']
>>> os.listdir('/')
['flash']
>>>

可以看到根目录下只有一个flash文件夹,/flash下面有一堆文件。 嗯~~~ 好无聊。

看看论坛吧,http://forum.m5stack.com 是个去处,虽然不是很热。

突然看到有人说ampy(Adafruit MicroPython Tool)。 是的,没有U盘模式,我怎么拷贝文件的,可以用ampy。

先用Ctrl-a k退出screen,并释放串口资源。

在命令行下安装ampy(如果系统里是python3,所以使用pip3安装,如果系统是python2的,估计只能用pip了):

$ pip install --upgrade pip -i https://pypi.mirrors.ustc.edu.cn/simple
$ pip install adafruit-ampy -i https://pypi.mirrors.ustc.edu.cn/simple

(先升级了一下pip)

然后试试

$ ampy -p /dev/tty.SLAB_USBtoUART ls
/flash
$ ampy -p /dev/tty.SLAB_USBtoUART ls /flash
/flash/.vscode
/flash/apps
/flash/blocks
/flash/boot.py
/flash/config.py
/flash/debug.py
/flash/emoji
/flash/flow.py
/flash/flow_usb.py
/flash/image_app
/flash/img
/flash/lib
/flash/main.py
/flash/modeconfig.json
/flash/res
/flash/sys_lib
$ ampy -p /dev/tty.SLAB_USBtoUART get /flash/main.py ./main.py
$

GOOD! 用户python程序好像都在apps文件夹下。

可以用,但是,总是觉得这样命令行很麻烦的样子……

我在 ampy的github页面 看到了如下介绍:

Note that ampy by design is meant to be simple and does not support advanced interaction like a shell or terminal to send input to a board. Check out other MicroPython tools like rshell or mpfshell for more advanced interaction with boards.

嗯,得试试。

安装……

$ pip install rshell -i https://mirrors.aliyun.com/pypi/simple/
$ pip install mpfshell -i https://mirrors.aliyun.com/pypi/simple/

(ustc的源不给力呀,改用aliyun吧)

运行:

rshell

$ rshell -p /dev/tty.SLAB_USBtoUART

mpfshell

$ mpfshell -o tty.SLAB_USBtoUART

(注意不需要/dev/了)

试用下来,rshell不论连接,还是执行列目录等命令,都会有莫名其妙的停顿(10来秒吧),有可能是它的列目录功能可以显示文件大小,而获取各个文件的大小需要时间吧。但是这个等待时间,确实是不小的问题。 而mpfshell,除了列目录没有文件大小,日期等信息,其他基本功能还是挺完善的,但是偶尔也会get文件报错。下载比较大的文件好像有时也困难,比如系统里面的/res/mix.wav文件(大小369kb)。

似乎两个软件都不是很成熟。 mpfshell相对好一些,至少我在windows系统下用着还行。

需要注意的是mpfshell的mget,下载所有文件时,不是用 * 或者 . (文件名通配符), 而是用 .+ (正则表达式)

mpfs [/flash]> mget .+
 * get boot.py
 * get config.py
 * get debug.py
 * get flow.py
 * get flow_usb.py
 * get main.py
 * get modeconfig.json
mpfs [/flash]>

ampy,rshell和mpfshell,各有优缺点,后面使用估计会以mpfshell为主,其他两个穿插使用,可以解决系统文件管理的问题。

另外,比ampy强的是,rshell和mpfshell都可以直接进入REPL的MicroPython命令提示行而不需要退出。

rshell(Ctrl+X 可以退出REPL,不过Windows下可能不一样)

/Users/abc> repl
Entering REPL. Use Control-X to exit.

MicroPython ESP32_LoBo_v3.2.24 - 2018-09-06 on M5Stack with ESP32
Type "help()" for more information.
>>>
>>>
/Users/abc>

mpfshell (Ctrl+] 可以退出REPL,不过Windows下可能不一样)

mpfs [/flash]> repl

*** Exit REPL with Ctrl+] ***
 
MicroPython ESP32_LoBo_v3.2.24 - 2018-09-06 on M5Stack with ESP32
Type "help()" for more information.
>>> 
mpfs [/flash]>

备注:

  1. ampy,rshell,mpfshell都只能在internet mode的界面下,即连接wifi的黑底白字界面或者二维码界面(不管wifi有没有成功连接)使用,否则可能会出现连接不上的问题,原因不明。
$ mpfshell -o tty.SLAB_USBtoUART
b'Traceback (most recent call last):\r\n  File "boot.py", line 49, in <module>\r\n  File "m5flow/wifichoose.py", line 61, in start\r\n  File "m5flow/ubutton.py", line 64, in wasPressed\r\nKeyboardInterrupt: \r\n'

could not enter raw repl


** Micropython File Shell v0.9.1, sw@kaltpost.de **
-- Running on Python 3.6 using PySerial 3.4 --
mpfs [/]>


例如上面的情况,但是经反复尝试连接,有可能可以连接成功。

  1. 在windows系统下,ampy, rshell, mpfshell运行完毕后,M5Stack会复位,原因不明。

好了,脱离UI Flow IDE,并且可以管理文件系统,真是太好了。 管理工具虽然不够强大,还是可以用的。好了,今天到此为止吧。

My Email:


20190601101442645.jpg
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容