mcpField
P
picocalc-mcp

picocalc-mcp

本地服务
github.com/LofiFren开发工具802 周前更新

关于 picocalc-mcp

PicoCalc MicroPython 是面向 Clockwork Pi PicoCalc 手持设备(基于 Raspberry Pi Pico 2W)的固件与脚本集合。项目提供 MCP 服务,使 AI 助手能够通过 USB 直接在设备上执行代码、上传文件并进行测试。

主要功能

  1. 01MicroPython 固件与开发仪表板
  2. 02通过 USB 部署、对比与推送设备文件
  3. 03在设备上执行 Python 代码
  4. 04MCP 服务支持 AI 助手直接访问设备
  5. 05内置游戏、合成器、SSH 客户端等应用

适用场景

  1. 01让 AI 编码助手编写代码、推送到 PicoCalc 并在设备上测试
  2. 02通过仪表板管理设备文件并查看本地与设备之间的差异
  3. 03在设备上开发和运行 MicroPython 应用

MCP 相关

picocalc-mcp 是 MCP 服务,可通过 pip 安装,并在 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

一套适用于 Clockwork Pi PicoCalc 手持设备的 MicroPython 固件和脚本,搭载 Raspberry Pi Pico 2W。功能包括:

  • 320x320 LCD 显示屏,渲染无闪烁
  • 薄膜键盘,带 VT100 终端
  • 分类应用菜单,可用方向键浏览(自动隐藏库)
  • 游戏(Tetris、Snake)、4 乐器合成器、Strudel 实时编程音乐、WiFi 管理器、本地 LLM 客户端(Ollama)
  • SSH 客户端,支持 ECDH-SHA2-NISTP256、AES-128-CTR 加密和交互式 VT100 终端
  • 开发仪表板,包含文件管理器、编辑器、差异对比、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(每条命令超时为 30s)
  • 弹出设备——安全断开连接,设备上会显示倒计时,然后拔下 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

应用

应用描述
Tetris经典俄罗斯方块,包含 7 种方块、影子方块、音效和关卡进度
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 近距离扫描器、带指南针的狐狸狩猎工具,支持信号追踪、比赛计时器、航点和天线校准
WiFiManager带 VT100 界面的 WiFi 扫描器,支持信号条、信道分析和信号监控
SSH Client安全 Shell 客户端——ECDH-SHA2-NISTP256 密钥交换、AES-128-CTR + HMAC-SHA2-256 加密、RSA 主机密钥验证(TOFU),支持保存连接配置文件、使用 PIN 加密密码,并提供交互式 VT100 终端(53x40)
SSH Server通过 SSH 连接到 PicoCalc,使用 MicroPython REPL——ECDH-SHA2-NISTP256 密钥交换、ECDSA-nistp256 主机密钥、AES-128-CTR + HMAC-SHA2-256,以及密码(加盐哈希)和公钥(authorized_keys)身份验证
Ollama Client通过 WiFi 使用 Ollama 与本地大模型聊天
Demo视觉显示演示:灰度调色板、弹跳方块、滚动渐变和设备信息
Editor设备端文件浏览器和代码编辑器——无需电脑即可浏览、创建、编辑和删除脚本
Strudel 支持

这是对 Strudel 模式理念的小型重新实现,可在 MicroPython + C 中原生运行——并非完整移植。它没有 JavaScript 引擎,也不包含完整的 Strudel/TidalCycles 函数库;这里只实现了一个专注的子集。声音仅支持采样(内置的 bd/sd/hh/cp 套件,以及你放入 /sd/samples/ 的任意 8 位 pcm_u8 .raw 文件——采样名称就是文件名)。

支持的迷你记法

语法含义
bd sd hh序列——将一个周期均匀分割
~休止(静音)
[bd sd]子组——将声音打包到一个步骤中
bd*N重复 N 次(速度更快)
bd/N每 N 个周期播放一次
<bd sd>交替播放——每个周期播放一个
a , b(或每行一层)叠加 / 分层播放
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:共振式两级状态变量滤波器(高通 -> 低通)和 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——WiFi 凭据(由 WiFiManager 创建)

首次使用时自动创建:

  • /sd/ssh_profiles.json——已保存的连接配置(密码经过加密)
  • /sd/ssh_known_hosts.json——受信任的主机密钥指纹

用法:

  • 连接:选择已保存的配置,或创建新的连接(主机、端口、用户、密码)
  • 网络信息:在菜单中按 I,查看此设备自身的 IP、网关、SSID 和 MAC,以及可直接复制的 ssh -p 2222 user@<ip> 命令,以便通过 SSH 登录此设备
  • 编辑配置:在已保存的连接上按 E,更新主机 / 端口 / 凭据
  • 断开连接:按 ESC-ESC 退出终端会话
  • Ctrl+C:可用于中断远程命令。对于 top 等高输出程序,由于键盘是在 SSH 数据包之间轮询的,你可能需要快速按几次 Ctrl+C
  • 主机密钥:首次连接使用首次使用时信任(TOFU)机制——确认一次指纹后,它就会被保存
  • 密码:密码始终使用 4–8 位 PIN 通过 AES-128-CBC 加密后存储。首次保存时,系统会提示你设置 PIN
SSH 服务说明

运行 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 格式公钥(每行一个),用于密钥身份验证

说明:

  • 一次只能建立一个会话;在 RP2350 上,握手需要约 1–2 秒。
  • 需要 WiFi(请先运行 WiFiManager)。在状态屏幕上按 ESC 可停止服务。
  • 支持的客户端公钥:ecdsa-sha2-nistp256 和 ssh-rsa/rsa-sha2-256。目前尚不支持 Ed25519 客户端密钥;请使用 ECDSA/RSA 密钥或密码身份验证。
  • 会话是独立的 REPL(通过 eval/exec 执行,输出会传输到终端);调用 exit() 或按 Ctrl-D 可断开连接。

菜单控制

主菜单按类别(音乐、游戏、网络、工具等)对应用进行分组,并显示单行说明,同时自动隐藏库文件和辅助文件。应用可通过头部注释选择类别:# picocalc-app: Name | Category | description。

按键操作
上/下浏览应用
Enter运行选定的脚本
ESC退出到 REPL
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 构建

更新版 MicroPython,已启用 BLE 配对 API。包含针对 RP2350 USB 回归问题的两行补丁(见 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 主机上枚举,建议使用此版本(见问题 #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/BLE通过 Pico 2W 使用 CYW43
MCURP2350(Raspberry Pi Pico 2W)

故障排除

刷入新固件后出现 “no module named 'picocalc'”:

  • C 源码目录(picocalcdisplay/、vtterminal/)可能位于设备文件系统中,遮蔽了编译进固件的 C 模块。请从设备中删除这些目录——它们应该只存在于仓库中,不应存在于 Pico 上。
  • 确保设备上有包含 picocalc.py 的 /modules/ 目录。

启动时未自动运行:

  • 确认 Pico 文件系统根目录下有 boot.py(/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 会发送 Ctrl+C,中断 main.py 的菜单循环。你会看到回溯,随后出现 >>>。这表示 Thonny 已成功连接。

Thonny 显示 “Unexpected read during raw paste”:

  • 将 boot_thonny.py 部署为设备上的 /boot.py(即将 boot_thonny.py 重命名为 boot.py)。这会跳过与 Thonny 原始粘贴协议冲突的 os.dupterm()。PicoCalc 屏幕和键盘仍可用于应用和菜单——只有 REPL 输出会转到 Thonny 的 Shell 面板,而不是设备屏幕。
  • 要切回标准启动方式:将 boot.py 部署为 /boot.py。
  • dashboard 和 mpremote 可与标准的 boot.py 配合使用,无需 Thonny 变体。

v3.1 新增内容

  • PicoCalc 上的 Strudel ——移植到这款掌上设备上的 Strudel/TidalCycles 模式音乐精简子集(并非完整引擎——具体支持内容请参阅 Strudel 支持):
    • picosampler 原生 C 音频引擎——由 DMA 驱动的 PWM 采样器,可从 SD 卡流式传输 8 位 PCM,并在两个音频通道上混合最多 8 个声部,让设备播放真实采样鼓声,而不是脉冲波蜂鸣声。它作为第三个 C 模块编译到 v1.28 固件中。
    • 逐声部 DSP——谐振式两级滤波器(低通/高通)和 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 现在按类别对应用分组,并提供单行说明,同时自动隐藏库/辅助文件(列表中不再出现无关模块)。应用可通过 # 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) -- 可通过 WiFi SSH 连接到 PicoCalc,使用 MicroPython REPL;同时保留现有 SSH 客户端。使用 ECDSA-nistp256 主机密钥、ECDH 密钥交换,以及密码和公钥身份验证(ssh -p 2222 user@pico-ip)
  • 远程 Claude -- 可直接在设备上通过 WiFi 与 Claude 聊天:从 Anthropic API 流式接收回复、支持多轮上下文、默认使用 claude-opus-4-8,并可选择 API 密钥或 Max/Pro OAuth 身份验证,凭据会在 SD 卡上通过 PIN 加密
  • 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 提示)、编辑器长文件名截断、合成器 SET 页面页脚重叠和数学应用居中问题,并移除了残留的调试输出
  • 音频质量 -- 防止重新触发时产生咔嗒声、柔和的占空比上限、各乐器独立的立体声泛音、随频率变化的衰减
  • 移除 PicoBLE -- 移除了旧版 BLE 文件传输功能(仪表板通过 USB 处理文件传输)

v2.0 新增内容

  • 开发仪表板 -- 本地 Web UI(python3 MicroPython/tools/dashboard.py),包含 FTP 风格的双窗格文件管理器、浏览器内编辑器、REPL、拖放部署、文件差异对比和 macOS 垃圾文件清理
  • 无闪烁显示 -- beginDraw() 在清屏时阻塞 Core 1,以防止出现白屏伪影
  • 固件构建流水线 -- Dockerfile 固定使用经过验证的 MicroPython v1.25.0,以确保 RP2350 上的 USB 稳定性
  • 启动/主程序分离 -- 启动后立即提供 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 许可证

联系方式

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。