— 2025—Present · Research assistant — TÜBİTAK STAR
Lab Instruments GUI
A Python control interface over SCPI + MQTT for high-precision measurement equipment.
Problem
The ITU Power Electronics Lab has over $15K of Prodigit and Keithley measurement equipment, but each device ships with its own vendor software, its own USB/GPIB protocol, and its own command set.
Goal: drive every device from the same interface, log into a single data stream, and make measurements visible remotely.
Approach
SCPI unification. For each device type I wrote a Python driver extending a common base class. Above the base class, the GUI and logger get a single high-level API like device.measure().
Tkinter desktop UI. Tkinter because Python is already installed on lab machines, with no extra dependencies needed.
Raspberry Pi + MQTT telemetry. The Pi publishes readings to an MQTT broker. A Grafana + InfluxDB stack captures the full time series for analysis.
Lessons
- A properly shaped abstraction layer pays for itself immediately — adding a new instrument reduced to a couple hundred lines.
- SCPI documentation is messy: vendors’ 400-page PDFs are rarely clear, and you often work from hex packets and hand-written notes.
- MQTT is lightweight in theory: QoS levels, retained messages, and duplicate client IDs still ate a lot of my time.