Om microcontrollers och i synnerhet ESP32

För några år sedan laborerade jag med microcontrollers, specifikt med Arduino. Jag kom i kontakt med området genom att en arbetskamrat på Ericsson tog med mig till ett s k “Maker lab” här i Linköping. Där fick vi en snabb introduktion till ämnet och fick sedan i uppgift att försöka konstruera en apparat som vattnade en blomkruka automatiskt vid behov. En inte helt lätt uppgift, skulle det visa sig. Men detta fick mig i alla fall att bli förtjust i konceptet microcontrollers, eftersom det till skillnad från en dator som kör ett operativsystem tillåter användaren att ha fullständig kontroll över vad som händer.

Så för den som inte är så insatt i ämnet skall jag först berätta vad en microcontroller är. En microcontroller är en pytteliten och billig dator med inbyggt minne och anslutningar för olika typer av periferi-enheter såsom knappar, displayer och sensorer. Det som främst skiljer den från en vanlig dator som också kan ha inbyggt minne och anslutningar för periferi-enheter är att den inte kör något fullständigt operativsystem som t ex Windows eller Linux. För att köra ett riktigt operativsystem behöver CPU’n ha en s k MMU (Memory Management Unit) som ser till att hålla olika processer åtskiljda i minnet och att kunna hantera stora mängder av RAM och vid behov spara undan till en hårddisk om minnet inte räcker till. En microcontroller å andra sidan jobbar i allmänhet bara med en sak åt gången (en process) och det är användaren/programmeraren som bestämmer vad som skall hända i detalj. Det är detta som gör det så givande – man känner att man har fullständig kontroll över allt som händer.

Nåväl, i dessa tider när riktiga datorer och framförallt minnen har blivit jättedyra tänkte jag att det skulle vara kul att prova på att programmera microcontrollers igen. Så jag har skaffat ett gäng sådana tillsammans med olika periferi-enheter såsom knappar, lysdioder, displayer och olika typer av sensorer. De flesta av mina microcontrollers tillhör en och samma familj: ESP32 från en firma som heter Espressif. Dessa kretsar kännetecknas av att de flesta av dem har inbyggt WiFi och många av dem har dessutom inbyggt Bluetooth och s k 802.11.15 radio som används för Zigbee och Thread protokollen. Thread är det nya, häftiga protokollet som tillsammans med Matter på nästa nivå utgör grunden för det Smarta Hemmet. IKEA har gått över från sin serie “Trådfri” som baserades på Zigbee protokollet till detta nya Matter/Thread och deras nya Hubb kallas Dirigera. Av IKEA kan man nu köpa prylar som GRILLPLATS (en styrbar ström-plugg), TIMMERFLOTTE (en termometer och luftfuktighetsgivare), KAJPLATS (styrbara lampor) m fl. Och det fina med Matter/Thread-prylar är att de fungerar ihop utan att de behöver komma från samma tillverkare. Därför tänker jag mig att själv skapa sådana prylar med hjälp av microcontrollers.

ESP32-familjen av microcontrollers kan programmeras på olika sätt: Man kan antingen gå på tillverkarens egna utvecklingsmiljö – Espressif IDE – eller så kan man gå på Arduino’s IDE som har massor med bra bibliotek (drivrutiner hade det kallats om det var en dator) för periferi-enheter, eller, om man främst vill göra något som fungerar bra ihop med HomeAssistant så använder man med fördel ESPHome. Och ESPHome är ett jätteintressant sätt att programmera eftersom det inte liknar vanlig, proceduriell kod, utan mer en beskrivning av typen “jag har den här och den här prylen och de är kopplade till varandra på det här sättet, och nu vill jag att när pryl a rapporterar det här så skall detta hända”. Denna beskrivning skrivs i ett språk som kallas YAML (Yet Another Modelling Language) och det är precis samma språk som används när man beskriver hur en Docker container skall startas upp. Det är bara en sak som gör det lite klurigt: Antalet mellansteg först på raden är en del av syntaxen, eller uttryckt på ett annat sätt: Det spelar roll hur långt in på raden varje kommando börjar. Och här gör man bort sig med jämna mellanrum…

Så vilka experiment har jag då gjort hittills? Om vi bortser från den obligatoriska “få en lysdiod att blinka” så har jag gjort en display (med e-Paper teknik) som visar dagens elpriser plus en väderleksprognos. Den är faktiskt väldigt användbar där den står i köket och hela tiden visar aktuellt pris och kommande priser. För att kunna driva den med ett batteri så sover den mest hela tiden och vaknar upp varje kvart för att flytta en markör “NU” för var vi är i prisdiagrammet och vaknar också ett antal gånger per dygn för att uppdatera väderprogrosen och sist men inte minst en gång per dygn för att hämta nya elpriser från Nord Pool integrationen i HomeAssistant.

Nästa experiment var att göra en musikspelare som ansluter till Music Assistant – en serverprogramvara som också har koppling till HomeAssistant. Där fick jag, tillsammans med ChatGPT en fungerande uppkoppling och där en billig touch-display visade album-bild och spelarkontroller. Där behövde jag också använda en extern digital-till-analogomvandlare eftersom detta inte är inbyggt i microcontrollern.

Det senaste experimentet var att se om det gick att göra en webserver av en microcontroller, och det korta svaret är “ja då”, men i praktiken är det ett inte speciellt bra sätt att göra en webserver på, åtminstone inte om den skall betjäna mer än ett par användare.

Nu tar jag nästa steg och ser om jag kanske skall hitta ett sätt att få microcontrollern att lyssna på ett kontrollord (typ “Hey Google”, fast ett annat ord) och sedan starta en inspelning. Jag tänker mig att om detta fungerar skulle den få sitta i badrummet i källaren för i duschen får jag ofta bra tankar som jag vill spara ner så fort jag kan så att jag inte glömmer 🙂

Några tankar om AI

Det är en spännande tid vi lever i! Och då tänker jag inte främst på den spännning som ligger i att inte veta exakt vilka dumheter som Donald Trump tänker hitta på idag, utan på den spänning som har uppstått pga AI’s inträde i världen.

När vi talar om AI idag menar vi i allmänhet s k “Large Language Models” (LLMs) vars funktion när det gäller det skrivna ordet kan beskrivas som en “sannolikhetskalkyl över vad nästa ord i en mening borde vara utifrån all samlad kunskap och den input (prompter och kontext) som modellen har fått”. Det låter abstrakt och helt ärligt – ganska obegripligt, men på något underligt sätt så fungerar det. Just nu finns det en handfull företag som dominerar den här marknaden – OpenAI (med ChatGPT), Anthropic (med Claude), Meta och X (med Grok). Alla dessa är amerikanska. Sedan har vi Deepseek i Kina och Mistral i Frankrike. Kännetecknande för alla dessa i nuläget (hösten 2026) är att alla går med förlust men lovar guld och gröna skogar inför framtiden och investerarna tror ännu så länge på detta.

Eftersom LLMs behöver groteskt stora datorer (kapacitetsmässigt, inte minst) för att köra tillräckligt bra och tillräckligt snabbt, så går idag nästan all produktion av minne och en viss typ av processorer till AI-industrin, vilket har fått som konsekvens att det har blivit både svårt och enormt mycket dyrare att köpa andra prylar som kräver minne och datorkraft. Som ett exempel kan nämnas att en Raspberry Pi 5 med 8GB RAM som för ett par år sedan kostade strax över 1000 kronor idag kostar ca 2500 kronor. Exakt samma hårdvara. Detsamma gäller om man dristar sig till att köpa en ny minnessticka eller mer RAM till sin dator. Men detta är bara en liten konsekvens jämfört med den enorma konsekvens som kan bli följden av att AI numera är ganska bra på att skriva programvara. Ett exempel på detta är att en grupp entusiaster fick för sig att låta AI skriva om hela Adobes dyra programvaror såsom Photoshop, Lightroom, After Effects, Premiere med flera från scratch i språket Rust och göra dem tillgängliga gratis för alla och envar (det är open source). Inte bara för de som kör Windows eller MacOS på sin dator (som Adobe gör), utan även för de som kör Linux. De är inte helt klara än – man kan beskriva det som att de är i alfa-fasen – men om allt går som det skall ända in i mål kommer det vara svårt att se hur Adobe kan överleva. Adobe tar mer än 1000 kr per månad för att “hyra” dessa program. Och som om inte det var tillräckligt imponerande att AI med lite guidning har lyckats med detta, så blir det ännu mer imponerande när man inser att man nått detta stadium av utvecklingen på bara några veckor – något som har tagit Adobe med sina professionella programmerare 10-20 år! I sin förlängning är detta både mycket lovande och mycket skrämmande. Om det blir möjligt att kopiera varje dyrt betalprogram och göra det tillgängligt helt gratis, så är det svårt att se hur programvaruindustrin kan överleva. Och en hel generation programmerare kommer att behöva söka sig nya arbetsuppgifter.

Hur har jag själv använt AI? Längre än jag själv trodde, faktiskt. Jag har nu laddad hem hela min chatt-historik och där framgår att jag har chattat med ChatGPT sedan maj 2025.

I början var det mest som ett alternativ till Google sök, men nu är det nästan som en “kompis” och “kollega” som hjälper mig med allt möjligt, inte minst att programmera microcontrollers och att göra saker som har med mitt “HomeLab” – alltså alla mina datorer och nätverk – att göra. Och vi skall inte glömma att det är tack vara AI som jag idag har en jättesnygg (om jag får säga det själv) web-sajt för min samling av gamla handdatorer – pdamuseum.eu.