Jak mikrokontroler za dolara zmienia się w serwer WWW: Hosting na embedded w pigułce
Serwer WWW na 8-bitowym mikrokontrolerze: Bo czemu nie?
W świecie projektów, które technicznie da się zrobić, ale po co? Jest miejsce na eksperymenty, co uczą, jak naprawdę działa internet. Dziś o programiście, który uruchomił stronę na mikrokontrolerze za cenę batona.
Sprzęt: Proste początki
Główną rolę gra AVR64DD32. To nowoczesny 8-bitowy mikrokontroler za dolara. Specyfikacja wygląda tak:
- CPU: 8-bitowy rdzeń AVR, max 24 MHz
- RAM: 8 kB
- Flash: 64 kB
- Zasilanie: 1.8-5.5 V
- Cena: Dolar. Bez żartów.
Jak na 8-bitowca to sporo miejsca. Tańszy i mocniejszy niż Atmega328 z Arduino. Łatwiejszy w programowaniu, z lepszymi peryferiami. Ale brakuje mu dostępu do sieci.
Problem z siecią: Ethernet odpada
Ethernet kusi. Jest standardem, udokumentowany. Ale fizyka nie pozwala. 10BASE-T to 10 Mb/s, z kodowaniem Manchester – faktycznie 20 Mb/s. Piny GPIO mikrokontrolera ledwo ciągną 12 MHz. Za wolno.
Można dołożyć chip Ethernet. Ale to podnosi cenę, komplikuje i każe czekać na paczkę. Nie o to chodzi w takim wyzwaniu.
Sprytne obejście: Protokół SLIP
Tu wchodzi SLIP – Serial Line Internet Protocol. Z czasów modemów dial-up (RFC 1055). Prosty jak drut. Pakiety opakowuje bajtami 0xC0. Specjalne znaki escapuje:
0xC0w pakiecie staje się0xDB 0xDC0xDB–0xDB 0xDD
Koniec. Żadnego wymyślnego sprzętu. Wystarczy adapter USB-serial na 115200 baud. Linux widzi to jako interfejs sieciowy:
stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
Protokół z lat 90. wciąż działa w Linuksie. Mikrokontroler czerpie prąd z adaptera. Jeden kabel i gotowe.
Stack protokołów: Od zera
Tu robi się ciekawie. Sieć na 8 kB RAM.
IP: Łatwizna
Nagłówek IP to 40 bajtów rutyny: adresy źródłowy i docelowy, metadane. Fragmentacja? Nowe systemy jej nie używają. IPv6 jej nie ma.
Rozwiązanie? Odwróć adresy w pakiecie, zresetuj TTL i odeślij. Mikrokontroler nie musi rozumieć IP. Wystarczy odbijać.
TCP: Koszmar
TCP to inna bajka. Musisz śledzić stany połączeń, retransmitować zguby, radzić sobie z edge case'ami (jest ich masa), zarządzać timeoutami.
Debugowanie trwało dni. Implementacja ma swoje kaprysy. Ale serwuje stronę.
HTTP: Skrót myślowy
Proste: hardcoded odpowiedź HTTP. Zawsze ta sama statyczna treść. Jedna ścieżka URL i działa idealnie.
Ograniczenia wymuszają elegancję. Nie każdy problem wymaga pełnego frameworka.
Podłączenie do świata: Prawdziwy trik
Mikrokontroler siedzi na kablu serial z maszyną deweloperską. Ta łączy się z VPS w Helsinkach na publicznym IPv4.
Brak publicznego IP na mikrokontrolerze. IPv4 jest drogi i rzadki. Serial przez internet? Niemożliwe.
Rozwiązanie: WireGuard
WireGuard – nowoczesny VPN w Linuksie. Tworzy tunel, działa za NAT-em.
Ustawka:
- Maszyna deweloperska tuneluje do VPS przez WireGuard
- VPS przekierowuje
/mcu/*przez lokalny tunel do mikrokontrolera - Goście wchodzą na publiczny adres VPS
- VPS forwarduje do mikrokontrolera
Technika jak w streamingu Twitcha. Dla chipa za dolara i kabla. Mikrokontroler ukryty przed światem. Sprytne.
Co z tego wynika
Projekt celowo bez sensu. Właśnie dlatego cenny. Zrywa z abstrakcjami. Budujesz protokoły od podstaw.
Uczysz się, że:
- Sieć to klocki. Serial zamiast Ethernet, UDP zamiast TCP – zasady te same.
- Ograniczenia kreatywnością. 8 kB RAM dało czyste kody, które działają lepiej.
- Stare protokoły żyją. SLIP z 1988. Linux go ma. Długowieczność ma sens.
- Internet prosty. Bez warstw to bajty między adresami.
Prawdziwa lekcja
W NameOcean lubimy obalać mity o technologiach webu. Czy cloud, czy mikrokontrolery – znając podstawy (DNS, TCP handshake, HTTP) jesteś lepszym inżynierem.
To nie zastąpi hostingu w chmurze. Ale pokaże, czemu cloud jest genialny. Najlepiej docenisz abstrakcje, budując je na chipie za dolara.
Przepraszamy, ale musimy powstrzymać kogoś przed blogiem na smartwatchu.
Chcesz zgłębić sieć? Sprawdź nasze poradniki o DNS, podstawach TCP/IP i dlaczego domain ważniejszy niż hardware hostingu. A na serio – hosting bez lutowania? Mamy AI-powered opcje.