2-channel USB thermocouple sensor using STM32

2-channel USB thermocouple sensor using STM32


A thermocouple is one of the most utilized sensors nowadays when measuring temperature. From the tip of your soldering iron to your gas oven, its value is undeniable, so if you are not integrating one in your projects, then you should! They are cheap and extremely useful. If you are, you probably wanted to test a thermocouple or wanted to take quick temperature measurements with the aid of your computer. Well, now you can!

The maker Richard Klinger developed a convenient and quite simple to use 2-channel thermocouple sensor that works via USB. It is composed of a small 60mm x 80mm PCB that connects to your computer via USB and reads out the temperatures of two type K thermocouple sensors via a MAX31855 ADC. The ADC is then connected to an STM32F070CBT6 microcontroller, powered by the popular ST platform and easily configured and tinkered by the STM32CubeIDE.

When the device is powered from the USB port, it starts sending out the measurements from the sensors as CSV values. It can also receive commands, to set the RTC clock and the interval between measurements (which can be on a relative interval or a specific time). The device runs in USB CDC mode, making it possible to work in any terminal program since the device registers to the host computer as a serial interface. It can also be set into DFU bootloader mode so that a different firmware can be flashed by you. Lastly, in case of errors, caused for instance by a defective sensor, the according to channel won’t output values, which makes sense when only one channel is used. If both are unavailable, then you get an error.

Besides the PCB, the project is accompanied by a PyQt based interface, containing a plot of both sensor measurements over time and allowing you to configure the timings. Unfortunately, if you are uncomfortable with using a command-line interface, you will have to, at least to convert the interface python script into an executable. Apart from the interface, there are also STL models for the front and back panels, but the casing ends there, where the casing around the PCB would be deeply appreciated and give you another reason to make and support this project.

The PyQt interface that accompanies the PCB
The PyQt interface that accompanies the PCB project

You may have realized it from all the files involved, but if you didn’t, the project is completely hosted on Github, so you can access the STM32 files, the PyQt interface, the KiCad PCB, and the OpenSCAD files for free, which is insane, considering the completeness of it. Overall, this is quite an interesting project and should be worth your time.

Github of the project: https://github.com/richardklingler/usbthermocouple

Leave a Reply