raspberry pi pico 開発するならサーキットPython?マイクロPython?

Raspberry Pi Picoガイド

小さなマイコンボードRaspberry Pi PicoPythonで開発できると聞いて調べ始めると、MicroPythonCircuitPythonという2つの選択肢が登場してきます。「どっちを選べばいいの?」とそこで止まってしまいがちですよね。

実は筆者も、最初はまったく同じところで立ち止まりました。ところが少し調べて実際に触ってみると、それぞれにハッキリした特徴があり、自分に合った選び方が見えるようになってきました。

この記事では、MicroPythonとCircuitPythonの基本的な違いから、それぞれのメリット・デメリット開発環境の構築手順、そして筆者が実際に作った左手デバイスの事例までを、初心者にも分かりやすい順番で解説していきます。

読み終えるころには、ラズパイPicoで開発するときに自分はどちらを選べばよいか、きっとイメージできるようになっているはずです。

MicroPythonとCircuitPythonの違い

まずは、MicroPython(マイクロパイソン)とCircuitPython(サーキットパイソン)の立ち位置の違いを押さえておきましょう。どちらもマイコン上で動くPythonですが、開発元や設計思想が少し異なります。

MicroPythonは2013年にDamien George氏によって開発されたオープンソースプロジェクトで、マイコン向けに最適化された軽量なPython実装です。一方、CircuitPythonは米国Adafruit社が教育用途を意識してMicroPythonをフォーク(派生)して作られた言語で、初心者の使いやすさをより強く意識して設計されています。

両者の特徴を、ざっくりまとめると次のようになります。

  • 開発元: MicroPythonは個人発のオープンソース(現在はコミュニティ中心)、CircuitPythonはAdafruit社が主導して開発
  • 対象ユーザー: MicroPythonは幅広いホビイスト・開発者向け、CircuitPythonは特に初心者や教育現場向け
  • 設計思想: MicroPythonは柔軟性と性能重視、CircuitPythonは一貫性と簡便さを優先
  • 対応ハード: MicroPythonは非常に多くのマイコンボードをサポート(Pico含む)、CircuitPythonは主要ボード約600種類に対応(2025年時点)
  • ライブラリ: MicroPythonはコミュニティ主導の分散型、CircuitPythonはAdafruitが整備した豊富な公式ライブラリ群を提供
  • アップデート方法: MicroPythonはボードによっては専用ツールが必要な場合もある(※PicoではUF2ドラッグでOK)、CircuitPythonは基本的にドラッグ&ドロップで更新

まとめると、CircuitPythonは「初心者にやさしく作り直したMicroPython」というイメージです。MicroPythonをベースにしているため、プログラムの文法や書き方はほとんど共通で、互換性も高くなっています。

ピコさん
ピコさん
実はCircuitPythonはMicroPythonがベース。だからコードの書き方もほとんど同じだよ!

例えばLEDをチカチカさせるような簡単なプログラムなら、MicroPythonでもCircuitPythonでもほぼ同じコードで動かせます。違いが出てくるのは、開発スタイル利用できるライブラリのあたりだと考えておくと分かりやすいです。

それぞれのメリット・デメリット

次に、MicroPythonとCircuitPythonそれぞれの得意なところ(メリット)苦手なところ(デメリット)を見ていきます。特に初心者目線で気になるポイントに絞って整理しました。

CircuitPythonのメリット

  • 【簡単スタート】ファームを書き込むとPicoがUSBメモリとしてマウントされ、メモ帳感覚でコードを書いて保存するだけで実行できる手軽さ
  • 【豊富なライブラリ】Adafruit製のセンサーやHID(キーボード化など)向けなど、数百種類の公式ライブラリがそのまま使える
  • 【初心者フレンドリー】公式チュートリアルや作例記事が充実しており、つまずいたときに情報を探しやすい
  • 【プロトタイピング向き】コード保存と同時に実行されるので、試行錯誤のサイクルを高速に回せる(ワークショップなどにも向く)

CircuitPythonのデメリット

  • 【高度な機能にはやや不向き】RP2040の2コアを自由に使い分けるような低レベル制御は想定されておらず、ハードウェア割り込みを多用するリアルタイム処理も得意ではありません(PIO自体は rp2pio モジュール経由で利用可能)。
  • 【実行効率】MicroPythonと比べると実行速度がやや遅い傾向があり、重い計算や高頻度処理には不向き
  • 【対応ボードが限定的】対応ボードは多いものの、マイナーな基板ではそもそもCircuitPythonが使えない場合もある
  • 【容量の大きさ】機能が豊富なぶんファームウェアサイズやメモリ消費が大きめ(Picoでは問題ないが、小容量ボードでは制限になることも)

MicroPythonのメリット

  • 【公式&定番】Raspberry Pi財団が公式にサポートしており、入門書や日本語情報が豊富で安心して学習できる
  • 【軽量で高速】余計な機能を削ぎ落とした実装のため、CircuitPythonより軽快に動作し、時間精度の必要な処理にも比較的強い
  • 【柔軟性】RP2040のマルチコアやPIO、割り込みなど、ハード寄りの高度な制御まで使いこなせる
  • 【ボードの選択肢が広い】非常に多くのマイコンボード向けポートがあり、習得した知識を他ボードにも横展開しやすい

MicroPythonのデメリット

  • 【環境構築にひと手間】REPL接続やThonnyなどのIDEが前提で、「書いて保存=即実行」という手軽さは弱い
  • 【ライブラリ探しが必要】用途によっては必要なライブラリを自分で探して組み込む必要があり、情報収集力が求められる
  • 【特殊機能は自前実装】USB-HIDデバイス化などは標準では用意されておらず、別途ファームや低レベルな実装が必要になる
  • 【重い処理はやはり苦手】CircuitPython同様、本格的なリアルタイム制御や大規模プロジェクトでは限界があり、いずれC/C++への移行も視野に入る

このように一長一短はありますが、ざっくり言えばCircuitPythonは「使いやすさ優先」MicroPythonは「自由度と拡張性優先」と覚えておくと整理しやすいと思います。

ピコさん
ピコさん
Picoの2つのCPUコアやPIOをフル活用したいならMicroPythonの出番。CircuitPythonはあえて機能を絞って、シンプルさを優先しているんだよ。

とはいえ、どちらを使ってもLED点滅や簡単なセンサー読み取りなど、基本的な電子工作はしっかりこなせます。まずは自分のやりたいことに近い方から触ってみて、合わなければもう片方も試してみるくらいの気楽さでOKです。

開発環境の構築と始め方

ここからは、実際にRaspberry Pi Pico上でMicroPython / CircuitPythonを動かすための環境構築手順を見ていきます。どちらも数分でセットアップできるので、難しく考えなくて大丈夫です。

MicroPythonを始める手順

  1. Pico用のMicroPythonファームウェア(UF2ファイル)を、MicroPython公式サイトからダウンロードします。
  2. Raspberry Pi PicoのBOOTSELボタンを押しながらPCにUSB接続し、ストレージデバイス「RPI-RP2」をマウントします。
  3. ダウンロードしたUF2ファイルを「RPI-RP2」ドライブにドラッグ&ドロップして書き込みます。
  4. コピーが完了するとPicoが自動的に再起動し、MicroPythonが起動した状態になります。
  5. PC側でThonnyなどの開発ツールを起動し、Picoに接続します。Thonny上でPythonコードを作成し、main.pyとしてPicoに保存して実行しましょう。

Thonnyひとつあれば、コードの編集・実行・ファイル管理まで一通りこなせます。「公式推奨IDEにお任せ」できるのは初心者には心強いポイントです。

CircuitPythonを始める手順

  1. AdafruitのCircuitPython公式サイトから、Raspberry Pi Pico用の最新CircuitPythonUF2ファイルをダウンロードします。
  2. BOOTSELボタンを押しながらPicoをPCに接続し、「RPI-RP2」ドライブをマウントします。
  3. ダウンロードしたUF2ファイルを「RPI-RP2」ドライブへドラッグ&ドロップして書き込みます。
  4. コピー完了後、Picoが自動再起動し、今度は「CIRCUITPY」という名前のUSBドライブとしてマウントされます。
  5. Mu Editorなど任意のテキストエディタで「CIRCUITPY」ドライブ内にcode.pyファイルを作成し、Pythonコードを書いて保存します。

ファイルを保存すると同時にプログラムが実行されます。例えば内蔵LEDを1秒おきに点滅させるコードを書いて保存するだけで、すぐに動作を確認できるのがCircuitPythonの分かりやすさです。

ピコさん
ピコさん
1台のPicoに、MicroPythonとCircuitPythonを何度でも書き換えOK。気軽に両方試して、自分に合う方を探してみよう!

MicroPythonからCircuitPythonに戻したくなったときも、同じようにUF2ファイルを書き込むだけです。失敗しても書き込み直せば復活するので、怖がらずにいろいろ試してみてください。

制作体験:CircuitPythonで左手デバイスを作ってみた

ここからは少し実践的な話として、筆者がCircuitPythonで挑戦した左手デバイス(左手用マクロキーボード風ガジェット)の制作体験を紹介します。

左手デバイスとは、その名のとおり左手で操作する専用キーボードのようなガジェットです。いくつかのボタンやダイヤルにコピー&ペーストなどのショートカットを割り当てておくことで、作業効率をぐっと高めることができます。

今回使ったのはRaspberry Pi Picoと、数個のタクトスイッチ、ロータリーエンコーダーなどシンプルな部品だけ。「PicoをPC用のキーボードとして認識させる」ことがポイントでしたが、CircuitPythonならここがとても簡単でした。

というのも、CircuitPythonにはAdafruit HIDライブラリadafruit_hid)が用意されていて、これを使うとPicoをPC側からUSBキーボードやマウスとして認識させられるからです。私はこのライブラリを使い、PicoのGPIOピンに接続したボタンが押されたタイミングでCtrl+CやCtrl+Vなどのキーコードを送信するようにプログラムしました。

やっていることはシンプルで、ボタン入力を監視して条件分岐し、Keyboard.send()を呼ぶだけ。回路を組み始めてから2時間ほどで基本機能が完成し、「思っていたよりずっと簡単に作れた」と感じました。

ピコさん
ピコさん
「左手デバイス」は、左手だけでショートカットを打てるカスタムキーガジェット。コピー&ペースト専用キーを作るだけでも、かなり便利になるよ!

では、同じものをMicroPythonで作るとどうなるかも考えてみます。MicroPythonの標準ファームウェアでは、PicoはPCからUSBシリアルデバイスとして認識され、キーボードとしては振る舞いません。キーボード化するにはTinyUSBなどを使った低レベル実装や、HID対応のカスタムファームを書き込む必要があり、初心者が1から取り組むにはかなり敷居が高いのが実情です。

この経験から、USB接続ガジェットを手早く試したいときはCircuitPythonがとても相性が良いと実感しました。MicroPythonだと自前実装が必要な部分も、CircuitPythonなら既存ライブラリを呼び出すだけで済むので、「思いついたアイデアをすぐ形にしやすい」のが大きなメリットだと感じています。

初心者は結局どっちを選ぶべき?

ここまで読んで、「で、初心者はどっちを選べばいいの?」という疑問が残っているかもしれません。結論としては、どちらを選んでも間違いではないです。ただ、向き不向きのシチュエーションはあるので、目安をまとめておきます。

CircuitPythonはこんな人におすすめ

  • プログラミングも電子工作もこれから始める完全初心者で、とにかく「まず動かしてみたい」
  • Adafruit製センサーやディスプレイなど、公式ライブラリでサクッと使えるパーツを活用したい
  • HIDキーボードなどPC連携ガジェットを、なるべくコード量少なめで実現したい
  • コードを書いて保存 → 即実行という、快適な試行錯誤サイクルを重視したい

MicroPythonはこんな人におすすめ

  • Raspberry Pi財団の公式ガイドや書籍に沿って基礎から学びたい
  • いずれRP2040のデュアルコアやPIOなど、ハードウェア寄りの機能にも踏み込みたい
  • ESP32など他のマイコンボードにもスキルを展開していきたい
  • 多少セットアップが増えても、柔軟で長く使える環境を手に入れたい

どちらを選ぶにしても、いちばん大事なのは実際に触ってみることです。「面白そうだな」と感じた方をインストールして、まずはLEDを光らせてみましょう。

ピコさん
ピコさん
実はどちらを選んでも、LEDを光らせたりセンサーを読むくらいなら問題なくできるよ。深く悩む前に、まずはLチカからやってみよう!

悩んで手が止まってしまうくらいなら、どちらか片方でLチカを試してみて、必要になったらもう一方も触ってみるくらいのスタンスで大丈夫です。両方を知っておくと、それぞれの良いところを場面に応じて使い分けられるようになります。

まとめ

ラズパイPicoで開発するときのMicroPythonとCircuitPythonの違いについて、特徴やメリット・デメリット、環境構築の流れ、そして左手デバイスの制作事例までを紹介しました。

ざっくり振り返ると、手軽さとライブラリの豊富さで選ぶならCircuitPython柔軟性と将来の拡張性で選ぶならMicroPythonというイメージです。ただしどちらを選んでも、Picoでの基本的な電子工作は十分楽しめます。

まずは気になった方をインストールして、LED点滅やボタン入力などの小さな一歩から始めてみてください。きっと「お、動いた!」という感動が、次のアイデアや作品づくりにつながっていきます。

ピコさん
ピコさん
上達の近道は、とにかく手を動かすこと。楽しみながら少しずつステップアップしていこうね!

もし次に何を作ろうか迷ったら、温度や明るさを測るシンプルなセンサー系や、小さなモーター・サーボを動かすプロジェクトもおすすめです。ラズパイPicoとPythonがあれば、身の回りの「ちょっとした不便」を解決するガジェットがたくさん作れます。ぜひ、自分のペースで電子工作の世界を広げてみてください。

コメント