ALPACA 2.0
© Copyright Delft University of Technology, CC BY 4.0.
ALPACA (Advanced Learning Platform for Analog Circuits and Automation) is a device built on RP2 and MicroPython and equipped with several digital tools to be a guide in introduction to digital systems and electronics for NB2420 Electronic Instrumentation course of TU Delft.
ALPACA splits work across two Picos:
-
Student Pico: the board a student writes code on via Belay. It exposes a tiny RPC client so student programs can ask the Helper to do things. Student Pico is equiiped with a double channel DAC.
-
Helper: a self-contained instrument. It drives an LCD and runs a set of measurement screens (voltmeter, component/resistance tester) that the user can cycles through. It also answers commands sent by the Student over a UART link.
A host-side CLI (alpaca) handles flashing your code onto the boards and
opening a serial REPL, so you never have to manage USB ports by hand.
The Student and Helper talk over UART0 with a crossover wiring and a shared ground:
Student GP00 (TX) ──► Helper GP13 (RX)
Student GP01 (RX) ◄── Helper GP12 (TX)
GND ◄──────────────► GND
Repository layout
📁 alpaca folder contains the libraries for Picos.
📁 src/alpaca contains the desktop-side library and the ALPACA CLI for
managing the boards (src/alpaca/cli). It is published on PyPI as alpaca2,
but the import name and the command stay alpaca, so installed users write
from alpaca import list_boards.
alpaca/common is copied alongside alpaca/student or alpaca/helper onto
each board at sync time, which is why on-device imports are flat
(from command import ..., from link import ...).
Therefore if the folders are like this
📁 alpaca/
📁 common/
📄 A.py
📁 student/
📄 B.py
📁 helper/
📄 C.py
using alpaca sync will copy the files to the root as:
🍓 HelperPico
📄 A.py
📄 C.py
🍓 StudentPico
📄 A.py
📄 B.py
Setup
uv sync
This installs the project and exposes the alpaca command. Outside a
checkout, install the published package instead:
pip install alpaca2 # or: uv tool install alpaca2
Usage
Sync your code onto the boards
uv run alpaca sync
This discovers connected Picos, copies the common + student/helper code
onto each, and soft-resets them. To drop into a REPL on one board right after
syncing:
uv run alpaca sync --connect student
Open a serial REPL
uv run alpaca connect student # or: helper
Picking a board
The first time the CLI needs a board it lists the connected Picos in a terminal
menu. Hovering an entry lights that board's onboard LED so you can tell
which is which, and you can choose to remember the selection — it's cached per
role under .alpaca/ so later runs skip the prompt.
Building
The repository workflow should build and publish stubs, and assemble firmware images on creation of a version tag.
git tag v1.0.0
git push origin v1.0.0
The MicroPython version for firmware is set inside the build-firmware.yml (currently 1.28.0).
Metadata
Release files for alpaca2 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| alpaca2-1.0.1.tar.gz | 29.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alpaca2-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.9 kB
Release files / alpaca2-1.0.1.tar.gz
| Download URL | alpaca2-1.0.1.tar.gz |
|---|---|
| Size | 29.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dab908a14ad85f63b0334ce809d380ab5e3904024ebc541314a4f170777a6e2e
|
|
BLAKE2b-256 checksum How to use checksums |
149f8d495ac0b6c1e5b02d09ffec315d1e7fe4661f4a1964eeef461fd656fd05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / alpaca2-1.0.1-py3-none-any.whl
| Download URL | alpaca2-1.0.1-py3-none-any.whl |
|---|---|
| Size | 38.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0b8d8ba2a044639b8510a0a0a03964200143756c8af4855ad1ecc19f0ac39c08
|
|
BLAKE2b-256 checksum How to use checksums |
cbe955e4742f821f7ca9b7d0998ce02f5b493f52c275614bf09787719b764c28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|