« レベルシフトチップTXS0108Eで苦戦 | トップページ | PicoとTWELITEを電池駆動 »

2021年2月20日 (土)

Pico: main.pyとrshellの取り扱い

PicoでMicroPythonを使っている時、このプログラムをPicoのパワーオンで自動実行したくなるのは人情。

調べた結果、以下が分かった。

main.pyというファイル

Pico Python SDKガイドには以下が書かれている。

If you "save a file to the device" and give it the special name main.py, then MicroPython starts running that script as
soon as power is supplied to Raspberry Pi Pico in the future.

つまり、今Thonny上で作ったコードをmain.pyでPico上に保存すると次回のパワーオンの時にそのプログラムが自動実行されるわけだ。早速試した。ファイル保存の時にpy拡張子が自動で付くかとともってファイル名をmainで保存したら拡張子が付かなかった。なのでファイルはmain.pyで保存しなおして、USBケーブルを抜き差ししたら確かに自動で保存したPythonプログラムが起動した。これはいい。

でも、さっき間違えて保存したファイル削除や、さらに自動起動を停止したい場合のファイル名変更はどうしたらいいんだ???

BOOTSELボタンを押してFlash Drive ModeでPicoを立ち上げてもそんなファイルは見えない。。。。

この手の処理はSDKガイドにも書かれていない。困った、、、でグーグルしてみたらこのブログが見つかった。救われた。 rshellで/pyboardディレクトリを見に行けばいいのだ。
こういった事は考えて分かることではないのでmain.pyを紹介するのであれば、その取扱いについても公式ガイドでちゃんと記載しほしいのもだ。

rshellでファイル管理

ガイドを見ると以下でrshellをインストールせよとある。
$ sudo apt install python3-pip
$ sudo pip3 install rshell

python3-pipは既にインストール済みだったので、rshellのみインストール実行となった。で、rshellの実行。救ってくれたブログでは -pで具体的に指定するポートが書かれていなかったが、こちらはSDKガイドの記載をそのまま使ってみた。

pi@raspberrypi:~ $ rshell --buffer-size=512 -p /dev/ttyACM0
Using buffer-size of 512
Connecting to /dev/ttyACM0 (buffer-size 512)...
Trying to connect to REPL connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /Hello_World.py/ /main.py/ /main/
Setting time ... Feb 20, 2021 12:40:22
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 1970
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/pi> ls /pyboard
Hello_World.py main.py main     <<- 拡張子なしでmainを保存したので消したい。
/home/pi> rm /pyboard/main
/home/pi> ls /pyboard
Hello_World.py main.py
/home/pi>

rshellが立ち上がってlsを実行してもpyboradというディレクトリは見えなかったが ls /pyboard はThonny IDEで保存したファイルを表示した。で、rmを実行。

Thonnyを立ち上げてPico上のファイルを見たらmainが無くなっていた。これでmain.pyも消すことができる。

Pyfiles-2

これで自由度がぐっと広がった。しかし、情報を集めるのに時間がかかる。。。。

そもそもrshellって。。。

そもそもrshellってなんだろう。Githubに記載があった。MicroPython用のRemote Shellなんだね。ESPってなんの頭文字か分からないけれど、Picoのようなマイコンボードを意味するらしい。そこでは/pyboardがデフォルトのようだ。これは知ってないと、考えて分かることではないね。

Remote MicroPython shell.

This is a simple shell which runs on the host and uses MicroPython's raw-REPL to send python snippets to the pyboard in order to get filesystem information, and to copy files to and from MicroPython's filesystem.

It also has the ability to invoke the regular REPL, so rshell can be used as a terminal emulator as well.

Note: With rshell you can disable USB Mass Storage and still copy files into and out of your pyboard.

When using the commands, the /flash directory, and the /sdcard directory (if an sdcard is inserted) are considered to be on the pyboard, and all other directories are considered to be on the host. For an ESP based board you can only reference its directory by using the board name e.g. /pyboard etc..

おまけにrshellではREPLが実行できる。replの終了はctl+X

/home/pi> repl
Entering REPL. Use Control-X to exit.
>
MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>
>>> print("this is test")
this is test
>>>
>>>
/home/pi>

これを使うかどうかは分からないけれども、いろいろと機能があることがわかった。

« レベルシフトチップTXS0108Eで苦戦 | トップページ | PicoとTWELITEを電池駆動 »

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« レベルシフトチップTXS0108Eで苦戦 | トップページ | PicoとTWELITEを電池駆動 »