Resistance Temperature Detector (RTD) circuit

For Arduino, Raspberry Pi, embedded

The RTD module is currently is out of stock🙁.



RTD module / circuit with pt100

Buy module and 3-wire Pt100 for $40

RTD module / circuit

Buy module only for $25

Example uses: laboratory, hydroponics, aquarium, brewing

Easily meaure temperature with lab-quality accuracy.

Supports 2, 3, and 4 wire Pt100 and Pt1000 RTD temperature sensors. Use on-board jumpers to select sensor type and wiring - no soldering required. The SPI interface can communicate with almost any microcontroller.

Available with or without included Pt100 3-wire RTD. Connects directly to your device (eg Arduino, Raspberry Pi, or embedded) - no other parts required. Libraries and code samples are available for Python, Arduino/C++, and Rust. They provide easy setup, readings, and calibration.

We provide high-level drivers to make it easy to get started

Fully tested on Arduino, Raspberry Pi, and STM32

Why this instead of other RTD modules?

It's easy to find cheap RTD modules on the market that use the same chip. Here's why ours is different:

Output pins are labeled on the board, as follows:

Installing drivers

Arduino: From the Arduino IDE: SketchInclude LibraryManage Libraries → select Anyleaf

C++: Download Anyleaf.cpp and Anyleaf.h from the C++ Github link below, and place them in your project directory

Python: Run sudo apt install python3-scipy, then pip3 install anyleaf. Ensure SPI is enabled.

Example code, and driver source

A minimal Arduino example

#include <Anyleaf.h>

Rtd sensor;

void setup(void) {

    // 3-wire Pt100, with CS connected to pin 10.
    sensor = Rtd(10, RtdType::Pt100, RtdWires::Three);

void loop(void) {
    Serial.print("Temp: "); Serial.println(;

A miminal Raspberry Pi Python example

import time
import board
import busio
import digitalio
from anyleaf import Rtd, RtdType, RtdWires

def main():
    spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
    # 3-wire Pt100, with CS connected to pin 5.
    cs = digitalio.DigitalInOut(board.D5)
    sensor = Rtd(spi, cs, RtdType.PT100, RtdWires.THREE)  # 3-wire pt100

    while True:
        print(f"Temp: {} °C")

if __name__ == "__main__":



Specifications pertaining to the optionally-included Pt100 only:

Compatible with the Mycodo Environmental Monitoring and Regulation System. If you're using a Raspberry Pi, this is a simple way to get it running with a GUI, charts, and logging. Just follow the installation instructions on that page, and add Max31865 as an input.