Historien bak ESP: Mikro­kontrolleren som tok maker-verden med storm

"En slags moderne såpeserie om 'Russian hackers', open source i Kina og forbindelser til Norge" skriver Vilje Bech.

ESP-mikrokontrolleren kommer i mange varianter. Her en ESP32 D4. 📸: Ole Petter Baugerød Stokke
ESP-mikrokontrolleren kommer i mange varianter. Her en ESP32 D4. 📸: Ole Petter Baugerød Stokke Vis mer

ESP8266 dukket nærmest opp ut av intet. Den lille chipen var aldri ment å være en mikrokontroller, men endte opp med å bli det opplagte valget for makers verden over.

Historien er som en slags moderne såpeserie om “Russian hackers”, open source i Kina og forbindelser til Norge.

«Denne forholdsvis primitive ett-korts datamaskinen ble starten på en bevegelse.»

Man kan ikke skrive om mikrokontrollere og makers uten å nevne Arduino. Denne forholdsvis primitive ett-korts datamaskinen ble starten på en bevegelse, hvor folk uten bakgrunn fra elektronikk og integrerte systemer (embedded systems) kunne uttrykke sin kreativitet gjennom kode i samspill med omgivelsene.

Arduino skriver selv at den første versjonen fra 2005 var rettet mot designstudenter uten tidligere elektronikkerfaring for å skape et enkelt grensesnitt mellom den digitale og den fysiske verdenen til prototypeformål.

En smule akademisk i sitt opphav der altså, men Arduino vokste seg ut og forbi universitetene og inn i hjemmene til alle andre som syns det er gøy å forene det fysiske med det digitale.

Arduino UNO. 📸: Harrison Broadbent / Unsplash
Arduino UNO. 📸: Harrison Broadbent / Unsplash Vis mer

Mikrokontrollere og IoT

Arduino hadde klare begrensninger. Du måtte gå til anskaffelse av nye kort (såkalte Shields) for å kommunisere over f.eks. TCP / IP, eller internett om du vil, og mange prosjekter økte dermed både i kompleksitet og pris. Arduino var rett og slett ikke spesielt godt egnet for IoT prosjekter.

Mange lot seg derfor rive med da Raspberry Pi kom på banen i 2012/2013 med verdiforslag om å være en datamaskin i kredittkortstørrelse, eller en komplett ett-korts maskin. Sammenliknet med Arduino var Pi’en mer komplett, uten at de to produktene kan direkte sammenlignes.

De bare fremstår forvekslende lik hverandre for et utrent øye: der Arduino kunne bygges ut med “Shields”, hadde Raspberry “Hats” og overlegne egenskaper for de som ville utveksle data over internett (sett fra et controller-perspektiv, vel og merke)

En ESP8266. 📸: Contrary IO
En ESP8266. 📸: Contrary IO Vis mer

JavaScript løsningen?

Hvis vi fortsetter å følge internett som en slags rød tråd gjennom det som etterhvert er ment å utgjøre bakteppet for denne lille mikrokontrolleren det ble hintet om innledningsvis, må vi trekke inn litt JavaScript.

Et sted mellom Arduino og Raspberry Pi hadde jQuery begynt å herje vilt, spesielt rått var jQuery mobile som kom noe senere. Det markerer i hvert fall for undertegnede starten på JavaScripts gullalder, for plutselig kom Node.js og skulle ha oss vekk fra browseren og inn på serveren.

Og det fikk ringvirkninger utover web-applikasjoner og helt ned på maskinvarenivå. Arduino var kanskje ment for nybegynnere, men man måtte likevel lære seg en forenklet utgave av C. Langt flere innehar grunnleggende JS ferdigheter, så det var ikke så dumt når bibloteker som Johnny-Five (2012) med flere dukket opp.

Selv om JavaScript er en mulighet for programmering av mikrokontrollere, har det strengt tatt aldri tatt fullstendig av. I hvert fall ikke enda.

IoT startet med mobilen

Fremtidsvyer om IoT og en trådløs tilkoblet hverdag var ikke lenger noe man spekulerte i, det var i ferd med å bli en realitet. Mange av oss hadde vandret rundt med smarttelefoner i flere år og latt oss overbevise om å gå til innkjøp av nettbrett også.

Denne trenden hadde den, da ukjente(?), halvlederprodusenten Espressif Systems kastet seg på. De kunne nemlig levere billige WiFi-moduler til smarttelefoner og nettbrett. Disse ble antakeligvis snappet opp av produsenter som siktet seg inn på billige Android enheter for det asiatiske og afrikanske markedet.

«Det betyr at du i praksis har WiFi og mikrokontroller i ett.»

Espressifs WiFi modul var utformet etter SoC (System on a chip) prinsippet, som for enkelhets skyld innebærer at den inneholder en elektronisk krets og CPU-kapabiliteter i en enkelt chip (integrert krets). Det betyr at du i praksis har WiFi og mikrokontroller i ett.

Gjennombruddet

Hva Espressif Systems drev på med i Kina hadde gått under radaren i vår del av verden. Men en variant av deres smått ikoniske chip ESP8266 dukket i følge Wikipedia opp i vestlige maker-kretser rundt 2014, levert av AI-Thinker (et annet Kinesisk selskap).

2014 var i hvertfall året hvor ESP8266/Arduino og NodeMCU gjorde sine første commits på GitHub og viste makers over hele verden at smått kan være stort. NodeMCU er inspirert av Node.js, men programmeres i Lua som også er et scriptspråk. Dette er i dag kanskje det mest kjente utviklingsbrettet basert på ESP8266.

Det ble gjennombruddet. Den lille chip’en på knapt 20mm ble som å krympe en Arduino med WiFi-shield til ned til minst ⅓ størrelse med 80% mer prosessorkraft og 90% større Flash minne til en brøkdel av prisen.

I dag selges varianter av ESP8266 for knapt 1$ på AliExpress, mens AI-Thinkers 2014-variant antakeligvis lå rundt 4-5$. Til sammenlikning koster en “Kina-Arduino” i dag rundt 2 - 3$ og ca 300kr hos norske forhandlere av originalen i nyeste versjon.

Wow.

Hva skjedde, egentlig?

Det er vrient å grave frem noe særlig informasjon om hvordan Espressif selv reagerte på at den imponerende chipen de hadde utviklet så ut til å leve sitt eget liv med stadig nye tilbydere.

Men, vi vet med sikkerhet at Espressif Systems i dag spiller med veldig åpne kort og er i praksis open source. De har i tillegg ansatt flere “hackers” fra 8266-tiden. Deriblant Ivan Grotkothov som forteller i et intervju med Hackaday at han opprinnelig var på utkikk etter en enkel måte å låse opp bilen fra mobilen, til sin bildelings startup hjemme i St. Petersburg, og snublet over ESP8266.

Startupen ble ikke noe av, men i stedet “hacket” han chippen og startet arbeidet med å bruke den som mikrokontroller på Arduino.

«Design, layout, measurements and code reviews by a team of crazy techies.»

Noen uker før Grotkothov commitet “basic support for esp8266 platform” hadde gruppen Zeptobars (også fra Russland) lekket bilder av innmaten i denne chipen. Gruppen er kjent for å etse bort hva enn produsenten har forsøkt å maskere silikonchippen sin med og dele hva som egentlig skjuler seg med omverdenen. De forteller at “internett har kokt” siden August over denne billige WiFi chipen og nå vil de oppfordre Espressif til å dele flere detaljer.

Twitter får de svar fra John Lee som gjør support for Espressif at “that is 6 years of iterations: design, layout, measurements and code reviews by a team of crazy techies.”

Hva annet kunne han si? Sånn er gamet. Shenzhen “The Silicon Valley of Hardware” har vokst frem fra open source og troen på at produktet, ikke rettslige eierskap stimulerer innovasjon. Og det var nettopp det som skjedde i tilfellet med ESP8266.

ESP + Python = Sant

Med sine tette bindinger til C ville Python være meget spennende høynivå alternativ til programmering av mikrokontrollere og Damien George bestemte seg for å prøve ut nettopp det:

George hadde planer å bruke mikrokontrolleren STM32F405 som utgangspunkt i forsøket.

Kontrollere i STM32-familien støttet nemlig Espruino, en JavaScript interpreter for mikrokontrollere som ble omtalt i Hackaday som “ikke helt klart til å publiseres som åpen kildekode enda”.

Skaperen valgte å gå Kickstarter-veien i 2013 for å finansiere den siste finpussen og Damien George valgte å gjøre det samme bare noen måneder etter.

Både Espruino og Micropython kampanjene ble vellykket og flere fattet interesse for å kunne programmere mikrokontrollere med mer moderne språk. Kampanjene er forbløffende like, hvor begge parter ønsker å gjøre arbeidet sitt open source og bestille et opplag utviklingsbrett. Men der skilles også deres veier.

Når Grotkothov & Co bidro til å gjøre ESP8266 til det opplagte valget for IoT kreasjoner i makermiljøet, returnerte George til Kickstarter i 2016 for å finansiere enda en runde med Micropython.

Denne gangen ville han bygge community og få Micropython over på ESP8266 for å gi enda flere mulighet til å bruke Python på maskinvare. Og jammen var ikke en AI-Thinker versjon å skimte på kampanjens coverbilde.

«Som vi vet har community mye å si for hvor utbredt en løsning blir.»

For ordens skyld, ja – man kan installere Espruino på ESP. Men som vi vet har community mye å si for hvor utbredt en løsning blir, så Espruino ble raskt forbigått av Micropython og sitter i dag igjen med heller få bidragsytere og stjerner på GitHub.

En ny generasjon trer frem

Noen måneder etter Micropythons andre Kickstarter var finansiert, lanserte Espressif arvtakeren til ESP8266, som ble avduket under en pressekonferanse i September 2016. Neste generasjon ESP ble enkelt og greit hetende ESP32.

Som forventet fikk man bedre spesifikasjoner, dobbel prosessorkjerne og flere I/O porter samt et par overraskelser på kjøpet. Denne versjonen støttet også Bluetooth, hadde en innebygd Hall-sensor (fanger opp endringer i magnetfelt) og kom levert 10 touch sensorer i tillegg. ESP32 var tydelig rigget for flere IoT-anvendelser i form wearables og liknende man gjerne kombiner bluetooth og touch, med den samme lave prisen og kompakte utformingen.

Nok en gang hadde gjengen i Zeptobars publisert bilder av innmaten, men denne gangen flere måneder etter Espressifs pressekonferanse og men en enkel oppfordring om støtte for 5.8GHz og ikke bare 2.4GHz båndet.

This talk was given at PyCon Australia 2017 which was held from 3-8 August, 2017 in Melbourne, Victoria. PyCon Australia is the national conference for users of the Python Programming Language. Vis mer Vis mer

Norge er med

Under PyCon Australia i 2017 snakker Nick Moore om arbeidet med Micropython for ESP32 (foredraget er tilgjengelig i sin helhet på YouTube) og et sted midt inni der dukker et umiskjennelig norskt navn opp: Odd Stråbø blir kreditert for sitt arbeid med UART interfacet.

En liten titt på GitHub viser at Stråbø åpnet en issue hvor han påpekte at dette så ut til å mangle, hvorpå Damien George sier utfordringen er up for grabs. Lite visste George at Stråbø allerede hadde en basic implementasjon klar og et par uker seinere var UART interfacet på plass.

2017 var også året amerikanske Adafruit lanserte sin egen fork av Micropython –Circuit Python. Damien George forteller i sin talk under PyCon Australia 2017 at Adafruit må ha hatt en forestilling om at Micropython er vanskelig å ta i bruk, siden de velger å markedsføre sin versjon som enklere å starte med. Han utbroderer videre at hvis det ligger noe i ordtaket om å holde sine fiender nærmest, gjør han en god jobb med å skrive programvaren konkurrentene hans benytter. Diplomatisk fyr med andre ord.

Adafruit dukket opp omtrent på samme tid som Arduino og produserer elektronikk for makers, gjerne basert på samme chip som Arduino, ESP8266 / 32 og Espruino. De selger også Micropythons PyBoards, bare for å gjøre historien mest mulig komplett.

Mesh, maskinlæring og makers

Hypen rundt Espressif lever videre i beste velgående, med stadige forbedringer og nye bruksområder drevet frem av makers verden over.

«Da begynte internett å eksperimentere med nevrale nettverk og maskinlæring rett på chipen.»

På tampen av 2018 lanserte Espressif eget Mesh-bibliotek basert på et selvorganiserende og selvhelende prinsipp som gjør dem desto bedre utrustet til å bli en tung IoT aktør med røtter i open source og stadig voksende tilhengerskare.

Da begynte internett å eksperimentere med nevrale nettverk og maskinlæring rett på chipen, hvor blant annet Martin Gravråk i Bouvet deler sin fremgangsmåte ved å ta i bruk modulen M5camera som kombinerer ESP32 og kamera for ansiktsgjenkjenning.

Det finnes en rekke forskjellige kameraløsninger for ESP32 og nettet er fullt av eksempler på objektgjenning.

Foreløpig velger nok de fleste å trene modellen på litt kraftigere maskinvare, men selve implementasjonen kan gjøres liten nok til å kjøre rett på chippen (f.eks. TensorFlow Lite). Da er det greit å minne på at Micropython er lagd for å ligge nærmest mulig vanlig Python, slik at utvikleren nærmest sømløst kan bytte mellom versjonene.

Hva blir det neste?