ESP32 is still the default freeze-kit board, but it is not the only Wi‑Fi microcontroller that can
POST to ThermalTrace. A Raspberry Pi Pico W or Pico 2 W speaks HTTPS
on-chip, uses the same DS18B20 wiring idea as the ESP sketches, and flashes without Arduino IDE if you
prefer CircuitPython’s CIRCUITPY drive.
This is a temperature probe. The claim puck is a different RP2040 (Waveshare RP2040-Zero) that proves presence over USB. Do not mix those firmwares.
Parts
| Part | Why | Buy |
|---|---|---|
| Pico W or Pico 2 W | On-board CYW43439 Wi‑Fi and TLS. Pico 2 W (RP2350) is the drop-in upgrade. | Adafruit Pico W · Pico 2 W · Amazon |
| Feather RP2040 Wi‑Fi (optional) | Same CircuitPython APIs, STEMMA / LiPo connector if you already live in Adafruit Feathers. | Feather RP2040 with CYW43439 |
| Waterproof DS18B20 | Pipe / crawlspace probe; works below freezing. Data on GP4. | Adafruit DS18B20 · Amazon |
| 4.7kΩ resistor | Pull-up from DS18B20 data to 3.3V. Do not power the probe from 5V on a Pico. | Amazon 4.7k |
Wiring
- DS18B20 VDD → Pico 3.3V (not VBUS / 5V)
- DS18B20 GND → GND
- DS18B20 data → GP4, with 4.7k between data and 3.3V
GP4 is GPIO 4, the same numeric pin the ESP32 sketches use. After the first POST, ThermalTrace imports
temp1 automatically.
1. CircuitPython (recommended)
- Open Dashboard → Devices, create a push device, and download CircuitPython code.py (ingest URL filled in).
-
Hold BOOTSEL, plug in USB, copy the CircuitPython UF2 for Pico W or Pico 2 W onto the
RPI-RP2 drive. The board remounts as
CIRCUITPY. -
Install libraries:
circup install adafruit_requests adafruit_connection_manager adafruit_ds18x20 adafruit_onewire - Set
WIFI_SSID/WIFI_PASS, save ascode.py. - Serial should show
wifi okthenPOST 200.
Repo sample:
sketches/circuitpython/ds18b20_ingest.py.
2. MicroPython
Flash a Pico W MicroPython UF2, then copy the Devices MicroPython .py as
main.py (Thonny / mpremote). The same file also runs on ESP32. Pin 4 is GP4.
3. Arduino IDE (Earle Philhower core)
Install the Raspberry Pi Pico/RP2040 package by Earle Philhower, not Arduino’s mbed
RP2040 core. Select Pico W or Pico 2 W, open the downloaded
.ino, set Wi‑Fi, flash. Libraries: OneWire, DallasTemperature.
What we are not adding (yet)
Anything that can POST HTTPS JSON already works without a first-class sketch: a Linux Raspberry Pi with
requests, ESPHome, or a LAN MQTT→HTTP bridge. These families need extra hardware or a
gateway, so they stay out of the Devices flash panel:
- Pico without W / RP2040-Zero: no Wi‑Fi. Use Ethernet/ESP-01 plus a TLS relay, or keep the Zero as a claim puck.
- nRF52 / nRF52840 (XIAO BLE, Feather nRF52840): Bluetooth or Thread, not native Wi‑Fi HTTPS.
- STM32 Nucleo-F767ZI is first-class now: Zephyr C + onboard Ethernet (LAN TLS relay, not Arduino, not Python).
- CH32V307V-EVT is first-class now: WCHNET C + onboard Ethernet (QingKe RISC-V, LAN TLS relay).
- Arduino Nano 33 IoT / UNO R4 WiFi: still Arduino; the ESP/Pico samples already cover TLS Wi‑Fi if you adapt the WiFi library.
Related
- Adding devices
- STM32 Zephyr ingest
- CH32V RISC-V ingest
- ESP32 freeze kit parts list
- ESP32 flashing options
- Claim puck (RP2040-Zero, not a probe)
- All sketches ↗
Amazon buy links may include an Associates tag. Adafruit and other vendor links are direct (Adafruit does not run an affiliate program). ThermalTrace may earn a commission from qualifying Amazon purchases at no extra cost to you.
FAQ
Can a Raspberry Pi Pico W post to ThermalTrace?
Yes. Pico W and Pico 2 W speak HTTPS on-chip. Download CircuitPython code.py (or the MicroPython / Arduino sketch) from Dashboard → Devices, put a DS18B20 on GP4 with a 4.7k pull-up to 3.3V, and watch Serial for POST 200. Guide: thermaltrace.dev/about/pico-w-ingest.
Is a Pico W the same as the claim puck?
No. The claim puck is a Waveshare RP2040-Zero over USB for bay presence and mood LEDs. Pico W is a Wi‑Fi temperature probe. Do not flash claim-puck firmware onto a freeze probe or the reverse.
Should I buy Pico W or ESP32?
ESP32 remains the default freeze kit (cheaper DevKits, ESPHome, OTA samples). Choose Pico W if you already have one, prefer CircuitPython drag-and-drop, or want RP2040/RP2350. Both POST the same ingest JSON.