Pico Computer 3 v0.11 (test)
Firmware and manual for the Pico Computer 3 (RP2350B).
New in v0.11
pcmath.PIDnow matches MMBasicMATH PIDexactly — the built-in PID controller (import pcmath) has been rewritten to be numerically identical to PicoMite'sMATH PID: a trapezoidal (Tustin) integral with a dedicated anti-windup clamp, the derivative taken on the measurement (so a setpoint change causes no derivative kick) and band-limited by a first-order low-pass filter (thetauterm), all at a fixed sample timeTseconds (minimum 1 ms, as on the PicoMite).pid.update(setpoint, measured)returns the drive;pid.start(callback)/pid.stop()run the loop in the background off a hardware timer — the equivalent ofMATH PID START/STOP. Verified in the PC emulator (closed-loop step response, the derivative-filter step-kick against its closed form, and the background timer) and by the maths test-suite. See User Manual §17.- Robust on-device SQLite — the SQLite engine (
import usqlite) now runs in its own board-sized, dedicated heap, fixing a database-corruption case that could occur when the garbage collector ran while a connection was open. Two further garbage-collector-safety fixes harden it against related edge cases: bound text/blob parameters are now copied into SQLite immediately instead of referencing Python's own memory, and each open database file is pinned so it can never be reclaimed while a connection is using it. Memory use under load is also much tighter: each query's prepared statement is now freed as its cursor is consumed, so a program running thousands of queries no longer creeps toward "out of memory"; and largeORDER BY/GROUP BY/JOINoperations spill their temporary sort data to disk early instead of filling the pool — a big report that previously thrashed the board to a standstill now completes comfortably (a 20,000-row grouped report went from hanging to ~19 s at ~0.5 MB). And sorts,GROUP BYs and index builds too large to hold in memory at all now spill to a temporary file on disk and finish — where an over-large sort could previously crash the machine; a 5 MB sort that used to reset the board now completes at ~1.2 MB (spill files are created and cleaned up automatically, and default to the SD card when one is mounted — sparing the flash from a big spill's write churn — falling back to flash otherwise;PRAGMA temp_store_directoryoverrides either way).usqlite.mem_current()/mem_peak()now report real figures for watching the engine's heap. All verified on hardware across the internal flash and SD card; the API is unchanged and existing databases are unaffected. - Northwind demo + book Chapter 28 — a complete SQLite + GUI showcase application (the classic Northwind sample database, browsed on screen with
pcgui) is included as a worked example, and a new Chapter 28, "Databases" in the course book builds it up from first principles. - Course book — the new databases chapter and a new Appendix J, diagrams added across many chapters, and a proofreading pass (cross-references, typesetting, phrasing).
- PC emulator — the refreshed
pc3emu-linux-x64.tar.gzcarries all of the above (the newMATH PID, the SQLite robustness fix,import usqlite), and its display window is now resizable and scales to fit while keeping its aspect ratio. Runs on Linux, and on Windows via WSL2 — seeINSTALL-WINDOWS.mdinside the tarball. Needs glibc 2.43 / Ubuntu 26.04+ for the prebuilt binary; on older systems build from source (a few minutes, any distro). - Manual and development notes updated throughout.
Flashing
USB HUB switch to DISABLE → connect the Prog port to a PC → hold BOOT, click RESET → drag firmware.uf2 onto the drive that appears → switch back to ENABLE. Your files and settings survive.