Skip to main content

Tools for working with a Rasbperry Pi Pico running MicroPython

Project description

picox

picox is a tool that facilitates the interaction with Raspberry Pi Pico running MicroPython boards through the terminal or within a Python script. This uses the USB serial port for communication.

Windows, Linux and macOS are supported.

Features

  • Detect a connected Raspberry Pi Pico device running MicroPython
  • REPL session
  • File operations: Upload, download, execute, and list files on Pi Pico
  • Stop current execution on device

Known issues

  • REPL can timeout on long operations such as sleep. Its in the nature of how it scans for the end
  • Line endings of files coming out can get a little strange. watch out if there are som extra spaces etc. Best bet is to ensure you always work in the same line endings
  • File operations do not include folder operations yet
  • Most commands will halt what is running on the pico. Such as a detect will stop execution in order to get a good communication test. For a more manual detection, you can use picox attach <device> to try and stream stdout from the pico

Installation

Install via pip:

pip install picox

CLI Usage

Detecting Pi Pico:

# get first found device
picox detect

# get a list of all connected pico devices
pico detect --all

# Output: COM7 or /dev/ttyUSB0

REPL session on Pi Pico

picox repl /dev/ttyUSB0

View console output from already running pico

picox attach /dev/ttyUSB0

Listing files on Pi Pico:

picox ls /dev/ttyUSB0

# exmaple output:
# demo.py
# home.py

Uploading a file:

picox upload /dev/ttyUSB0 local.py remote.py --overwrite

# --overrite to force update the file on the Pi Pico

Downloading a file:

picox download /dev/ttyUSB0 remote.py local.py

Executing a file on Pi Pico:

picox exec /dev/ttyUSB0 remote.py

Stopping any ongoing operation on Pi Pico:

picox stop /dev/ttyUSB0

Python Script Usage

You can also use picox within your Python scripts as follows:

from picox import Pico
from picox.detect import get_first_pico_serial


# Init device
serial_device = get_first_pico_serial()
pico = Pico(serial_device)

# File listing
for file in pico.get_file_list():
    print(file)

# Download
with open("./local/demo.py", "w") as download_file:
    pico.download_file("remote_demo.py", download_file)

# Upload
with open("./local/demo.py", "rb") as upload_file:
    pico.upload_file(upload_file, "remote_demo.py", overwrite=True)

# Execute
pico.execute_file("remote_demo.py")

# Halt execution on device
pico.stop_exec()

# Soft reboot device
pico.send_soft_reboot()

Local development

  1. Create virtual env
python -m venv _env
  1. Activate env
# Win
_env/Scripts/activate.ps1
# nix
source _env/bin/activate
  1. Install requirements
pip install -r requirement.txt
  1. Install module editable
pip install -e .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

picox-1.2.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

picox-1.2.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file picox-1.2.0.tar.gz.

File metadata

  • Download URL: picox-1.2.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for picox-1.2.0.tar.gz
Algorithm Hash digest
SHA256 1990c26b95495453efb804a61e9c9a0c603699c1816864d7e8754419457b2310
MD5 618bd51c2ea2c24189f60132594ddcb8
BLAKE2b-256 44f9bb57fd69c0cff694595a92da431de3738c0c72d852f70e963cf07498856d

See more details on using hashes here.

File details

Details for the file picox-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: picox-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for picox-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 51a0a43f4bb8f75be15cf594684f2b9acdd0449e808022e955febfdb0ceba4d8
MD5 e6941d612f93a15482d2d6056e1c970b
BLAKE2b-256 67ba941c8aa11b78cdd05de038cc121472887e5dcd928bcd4ffafec2a1cd6314

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page