MicroPython implementation of the ZACwire protocol used in the TSic 506F temperature sensor. One useful property of these sensors is that their nominal accuracy is excellent (±0.1 °C), which is necessary for some scientific applications (e.g., ensuring precise and accurate control of a chemical reaction's temperature).
The pyboard implementation is based on IRQs and a Timer, and seems to work reliably.
The esp32 implementation is also based on IRQs and a Timer. It stores a buffer of the 15 past readings and reports a temperature corresponding to the median of these readings. To change the buffer length, simply edit MEM_LEN
and MEM_HALF_LEN in
zacwire.py`.
The RP2040 implementation uses two PIO state machines and also seems quite reliable. Thanks to Robert Hammelrath for his RP2040 Examples.