Fra $1-mikrocontroller til webserver: En dybdegående gennemgang af embedded hosting
Webserver på en 8-bit microcontroller: Fordi det bare skal prøves
Nogle projekter er rene vanvittigheder. De har nul praktisk værdi. Men de afslører præcis, hvordan internettet hænger sammen under hætten. Her kigger vi på en udviklers eksperiment: En rigtig hjemmeside på en microcontroller til en enkelt dollar.
Hardware: Lille, men snavsig
Hovedrollen er AVR64DD32. En 8-bit chip til en prikke over en dollar.
- CPU: 8-bit AVR-kern på max 24 MHz
- RAM: 8 kB
- Flash: 64 kB
- Strøm: 1,8-5,5 volt
- Pris: Et skarnt dollar.
Det er luksus for en 8-bit'er. Billigere og stærkere end Arduinoens Atmega328. Flere features, lettere at programmere. Men den mangler netværk.
Netværksudfordringen: Ethernet er umuligt
Ethernet virker logisk. Det er standard. Men fysikken siger nej. 10BASE-T kræver 10 Mbps. Med Manchester-kodning bliver det 20 Mbps. AVR-pinnene klarer kun 12 MHz. For langsomt.
Et separat Ethernet-chip? Det koster, komplicerer og tager tid. Ikke pointen her.
Smarte løsning: SLIP-protokollen
SLIP fra modem-tiderne (RFC 1055) er gennemskuelig. Den pakker netpakker med rammer og escaping:
0xC0som start/slut0xC0inde i pakken bliver0xDB 0xDC0xDBbliver0xDB 0xDD
Ingen fancy hardware. Bare USB-til-serial på 115200 baud. Linux ser det som netværk:
stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
Chippen trækker strøm fra adapteren. Et kabel. Færdig.
Protokol-stakken: Lav det selv på 8 kB RAM
Her bliver det sjovt. Implementer netværk fra bunden.
IP: Nemt spil
IP-header er 40 bytes med adresser og metadata. Glem fragmentering – det er forældet. Bare swap source og destination, nulstil TTL, og send videre. Chippen spejler trafikken. Den forstår ikke IP.
TCP: Helvede
TCP kræver:
- Tilstande for forbindelser
- Genafsendelse af tabte pakker
- Alle de gale edge cases
- Timeout-håndtering
Det tog dage med debug. Resultatet har fejl. Men det server en simpel side.
HTTP: Kort vej
Hardkod svaret. Altid samme statiske indhold. Én URL. Perfekt.
Begrænsninger tvinger smarte løsninger. Ikke brug fuld framework.
Online-udfordringen: Få det på nettet
Chippen sidder på serial til en dev-maskine. Den går via VPS i Helsinki med public IPv4.
Problemer: Ingen public IP til chippen. IPv4 er dyrt og sjældent. Serial over internet? Nej tak.
VPN-triks: WireGuard
WireGuard laver tunnel gennem NAT. Setup:
- Dev-maskine til VPS via WireGuard
- VPS proxygen
/mcu/*til chippen lokalt - Gæster rammer VPS' public IP
- VPS videresender til chippen
Samme som Twitch bruger. Til en dollar-chip og kabel. Chippen er skjult fra nettet. Smart.
Hvad lærte vi?
Projektet er meningsløst. Derfor er det guld værd. Det fjerner lag og tvinger dig til basics.
- Modulært. Skift serial med Ethernet, TCP med UDP. Kerneprincipperne holder.
- Begrænsninger skaber magi. 8 kB RAM giver rene koder, der virker.
- Gammelt holder. SLIP fra 1988. Linux elsker det stadig.
- Internet er simpelt. Uden lag er det bare bytes mellem adresser.
Den ægte pointe
Hos NameOcean elsker vi at gøre web-teknologi forståelig. Uanset cloud eller microcontroller: DNS, TCP, HTTP-fundamentals gør dig bedre.
Det her erstatter ikke cloud hosting. Men det viser, hvorfor cloud er genialt. Prøv at bygge selv på en dollar-chip. Du sætter pris på abstraction.
Undskyld, vi skal stoppe nogen fra at hoste bloggen på en smartklokke.
Lyst til mere om netværk? Tjek vores guides om DNS, TCP/IP-basics og hvorfor dit domain slår hardware. Skal du have rigtig hosting (anbefales), har vi AI-drevne løsninger uden loddekolbe.