Raspberry Pi Picoにはじめてさわる(3) | virt_flyのブログ

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。


CircuitPythonをためす

 
 

 

 

Raspberry Pi Picoでは、プログラミングの際してMicroPython以外にもCorcuitPythonが使われるということで、こちらも試してみることにしました。

 

 

 

1)Raspberry Pi Pico本体の初期化

 

Raspberry Pi Picoを使いまわしすることにしたため、ファームウェアがMicroPythonのままではだめなので、初期化をおこないました。

 

①raspberrypi.comのサイトを開き、[Documentation]、次いで[Microcontrollers]をクリック、今回は[Raspberry Pi Pico and Pico W]を選択。

 

 

開いた「Raspberry Pi Pico and Pico W」の画面をスクロールアップして、「Software Utilities」の項を探し、その中の「Resetting Flash memory」にある「・Download the UF2 file」の[UF2 file]をクリックして、「flash_nuke.uf2」ファイルをダウンロードします。

 

 

②Raspberry Pi Pico本体の「BOOSEL」ボタンを押しながら、PCとUSBケーブルで接続。表示された「RPI-RP2」ディレクトリのウインドウに、ダウンロードした「flash_nuke.uf2」ファイルをドラッグ&ドロップしたら、初期化は完了です。

 

 

2)CircuitPython

 

①circuitpython.orgのサイトを開き、[Downloads]をクリック、使うボードの入力が必要なので、ここではPicoの画像をクリック。「Pico by Raspberry Pi」の画面が開いたら、languageはJAPANESEを選択し、[DOWNLOAD.UF2 NOW]を実行して、CircuitPythonのuf2ファイル(ここの例では「adafruit-circuitpython-raspberry_pi_pico-ja-8.0.5.uf2」)をダウンロードします。

 

 

②開けた「RPI-RP2」ディレクトリのウインドウに、ダウンロードしたCircuitPythonのuf2ファイル をドラッグ&ドロップします。「CIRCUITPY」名の画面が開き、ディレクトリが見れるようになっています(以後ファイルマネージャーからいつでも開け、ファイルをドラッグ&ドロウで操作できるように)。

 

 

③Thonnyを起動し、右下のインタプリタの表示部分をクリックし、[CircuitPython]を選択します。

なお、ここではThonnyをエディタにしていますが、一般的には「Muエディタ」がよく使われているようです。

 

Thonnyのウインドウの右上にある[表示]をクリックし、開いたプルダウンメニューから[ファイル]を選ぶと、ウインドウの左側にファイルの枠が現れます。すでにcode.pyなどのファイル、空のlibディレクトリができています。

 

 

Code.pyは、MicroPythonでのmain.pyにあたりますま。ここでは、たった1行「print("Hello,World!")」と書かれていました(実行すると、Thonnyのウインドウ下部のShellの枠内にHello,World!と表示されます)。

 

CircuitPythonであろうとMicroPythonであろうと、Thonnyを使う限り、保存などの操作は同じですが、CircuitPythonの場合は、ファイルマネージャーで「CIRCUITPY」が開け、ファイルのをドラッグ&ドロップができて便利です。

 

Thonnyだと、pyファイルなら読み込み、書き出しが可能なものの、画像ファイルなど他のファイルは扱えず、Raspberry Pi Picoに転送ができません。転送には「Ampy」などのツールが必要になるらしいので、その必要がないCircuitPythonは大いに助かります。

 

もとより、Raspberry Pi Picoはメモリ容量が乏しく、重い画像ファイルを扱うことはあまり想定されなかったのかも。メモリが4〜16MBもある安価な互換機が販売されていたのでAliexpressを通じて注文したのですが、画像処理を行うPillowのライブラリがCircuitPythonにも見当たらない…。

 

 

3)ライブラリのダウンロード・追加

 

さて、ライブラリはどうすればよいか、おなじみの0.9インチSSD1306のOLEDを使用する例を記します。

 

①OLEDを使うcode.pyは次の通り
 

import board
import busio
import digitalio
import adafruit_ssd1306
WIDTH = 128
HEIGHT = 32
i2c = busio.I2C(board.GP17, board.GP16)
oled = adafruit_ssd1306.SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=0x3C)
oled .fill(0)
oled .text("RPI Pico test", 25, 7, True, font_name="font5x8.bin", size=1)
oled .text("VIRT_FLY", 41, 25, True, font_name="font5x8.bin", size=1)
oled .line(0, 21, 128, 21, True)
oled .rect(0, 0, 128, 20, True)
oled .show()       

 

至極簡単そうに言ってますが、CircuitPythonでプログラムを書くなんてはじめてものにできるわけがなく、MicroPythonで書いたプログラムをChatGPTにCircuitPythonのプログラムに書き直させ、一部手直ししたものです。MicroPythonで使っていたmachineがCircuitPythonでは使えず、かわりにboardやbusioなんて文字が出てくるのですから。

 

②Adafruit社のライブラリのダウンロードページを開きます。

 

 

circuitpython.orgサイトを開き、[libraries]をクリック。開いたライブラリのページを下へスクロールして、紫のダウンロードボタンを見つけ、ダウンロードすべきバージョンのボタンを探します。ダウンロードすべきバージョンが何なのかは、立ち上げたThonnyのウインドウ下部のShellの枠内に表示されたCircuitPythonの文字につづく数字で確認できます。今回は「CircuitPython 8.0.5」だったので、バージョン8のボタンをクリックします。「adafruit-circuitpython-bundle-8.x-mpy-20230425.zip」と書かれたボタンがそれ。同名のzipファイルがダウンロードされます。

 

③ダウンロードした圧縮ファイルを解凍。解凍してできたフォルダの中のlibフォルダ内から追加すべきライブラリ、ここでは「adafruit_ssd1306.pympy」ファイルを探し、別途開いたRaspberry Pi Pico中の「CIRCUITPY」ディレクトリ下「lib」ディレクトリ内にドラッグ&ドロップします。

 

ライブラリの追加完了のはずなので、code.pyを実行してみます。「adafruit_framebuf.mpy」がないというエラーが生じたので、先のライブラリ同様にlibから「adafruit_framebuf.mpy」を探し出してlibへドラッグ&ドロップしてコピーします。

 

再度code.pyを実行。今度は「font5x8.bin」がないというエラー。今度は「examples」から「font5x8.bin」を探し出して、code.pyのあるディレクトリへコピー。

 

これで、前回の冒頭に掲げた写真と同様なOLEDの画面が表示されます。