Ingestão com CH32V (RISC-V)

Envie leituras do DS18B20 a partir de um WCH CH32V307 com WCHNET em C e Ethernet integrada. MounRiver Studio e o mesmo relay HTTPS local do Uno.

Close de cabos Ethernet Cat-5e brancos com conectores RJ45
O JSON das sondas normalmente sai da rede local por Ethernet ou por um relay próximo, não direto pela internet pública. Foto: DiscDepotDundee.co.uk. CC BY-SA 4.0

ESP32, Pico W e STM32 cobrem Arm e Xtensa. Se você quer uma sonda QingKe RISC-V que não seja Arduino, nem Python, nem Zephyr, uma CH32V307V-EVT-R1 rodando WCHNET C envia por POST o mesmo JSON de ingestão pela Ethernet 10M integrada. MounRiver Studio, WCH-Link. Sem módulo Wi‑Fi.

WCHNET é TCP sobre IPv4 sem um cliente TLS mantido. Este exemplo usa o mesmo relay HTTP→HTTPS na LAN que Uno + W5100 e STM32 Zephyr, para que a Cloudflare possa trocar de CA sem você precisar regravar a placa.

Peças

Peças para uma sonda contra congelamento CH32V RISC-V
Peça Para quê Comprar
CH32V307V-EVT-R1 QingKe RISC-V, PHY 10M + RJ45 integrados, WCH-Link. A MAC Gigabit não é usada aqui. WCH CH32V307
DS18B20 à prova d’água Sonda para cano ou porão baixo. Dados no PB12. Adafruit DS18B20 · Amazon
Resistor de 4.7kΩ Pull-up da linha de dados do DS18B20 para 3.3V. Não alimente a sonda com 5V. Amazon 4.7k
Ponto de rede DHCP na sua LAN. Um Raspberry Pi, NAS ou notebook roda o relay TLS. Qualquer cabo de rede Cat5e até o seu switch.

Ligação

  • DS18B20 VDD → EVT 3.3V
  • DS18B20 GND → GND
  • Dados do DS18B20 → PB12, 4.7k para 3.3V
  • RJ45 → LAN. USB do WCH-Link para gravação e serial a 115200.

Compilar e gravar

  1. Abra Dashboard → Devices e baixe CH32V main.c (com o caminho de ingestão preenchido), ou copie os defines do quadro de ingestão.
  2. Em uma máquina da LAN:
    python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
      --upstream https://probeharbor.dev
  3. Defina INGEST_HOST como essa máquina (IPv4 com pontos). Substitua User/main.c pelo arquivo baixado.
  4. Instale o MounRiver Studio. Abra o projeto oficial EVT ETH/DHCP, mantenha NetLib / eth_driver, substitua apenas User/main.c, compile e grave.
  5. Serial a 115200: dhcp ok e depois POST 200. A chave de sensor temp1 é importada no primeiro POST.

Pronto para usar no repositório: sketches/wch/ch32v307_ds18b20_ingest/ (1-Wire por bit-bang no PB12 + cliente HTTP do WCHNET).

Outras placas CH32V

Qualquer CH32V307 com o PHY Ethernet da EVT roda este código C. Os CH32V203 / CH32V003 não têm MAC Ethernet. Existem cores Arduino-CH32 da comunidade, mas eles não são este exemplo. Um CH32V307 com W5500 é possível, mas aí você volta à ioLibrary via SPI em vez da MAC integrada.

Por que não nRF ou TI em seguida?

  • nRF52: Bluetooth ou Thread, sem HTTPS nativo por Wi‑Fi.
  • nRF7002 DK: o Wi‑Fi 6 da Nordic funciona no nRF Connect SDK, mas fixar CAs de TLS no Zephyr ainda é uma armadilha de manutenção.
  • TI SimpleLink / NXP RW612: SDKs de Wi‑Fi em C competentes, mas com menos presença entre hobbistas do que EVT + WCHNET.

Veja também

Os links de compra da Amazon podem incluir uma tag de Associados. Os links da Adafruit e de outras lojas são diretos (a Adafruit não tem programa de afiliados). O ProbeHarbor pode receber uma comissão por compras qualificadas na Amazon, sem custo extra para você.

Perguntas frequentes

Um CH32V pode enviar para o ProbeHarbor sem Arduino ou Python?
Sim. O exemplo para a CH32V307V-EVT é em C com WCHNET no MounRiver Studio: basta colocar o User/main.c no projeto oficial ETH/DHCP, gravar via WCH-Link, Ethernet 10M na placa. DS18B20 no PB12. HTTP para o relay TLS na rede local, igual ao Uno W5100 e ao STM32 Zephyr. Guia: probeharbor.dev/about/ch32v-riscv-ingest.

Por que não usar HTTPS direto do CH32V?
O WCHNET oferece TCP/UDP IPv4 sem um cliente TLS mantido. A ingestão do ProbeHarbor é HTTPS. O relay na rede local mantém o microcontrolador em HTTP e deixa um Pi/NAS cuidar do TLS, o mesmo padrão do Uno com Ethernet e do STM32 Zephyr.

Isto é Arduino-CH32 ou PlatformIO Arduino?
Não. Alguns cores da comunidade adaptam o CH32V para a Arduino IDE. Este exemplo é em C do fabricante (QingKe RISC-V, WCHNET), não um .ino.