CH32V RISC-V ingest

Push DS18B20 readings from a WCH CH32V307V-EVT using WCHNET C and onboard Ethernet. QingKe RISC-V, MounRiver Studio, and the same LAN HTTPS relay as the Uno shield.

Close-up of white Cat-5e Ethernet cables with RJ45 connectors
Probe JSON usually leaves the LAN over Ethernet or a nearby relay, not the public internet directly. Photo: DiscDepotDundee.co.uk. CC BY-SA 4.0

ESP32, Pico W, and STM32 cover Arm and Xtensa. If you want a QingKe RISC-V probe that is neither Arduino nor Python nor Zephyr, a CH32V307V-EVT-R1 running WCHNET C POSTs the same ingest JSON over onboard 10M Ethernet. MounRiver Studio, WCH-Link. No Wi‑Fi module.

WCHNET is IPv4 TCP without a maintained TLS client. This sample uses the same LAN HTTP→HTTPS relay as Uno + W5100 and STM32 Zephyr, so Cloudflare can change CAs without a reflash.

Parts

Parts for a CH32V RISC-V freeze probe
Part Why Buy
CH32V307V-EVT-R1 QingKe RISC-V, onboard 10M PHY + RJ45, WCH-Link. Gigabit MAC is unused here. WCH CH32V307 · Amazon search
Waterproof DS18B20 Pipe / crawlspace probe. Data on PB12. Adafruit DS18B20 · Amazon
4.7kΩ resistor Pull-up from DS18B20 data to 3.3V. Do not power the probe from 5V. Amazon 4.7k
Ethernet drop DHCP on your LAN. A Pi, NAS, or laptop runs the TLS relay. Any Cat5e patch cable to your switch.

Wiring

  • DS18B20 VDD → EVT 3.3V
  • DS18B20 GND → GND
  • DS18B20 data → PB12, 4.7k to 3.3V
  • RJ45 → LAN. WCH-Link USB for flash and 115200 serial.

Build and flash

  1. Open Dashboard → Devices and download CH32V main.c (ingest path filled in), or copy the defines from the ingest callout.
  2. On a LAN host:
    python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
      --upstream https://thermaltrace.dev
  3. Set INGEST_HOST to that machine (dotted IPv4). Drop the downloaded file over User/main.c.
  4. Install MounRiver Studio. Open the official EVT ETH/DHCP project, keep NetLib / eth_driver, replace only User/main.c, build, flash.
  5. Serial 115200: dhcp ok, then POST 200. Sensor key temp1 imports on first POST.

Repo drop-in: sketches/wch/ch32v307_ds18b20_ingest/ (bit-bang 1-Wire on PB12 + WCHNET HTTP client).

Other CH32V boards

Any CH32V307 with the EVT Ethernet PHY can run this C. CH32V203 / CH32V003 do not have the Ethernet MAC. Community Arduino-CH32 cores exist; they are not this sample. A CH32V307 plus W5500 is possible, but then you are back to SPI ioLibrary instead of the onboard MAC.

Why not nRF / TI next?

  • nRF52: Bluetooth or Thread, not native Wi‑Fi HTTPS.
  • nRF7002 DK: Nordic Wi‑Fi 6 works in nRF Connect SDK, but TLS CA pinning on Zephyr is still a maintenance trap.
  • TI SimpleLink / NXP RW612: capable Wi‑Fi C SDKs, smaller hobbyist footprint than EVT + WCHNET.

Related

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 CH32V post to ThermalTrace without Arduino or Python?
Yes. The CH32V307V-EVT sample is WCHNET C in MounRiver Studio: drop-in User/main.c on the official ETH/DHCP project, WCH-Link flash, onboard 10M Ethernet. DS18B20 on PB12. HTTP to the LAN TLS relay, same as Uno W5100 and STM32 Zephyr. Guide: thermaltrace.dev/about/ch32v-riscv-ingest.

Why not HTTPS straight from the CH32V?
WCHNET is IPv4 TCP/UDP without a maintained TLS client. ThermalTrace ingest is HTTPS. The LAN relay keeps the MCU on HTTP and lets a Pi/NAS handle TLS, which is the same pattern as Uno Ethernet and STM32 Zephyr.

Is this Arduino-CH32 or PlatformIO Arduino?
No. Some community cores wrap CH32V for Arduino IDE. This sample is vendor C (QingKe RISC-V, WCHNET), not an .ino.