Quase nenhuma sonda contra congelamento com Ethernet exige assembly. PADAUK, PIC10F e ATtiny10 são programados principalmente (ou, na prática, apenas) em assembly, mas não têm pilha TCP nem RAM para enviar JSON por POST. O caminho que realmente conseguimos suportar é assembly GNU AVR em um Arduino Uno / ATmega328P com um shield Ethernet W5100: o mesmo hardware de garagem do Uno com Ethernet, sem Arduino C.
O W5100 não suporta TLS. Este exemplo usa o mesmo relay HTTP→HTTPS na LAN que o Uno em C, o STM32 Zephyr e o CH32V WCHNET.
Peças
| Peça | Para quê | Comprar |
|---|---|---|
| Arduino Uno (ATmega328P) | AVR de 16 MHz. Programado com avr-gcc / avrdude, não com o Arduino IDE. | Adafruit Uno · Amazon |
| Shield Ethernet W5100 | Chip de sockets via SPI. O mesmo shield do exemplo Arduino Ethernet DHT22. | Adafruit Ethernet · Amazon |
| DS18B20 à prova d’água | Dados no D7. Não use o D4: o shield usa o D4 como chip-select do cartão SD. | Adafruit DS18B20 · Amazon |
| Resistor de 4.7kΩ | Pull-up da linha de dados do DS18B20 para 5V (o Uno é uma placa de 5V). | Amazon 4.7k |
Ligação
- DS18B20 VDD → Uno 5V
- DS18B20 GND → GND
- Dados do DS18B20 → D7 (PD7), 4.7k para 5V
- Shield Ethernet encaixado no Uno. RJ45 → LAN. USB para gravação e serial a 115200.
Compilar e gravar
- Abra Dashboard → Devices e baixe AVR main.S (com o caminho de ingestão preenchido), ou copie o trecho
ingest_pathdo quadro de ingestão. - Em uma máquina da LAN:
python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \ --upstream https://probeharbor.dev - Defina
ingest_ip/ingest_porte a string do cabeçalho Host com os dados dessa máquina. O IP estático do Uno é192.168.1.177emnet_cfg. -
Ou monte ocd sketches/avr/atmega328_w5100_ds18b20 make flash PORT=/dev/ttyACM0main.Sbaixado com as mesmas flagsavr-gcc -mmcu=atmega328p -nostartfiles -nostdlib. - Serial a 115200:
link oke depoisPOST 200. A chave de sensortemp1é importada no primeiro POST (°F inteiro).
No repositório: sketches/avr/atmega328_w5100_ds18b20/ (main.S, Makefile).
O que não vamos adicionar
- PADAUK / PIC10F / ATtiny4–10: feitos para assembly, mas sem Ethernet e com RAM pouca demais para HTTP.
- Parallax Propeller PASM / PASM2: uma verdadeira cultura de assembly, mas os complementos Ethernet variam e não existe um shield padrão para a garagem.
- PIC18F67J60: Ethernet integrada, mas a pilha TCP da Microchip é em C, não em MPASM.
- Wi‑Fi nRF / TI em assembly Thumb: os SDKs são em C. Escrever TLS à mão em assembly não é caminho para um kit contra congelamento.
Veja também
- Adicionar dispositivos
- Arduino com Ethernet (C)
- Ingestão com CH32V RISC-V
- Ingestão com STM32 Zephyr
- Relay HTTPS em Python
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
Alguma placa do ProbeHarbor exige linguagem assembly?
Nenhuma sonda de congelamento Ethernet exige assembly. PADAUK e PIC10F são voltados a assembly, mas não conseguem fazer POST HTTP. O caminho em assembly suportado é GNU AVR em um Uno + W5100: avr-gcc, sem C do Arduino, DS18B20 no D7, HTTP para o relay TLS na rede local. Guia: probeharbor.dev/about/avr-asm-ingest.
Por que não colocar o DS18B20 no D4, como no exemplo do ESP32?
O shield Ethernet W5100 usa o D4 como chip-select do cartão SD. Este firmware mantém o D4 em nível alto e lê a sonda no D7.
Posso continuar usando o sketch Ethernet em C do Arduino?
Sim. sketches/arduino/ethernet_dht22_ingest é o caminho em C no mesmo shield (DHT22 em A4/A5). Use assembly só se quiser programar o 328P sem o C do Arduino.