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
- Create virtual env
python -m venv _env
- Activate env
# Win
_env/Scripts/activate.ps1
# nix
source _env/bin/activate
- Install requirements
pip install -r requirement.txt
- 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)
Built Distribution
picox-1.2.0-py3-none-any.whl
(11.1 kB
view details)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1990c26b95495453efb804a61e9c9a0c603699c1816864d7e8754419457b2310 |
|
MD5 | 618bd51c2ea2c24189f60132594ddcb8 |
|
BLAKE2b-256 | 44f9bb57fd69c0cff694595a92da431de3738c0c72d852f70e963cf07498856d |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51a0a43f4bb8f75be15cf594684f2b9acdd0449e808022e955febfdb0ceba4d8 |
|
MD5 | e6941d612f93a15482d2d6056e1c970b |
|
BLAKE2b-256 | 67ba941c8aa11b78cdd05de038cc121472887e5dcd928bcd4ffafec2a1cd6314 |