mcpField
P
picocalc-mcp

picocalc-mcp

ローカル
github.com/LofiFren開発ツール802 週間前に更新

picocalc-mcp について

PicoCalc MicroPython は、Raspberry Pi Pico 2W を搭載した Clockwork Pi PicoCalc 向けのファームウェアとスクリプト集です。MCP サーバーを備え、AI アシスタントが USB 経由でデバイス上のコードを実行し、ファイルを転送してテストできます。

主な機能

  1. 01MicroPython ファームウェアとローカルの開発ダッシュボード
  2. 02USB 経由のデバイスファイルの転送、閲覧、差分表示
  3. 03REPL からのデバイス上での Python 実行
  4. 04AI アシスタントから直接デバイスを操作する MCP サーバー
  5. 05ゲーム、シンセサイザー、SSH クライアントなどの内蔵アプリ

活用シーン

  1. 01AI コーディングアシスタントによる PicoCalc 向けコードの作成、転送、テスト
  2. 02ダッシュボードでのデバイスファイル管理とローカルとの差分確認
  3. 03ハンドヘルド端末上での MicroPython アプリケーションの開発と実行

MCP 対応

picocalc-mcp は PyPI からインストールする MCP サーバーで、Claude Code、Claude Desktop、Cursor などの MCP 対応クライアントに picocalc として設定します。AI アシスタントに接続済みデバイスを操作するツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"lofifren-picocalc": {
"command": "uvx",
"args": [
"picocalc-mcp"
]
}
}
}
起動コマンドuvx picocalc-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipicocalc-mcp0.1.1

ツール

6

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

PicoCalc MicroPython

PyPI MCP Registry License Platform

Raspberry Pi Pico 2W を搭載した Clockwork Pi PicoCalc ハンドヘルドデバイス向けの MicroPython ファームウェアとスクリプト集です。以下の機能を備えています。

  • フリッカーのない描画に対応した 320x320 LCD ディスプレイ
  • VT100 ターミナルを備えたメンブレンキーボード
  • カテゴリー別の、矢印キーで操作できるアプリメニュー(ライブラリは自動的に非表示)
  • ゲーム(テトリス、スネーク)、4 楽器対応シンセサイザー、Strudel によるライブコーディング音楽、WiFi マネージャー、ローカル LLM クライアント(Ollama)
  • ECDH-SHA2-NISTP256、AES-128-CTR 暗号化、対話型 VT100 ターミナルに対応した SSH クライアント
  • ファイルマネージャー、エディター、差分表示、REPL、取り出し機能を備えた開発ダッシュボード
  • SD カード上のスクリプトを自動検出

クイックスタート

1. ファームウェアを書き込む
  1. PicoCalc の電源を切り、USB を取り外します。
  2. Pico 2W の BOOTSEL を押したまま、USB を接続します。
  3. RP2350 という名前のドライブが表示されます。
  4. MicroPython/firmware/picocalc_micropython_pico2w.uf2 をドライブにコピーします。
  5. デバイスが自動的に再起動します。
2. デバイスにファイルをデプロイする
オプション A:ダッシュボード(推奨)

最も簡単な方法です。すべてを処理するローカル Web UI を使用します。

python3 MicroPython/tools/dashboard.py

ブラウザーでダッシュボードが開き、次の操作を行えます。

  • すべてデプロイ -- 起動ファイル、モジュール、スクリプトをワンクリックで転送
  • 参照 -- デバイス上のファイルを参照し、差分を表示して、個別のファイルを転送
  • ドラッグ&ドロップ -- .py ファイルをドラッグしてアップロード
  • 並列差分表示 -- 変更されたファイルをクリックすると、デバイス上とローカルの変更箇所が色分けされて表示
  • 新しいスクリプト -- スターターテンプレートからワンクリックでスクリプトを作成
  • REPL -- ブラウザーからデバイス上で Python を実行(各コマンドのタイムアウトは 30 秒)
  • 取り出し -- デバイス上のカウントダウン後に安全に切断し、USB を取り外す

初回起動時、必要に応じて mpremote のインストールを求められます。Python 3.7 以降が必要です。

新しいファイルの追加: modules/ および sd/py_scripts/ 内のスクリプトは、ダッシュボードによって自動検出されます。ルートレベルのファイル(boot.py など)を表示するには、dashboard.py の FILE_MAP に追加する必要があります。

オプション B:AI 支援開発(バイブコーディング)

AI コーディングアシスタントから PicoCalc に直接アクセスできます。AI との会話だけでコードを書き、転送し、デバイス上でテストし、繰り返し改善できます。

MCP サーバー(推奨)

MCP を使うと、ダッシュボードを起動しなくても、AI ツールからデバイスにネイティブにアクセスできます。PyPI からインストールします。

pip install picocalc-mcp

次に、.mcp.json または Claude Desktop の設定に追加します。

{
  "mcpServers": {
    "picocalc": {
      "command": "picocalc-mcp"
    }
  }
}

または、リポジトリから直接実行します:"args": ["/path/to/PicoCalc/mcp/mcp_server.py"]

Claude Code、Claude Desktop、Cursor、および MCP 互換のあらゆるツールで動作します。セットアップガイド全文:MCP_README.md

動作例:MCP とダッシュボードのデモ

Claude Code スキル(任意)

Claude Code のユーザー向けに、code-skills リポジトリでは PicoCalc 専用のスキルを提供しています。AI に、正しいアプリの書き方、ハードウェア API の使い方、コードレビュー、デバイス操作の方法を教えます。MCP サーバーが AI にデバイスを操作する手段を提供し、スキルがデバイス向けの開発に必要な知識を提供します。

# With skill-deployer installed, just paste a URL:
"install this skill https://github.com/LofiFren/code-skills/tree/main/skills/picocalc-app"

ダッシュボード REST API(レガシー)

すでにダッシュボードを起動している場合、AI ツールは HTTP エンドポイントも利用できます。

curl -s http://localhost:8265/api/device                          # Device status
curl -s -X POST http://localhost:8265/api/exec -H 'Content-Type: application/json' \
  -d '{"code": "print(1+1)"}'                                     # Run Python on device
curl -s -X POST http://localhost:8265/api/push -H 'Content-Type: application/json' \
  -d '{"file": "sd/py_scripts/my_app.py"}'                        # Push file to device
curl -s "http://localhost:8265/api/diff?file=sd/py_scripts/synth.py"  # Diff local vs device
curl -s -X POST http://localhost:8265/api/eject                   # Safe disconnect

すべてのエンドポイント:/api/device、/api/exec、/api/push、/api/pull、/api/files、/api/diff、/api/local/tree、/api/eject、/api/reset、/api/cleanup

オプション C:手動

Thonny、mpremote、または rshell を使って、Pico の内部フラッシュにファイルをコピーします。

Pico のルート(/)に次のファイルをコピーします:

MicroPython/boot.py       --> /boot.py
MicroPython/main.py       --> /main.py
MicroPython/modules/      --> /modules/     (entire directory)

SD カード用スクリプトをコピーします:

MicroPython/sd/py_scripts/*.py  --> SD card /py_scripts/

次のファイルはデバイスにコピーしないでください(PicoCalc ではなく、コンピューター上で実行されます):

tools/             <-- Dashboard web UI (runs on your computer)
picocalcdisplay/   <-- C source, compiled into firmware
vtterminal/        <-- C source, compiled into firmware
firmware/          <-- UF2 images and Dockerfile
3. SD カードを準備する
  1. SD カードを FAT32 でフォーマットします(4GB~32GBを推奨)。
  2. SD カードに py_scripts フォルダーを作成します。
  3. MicroPython/sd/py_scripts/ 内のすべての .py ファイルを、そのフォルダーにコピーします。
  4. SD カードを PicoCalc に挿入します。

または、Dashboard を使います。Deploy Scripts をクリックすると、USB 経由ですべてのスクリプトを SD カードに転送できます。

4. 起動する

PicoCalc の電源を入れ直します。起動スプラッシュに初期化の進行状況が表示され、その後、矢印キーで操作できるメインメニューが表示されます。


リポジトリ構成

MicroPython/
|-- boot.py                  --> Copy to device /
|-- main.py                  --> Copy to device / (launches menu)
|-- boot_thonny.py           --> Deploy as /boot.py for Thonny users
|-- boot_dev.py              --> Deploy as /boot.py for dev mode (REPL only)
|-- cleanup.py               --> (Optional) one-time cleanup, or use dashboard Cleanup button
|-- modules/                 --> Copy to device /modules/
|   |-- picocalc.py              Hardware abstraction (display + keyboard)
|   |-- vt.py                    VT100 terminal emulator
|   |-- py_run.py                Categorized app menu (auto-hides libraries)
|   |-- enhanced_sd.py           SD card initialization
|   |-- picocalc_system.py       System utilities
|   |-- sdcard.py                SD card driver
|   |-- checksd.py               SD card verification
|   |-- pye.py                   Built-in text editor
|   |-- colorer.py               Terminal color support
|   |-- default_style.py         Syntax highlighting styles
|   |-- highlighter.py           Code syntax highlighting
|   |-- flush.py                 Module cache flushing
|   \-- mkdir.py                 Directory creation utility
|-- sd/py_scripts/           --> Copy contents to SD card /py_scripts/
|   |-- tetris.py                Tetris with sound effects
|   |-- snake.py                 Snake with high scores
|   |-- synth.py                 4-instrument synthesizer with piano keyboard
|   |-- strudel.py               Strudel mini-notation parser + sequencer (library)
|   |-- strudel_live.py          Live-coding music UI (color themes, playhead)
|   |-- strudel_demo.py          Interactive tutorial: learn the mini-notation
|   |-- ProxiScan.py             BLE proximity scanner & fox hunt tool
|   |-- WiFiManager.py           WiFi scanning & connection manager
|   |-- picocalc_ollama.py       Local LLM client (Ollama)
|   |-- brad.py                  WiFi utility library
|   |-- demo.py                  Visual display showcase (grayscale, animation)
|   \-- editor.py                On-device file browser + code editor
|-- sd/samples/              --> Copy to SD card /samples/ (Strudel drum kit)
|   \-- bd/sd/hh/cp.raw          8-bit PCM one-shots for the picosampler engine
|-- firmware/                    Prebuilt UF2 firmware images
|   |-- picocalc_micropython_pico2w.uf2   (v1.25.0, stable)
|   |-- picocalc_v127_pico2w.uf2          (v1.27.0, patched)
|   |-- picocalc_v128_pico2w.uf2          (v1.28.0, native USB + audio engine)
|   |-- Dockerfile                         Build for v1.25.0
|   |-- Dockerfile.v127                    Build for v1.27.0 + USB fix
|   |-- Dockerfile.v128                    Build for v1.28.0 (no USB patch)
|   \-- USB_REGRESSION_FIX.md              RP2350 USB bug report
|-- micropython.cmake            Top-level build config for C modules
|-- picocalcdisplay/             C display driver (compiled into firmware)
|   |-- picocalcdisplay.c
|   |-- picocalcdisplay.h
|   |-- font6x8e500.h
|   \-- micropython.cmake
|-- vtterminal/                  C terminal emulator (compiled into firmware)
|   |-- vtterminal.c
|   |-- vtterminal.h
|   |-- font6x8.h
|   \-- micropython.cmake
|-- picosampler/                 C audio engine (DMA-PWM sampler, compiled in)
|   |-- picosampler.c                8-voice 8-bit PCM mixer, stereo PWM out
|   |-- micropython.cmake
|   |-- make_samples.sh              wav -> 8-bit PCM converter (ffmpeg)
|   \-- generate_drums.py            synthesize a starter drum kit (no deps)
|-- tools/                       Development tools
|   |-- dashboard.py                 Web UI server (run this!)
|   |-- bottle.py                    Vendored web framework (zero install)
|   \-- static/
|       |-- index.html               Dashboard frontend
|       \-- vendor/                  CodeMirror editor (vendored, offline)
mcp/                                 MCP server for AI assistants
|-- mcp_server.py                    MCP server (pip install picocalc-mcp or run directly)
\-- MCP_README.md                    Full setup guide

アプリケーション

アプリ説明
Tetris7 種類のピース、ゴーストピース、効果音、レベル進行を備えたクラシックなテトリス
Snakeハイスコア記録、速度レベル、サウンドを備えたスネークゲーム
Synth4 種類の楽器(ピアノ、オルガン、ストリングス、シンセ)を備えたシンセサイザー。QWERTY ピアノキーボード、ADSR エンベロープ、アルペジエーター、16 ステップシーケンサー、LFO エフェクト、プリセットを搭載
Strudel Liveオンデバイスで使える Strudel のライブコーディング。ミニノーテーションパターン(bd*4 , ~ sd ~ sd , hh*8)を入力し、レイヤーごとのエフェクト(| lpf 600 r 40)を適用できます。ネイティブの picosampler オーディオエンジン(レゾナント lpf/hpf + ADSR)でライブ再生し、再生ヘッドが滑らかに移動します。5 種類のカラーテーマ(SonicPink、Dracula、Monokai、Nord、Terminal)に対応
Strudel Basicsインタラクティブなカラー付きチュートリアル。ミニノーテーション(シーケンス、*、[]、<>、ユークリッド、レイヤリング)とエフェクト(フィルター、エンベロープ)を学べる11のレッスンを収録。構文カラー表示付きのパターン、ライブリズムタイムライン、オーディオを備えています。Strudel Live を始める前に楽しく学べます
ProxiScanBLE 近接スキャナー、コンパス付きフォックスハントツール、信号追跡、競技用タイマー、ウェイポイント、アンテナ校正
WiFiManagerVT100 UI、信号強度バー、チャンネル分析、信号モニターを備えた WiFi スキャナー
SSH Clientセキュアシェルクライアント。ECDH-SHA2-NISTP256 鍵交換、AES-128-CTR + HMAC-SHA2-256 暗号化、RSA ホスト鍵検証(TOFU)、PIN で暗号化されたパスワード付きの接続プロファイル保存、対話型 VT100 ターミナル(53x40)
SSH ServerPicoCalc に SSH 接続して MicroPython REPL を利用できます。ECDH-SHA2-NISTP256 鍵交換、ECDSA-nistp256 ホスト鍵、AES-128-CTR + HMAC-SHA2-256、パスワード(ソルト付きハッシュ)および公開鍵(authorized_keys)認証に対応
Ollama ClientWiFi 経由で Ollama を使ってローカル LLM とチャットできます
Demoディスプレイのビジュアルデモ。グレースケールパレット、跳ねるボックス、スクロールするグラデーション、デバイス情報を表示
Editorオンデバイスのファイルブラウザーおよびコードエディター。コンピューターなしでスクリプトの閲覧、作成、編集、削除ができます
Strudel のサポート

これは、MicroPython + C でネイティブに動作する、Strudel のパターンの考え方を小規模に再実装したものであり、完全な移植版ではありません。JavaScript エンジンはなく、Strudel/TidalCycles の関数ライブラリもすべて備えているわけではありません。機能を絞ったサブセットです。サウンドはサンプルのみです(同梱の bd/sd/hh/cp キットに加えて、/sd/samples/ に配置した 8 ビットの pcm_u8 .raw ファイルを使用できます。サンプル名はファイル名です)。

対応しているミニ記法

構文意味
bd sd hhシーケンス — サイクルを均等に分割します
~休符(無音)
[bd sd]サブグループ — 複数のサウンドを 1 つのステップにまとめます
bd*NN 回繰り返します(速くなります)
bd/NN サイクルごとに 1 回再生します
<bd sd>交互に切り替えます — 1 サイクルにつき 1 つ
a , b(または 1 行に 1 レイヤー)重ねて再生します
bd(k,n) / bd(k,n,rot)ユークリッドリズム(回転付き)
// ... または # ...コメント(行内または行全体)

対応しているエフェクト(レイヤーごとに \| の後に指定):lpf hpf res gain a d s r dur — 詳しくは下記のStrudel エフェクトを参照してください。

意図的に、現時点では対応していない機能:JavaScript API とメソッドチェーン、シンセ/オシレーターの音源(note/n)、ピッチ/speed/accelerate、pan、時間/音質エフェクト(delay、room/リバーブ、crush、coarse、shape)、変換関数(rev、jux、every、sometimes、off、degrade など)、レイヤーごとではなくイベントごとに適用するエフェクト、および /sd/samples/ に配置したもの以外のサンプルバンク。

Strudel エフェクト

picosampler オーディオエンジンは、C でボイスごとの DSP を実行します。共振型の 2 段ステートバリアブルフィルター(ハイパス → ローパス)と ADSR 振幅エンベロープを備え、すべてを浮動小数点数でミキシングして出力解像度を最大限に保ちます。パターンの行で | の後にエフェクトを追加すると、その行のすべてのサウンドに適用されます。

bd*4 , hh*8 | lpf 600 res 150     # dark, squelchy lowpass
~ sd ~ sd   | hpf 1200            # thin, highpassed snare
bd ~        | a 3 r 180 dur 90    # shaped attack/release
エフェクト意味
lpf <hz> / hpf <hz>ローパス/ハイパスのカットオフ(0 = オフ)
res <n>フィルターのレゾナンス/Q*100(70 ≈ 0.7。数値が大きいほどピークが強くなります)
a d rエンベロープのアタック/ディケイ/リリース(ミリ秒)
s <0-255>エンベロープのサステインレベル
dur <ms>リリース前のゲート長(0 = サンプル全体を再生)
gain <0-256+>レイヤーごとのレベル(256 = ユニティゲイン)
SSH クライアントに関する注意事項

SSH クライアントは、ECDH-SHA2-NISTP256 を使用して、最新の OpenSSH 10.x サーバー(レガシーな DH 鍵交換が削除されています)に対応します。古いサーバーには diffie-hellman-group14 へ自動的にフォールバックします。RP2350 では鍵交換が約 1.3 秒で完了します。

必須ファイル:

  • sd/py_scripts/ssh_client.py -- SSH クライアントアプリケーション
  • sd/py_scripts/secure_creds.py -- PIN ベースの認証情報暗号化ライブラリ
  • sd/wifi.json -- Wi-Fi 認証情報(WiFiManager によって作成)

初回使用時に自動作成されるファイル:

  • /sd/ssh_profiles.json -- 保存済みの接続プロファイル(パスワードは暗号化されます)
  • /sd/ssh_known_hosts.json -- 信頼済みホスト鍵のフィンガープリント

使用方法:

  • 接続:保存済みのプロファイルを選択するか、新しい接続(ホスト、ポート、ユーザー、パスワード)を作成します
  • ネットワーク情報:メニューで I を押すと、このデバイス自身の IP アドレス、ゲートウェイ、SSID、MAC アドレスに加えて、SSH で接続し直すためのコピー可能な ssh -p 2222 user@<ip> コマンドが表示されます
  • プロファイルの編集:保存済みの接続で E を押すと、ホスト/ポート/認証情報を更新できます
  • 切断:ESC-ESC を押すと、ターミナルセッションを終了します
  • Ctrl+C:リモートコマンドの中断に使用できます。top のように大量の出力を行うプログラムでは、SSH パケットの間にキーボード入力をポーリングするため、Ctrl+C を素早く数回押す必要がある場合があります
  • ホスト鍵:初回接続では Trust-On-First-Use(TOFU)方式を使用します。フィンガープリントを一度確認すると、保存されます
  • パスワード:保存時には必ず、4~8 桁の PIN を使用した AES-128-CBC で暗号化されます。初回保存時に PIN の設定を求められます
SSH Server に関する注意事項

SSH Serverを実行すると、別のマシンから PicoCalc にログインし、ネットワーク経由でライブの MicroPython REPL を利用できます。SSH クライアントのトランスポート/暗号化機能を再利用し、サーバー側の機能として、ECDSA-nistp256 ホストキー、鍵交換の署名、password と publickey による認証を追加します。

コンピューターから接続するには:

ssh -p 2222 <user>@<pico-ip>      # password auth
ssh -i ~/.ssh/id_ecdsa -p 2222 <user>@<pico-ip>   # public-key auth

アプリのステータス画面には、デバイスの IP アドレスを含む正確なコマンドと、ホストキーのフィンガープリントが表示されます。デフォルトのポートは 2222 です。

ファイル(SD カード内):

  • sd/py_scripts/ssh_server.py -- SSH サーバーアプリケーション
  • /sd/ssh_host_ecdsa.json -- ECDSA ホストキー(初回実行時に自動生成)
  • /sd/ssh_server.json -- ユーザー名とソルト付きパスワードハッシュ(初回実行時に設定)
  • /sd/authorized_keys -- 鍵認証用の OpenSSH 形式の公開鍵(1 行につき 1 つ、任意)

注意事項:

  • 同時に実行できるセッションは 1 つです。RP2350 ではハンドシェイクに約 1~2 秒かかります。
  • WiFi が必要です(先に WiFiManager を実行してください)。ステータス画面で ESC を押すとサーバーを停止します。
  • 対応するクライアント公開鍵:ecdsa-sha2-nistp256 および ssh-rsa/rsa-sha2-256。Ed25519 クライアントキーにはまだ対応していません。ECDSA/RSA キーまたはパスワード認証を使用してください。
  • セッションは自己完結型の REPL です(eval/exec の出力が端末にストリーミングされます)。exit() または Ctrl-D で切断します。

メニュー操作

メインメニューではアプリをカテゴリ(音楽、ゲーム、ネットワーク、ツールなど)ごとにまとめ、1 行の説明を表示します。また、ライブラリ/ヘルパーファイルは自動的に非表示になります。アプリはヘッダーコメント # picocalc-app: Name | Category | description でカテゴリを指定します。

キー操作
上/下アプリを選択
Enter選択したスクリプトを実行
ESCREPL に戻る
Rスクリプト一覧を再読み込み
Fモジュールキャッシュをフラッシュ
Mメモリ/ストレージ情報を表示
Tファイル管理ツール

ソースからのファームウェアのビルド

firmware/ 内のビルド済み UF2 ファイルは、そのまま書き込みに使用できます。ソースからのビルドは必須ではありません。C 製のディスプレイ/ターミナルドライバーを変更する場合や、異なる MicroPython バージョンを試す場合のみ実行してください。

必要なもの:Docker Desktop。

オプション A:標準ビルド(v1.25.0 -- 推奨)

安定しており、USB で動作確認済みです。ビルド済みの picocalc_micropython_pico2w.uf2 に使用されています。

# 1. Build the Docker image (one-time, ~5 min)
docker build -t picocalc-build MicroPython/firmware/

# 2. Compile firmware with PicoCalc C modules (~3 min)
docker run --rm \
  -v $(pwd)/MicroPython:/picocalc \
  -v $(pwd)/MicroPython/firmware:/out \
  picocalc-build \
  bash -c "make BOARD=RPI_PICO2_W USER_C_MODULES=/picocalc/micropython.cmake -j\$(nproc) && \
           cp build-RPI_PICO2_W/firmware.uf2 /out/picocalc_micropython_pico2w.uf2"
オプション B:パッチ適用済み v1.27.0 ビルド

BLE ペアリング API を有効にした新しい MicroPython です。RP2350 の USB 回帰問題に対する 2 行のパッチが含まれています(firmware/USB_REGRESSION_FIX.md を参照)。

# 1. Build the Docker image (one-time, ~5 min)
docker build -t picocalc-v127 -f MicroPython/firmware/Dockerfile.v127 MicroPython/firmware/

# 2. Compile firmware (~3 min)
docker run --rm \
  -v $(pwd)/MicroPython:/picocalc \
  -v $(pwd)/MicroPython/firmware:/out \
  picocalc-v127 \
  bash -c "make BOARD=RPI_PICO2_W USER_C_MODULES=/picocalc/micropython.cmake -j\$(nproc) && \
           cp build-RPI_PICO2_W/firmware.uf2 /out/picocalc_v127_pico2w.uf2"
オプション C:v1.28.0 ビルド(ネイティブ USB -- Pico 2W に推奨)

MicroPython v1.28.0 では、RP2350 の USB-CDC 回帰問題が上流で修正されているため、USB パッチは不要で、USB はネイティブに認識されます。このビルドには BLE ペアリング API も含まれています。パッチ適用済みの v1.27 ビルドが USB ホストで認識されない場合に推奨します(issue #11 を参照)。

# 1. Build the Docker image (one-time, ~5 min)
docker build -t picocalc-v128 -f MicroPython/firmware/Dockerfile.v128 MicroPython/firmware/

# 2. Compile firmware (~3 min)
docker run --rm \
  -v $(pwd)/MicroPython:/picocalc \
  -v $(pwd)/MicroPython/firmware:/out \
  picocalc-v128 \
  bash -c "make BOARD=RPI_PICO2_W USER_C_MODULES=/picocalc/micropython.cmake -j\$(nproc) && \
           cp build-RPI_PICO2_W/firmware.uf2 /out/picocalc_v128_pico2w.uf2"
ファームウェアファイル
ファイルMicroPython備考
picocalc_micropython_pico2w.uf2v1.25.0-preview安定したデフォルト版。すべてのアプリが動作
picocalc_v127_pico2w.uf2v1.27.0(パッチ適用済み)BLE ペアリング API、手動 USB ラップ(ホストによっては不安定)
picocalc_v128_pico2w.uf2v1.28.0ネイティブ USB(パッチ不要)、BLE ペアリング API -- 推奨
Dockerfilev1.25.0-preview標準ビルド
Dockerfile.v127v1.27.0 + パッチUSB 修正 + BLE セキュリティ有効
Dockerfile.v128v1.28.0 + BLE パッチネイティブ USB、BLE セキュリティ有効
USB_REGRESSION_FIX.md--バグ分析とパッチの詳細

ハードウェア

コンポーネント詳細
ディスプレイ320x320 ILI9488 LCD、SPI1、4 ビットグレースケール
キーボードメンブレンキーパッド、I2C MCU(0x1F)
SD カードSPI0、FAT32、/sd にマウント
オーディオPWM ステレオ、GPIO 27(右)+ GPIO 28(左)
WiFi/BLEPico 2W 経由の CYW43
MCURP2350(Raspberry Pi Pico 2W)

トラブルシューティング

新しいファームウェアを書き込んだ後に「no module named 'picocalc'」と表示される場合:

  • C のソースディレクトリ(picocalcdisplay/、vtterminal/)がデバイスのファイルシステム上にあり、ファームウェアにコンパイルされた C モジュールを上書きしている可能性があります。デバイスから削除してください。これらはリポジトリにのみ存在するもので、Pico 上には不要です。
  • デバイス上に picocalc.py を含む /modules/ ディレクトリがあることを確認してください。

起動時に自動実行されない場合:

  • boot.py が Pico のファイルシステムのルート(/boot.py)にあることを確認してください。
  • /modules/ にすべての .py ファイルが含まれていることを確認してください。

SD カードをマウントできない場合:

  • FAT32 でフォーマットしてください。カードがしっかり装着されていることを確認してください。
  • 起動シーケンスには、低温時の起動に備えた安定化の待機時間が含まれています。

ディスプレイは何も表示しないが、REPL は応答する場合:

  • ディスプレイは Core 1 で動作します。ファームウェアが古い場合は、最新の UF2 に更新してください。

USB REPL に接続できない(シリアルポートが表示されない)場合:

  • ファームウェアは BOARD=RPI_PICO2_W を指定してビルドする必要があります。デフォルトの RPI_PICO はチップが異なります。
  • MicroPython v1.26.0 と v1.27.0 には、RP2350 で USB-CDC の回帰があります(#18990)。ビルド済みの v1.27.0 には手動の --wrap=dcd_event_handler パッチが適用されていますが、一部の USB ホストコントローラーではこの回避策が不安定です(issue #11 を参照)。v1.28.0 ではこの回帰がネイティブに修正されています。v1.27 で列挙に失敗する場合は、picocalc_v128_pico2w.uf2 を使用してください。v1.25.0-preview ファームウェアにも回帰はありません。
  • ls /dev/tty.usbmodem*(macOS)または ls /dev/ttyACM*(Linux)で確認してください。

接続時に Thonny に KeyboardInterrupt のトレースバックが表示される場合:

  • これは正常です。Thonny は main.py のメニューループを中断するために Ctrl+C を送信します。トレースバックの後に >>> が表示されます。これは Thonny が正常に接続されたことを意味します。

Thonny に「Unexpected read during raw paste」と表示される場合:

  • boot_thonny.py をデバイス上の /boot.py として配置してください(つまり、boot_thonny.py の名前を boot.py に変更します)。これにより、Thonny の raw paste プロトコルと競合する os.dupterm() がスキップされます。PicoCalc の画面とキーボードはアプリやメニューで引き続き使用できます。REPL の出力先だけがデバイスの画面ではなく、Thonny のシェルパネルになります。
  • 標準の起動に戻すには、boot.py をデバイス上の /boot.py として配置してください。
  • ダッシュボードと mpremote は標準の boot.py で動作するため、Thonny 用のバリアントは不要です。

v3.1 の新機能

  • PicoCalc の Strudel — Strudel/TidalCycles のパターン音楽の機能を絞ったサブセットをハンドヘルドに移植しました(フルエンジンではありません。対応範囲の詳細はStrudel のサポートをご覧ください)。
    • picosampler ネイティブ C オーディオエンジン — DMA のタイミングに合わせて動作する PWM サンプラーです。SD カードからストリーミングされた 8 ビット PCM の音声を最大 8 ボイスまで、両方のオーディオチャンネルでミックスするため、デバイスでパルス波のビープ音ではなく、実際にサンプリングされたドラム音を再生できます。v1.28 ファームウェアに 3 つ目の C モジュールとしてコンパイルされています。
    • ボイスごとの DSP — 共振する 2 段フィルター(ローパス/ハイパス)と ADSR エンベロープを備えています。すべて固定小数点演算なので、オーディオ割り込みで FPU に触れることはありません。ミニ記譜法から、レイヤーごとのエフェクト末尾を指定して操作できます:bd*4 , hh*8 | lpf 600 res 150 r 40(Strudel のエフェクトをご覧ください)。
    • ミニ記譜法シーケンサー(strudel.py)— Strudel のサブセット(bd sd hh*2、[bd sd]、<bd cp>、ユークリッドリズム bd(3,8)、カンマ区切りのレイヤー、// および # コメント)を解析し、リアルタイムでスケジュールします。
    • ライブコーディング UI(strudel_live.py)— デバイス上でパターンを編集でき、次のサイクルから更新後のパターンを再生します(Strudel の Ctrl-Enter のような動作です)。移動する再生ヘッド、イベントタイムライン、そして実際に使える 5 種類のカラーテーマ(SonicPink、Dracula、Monokai、Nord、Terminal)を備えています。
    • Strudel の基本(strudel_demo.py)— ミニ記譜法とエフェクトを、ライブオーディオとリズムタイムラインを使って学べる、インタラクティブな全 11 レッスンのカラー対応チュートリアルです。
  • 4 ビットディスプレイで実現する本物のカラー — GS4 フレームバッファーが 16 色のハードウェア LUT を制御するため、picocalcdisplay.setLUT でパレットを再設定すれば、アプリでグレースケールだけでなく本物のカラーを表示できます。フレームバッファー RAM の追加は不要です。テーマはパレットを切り替えるだけで瞬時に変更できます。
  • カテゴリ別アプリメニュー — py_run.py がアプリをセクションごとに分類し、1 行の説明を表示するようになりました。また、ライブラリ/ヘルパーファイルは自動的に非表示になります(一覧に関係のないモジュールが表示されることはありません)。アプリは # picocalc-app: Name | Category | description ヘッダーで登録します。
  • Remote Claude の削除 — デバイス上で Anthropic API を使ってチャットするアプリ(picocalc_claude.py)は廃止されました。

v3.0 の新機能

  • MCP サーバー -- AI コーディングアシスタント(Claude Code、Claude Desktop、Cursor)が、Model Context Protocol を介して USB 経由で PicoCalc と直接通信できます。コードの実行、ファイルの読み込み・転送、状態の確認ができ、ダッシュボードは不要です
  • SSH サーバー(双方向 SSH) -- 既存の SSH クライアントに加えて、WiFi 経由で PicoCalc に SSH 接続 し、MicroPython REPL を利用できます。ECDSA-nistp256 ホストキー、ECDH 鍵交換、パスワード認証と公開鍵認証に対応しています(ssh -p 2222 user@pico-ip)
  • Remote Claude -- デバイスから直接、WiFi 経由で Claude とチャットできます。Anthropic API からのストリーミング応答、複数ターンのコンテキスト、デフォルトの claude-opus-4-8 に対応し、API キー認証または Max/Pro OAuth 認証を選択できます。認証情報は PIN で暗号化して SD カードに保存されます
  • Synth 4.0 -- 4 種類の楽器(Piano、Organ、Strings、Synth)、QWERTY ピアノキーボード、ADSR エンベロープ、アルペジエーター、16 ステップシーケンサー、LFO、プリセット、ステレオ倍音強化を備えた、全面的な書き直しです
  • ダッシュボードの取り出しボタン -- デバイスの画面に 7 秒のカウントダウンを表示し、安全に USB を取り外せるようメニューに再起動します
  • ダッシュボードの左右比較差分表示 -- 変更されたファイルをクリックすると、デバイス側とローカル側の変更を色分けした分割ビューで確認できます
  • ダッシュボードでの新規スクリプト作成 -- 「+」ボタンでひな形からスクリプトを作成し、エディターで開きます
  • スマートなファイルクリック -- 変更されたファイルは差分を自動表示し、変更のないファイルはエディターで開きます
  • 適応型ポーリング -- 切断時は素早く再接続できるよう 1.5 秒間隔、接続時は 5 秒間隔です
  • ファームウェア v1.28.0(ネイティブ USB) -- Pico 2W に推奨されるビルドです。v1.28.0 では、上流で RP2350 の USB-CDC のリグレッションが修正されているため、パッチは不要です(firmware/Dockerfile.v128)。パッチ適用済みの v1.27.0 ビルドも代替として引き続き利用できます
  • USB のリグレッションを修正 -- v1.26.0/v1.27.0 に影響する MicroPython RP2350 USB-CDC のバグを発見し、根本原因を特定しました(#18990)。v1.28.0 ではネイティブに解決されています
  • SD カードのコールドスタートを強化 -- enhanced_sd.initsd() がバックオフ付きでマウントを再試行し、容量を検証するため、初回起動時に遅いカードが内部フラッシュとして認識されることはなくなります
  • アプリ UI の仕上げ -- 同梱されているすべてのアプリを見直し、SSH のヘッダーバー、画面上での ProxiScan アンテナのキャリブレーション(REPL での手探りのプロンプトが不要に)、エディターでの長い名前の省略表示、synth の SET ページのフッターの重なり、math アプリの中央揃えを修正し、残っていたデバッグ出力を削除しました
  • オーディオ品質 -- 再トリガー時のクリックノイズを抑制し、デューティ比の上限をソフトに設定し、楽器ごとのステレオ倍音と周波数に応じた減衰を追加しました
  • PicoBLE を削除 -- 古い BLE ファイル転送機能を削除しました(ダッシュボードが USB 経由のファイル転送を担当します)

v2.0 の新機能

  • 開発ダッシュボード -- FTP 風の 2 ペインファイルマネージャー、ブラウザー内エディター、REPL、ドラッグ&ドロップでのデプロイ、ファイル差分、macOS の不要ファイルのクリーンアップ機能を備えたローカル Web UI(python3 MicroPython/tools/dashboard.py)
  • ちらつきのないディスプレイ -- beginDraw() が画面クリア中に Core 1 をブロックし、白いフラッシュの発生を防ぎます
  • ファームウェアのビルドパイプライン -- RP2350 での USB の安定性のため、動作確認済みの MicroPython v1.25.0 に固定した Dockerfile を採用しました
  • boot/main の分離 -- 起動直後から USB REPL を利用でき、Thonny や mpremote が問題なく接続できます
  • WiFiManager の書き直し -- 矢印キー操作、色分けされた電波強度バー、チャネル混雑分析、リアルタイムの電波強度モニターを備えた、完全な VT100 ターミナル UI
  • デバイス上のコードエディター -- コンピューターを使わずに PicoCalc 上で直接、スクリプトの参照、作成、編集、削除ができます
  • デモアプリ -- グレースケールパレット、アニメーションするボックス、スクロールするグラデーションを備えた、画面表示のデモ
  • Thonny のサポート -- Thonny ユーザー向けの boot_thonny.py バリアント(dupterm をスキップします)
  • ダッシュボードのコードエディター -- Python の構文ハイライトと PicoCalc 対応のリンティング機能を備えています(ベンダー提供の CodeMirror を使用し、オフラインで動作します)
  • コードベースの整理 -- ProxiScan のバリアントを統合し、レガシースクリプトとアーカイブディレクトリを削除しました

クレジット

zenodante による PicoCalc-micropython-driver をベースにしています(LCD ドライバー、キーボードのロジック、オリジナルの 1.0 UF2 イメージ)。

ライセンス

MIT ライセンス

お問い合わせ

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。