/upico

uConsole RP2040 Expansion Card

Primary LanguageRustApache License 2.0Apache-2.0

μPico

What is it?

uPico is a RP2040 powered expansion card designed to enhance the capabilities of Clockwork's uConsole.

⚠️ Only R-01 and CM4 core are supported by control application. Work in progress for A04/A06 core modules.

Second project name is atto, cause 10−6 * 10-12 = 10-18 🤓

Features

  • Internal Speakers Support
  • Type-C (USB 2.0) port with programmable power switch and overcurrent protection
  • 3.3V and 5V external power out with programmable switch and overcurrent protection
  • RP2040 with extenal double-double PMOD compatible connector
  • RP2040 controllable LED

Resources

I sell on Tindie

Control app installation

  1. Download latest build from Releases page
  2. Extract installer: mkdir dist && tar -xzf upico_%version%.%core%.tar.gz -C dist
  3. Install: cd dist && sudo ./install.sh
  4. Cleanup: cd .. && rm -rf dist
  5. Print help: upico help

Building control app from sources

  1. Install rustup by following the instructions at https://rustup.rs
  2. Clone this repo: git clone git@github.com:dotcypress/upico.git && cd upico
  3. Build: cargo build --release
  4. Install app: sudo cp target/release/upico /usr/local/bin/
  5. Install service: sudo cp upico.service /etc/systemd/system/
  6. Enable service: sudo systemctl enable upico
  7. Start service: sudo systemctl start upico
  8. Setup uPico extender USB device: echo 'SUBSYSTEM=="usb",ATTRS{idVendor}=="1209",ATTRS{idProduct}=="bc07",MODE="0660",GROUP="plugdev"' > /etc/udev/rules.d/50-upico-permissions.rules
  9. Reload udev: udevadm control --reload-rules
  10. Print help: upico help

Flash firmware

  1. wget https://rptl.io/pico-blink
  2. upico install pico-blink or upico install -m pico-blink if automount is disabled for hot-plug devices.

See other examples: https://github.com/raspberrypi/pico-examples

High level design diagram

GPIO Header Pinout

╔══════╦══════╗
║ AUX  ║ AUX  ║
╠══════╬══════╣
║ VDD  ║ VDD  ║
║ GND  ║ GND  ║
║ IO3  ║ IO7  ║
║ IO2  ║ IO6  ║
║ IO1  ║ IO5  ║
║ IO0  ║ IO4  ║
╠══════╬══════╣
║ IO27 ║ IO29 ║
║ IO26 ║ IO28 ║
║ IO18 ║ IO19 ║
╠══════╬══════╣
║ VDD  ║ VDD  ║
║ GND  ║ GND  ║
║ IO11 ║ IO15 ║
║ IO10 ║ IO14 ║
║ IO9  ║ IO13 ║
║ IO8  ║ IO12 ║
╚══════╩══════╝

Errata

CM4 core & uPico PCB rev:0x02

  • Overcurrent reporting feature isn't supported.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.