Raspberry Pi PicoのPython系開発環境に関わるメモを記します。
Raspberry Pi Picoの開発環境
Raspberry Pi Picoの開発言語は現在C/C++とMicroPython(及びCircuitPython)に対応しています。
どの言語を使うかによって開発環境がかわるため、言語に合わせて準備をする必要があります。
本記事ではPython系の開発環境に関わる情報にをメモとして残し、整理したいと考えています。
Python系開発環境の導入
Python系の開発環境は公式にはMicroPythonが紹介されており、以下の公式サイトにて導入方法が紹介されています。
また、MicroPythonから派生した環境としてCircuitPythonというものもあり、こちらはAdafruitによって開発が支援されています。
CircuitPythonはRaspberry Piの公式サイトではなく、CircuitPythonのサイトから導入します。
MicroPythonの導入
MicroPythonの導入は先程記載した公式サイトから行います。
Picoへの導入は以下の手順で行います。
- 公式サイトからUF2ファイルをダウンロード
- Pico上のBOOTSELスイッチを押したままPicoをPCに接続
- RPI-RP2というメモリデバイスとしてPCにマウントされる
- RPI-RP2にUF2ファイルをコピー(その後再起動)
これで次回以降はBOOTSELスイッチを押さずにPicoをPCに接続することで、PicoでMicroPythonが使えるようになります。
Picoにシリアル通信で接続するとPythonの対話型のシェルが起動し、ここからPythonでプログラムを行うことが出来ます。
CircuitPythonの導入
CircuitPythonの導入もMicroPythonと同様です。UF2ファイルをCircuitPythonのサイトからダウンロードして導入します。
- 公式サイトからUF2ファイルをダウンロード
- Pico上のBOOTSELスイッチを押したままPicoをPCに接続
- RPI-RP2というメモリデバイスとしてPCにマウントされる
- RPI-RP2にUF2ファイルをコピー(その後再起動)
これで次回以降はBOOTSELスイッチを押さずにPicoをPCに接続することで、PicoでCircuitPythonが使えるようになります。
スタンドアロン動作の方法
対話モードで動かしたプログラムはPicoの電源を一度切ると動かなくなるため、Picoの中にPythonファイルを保存して電源を入れる度にPythonのプログラムが起動するようにします。
ここでスタンドアロンと言っているのは、Picoの中にPythonファイルを保存しPCと接続しないでPico単体で動くことを指しています。
MicroPython
MicroPythonにてスタンドアロン動作をさせるためにはThonny Python IDEが便利です。
このIDEでは、上の画面にはPythonのファイルの編集エディタ、下の画面には対話型シェルが表示されています。
スタンドアロンとして動かしたいプログラムをIDE記述し、Pythonファイルとして保存します。このとき保存するファイル名を「main.py」にして保存先をPicoにします。
こうすることで、PCとPicoを切り離して単独で電源を入れると、保存したmain.pyのコードが実行されるようになります。
ちなみに、IDEでファイルをオープンして、オープンする対象をPicoにすると、Pico内部に保存されたファイルを見ることができました。
この図ではmain.pyとblink.pyが保存されています。
この状態でスタンドアロンでPicoを起動すると、main.pyのコードが実行されることを確認しました。
また、上の図のようにIDEでPico内部のファイルを表示した状態でファイルを右クリックすると、削除メニューが表示されファイルの削除が可能です。
CircuitPython
CIrcuitPythonはMicroPythonとは少し違います。
CircuitPythonの場合はPicoをPCに接続すると、メモリデバイスとして表示されます。(MicroPythonの場合は表示されません)
この状態でコードが記述したPythonファイルを「code.py」というファイル名で保存し、メモリとして見えているPicoの中に保存します。保存場所はPicoの一番上の階層です。(MicroPythonはmain.pyでしたが、CircuitPythonではcode.pyです。)
これでPicoに電源を再投入すると、code.pyに記述したプログラムが実行されます。
MicroPythonではThonny Python IDEからPythonコードを編集・保存する方法が簡単でしたが、CircuitPythonではさらにシンプルにUSBメモリに保存する感覚で扱うことができます。
スタンドアロン動作方法の勘違い
Picoのスタンドアロン動作を試している中で勘違いからうまく動かせずに悩んだ箇所がありましたので、ここに整理しておきます。
MicroPythonとCircuitPythonともに、UF2ファイルを適用するときにはPicoのBOOTSELスイッチを押したままPCに接続して、USBメモリのように見えているPicoにファイルをコピーします。
また、スタンドアロン動作をするときには、特にCircuitPythonではUF2ファイルをコピーするときと同様にUSBメモリのように見えているPicoにPythonファイルをコピーしました。
これらの動作が似ていることから自分のなかで色々と勘違いをし、スタンドアロン動作をさせるときにMicroPythonとCircuitPythonともにBOOTSELスイッチを押した状態でPythonファイルを書き込むという方法をしていました。しかし、これでは動きません。
このため、これらを整理しておきます。
BOOTSELスイッチを押す動作はUF2ファイルの書き込み時のみ
これはPython系のファームウェアをPicoに書き込むために行う動作です。
つまり、BOOTSELスイッチの操作は、MicroPythonまたはCircuitPythonを準備するときにのみ行い、UF2ファイルのみが適用されます。
BOOTSELスイッチを押したときに表示されるPicoにはPythonファイルを書いても無意味です。正しく動きません。
MicroPythonはIDEを使う方法が簡単
MicroPythonでスタンドアロン動作をさせたいと考えて、BOOTSELスイッチを押して表示されるPicoにPythonファイルをコピーしても意味がないことは前述のとおりです。
ではどうするかというと、これも前述のIDEを使った方法が簡単です。
そもそもMicorPythonではPCにPicoを接続してもCircuitPythonのようにUSBメモリとしては表示されません。
このため、Pico内部にPythonファイルをコピーするためにはIDEを使ってアクセスします。
IDEを使う以外の方法としては、以下のフォーラムで述べられているようにrshellなどのツールを使う方法があります。
MicroPythonでは、ArduinoではArduino IDEを使うように、基本的にThonny Python IDEを使うことが簡単かと思います。
CIrcuitPytonではUSBメモリとして扱う
CircuitPythonの扱いは、USBメモリのように見えていてcode.pyを書き込むということを前述しました。
この点は特別にIDEやツールを使う必要がありませんので、MicroPythonに比べてシンプルであると言えます。
以上、Raspberry Pi PicoのPython開発環境について整理しました。
今後も適宜情報を追加する予定です。
コメント