Fra $1-mikrokontroller til webserver: Dypdykk i embedded hosting
Webserver på en 8-bits mikrokontroller: Fordi det er gøy!
Noen prosjekter er ren galskap. De har null praktisk nytte. Men de avslører hvordan nettet egentlig funker. Denne gangen handler det om en utvikler som fikk en ekte nettside til å kjøre på en mikrokontroller til under ti kroner.
Maskinvaren: Billig og brutal
Hovedrollen er AVR64DD32. En moderne 8-bits mikrokontroller til rundt en dollar.
Her er spesifikasjonene:
- Prosessor: 8-bits AVR-kjerne, opptil 24 MHz
- RAM: 8 kB
- Flash: 64 kB
- Strøm: 1,8–5,5 volt
- Pris: En dollar. Punktum.
Dette er fett for en 8-bits chip i dag. Billigere og kraftigere enn klassiske Arduino-chips. Enkelt å programmere. Problemet? Den må kobles til nettet.
Nettverksutfordringen: Ethernet er umulig
Ethernet frister. Det er standard. Men fysikken stopper det. 10BASE-T krever 10 Mbps. Med Manchester-koding blir det 20 Mbps på linja.
AVR-pinnene klarer max 12 MHz. For sakte.
Dedikerte Ethernet-brikker finnes. Men de koster mer, kompliserer alt og tar tid. Ikke poenget her.
Smarthacket: SLIP-protokollen
Løsningen er SLIP – Serial Line Internet Protocol. Fra modem-tida (RFC 1055). Superenkelt.
Den pakker inn pakker med rammebyte 0xC0. Escaper spesialtegn:
0xC0blir0xDB 0xDC0xDBblir0xDB 0xDD
Bare en USB-til-serial-adapter på 115200 baud. Linux ser det som et nettverksgrensesnitt:
stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
Mikrokontrolleren trekker strøm fra adapteren. Én kabel. Ferdig.
Protokollstakken: Fra bunnen av
Med 8 kB RAM blir det spennende å bygge nettverk.
IP: Enkelt
IP-header er 40 bytes med adresser og metadata. Gammel fragmentering er borte i dag. IPv6 droppet det helt.
Løsning: Bytt kilde- og måladresse på innkommende pakker. Nullstill TTL. Send tilbake. Mikroen speiler bare.
TCP: Helvete
TCP krever:
- Tilstandssporing
- Gjenutsending av tapte pakker
- Håndtering av tusen edge cases
- Timeout-logikk
Took dager med debugging. Fungerer greit for enkel side.
HTTP: Juks
Hardkodet svar. Alltid samme statiske innhold. Én URL. Perfekt.
Begrensninger tvinger fram smarte løsninger.
Online-kobling: Den geniale twisten
Mikroen sitter på serial til en dev-maskin. Denne kobles til VPS i Helsinki med offentlig IPv4.
Utfordring: Ingen offentlig IP på mikroen. IPv4 er dyrt og sjeldent. Serial over nettet? Nei.
VPN-fiks: WireGuard
WireGuard lager tunnel som funker bak NAT.
Opsett:
- Dev-maskin til VPS via WireGuard
- VPS viderer
/mcu/*til mikroen lokalt - Besøkende treffer VPS' IP
- VPS sender videre
Samme triks som Twitch bruker. Mikroen er skjult. Rent og pent.
Hva lærte vi?
Prosjektet er meningsløst. Derfor gull verdt. Fjerner abstraksjoner. Tvinger deg til å kode protokoller selv.
Nøkkelpunkter:
- Modulært. Bytt serial med Ethernet eller TCP med UDP.
- Begrensninger skaper magi. 8 kB RAM ga rene, effektive koder.
- Gammelt holder. SLIP fra 1988. Linux støtter det fortsatt.
- Nettet er enkelt. Bare bytes mellom adresser.
Konklusjonen
Hos NameOcean elsker vi å forklare webteknologi. Uansett om du bruker cloud eller limer på mikrokontrollere – kunnskap om DNS, TCP og HTTP gjør deg bedre.
Dette erstatter ikke hosting. Men det viser hvorfor cloud er genialt. Bygg fra scratch på en dollar-chip. Da setter du pris på abstraksjon.
Unnskyld, vi må stoppe noen som vil hoste bloggen på en smartklokke.
Lyst på mer om nettverkslaget? Sjekk guidene våre om DNS, TCP/IP og hvorfor domain er viktigere enn hardware. Trenger du ekte hosting (anbefales), har vi AI-drevne løsninger. Uten lodding.