技術コラム(第24回)Raspberry Pi PicoのPythonを使う

前回の記事で、Raspberry Piについてご紹介しました。

今回はその一種である、Raspberry Pi Picoについてご紹介いたします。

Raspberry Pi Picoについて 

Raspberry Pi Pico(以下Pico)は550円程度で買える、Raspberry Pi財団自身が販売しているお手頃な開発ボードです。Raspberry Pi 財団が開発した独自プロセッサRP2040を搭載しています。以下、その特徴を示します。

  • ARM Cortex-M0+をコアにもち、最大133MHzで動作する、デュアルコア
  • リアルタイム信号処理を可能とするプログラマブルI/O
  • 1クロックサイクルで処理可能なSIO(GPIO) 

また、以下のような応用可能性を持っています。

  • 音声処理やグラフィックスレンダリング
  • ハードウェア整数除算器、ROM内蔵の高速浮動小数演算ライブラリにより高速計算

このように、小さいサイズながら非常に強力な開発ボードとなっています。
Pico自体のスペックは以下のようになります。

MCU(マイコン)RP2040
CPUコアARM Cortex-M0+プロセッサ デュアルコア
RAM256KB SRAM
FLASH2MB Quad-SPI
USBUSB 1.1 microB×1
GPIO個数:26(ディジタル対応:23、アナログ対応:3)
SWDあり(3ピン)
SPI個数:2
I2C個数:2
UART個数:2
ADコンバータ12bit 500ksps 個数:3
電源1.8V ~ 5.5V
I/O電圧3.3V
サイズ21×51.3×3.9mm
Raspberry Pi Pico写真

組込開発.comでは新しい開発ボードを購入し、日々自己学習を行いながら技術の研鑽しています。

次に公式でサポートされている開発環境について説明します。

開発環境について

Picoの公式開発言語については、以下があります。

C/C++ MicroPython 
主な目的高性能/汎用アプリケーションプロトタイピング,IoT
ツールチェーンGNU Arm Embedded Toolchain不要
コンパイラGCC(C/C++),pioasm(PIO)※非サポート
デバッガSWD経由GDB+OpenOCD非サポート
実行形態コンパイラによるネイティブコード実行インタプリタによる逐次実行
特徴Pico/RP2040の全機能に対応し、レジスタ操作による細かい制御可能。レジスタ操作などのプリミティブな操作は処理系で隠蔽。ラピッドプロトタイピングが可能。

※pioasm(PIO) :RP2040のプログラマブルI/O命令をC言語のプログラムに変換するアセンブラ

C/C++では開発期間が長くなりますが、Picoの性能を引き出す事が出来ます。逆に開発工程が短くなるMicroPythonは試作品開発に向いています。スポットでC/C++で開発して性能を引き出しながら、他はMicroPythonでスピード開発という事も可能です。

今回は、上記MicroPythonについて開発環境を整えるまでを解説したいと思います。

MicroPython開発環境の構築 

1.C/C++プログラミングモードをMicroPythonプログラミングモードに変更する

購入直後のPicoはC/C++プログラミングモードとなっています。これをMicroPythonプログラミングモードへと変える必要があります。そのため、ファームウェアをインストールし直します。ファームウェアをインストールし直すには、専用装置/ソフトが必要に思われるかもしれませんが、GUIで行う事が可能です。

  1. MicroPythonのファームウェアをダウンロード
    以下の公式サイトから、最新のMicroPythonファームウェアをPC上にダウンロードします。
    MicroPython – Python for microcontrollers
    ※ 執筆時点(2021/9/20)での安定版最新は”rp2-pico-20210902-v1.17.uf2”になります。
  2. ファームウェア書き込みモードでPCに接続
    Picoボード上の[BOOTSEL]ボタンを押しながら(赤い四角で囲んだボタン)PicoとPCをUSBで接続して[BOOTSEL]ボタンを離すと、ファームウェア書き込みモードでブートします。すると、PicoはRPI-RP2という名称の外付けドライブとしてPCから見えるようになります。
    Picoファームウェア書き込みモード説明
  3. ファームウェアをPicoに書き込む
    ダウンロードしたMicroPythonのファームウェアをRPI-RP2にコピーします。コピーはドラッグ&ドロップでOKです。
  4. MicroPythonが起動する事を確認
    ファームウェアの書き込みが終了すると、自動でPicoが再起動し、MicroPythonを起動します。同時にPCからドライブがアンマウントされ、ドライブとして認識されなくなります。

以上、4つの手順を行うだけでファームウェアがインストールし直され、C/C++プログラミングモードからMicroPythonプログラミングモードに変更する事ができます。

2.開発環境Thonnyを導入する

PCのシリアル端末からMicroPythonのプログラミングが可能ですが、GUIによる開発環境も存在します。今回はGUI開発環境であるThonnyを導入します。ThonnyはMicroPythonの他、その派生言語であるCircuitPython、PCなどで一般的なCPythonに対応しています。対応OSもWindows/macOS/Linux(Raspberry Pi OS含む)となっています。

  1. Thonnyのダウンロード
    以下の公式サイトから、対応OSのThonnyをPC上にダウンロードします。
    Thonny, Python IDE for beginners
  2. インストール
    インストールウィザードに沿ってインストールを行います。
  3. Thonnyの起動
    初期設定として、以下のような画面が開きます。下記のように選択して[Let’s go!]をクリックしましょう。
    Thonny初期設定
  4. 初期設定
    • メニューバーの表示(※表示されている場合はスキップ)
      Thonny初期設定2
      上記画面のように、メニューバーが表示されていない場合、右上の青字
       [Switch to regular mode]
      を押した後、Thonnyを再起動してください。再起動後、表示されます。 
    • メニューの日本語化(※「3.Thonnyの起動」で[日本語[ALPHA]]を設定した場合はスキップ)
      メニューバーより [Tool] → [Option] でオプション設定画面を開きます。 
      [Language]項目で[日本語[ALPHA]]を選びます。 
      Thonnyを再起動すると、日本語になります。
    • PCとPico両方のファイルを見えるようにする
      メニューバーより [表示] → [ファイル]にチェックを入れます。 
      次に[ツール] → [Option] → [インタプリタ]タブをクリックします。 
      コンボボックスより[MicroPython(Raspberry Pi Pico)]を選択します。 
      これにより、PC内とPico内の両方のファイルが画面左側に表示されるようになります。 
      ※ Pico未接続時は以下のように表示されます。
      Thonny初期設定3

      ※ Pico接続時は以下のように表示されます。
      (ファイルが二つに別れ、ShellにMicroPythonコンソールが表示されている)
      Thonny初期設定4

3.PicoをLチカさせる 

PicoのオンボードLEDを用いて、MicroPythonの最低限の構文規則について理解し、Lチカを行おうと思います。

  1. Lチカ用のソースコードをThonnyで作成する
    以下プログラムリストをThonnyで作成します。
    from machina import Pin
    import utime
    # PicoではGPIO25にLEDが接続されている
    led = Pin(25, Pin.OUT)
    while True:
        # LEDの状態を反転(点滅)
        led.toggle()
        # 200ms waitする
        utime.sleep_ms(200)
  2. main.py と名前をつけて、Pico に保存する
    保存ボタンを押すと、保存場所をPCかPicoを選択するダイアログが表示されます。”Raspberry Pi Pico”ボタンをクリックする事でPico側に保存出来ます。 
    ※ main.py以外の名前では動作しないので、ご注意ください。
  3.  実行する
    実行ボタン(赤枠のボタン)を押す事でLチカが始まります。停止ボタン(青枠のボタン)を押す事でプログラムが停止し、Lチカが止まります。
    プログラム実行・停止

「1.Lチカ用のソースコードをThonnyで作成する」で作成した、プログラムリストを変えて、Lチカの点滅速度等を変えてみてください。また、電源を挿せばそのままスタンドアロンで動作させる事が可能です。

終わりに 

組込開発.comでは、これら最新デバイスを含め、色々な開発実績を持っています。これまでの開発実績は以下リンクよりご確認ください。 

投稿者プロフィール

PicoPo
PicoPo
組込み開発歴もうすぐ10年?な者。ですがまだまだひよっこな開発者。電子基板を片手に色々とやるぞ!と意気込みだけは十分…でしょうか。Raspberry系のものを触ったり、飽きればまた別のも触ります。この頃自分が飽きっぽい性格な事に気づきました。そんな自分ですが、VR系も好きでUnityとかも趣味で触り勉強中。3Dは難しい。