Python script for the software frontend. Requires installation of Python 3.x or higher, the PyQt5, pyqtgraph and PySerial libraries, plus widget.ui and communicator.py to run. Comment on costs -We note that the system was assembled from parts that we already had to hand in our laboratory, and there is substantial scope for reducing the overall bill of materials through judicious component replacements. The shaded rows in Table denote the five costliest items that together account for 88 % of the bill of materials. At the time of writing, all items except the Teensy 4.0 microcontroller could be replaced by substantially cheaper alternatives without requiring any significant design changes. The £12 OPA827 op-amp used in the DC compensation circuit could be replaced by a variety of lower cost DC servo op-amps such as the Texas Instruments TL072CP, which costs approximately £1. The LED525L green LED could be replaced by a wide range of high brightness generic LEDs with similar optical output power and spectral characteristics, which are widely available for £1 or less. The long-and short-pass filters could be replaced by suitably chosen plastic colour filters at a cost of a few pounds.