Kun dollarin mikrokontrollerista tulee web-palvelin: Syväsukellus sulautettuun hostingiin
Web-palvelin 8-bittisellä mikrokontrollerilla: Miksi ei?
Joissain projekteissa tekniikka on mahdollista, mutta järki sanoo ei. Tällaiset tempaukset paljastavat, miten internet todella toimii. Kerron nyt kehittäjästä, joka pyöritti toimivan sivuston dollarin mikrokontrollerilla – karkin hinnan veroista raudasta.
Laitteisto: Vaatimaton mutta yllättävän tehokas
Pääroolissa on AVR64DD32, nykyaikainen 8-bittinen mikrokontrolleri. Hinta pyörii euron tienoilla. Tässä speksit:
- CPU: Yhden ytimen 8-bittinen AVR, max 24 MHz
- RAM: 8 kB
- Flash-muisti: 64 kB
- Virta: 1,8–5,5 V
- Hinta: Todellakin yksi euro.
8-bittimaailmassa tämä on tilava paketti. Se päihittää Arduinon Atmega328:n hinnassa ja ominaisuuksissa. Ohjelmointi on yksinkertaista. Haaste? Nettiyhteys puuttuu.
Verkko-ongelma: Ethernet ei sovi
Ethernet houkuttelisi. Se on vakio, dokumentoitu ja luotettava. Mutta fysiikka iskee: 10BASE-T vaatii 10 Mbit/s, Manchester-koodauksella jopa 20 Mbit/s. AVR:n pinnit yltävät 12 MHz:iin. Ei riitä.
Erillinen Ethernet-siru maksaa ja monimutkaistaa. Ei sovi proof-of-conceptiin.
Älykäs ratkaisu: SLIP-protokolla
SLIP eli Serial Line Internet Protocol pelastaa. Se syntyi modeemiaikana (RFC 1055). Yksinkertainen: paketteihin kehykset ja erikoismerkkien korvaus.
- Kehykset
0xC0:lla 0xC0paketissa →0xDB 0xDC0xDB→0xDB 0xDD
Ei erikoisrautaa. USB-sarjaliitäntä 115200 baudilla riittää. Linux näkee sen verkkointerfaceena:
stty -F /dev/ttyUSB0 115200 raw cs8
slattach -m -F -L -p slip /dev/ttyUSB0
90-luvun modeemien protokolla elää yhä. Mikrokontrolleri saa virran samasta kaapelista. Helppoa.
Protokollapino: Nollasta alkaen 8 kB RAMissa
Tässä tulee hauskuus. Todellinen verkko pienellä muistilla.
IP: Helppo nakki
IP-otsikko on 40 tavua metatietoa. Vanha versio tukee sirpaleita, mutta nykypäivänä ne on pois päältä. IPv6 pudotti ne kokonaan.
Ratkaisu: Käännä lähde- ja kohdeosoitteet, nollaa TTL ja lähetä takas. Ei tarvitse ymmärtää IP:tä – vain peilaa.
TCP: Painajainen
TCP vaatii kaiken: tilojen seurannan, uudelleenlähetykset, reunatapaukset ja aikakatkaisut. Debuggaus kesti päiviä. Lopputulos on quirkkinen, mutta palvelee sivun.
HTTP: Käytännöllinen oikotie
Kiinnitetään staattinen vastaus suoraan koodiin. Yksi URL riittää. Rajoitus synnyttää nerokkaita ratkaisuja – ei tarvetta täydelle frameworkille.
Yhteysongelma: Julkiseen verkkoon
Mikrokontrolleri roikkuu sarjakaapelilla kehityskoneessa. Kehityskone linkittyy Helsingin VPS:ään julkisella IPv4:llä.
Ei julkista IP:tä itse mikrokontrollerilla. IPv4:tä on niukasti. Sarjayhteys netin yli ei toimisi.
VPN-ratkaisu: WireGuard
WireGuard hoitaa. Se luo tunnelin NAT:in läpi.
Asetelma:
- Kehityskone VPN:llä VPS:ään
- VPS ohjaa
/mcu/*-pyynnöt tunnelin läpi mikrokontrollerille - Kävijät menevät VPS:n julkiseen osoitteeseen
- VPS välittää paikalliselle sirulle
Sama tekniikka kuin Twitchissä, mutta dollarin sirulle ja kaapelille. Mikrokontrolleri ei altistu netille suoraan. Siistiä.
Mitä opimme
Projekti on tarkoituksella hullu, siksi arvokas. Se riisuu kerrokset ja pakottaa protokollien koodauksen alkeista.
Tajuaa, että:
- Verkko on modulaarinen. Sarja Ethernetin tilalle, TCP UDP:ksi – periaatteet pysyvät.
- Rajoitukset ruokkivat luovuutta. 8 kB pakotti puhtaat toteutukset.
- Vanhat protokollat elävät. SLIP vuodelta 1988, Linux tukee.
- Internet on simppeli. Kerrokset pois, jäljellä tavujen vaihto osoitteiden välillä.
Todellinen oppi
NameOceanissa puretaan webin teknologiaa selkeäksi. Oli pilvi tai mikrokontrolleri, perusasiat – DNS, TCP-kätelyt, HTTP – tekevät paremmaksi tekijäksi.
Tämä ei korvaa cloud hostingia. Mutta näyttää, miksi se on nerokasta. Parhaat abstraatiot syntyvät, kun rakentaa itse nollasta.
Anteeksi, mutta joku yrittää varmaan blogata älykellosta.
Kiinnostaako verkko syvemmin? Tutustu DNS-oppaisiin, TCP/IP-perusteisiin ja miksi domain ratkaisee enemmän kuin rauta. Tarvitset kunnon hostingia? Meiltä AI-pohjaiset ratkaisut – ilman juotosta.