秋月電子のRP2040マイコンボードでCircuitPython

秋月電子通商はオリジナルのマイコンボードを各種製造販売していますが,Raspberry PiのRP2040を用いたマイコンボード(以下,AE-RP2040)もあります.本家のRaspberry Pi Pico(以下,Pico)はC/C++,MicroPythonまたはCircuitPythonでプログラミングできるのですが,AE-RP2040がCircuitPythonで動かせるかどうかは情報があまりなかったので,自分で試してみることにしました.

  • CircuitPythonのPicoのページから.UF2ファイルをダウンロードします.
  • AE-RP2040のBOOTボタンを押し,そのままの状態でPCと接続します.無事接続できるとPC上に“RPI-RP2”というドライブが出現します.RPI-RP2がPCに認識されたらBOOTボタンから手を離してOKです.
  • ダウンロードした.UF2ファイル(adafruit-circuitpython-raspberry_pi_pico-〇〇-△.□.×.uf2)をRPI-RP2にドラッグ&ドロップします:本記事執筆時点のCircuitPythonは9.0.4
  • しばらくしてRPI-RP2が消え“CIRCUITPY”というドライブが出現したら,CircuitPythonのインストールは成功です.
  • もしうまくインストールができない場合や,使用中のCIRCUITPYドライブの挙動がおかしくインストールし直しをしたい場合は,こちらのページにある“flush_nuke.uf2”をダウンロードしてAE-RP2040に書き込み(BOOTボタンを押しながらPCに接続して,RPI-RP2ドライブにDrag&Drop)消去してからCircuitPythonの.uf2ファイルを再インストールします.

ThonnyのREPLからboardモジュールのピンを調べてみると次のようになりました:

>>> import board
>>> dir(board)
['__class__', '__name__', 'A0', 'A1', 'A2', 'A3', 'GP0', 'GP1', 'GP10', 'GP11', 'GP12', 'GP13', 'GP14', 'GP15', 'GP16', 'GP17', 'GP18', 'GP19', 'GP2', 'GP20', 'GP21', 'GP22', 'GP23', 'GP24', 'GP25', 'GP26', 'GP26_A0', 'GP27', 'GP27_A1', 'GP28', 'GP28_A2', 'GP3', 'GP4', 'GP5', 'GP6', 'GP7', 'GP8', 'GP9', 'LED', 'SMPS_MODE', 'STEMMA_I2C', 'VBUS_SENSE', 'VOLTAGE_MONITOR', '__dict__', 'board_id']
>>> 

当然ですが,Picoと同じ情報です(笑).AE-RP2040にLEDは実装されていませんので,board.LEDを指定してもGP25を操作するのと同じになるはずです.Picoで外部に引き出されていないGPIOをAE-RP2040では使うことができそうです.例えば,A3としてAD変換入力をPicoより一つ多く使えるはずです.

動作検証にはうちの授業でやっているLチカ(赤と黄緑のLEDを交互に点滅)をやってみました.LEDの電流制限抵抗は,赤が1kΩ,黄緑が330Ωです.

 

無事にLチカの動作が確認できました.GP23〜GP25もLチカでは出力端子として使用できましたので,多分大丈夫でしょう.

上記動画のソースコード(このレベルのコードはパブリックドメインでいいよね)は以下のとおりです:

import board
import digitalio
import time

red = digitalio.DigitalInOut(board.GP14)
red.direction = digitalio.Direction.OUTPUT
grn = digitalio.DigitalInOut(board.GP15)
grn.direction = digitalio.Direction.OUTPUT
 
while True:
    red.value = True
    grn.value = False
    time.sleep(1)
    red.value = False
    grn.value = True
    time.sleep(1)

EduBlocksというPython/HTML5のビジュアルプログラミングサイトがあります.このWebサイトでは,標準的なPython(CPython)の他,micro:bit,CircuitPython及びRaspberry Pi(Picoではない)のPythonプログラムを作成することができます.上記プログラムを作成した例が下図です:

EduBlocksで作成したプログラムは,“Save”ボタンでブロック情報を含むjsonファイルがPCに保存されます(これは後で再度読み込む際に利用できます).CIRCUITPYドライブに書き込むプログラムは“Download”ボタンでPCにダウンロード保存します(ファイル名は“code.py”).code.pyをCIRCUITPYドライブにDrag&Dropすれば,書き込み完了後にそのプログラムが動作し始めます.

なお,右側ペインのCodeブロックに手入力でPythonプログラムを記述することもできます.その場合,ダウンロードしたcode.pyには反映されますが,中央のブロックには反映されません.ビジュアルプログラミングからテキストプログラミングへの移行をする場合に,このサイトは有用と考えます.