先日、ほんとうに久しぶりに購入した「トランジスタ技術」5月号は、ラズパイPico特集でした。記事にCircuitPythonを使ったものがありました。CircuitPythonはライブラアリが充実しているという内容がありましたので、今回CircuitPythonに挑戦してみることにしました。
しかし、Raspberry Pi Pico + CircuitPythonでのプログラミングの例はWeb上には意外に少なく、Lチカ(LED点滅)ができるまでちょっと手こずりました。
そこで、Raspberry Pi PicoへのCircuitPython導入からMuエディタを使ったプログラミングまで、少し丁寧に書いておきたいと思います。これからCircuitPythonを使ってみようという方の参考になれば、幸いです。
まず、ファームウェアCircuitPythonをCircuitPythonのサイトからダウンロードします。
画面左上の「Downloads」をクリックして、ダウンロード画面に進みます。
一番左端の「Pico」をクリック。
CircuitPythonは、4月18日現在でVer 7.2.5です。言語は、日本語を選んでダウンロードします。
ダウンロードされたファイルは、
adafruit-circuitpython-raspberry_pi_pico_ja-7.2.5.uf2でした。
これをPicoに書き込むわけですが、無用なトラブルを避けるために、Picoを初期化(クリア)しました。方法は、BOOTSELボタンんを押しながら、PicoをUSBに接続し、メモリデバイス(RPI-RP2)として認識されたダイアログに、flash_nuke.uf2をドラッグアンドドロップします。
クリアしたPico(RPI-RP2)に先ほどダウンロードしたcircuitpythonのuf2ファイルをドラッグアンドドロップします。これでファームウェアが書き込まれて、CircuitPythonが使える状態になりました。
ここで、CircuitPythonとMicroPythonの違いに気が付きます。CircuitPythonでは、下の図のようにPico本体が単なるUSBメモリとして扱えるのです。
さて、プログラムを編集するエディタですが、Muエディタを使います。
Code with Muのサイトから「Download」をクリックしてダウンロード画面に進みます。
私のPCのOSは、Windows10なので、「Windows Installer」64bit版をダウンロードしました。
ダウンロードしたMuエディアファイルをPCにインストールして、立ち上げます。最初立ち上がるまで若干時間がかかります。
立ち上がったら、「モード」をクリックして、モードを「CircuiPython」に設定します。
エディタの画面です。
まず第一歩は、Lチカ(LED点滅)のサンプルプログラム(スクリプト)をmain.pyという名前でPicoに書き込みました。Pico内蔵のLED(GP25に接続されています)が点滅しました。成功です。
はて、プログラムはどうして止めるの?この辺からMUエディタの使い方が分からないことばかりになり、一応細かいところまでわかるまで、あちこち調べて2日ほどかかりました。次に結論を書いていきます。
まず、MUエディタとPicoとの間で通信を行うために、「シリアル」をクリックして、シリアル通信を開きます。これで、Picoとの通信ができるようになります。
そこで、キーボードからCTRL+Cを押すとKeyboardInterruptがかかり、プログラムがストップします。
プログラムを再開するには、CTRL+Dをを押します。プログラムが再び動き出します。
プログラムが停止した状態になると開いているREPL(Read Evaluate Print Loop)ウインドウに
「Press any key to enter the REPL. Use CTRL-D to reload.」と表示されます。何かキーを押すと、RPELモードになり、プロンプト>>>が表示され、コマンド待ちになります。
REPLモードで、CTRL+Dを押すとプログラムが再開します。
それから、MicroPythonのつもりで、スタンドアローンで動かすためのファイル名は、main.pyだと思い込んでいたのですが、CircuitPythonでは、code.pyとしなけれいけないことが分かりました。
Lチカのプログラム名を「code.py」として保存して、一旦USBケーブルを抜き、次にUSBケーブルを接続すると何もしないでLチカが始まりました。
MicroPython+ThonnyエディタとCircuitPython+Muエディタは、けっこう違うところが多いことが分かりました。
一応動かせるようになりましたので、これから少しずつ勉強して、記録を記事にしていきたいと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます