Stubs for # 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).
MicroPython builtins
These stubs cover ALPACA itself. For machine, rp2 and the rest of
the MicroPython standard library, install those stubs alongside:
conda install pip
pip install micropython-rp2-stubs
They are not published on any conda channel, so they are not declared as a dependency here. Without them only the MicroPython builtins stay unresolved in your editor; the ALPACA stubs themselves work either way.
Metadata
Release files for alpaca2-stubs 1.0.2
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_stubs-1.0.2.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alpaca2_stubs-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.6 kB
Release files / alpaca2_stubs-1.0.2.tar.gz
| Download URL | alpaca2_stubs-1.0.2.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11f9f95c2d13f02a527fcb53ee31187a7120e73eee45f907d16291dcdf7f6b25
|
|
BLAKE2b-256 checksum How to use checksums |
e317e612885b59c73bb358f69350f63dc084cdee84f8fb68593eb10773ace657
|
| 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_stubs-1.0.2-py3-none-any.whl
| Download URL | alpaca2_stubs-1.0.2-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f360de45f968148b22f78017784be18f4a258ac60190c383810b235270e490f
|
|
BLAKE2b-256 checksum How to use checksums |
5d14845705713b8858784b3e08943e079014d97a5418b07698f0774d2b9062aa
|
| 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}
|