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

Soft reboot pico

picox reboot /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.3.0.tar.gz (11.5 kB view hashes)

Uploaded Source

Built Distribution

picox-1.3.0-py3-none-any.whl (11.1 kB view hashes)

Uploaded Python 3

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