This was part of a multi-year Engineering Capstone project at the University of Idaho; in collaboration with NASA ISGC. The previous two years focused on retrofitting a tensile tester to perform tests at temperatures around 100K—to simulate space-like conditions for tests on aluminum alloys.
We were the third team to work on the project. The first two focused mostly on the hardware, while our main goals were to:
- — get the machine back together/working again (having some clutch issues)
- — integrate new sensors: thermocouple, rotary encoder
- — and develop a user interface to control the machine/view live data
I was one of two CS students on the team, along with one Comp-E student and two MEs. My part of the project involved designing and implementing the user interface.
The previous semester's team had began to build a user interface, but it was not within the main scope of their project and was not fully fleshed out. We've started the UI code from scratch, but were able to reuse some of the code for interfacing with the machine. A big reason for this was so we could use multiprocessing. This way, the data collection, data processing, and user interface can all run in parallel—for instance, if a data processing calculation takes a long time, it won't impact the data collection process.
We used multiprocessing instead of multithreading due to Python's Global Interpreter Lock, which only allows one Python thread to execute at a time.

Stretch Goals
One of the main goals behind the project was to keep it low-cost. We also had a stretch goal of plotting a real-time stress-strain curve. To help achieve the low-cost goal, we wanted to get the program running on a Raspberry Pi 4. This screenshot shows that happening—with the real-time stress/strain curve!