O hardware das sondas roda em microcontroladores compatíveis com Arduino. O firmware, normalmente chamado de sketch, lê os sensores em intervalos fixos, formata os resultados em JSON e os disponibiliza na rede para que o site e outros clientes busquem dados ao vivo sem cabo serial.
O que o sketch faz
- Inicializa os barramentos dos sensores e o LCD local de 16×2 para leitura no local.
- Lê cada sonda DHT22 com novas tentativas em caso de erros temporários no barramento.
- Calcula a média das sondas em bom estado como valor-resumo rápido no JSON.
- Responde às requisições HTTP com um documento JSON compacto pelo shield Ethernet.
- Opcionalmente, registra erros na serial para depuração no local.
Formato JSON típico
Os clientes esperam um objeto temp no nível superior com chaves numéricas para cada sonda, além de avg. A umidade aparece ao lado da temperatura em cada sonda. Manter as chaves estáveis importa mais do que uma formatação bonita: os mapeamentos do dashboard fazem referência direta a essas chaves.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 },
"1": { "f": 36.8, "c": 2.7, "h": 43.5 },
"avg": { "f": 37.5, "c": 3.1, "h": 42.2 }
}
} Para ingestão push, o mesmo objeto de sonda pode ser enviado para /api/ingest/<key>. Os campos opcionais de nível superior battery (ou battery_pct) e rssi atualizam a saúde do dispositivo na página Devices sem exigir chaves de sensor extras.
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 }
},
"battery": 87,
"rssi": -62
} Ingestão push a partir do shield Ethernet
A pilha W5100 de um Uno não suporta TLS, então não consegue fazer POST diretamente para https://probeharbor.dev. Use ethernet_dht22_ingest para enviar o JSON temp clássico por HTTP (DHT22 em A4/A5, JSON opcional na porta 80 para leitura pela LAN). Rode push_https_forward.py em um Raspberry Pi, NAS ou notebook para que esses POSTs cheguem ao ProbeHarbor por HTTPS. Os exemplos para ESP32 com Wi‑Fi que falam TLS ficam em sketches/.
Guias de ligação do hardware
A montagem usa um Arduino Uno, um shield Ethernet W5100, uma protoboard, um potenciômetro de contraste, um LCD de 16×2 e dois sensores DHT22. Três páginas complementares documentam em detalhes os esquemas e o mapa de pinos:
Visão geral da fiação do circuito Arduino
Como alimentação USB, protoboard, potenciômetro de contraste, LCD, sensores e shield Ethernet se encaixam.
Fiação do Arduino pino a pino
Mapa pino a pino que corresponde ao construtor LiquidCrystal e às linhas de dados dos sensores no firmware.
Sensores DHT22 e display LCD
Por que o LCD mostra as duas sondas separadamente enquanto os feeds JSON enviam ambas para o site.
Escolhas da pilha de rede
Esta revisão usa um shield Ethernet via SPI. O sketch cuida do DHCP, dos loops de reconexão e do envio do JSON enquanto o LCD continua mostrando os valores das sondas ao vivo. Quando o TLS é pesado demais para o MCU, um relay em Python pode terminar o HTTPS: veja Scripts e feeds em Python. Para ingestão push a partir do mesmo shield, veja ethernet_dht22_ingest.
Fluxo de desenvolvimento
Os sketches são editados no Arduino IDE ou no PlatformIO, gravados via USB e verificados com logs na serial antes de a placa ser instalada no espaço monitorado. Confira o formato do JSON com curl antes de adicionar a URL do feed ao dashboard do site.
Exemplos prontos para adaptar para DS18B20, MAX31855, MAX6675 e Uno + Ethernet ficam neste repositório, em sketches/. O Raspberry Pi Pico W / Pico 2 W usa o mesmo JSON de ingestão com CircuitPython ou MicroPython. Firmware completo de Ethernet + DHT + LCD: arduino-network-json-temperature-sever.
Dicas de confiabilidade
- Reinicializações por watchdog recuperam a placa de travamentos raros de rede sem você precisar subir na escada.
- Separe o ruído da alimentação dos sensores da alimentação do MCU quando houver cabos longos.
- Versione seu esquema JSON na documentação ao adicionar campos.
- Documente quais pinos GPIO correspondem a quais etiquetas físicas de sonda; veja o guia de ligação dos pinos.
Perguntas frequentes
Onde estão os sketches de exemplo para Arduino?
No repositório probeharbor no GitHub, em sketches/, além dos guias de Arduino em About. Os exemplos para ESP32 fazem POST HTTPS diretamente. O Uno + Ethernet W5100 usa ethernet_dht22_ingest (JSON temp clássico em A4/A5) mais um relay HTTP→HTTPS na rede local: o shield não consegue fazer TLS com o probeharbor.dev.