— 2025—Present · Research assistant — TÜBİTAK STAR

Lab Instruments GUI

A Python control interface over SCPI + MQTT for high-precision measurement equipment.

Python Tkinter SCPI MQTT Raspberry Pi Grafana

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.