Home
PYDAQ is a Python package for data acquisition, signal generation, system identification, digital filtering, and real-time control using Arduino and NI-DAQ devices.
It provides a unified graphical interface, command-line tools, and Jupyter notebook examples for laboratory experiments, rapid prototyping, teaching, and research workflows.
Capabilities
PYDAQ supports the following experimental workflows:
| Capability | Description |
|---|---|
| Data acquisition | Acquire, plot, and save experimental data from Arduino or NI-DAQ boards |
| Signal generation | Send user-defined input signals, including nonlinear excitation signals |
| Step-response experiments | Run automatic step-response tests and save the resulting data |
| PRBS-based experiments | Generate excitation signals for system identification workflows |
| System identification | Estimate linear and nonlinear black-box models from experimental data using SysIdentPy |
| Digital filtering | Apply FIR and IIR filters directly to acquired data in real time |
| PID control | Run real-time or simulated P, PI, PD, and PID control with Ziegler-Nichols tuning |
| LQR control | Simulate or implement Linear Quadratic Regulator control for state-space systems |
| Multi-channel workflows | Work with multiple Arduino or NI-DAQ channels |
| Benchmarking | Estimate the maximum reliable sampling frequency supported by the local system |
Installation
Install PYDAQ with pip:
Hardware notes:
- Arduino workflows do not require NI-DAQmx drivers.
- NI-DAQ workflows require the NI-DAQmx drivers.
PYDAQ is tested up to Python 3.14. It may run on newer versions, but without guarantees.
Graphical user interface
All main workflows are available from a single graphical interface.
Launch the GUI with:
Documentation map
Data acquisition
Acquire, plot, and save experimental data using:
Signal generation
Generate and send user-defined excitation signals using:
Step-response experiments
Run automatic step-response experiments using:
System identification
Estimate mathematical models from experimental data using:
PID control
Run real-time or simulated PID control experiments using:
LQR control
Simulate or implement Linear Quadratic Regulator control for state-space systems using:
Digital filtering
Design and apply FIR and IIR digital filters in real time using:
Benchmarking
Estimate the maximum reliable sampling frequency supported by the local system:
Arduino firmware
PYDAQ uses a unified Arduino firmware based on a standardized CSV serial protocol for multi-channel acquisition, signal generation, system identification, filtering, and control workflows.
Error dictionary
The error dictionary helps diagnose common GUI messages, terminal outputs, communication issues, and configuration problems.
Jupyter notebook examples
Notebook examples are available for both Arduino and NI-DAQ workflows:
Screenshots
Citation
This is the seminal publication of the PYDAQ project and should be cited in any work that uses PYDAQ.
- Martins, S. A. M. (2023). PYDAQ: Data Acquisition and Experimental Analysis with Python. Journal of Open Source Software, 8(92), 5662. https://doi.org/10.21105/joss.05662
@article{Martins_PYDAQ_Data_Acquisition_2023,
author = {Martins, Samir Angelo Milani},
doi = {10.21105/joss.05662},
journal = {Journal of Open Source Software},
month = dec,
number = {92},
pages = {5662},
title = {{PYDAQ: Data Acquisition and Experimental Analysis with Python}},
url = {https://joss.theoj.org/papers/10.21105/joss.05662},
volume = {8},
year = {2023}
}
Additional related publications are available in the papers directory.