This pacage will help you to drive the ESP32-driven microscopy control modules from UC2
Project description
UC2‑Python Client
Python interface to the UC2 REST micro‑controller firmware — control motors, lasers, LED matrices, galvos and more over USB‑Serial or Wi‑Fi from any Python environment.
Highlights
- Plug‑and‑play connection via USB (
/dev/ttyUSB*,COM*) or TCP (host,port). - Rich device model: every hardware block is a Python object with high‑level helpers (e.g.
motor.move_x,led.setPattern,laser.set_laser). - Asynchronous & blocking modes for precise timing or maximum throughput.
- Callback hooks to react to hardware feedback in real time.
- Runs everywhere: desktop Python, headless Raspberry Pi, or in‑browser with PyScript.
- LGPL‑3.0‑or‑later license – use it in academic and commercial projects.
Installation
pip install uc2rest # latest release
# or for the bleeding‑edge version
pip install git+https://github.com/openUC2/UC2-REST.git#subdirectory=PYTHON
Dependencies (requests, numpy, pyserial) are resolved automatically.
Quick start
import uc2rest
# USB example
esp = uc2rest.UC2Client(serialport="/dev/ttyUSB0") # Linux / Mac OS
# esp = uc2rest.UC2Client(serialport="COM3") # Windows
# Wi‑Fi example
# esp = uc2rest.UC2Client(host="192.168.4.1", port=31950)
# LED matrix: switch all pixels on at half intensity
esp.led.setAll(True, intensity=128)
# Move X axis by 1 mm (1000 steps @ 1 kHz)
esp.motor.move_x(steps=1000, speed=1000, is_blocking=True)
# Turn green laser to full power
esp.laser.set_laser(channel="G", value=255)
Supported modules (automatically attached to UC2Client) citeturn1file12
| Object | Purpose | Example method(s) |
|---|---|---|
motor |
X/Y/Z/θ stages | move_x / move_xy, setup_motor |
led |
8×8 RGB LED matrix | setPattern, send_LEDMatrix_rings |
laser |
3‑channel RGB or IR lasers | set_laser, set_servo |
galvo |
Analogue DAC & 2‑axis scanner | set_dac, set_scanner_pattern |
gripper |
Micro‑gripper (servo) | open, close |
home |
End‑stop homing routines | home_x, home_z |
rotator |
Filter wheel or Dove prism | move, set_speed |
objective |
Piezo objective positioner | move_z, calibrate |
temperature |
NTC digital temperature sensor | get_temperature |
analog |
Arbitrary analogue outputs | set_voltage |
digitalout |
GPIO (TTL) outputs | set_pin, pulse |
wifi |
ESP32 network helpers | scan, connect |
message |
Generic key‑value messaging/trigger | register_callback, trigger_message |
Design philosophy
UC2 REST splits interaction into three JSON endpoints per device:
/*_act → perform an action (e.g. move)
/*_set → configure a device (e.g. speed)
/*_get → query state (e.g. position)
The Python client wraps those endpoints so you rarely deal with raw JSON.
Running in a browser (PyScript)
<py-config>
packages = ["uc2rest"]
</py-config>
<py-script>
from uc2rest import UC2Client
esp = UC2Client(SerialManager=pyserial_manager) # see docs
esp.led.setAll(True)
</py-script>
Documentation & examples
- Jupyter notebook tutorial:
PYTHON/UC2_REST_Tutorial_v0.ipynb - Example scripts:
examples/directory (motor scan, laser modulation, timelapse) - Firmware sources and hardware guides: https://github.com/openUC2
Troubleshooting
| Symptom | Fix |
|---|---|
serial.serialutil.SerialException |
Check port name and permissions (sudo adduser $USER dialout) |
| No JSON response / timeout | Increase timeout argument; verify baud rate matches firmware |
Contributing
- Fork the repo and create a feature branch.
- Follow the
pre‑commitchecks (black,isort,flake8). - Create pull requests against
develop.
Please open issues for bugs or feature requests.
License
MIT — see LICENSE for details.
Made with 💚 by the OpenUC2 community.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uc2_rest-0.2.0.32.tar.gz.
File metadata
- Download URL: uc2_rest-0.2.0.32.tar.gz
- Upload date:
- Size: 50.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f917a7988572788ac1cca53944c0ad6679ac2ed064e7b59139d41273eb033cc6
|
|
| MD5 |
9c7e2ad5c37bb07956e9473bedf596ca
|
|
| BLAKE2b-256 |
20b7386f9992c2fc114da5f49477bc507763d57de9678da707de7098b5c1b6b2
|
File details
Details for the file uc2_rest-0.2.0.32-py3-none-any.whl.
File metadata
- Download URL: uc2_rest-0.2.0.32-py3-none-any.whl
- Upload date:
- Size: 62.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa7f9b78aa8f6e0a4eca94ef6c69cad53ca0e59a3013c2d78762e5d61962f922
|
|
| MD5 |
e22ffc43d299c19ed67f29c33c45eba3
|
|
| BLAKE2b-256 |
c6345ca4de8c1cbd4af27b871ecc16e76bc59a722b2ec83a09aafe5bacf7683e
|