Presque aucune sonde antigel Ethernet n’exige l’assembleur. PADAUK, PIC10F et ATtiny10 se programment d’abord (voire uniquement, en pratique) en assembleur, mais ils n’ont ni pile TCP ni assez de RAM pour envoyer du JSON en POST. La voie que nous pouvons vraiment prendre en charge, c’est l’assembleur GNU AVR sur un Arduino Uno / ATmega328P avec un shield Ethernet W5100 : le même matériel de garage que Uno Ethernet, sans Arduino C.
Le W5100 ne gère pas TLS. Cet exemple utilise le même relais HTTP→HTTPS sur le LAN que Uno en C, STM32 Zephyr et CH32V WCHNET.
Composants
| Composant | Rôle | Acheter |
|---|---|---|
| Arduino Uno (ATmega328P) | AVR à 16 MHz. Programmé avec avr-gcc / avrdude, pas avec l’Arduino IDE. | Adafruit Uno · Amazon |
| Shield Ethernet W5100 | Puce de sockets en SPI. Le même shield que l’exemple Arduino Ethernet DHT22. | Adafruit Ethernet · Amazon |
| DS18B20 étanche | Données sur D7. N’utilisez pas D4 : le shield s’en sert comme chip-select de la carte SD. | Adafruit DS18B20 · Amazon |
| Résistance 4.7kΩ | Pull-up de la ligne de données du DS18B20 vers 5V (l’Uno est une carte 5V). | Amazon 4.7k |
Câblage
- DS18B20 VDD → Uno 5V
- DS18B20 GND → GND
- Données DS18B20 → D7 (PD7), 4.7k vers 5V
- Shield Ethernet enfiché sur l’Uno. RJ45 → LAN. USB pour le flash et la liaison série à 115200.
Compiler et flasher
- Ouvrez Dashboard → Devices et téléchargez AVR main.S (chemin d’ingestion déjà renseigné), ou copiez l’extrait
ingest_pathdepuis l’encadré d’ingestion. - Sur une machine du LAN :
python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \ --upstream https://probeharbor.dev - Réglez
ingest_ip/ingest_portet la chaîne de l’en-tête Host sur cette machine. L’IP statique de l’Uno est192.168.1.177dansnet_cfg. -
Ou assemblez lecd sketches/avr/atmega328_w5100_ds18b20 make flash PORT=/dev/ttyACM0main.Stéléchargé avec les mêmes optionsavr-gcc -mmcu=atmega328p -nostartfiles -nostdlib. - Série à 115200 :
link ok, puisPOST 200. La clé de capteurtemp1est importée au premier POST (°F entier).
Dans le dépôt : sketches/avr/atmega328_w5100_ds18b20/ (main.S, Makefile).
Ce que nous n’ajouterons pas
- PADAUK / PIC10F / ATtiny4–10 : conçus pour l’assembleur, mais sans Ethernet et avec trop peu de RAM pour HTTP.
- Parallax Propeller PASM / PASM2 : une vraie culture de l’assembleur, mais les extensions Ethernet varient et il n’existe pas de shield de référence pour le garage.
- PIC18F67J60 : Ethernet intégré, mais la pile TCP de Microchip est en C, pas en MPASM.
- Wi‑Fi nRF / TI en assembleur Thumb : les SDK sont en C. Écrire TLS à la main en assembleur n’a pas sa place dans un kit antigel.
À voir aussi
- Ajouter des appareils
- Arduino Ethernet (C)
- Ingestion CH32V RISC-V
- Ingestion STM32 Zephyr
- Relais HTTPS en Python
Les liens d’achat Amazon peuvent contenir un identifiant Partenaires (Associates). Les liens Adafruit et des autres vendeurs sont directs (Adafruit n’a pas de programme d’affiliation). ProbeHarbor peut toucher une commission sur les achats Amazon éligibles, sans surcoût pour vous.
FAQ
Certaines cartes ProbeHarbor exigent-elles de l’assembleur ?
Aucune sonde de gel Ethernet n’exige d’assembleur. Les PADAUK et PIC10F se programment avant tout en assembleur, mais ne peuvent pas envoyer de POST HTTP. La voie assembleur prise en charge est GNU AVR sur un Uno + W5100 : avr-gcc, sans C Arduino, DS18B20 sur D7, HTTP vers le relais TLS du réseau local. Guide : probeharbor.dev/about/avr-asm-ingest.
Pourquoi ne pas mettre le DS18B20 sur D4 comme dans l’exemple ESP32 ?
Le shield Ethernet W5100 utilise D4 comme sélection de puce de la carte SD. Ce firmware maintient D4 à l’état haut et lit la sonde sur D7.
Puis-je continuer à utiliser le sketch C Arduino Ethernet ?
Oui. sketches/arduino/ethernet_dht22_ingest est la voie en C sur le même shield (DHT22 sur A4/A5). N’utilisez l’assembleur que si vous voulez programmer le 328P sans C Arduino.