关于 picocalc-mcp
PicoCalc MicroPython 是面向 Clockwork Pi PicoCalc 手持设备(基于 Raspberry Pi Pico 2W)的固件与脚本集合。项目提供 MCP 服务,使 AI 助手能够通过 USB 直接在设备上执行代码、上传文件并进行测试。
主要功能
- 01MicroPython 固件与开发仪表板
- 02通过 USB 部署、对比与推送设备文件
- 03在设备上执行 Python 代码
- 04MCP 服务支持 AI 助手直接访问设备
- 05内置游戏、合成器、SSH 客户端等应用
适用场景
- 01让 AI 编码助手编写代码、推送到 PicoCalc 并在设备上测试
- 02通过仪表板管理设备文件并查看本地与设备之间的差异
- 03在设备上开发和运行 MicroPython 应用
MCP 相关
picocalc-mcp 是 MCP 服务,可通过 pip 安装,并在 Claude Code、Claude Desktop、Cursor 等 MCP 兼容客户端中配置为 picocalc 服务,为 AI 助手提供访问设备的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
PicoCalc MicroPython
一套适用于 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 卡上的脚本
快速开始
- YouTube PicoCalc 2.0 演示:https://youtu.be/gf3ittEwFJ8
1. 刷写固件
- 关闭电源,并拔下 PicoCalc 的 USB 线。
- 按住 Pico 2W 上的 BOOTSEL,然后连接 USB。
- 屏幕上会出现一个名为 RP2350 的驱动器。
- 将
MicroPython/firmware/picocalc_micropython_pico2w.uf2复制到该驱动器。 - 设备会自动重启。
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 卡
- 将 SD 卡格式化为 FAT32(建议使用 4GB-32GB 的卡)。
- 在 SD 卡上创建一个
py_scripts文件夹。 - 将
MicroPython/sd/py_scripts/中的所有.py文件复制到该文件夹。 - 将 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 | 贪吃蛇,支持最高分记录、速度等级和音效 |
| Synth | 4 种乐器合成器(钢琴、风琴、弦乐、合成器),带有 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 前轻松入门 |
| ProxiScan | BLE 近距离扫描器、带指南针的狐狸狩猎工具,支持信号追踪、比赛计时器、航点和天线校准 |
| 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.uf2 | v1.25.0-preview | 稳定默认版本,所有应用均可运行 |
picocalc_v127_pico2w.uf2 | v1.27.0(修补版) | BLE 配对 API,手动 USB 封装(在部分主机上不稳定) |
picocalc_v128_pico2w.uf2 | v1.28.0 | 原生 USB(无补丁),BLE 配对 API —— 推荐 |
Dockerfile | v1.25.0-preview | 标准构建 |
Dockerfile.v127 | v1.27.0 + 补丁 | USB 修复 + 启用 BLE 安全功能 |
Dockerfile.v128 | v1.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 |
| MCU | RP2350(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 镜像)。
许可证
联系方式
- 问题反馈:GitHub Issues
- IG:@lofifren
- YT:@lofifren
- YouTube PicoCalc 2.0 演示:https://youtu.be/gf3ittEwFJ8
- YouTube MCP 与仪表板:https://youtu.be/iEJeBd9a6NE
- 播放列表:PicoCalc 播放列表
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。