Open Lab Automation is an open-source suite for automated electrical measurements, designed for hobbyists, makers, and lab enthusiasts. The frontend is a modern Python (PyQt5) graphical interface for instrument configuration and control, while the C backend ensures fast, direct communication with instruments via USB, LAN, GPIB, or serial.
Note: This software is under active development. Features and stability may change, and some parts may be incomplete or experimental.
-
Instrument Management
- Add, configure, and manage instruments using a flexible JSON library (
Instruments_LIB/instruments_lib.json
). - Three-level selection: type → series → model, with dynamic options.
- Support for power supplies, dataloggers, oscilloscopes, and electronic loads.
- Detailed configuration of channels/slots, variables, attenuation, measurement type, per-channel enable/disable.
- Guided VISA address composition for each interface (LXI, GPIB, USB, RS232, ...).
- Edit already-inserted instruments and manage channel selection.
- Fully translatable interface (Italian, English, French, Spanish, German).
- Add, configure, and manage instruments using a flexible JSON library (
-
Project Management
- Create and manage measurement projects with associated configuration files (.json, .inst, .eff, .was).
- Advanced naming options for files and instances.
- Dedicated editors for instruments, efficiency, and oscilloscope settings.
- Advanced Efficiency Sweeps: Multi-variable nested sweep system with configurable order, list/range modes, and timing parameters.
- Automatic Measurement: All project variables (control and measure) are automatically measured during sweeps.
-
Backend Communication
- C backend for efficient, direct communication with instruments.
- Designed to be easily extendable to new instruments and protocols.
- Frontend: Python (PyQt6) — Modern graphical interface with comprehensive instrument management and advanced sweep configuration
- Backend: C — Fast, low-level communication layer for instrument control
- Instrument Library: JSON (
Instruments_LIB/instruments_lib.json
) — Extensible database of supported instruments - Configuration Files:
.inst
— Instrument configuration and channel setup.eff
— Efficiency measurement sweeps with nested variable support.was
— Oscilloscope waveform acquisition settings.json
— Project metadata and variable definitions
- Python 3.7+
- PyQt6
- GCC (for backend compilation)
- Additional Python packages listed in
requirements.txt
frontend/launcher.py
— Application launcher with environment setupfrontend/main.py
— Main Python GUI application (PyQt6), instrument/project management dialogsbackend/backend.c
— C backend for low-level instrument communication
Instruments_LIB/instruments_lib.json
— Instrument library (JSON structure for all supported instruments)frontend/ui/
— Dialog boxes and UI components for instrument and project configurationEffFileDialog.py
— Advanced multi-variable nested sweep editorInstFileDialog.py
— Instrument configuration editorWasFileDialog.py
— Oscilloscope waveform settings editorAddInstrumentDialog.py
— Three-level instrument selection (type → series → model)- Various instrument-specific configuration dialogs
frontend/lang/it.json
,en.json
,fr.json
,es.json
,de.json
— Translations for the GUIfrontend/core/Translator.py
— Translation management system
frontend/core/
— Core modules for database, error handling, validation, and utilitiesProjectDatabaseManager.py
— Project and measurement data managementerrorhandler.py
— Centralized error handling with standardized error codesvalidator.py
— Input validation functionstools.py
— Reusable utility functions
README.md
— This documentation fileLICENSE
— License informationOpen-Lab-Automation.code-workspace
— VS Code workspace settingsInstruments_LIB/docs/
— Instrument manuals and documentation
This software is provided for hobbyist and non-professional use only.
The authors and contributors of Open Lab Automation accept no responsibility for damage to persons, property, or equipment resulting from the use of this software. Use at your own risk. The software is provided "as is", without any express or implied warranty. It is not intended for professional, industrial, or safety-critical use.
See the LICENSE file for details.