Det er ved at være længe siden, jeg sidst har skrevet om mine elektronikprojekter; men i den seneste tid har der flere gange været spørgsmål, der relaterer til "mine" emner, så nu er det vist på tide med en opdatering.
Sidst, jeg skrev en masse, er ved at være 12 år siden, og i mellemtiden er der godt nok sket meget. Min oprindelige plan den gang var at bruge billige Arduino Nano print til at styre lys i mine huse, og så bruge en stribe Raspberry Pi til at styre Arduinoerne. Arduinoerne skal jo programmeres gennem en USB port, mens en Raspberry Pi kan kobles direkte på et netværk og dermed fjernstyres. Hver Raspberry Pi kan styre en stribe Arduinoer gennem en USB hub, så på den måde ville man kunne opdatere sine Arduinoer via nettet ved at logge in på Raspberry Pien og opdatere de Arduinoer, der er koblet på den. Ideen er naturligvis, at det skal være muligt at styre sine Arduinoer uden at skulle kravle rundt under anlægget, hver gang der skal opdateres eller ændres noget.
Well - det var planen. Jeg nåede heldigvis ikke at få den implementeret for alvor, for i mellemtiden kom der en omfattende global mangel på Raspberry Pi - under Corona epidemien var de stort set umulige at opdrive, og de gik til voldsomme overpriser nogle steder. Og som tiden gik, dukkede der andre alternativer op, der gjorde det muligt at lave endnu smartere løsninger. En ny spiller på området dukkede op fra Kina: Det store gennembrud kom med ESP8266, der siden blev erstattet af en kraftigere udgave med navnet ESP32. Der er ikke tale om en kopi af noget - det er en IoT (Internet of Things) løsning, der er udviklet helt fra bunden af firmaet Espressif. Og den har taget verden med storm.
Også mig. 
Men før jeg begynder at fortælle om alle fortræffelighederne ved dette system, vil jeg starte med at rydde en meget udbredt misforståelse af vejen: Mange steder på Internettet kan man se ESP32 omtalt som en "Arduino" - men det er den ikke. Der er tale om et alternativt økosystem - med en lille tvist: Espressif har givet mulighed for, at man kan programmere og bruge ESP32 i et Arduino miljø ved at lave en stor programpakke, der kan installeres i Arduino udviklingsværktøjerne. Når man har gjort det, kan man progammere og bruge sin ESP32 stort set som en avanceret og hurtig Arduino - og stort set uden at skulle lære nyt. Den er meget, meget nem at gå til, hvis man allerede kender Arduino.
Men Arduino modellen er kun een ud af mange måder at bruge en ESP32: Den "programpakke", jeg omtalte ovenfor, kaldes blandt progammører for et SDK (Software Development Kit), og dem har Espressif mange af til ESP32. Vil man bruge sin ESP32 som en Arduino, skal man bruge det SDK, der hedder ESP-Arduino. Men der findes også et SDK med navnet ESP-IDF, og det skal man bruge, hvis man vil have fuld adgang til alle de avancerede muligheder i ESP32eren. Valget er frit.
Så selvom der er mange, der omtaler ESP32 som nok en Arduino blandt mange andre, vil jeg anbefale, at man husker, at der er tale om et helt andet produkt - selvom det passer fint ind i Arduino økosystemet.
Den nye spiller
Espressif blev stiftet i Kina i 2008 af en ung mand fra Singapore. I begyndelsen som et meget lille firma, men med udviklingen af ESP serien begyndte det at vokse eksplosivt, og det er i dag den femte største producent af microcontrollere i verden. De fremstilles i øvrigt hos TSMC i Taiwan, så globaliseringen har også tag i Fjernøsten.
ESP32 er i en helt anden liga end den klassiske Arduino. Den er i bund og grund en SoC (System on a Chip), hvilket betyder, at man har samlet en hel computer på en enkelt chip; det gør man normalt ikke - en almindelig computer består normalt af mange chips centreret omkring en CPU. Men med en SoC har man samlet det hele på een chip incl. CPUen, og det giver mange fordele i forhold til størrelse og pris.
Hvad kan den så? Jo, først og fremmest er der tale om en meget større og kraftigere computer end den klassiske Arduino. Den har meget mere hukommelse, og den er meget hurtigere. Det er let at forstå for de fleste; men den har f.eks. også mange flere PWM controllere og interrupts - og så er der vist mange, der begynder at falde af. Men det er ikke ligegyldigt: Eksempelvis er der mange, der bruger en Arduino til at styre servoer med noget ekstra hardware, der kører I²C, og det kan Arduinoen sagtens styre. Der findes også et DCC bibliotek, der gør det nemt at tilføje DCC til sin Arduino, så den kan bruges på modelbanen; men prøver man den logiske løsning med at kombinere en servostyring med et DCC system, vil man hurtigt opdage, at I²C og DCC bibliotekerne begynder at slås om de samme interrupts på Arduinoen, og det kan være meget svært at få til at fungere.
Her kommer det som en befrielse, at ESP32 har langt mere hardware, så på denne platform er det slet ikke noget problem at kombinere de to funktioner. Faktisk har de fleste ESP32ere to CPU kerner, så man kan bruge den ene til tidskritiske funktioner, og den anden til brugervendt funktionalitet. Man kan også beskrive kraften på en anden måde: Mange kender controlleren DR5000 fra det nu hedengangne Digikejs - men det er måske ikke alle, der ved, at det netop er en ESP32, der er kernen i dette system. Firmaet YaMoRC - det ejes af den udvikler, der lavede DR5000 til Digikejs - har lavet en opgradering af denne, så den får meget mere saft og kraft. Køber man denne, vil man opdage, at opgraderingen består af en nyere og stærkere ESP32, der erstatter den gamle. Men det siger lidt om kraften i en ESP32, at den kan trække så stort et system.
Foruden det indlysende - at den har mange flere kræfter - har ESP32 også en række andre fordele: Først og fremmest springer det i øjnene, at den har både WiFI og Bluetooth (der fåes enkelte modeller uden), hvilket giver helt nye muligheder. Hvor jeg ovenfor talte om at bruge en Raspberry Pi, fordi den kan kobles på et kablet netværk, kan man koble enhver ESP32 direkte på et WiFi netværk, og på den måde fjernstyre den fra en computer eller en telefon. Det er smart, og det gør det meget lettere at vedligeholde sin løsning. Selv opdatering af software kan klares via WiFi: ESP32 har OTA (Over The Air) opdatering, så man kan uploade sin nye software via WiFi i stedet for et USB kabel. Prøv at tænke på, hvor meget det kan betyde for en chip, der sidder på et meget utilgængeligt sted på modelbanen. 
Det bedste af det hele er, at det er relativt nemt at komme i gang med disse avancerede muligheder: De forskellige SDKer har masser af support for disse funktioner, så man behøver ikke skrive ret meget kode selv. Omend det naturligvis kræver et stigende niveau af viden og forståelse, jo mere avanceret løsning man ønsker at skabe.
Og så er der det med prisen: Den er også i orden, en ESP32 koster sjældent meget mere end en tilsvarende Arduino, så man får stort set de ekstra kræfter helt gratis. Jeg bruger pt. en del ESP32 S2 Mini (se nedenfor) - den kan i bedste fald købes i Kina til omkring een dollar - det vil sige under 7,00 DKK for en lille supercomputer.
Mange varianter
I forhold til Arduino skal man vænne sig til et andet produktsortiment, når man begynder at kigge på ESP32 - og ikke mindst kende svaret på spørgsmålet: Hvad er en ESP32? Svaret er ikke helt så indlysende, som man skulle tro.
I første omgang er en ESP32 naturligvis en chip: En lille sort plasticting, der skal loddes på en printplade. Dem laver Espressif, og de kaldes for SoC - System on a Chip. Men så laver Espressif også noget, de kalder moduler - og det er nok i virkeligheden dem, de fleste forbinder med ESP32. Endeligt kan man få noget, de kalder developer boards: For mange hobbyfolk vil det nok først og fremmest være dem, man vil stifte bekendtskab med. Det er også dem, der minder mest om en Arduino; men det er til gengæld ikke noget, der normalt fremstilles af Espressif selv - de laver SoC og moduler, men overlader de mere driftsklare løsninger til andre virksomheder.
Hvordan ser de så ud? SoC udgaven ligner en microchip som de fleste andre: Herunder er vist en ESP32 S2 Mini, og SoC er chippen midt på printet:
ESP32 S2 Mini er ikke fremstillet af Espressif, den er udviklet af et firma ved navn Wemos. Men det er en meget populær udgave, som jeg også er begyndt at bruge en del. Læg mærke til antennen i toppen af printet: Den er kritisk for at få WiFi og Bluetooth, og man har selv ansvaret for at få den lavet rigtigt, hvis man bruger SoC udgaven af ESP32. Selvom der er en del vejledning i databladet til chippen.
Derfor er der mange, der foretrækker modul udgaven af ESP32: Her har Espressif lavet en større del af arbejdet på forhånd (incl. antennen), så den er lettere at gå til. På billedet herunder kan man endda se, at der også er et stik til en ekstern antenne, hvis man ønsker bedre dækning.
Langt de fleste brugere køber dog et development board som denne meget populære NodeMCU:
Her går modulet igen - men det er monteret sammen med en masse andre komponenter, så man f.eks. har et USB stik, hvor man kan tilslutte sin computer, når ESP32eren skal programmeres. Og først her begynder det for alvor at ligne en Arduino, som vi kender dem.
Køber man en ny computer i dag, vil mange nok vælge en Intel CPU: Men det er jo ikke nok - man skal også vælge hvilken variant, man gerne vil have. Og der er stor forskel på en Core i3 helt op til en Core i9, som de vildeste hedder; med mindre man køber en server variant - de hedder vist stadig Xeon. På samme måde med ESP32: Det er efterhånden blevet en stor familie med mange varianter, så man skal vælge "rå" computerkraft, antal ind- og udgange, mængden af hukommelse mm. I virkeligheden er det dog ikke så svært - med mindre man har specielle behov: De fleste opfylder alle almindelige behov.
Og så kan man fortsat nøjes med at bruge dem som om de "bare" var en almindelig Arduino: Jeg skriver "nøjes med", fordi man slet ikke udnytter alle mulighederne, hvis man bare ser ESP32 som en Arduino - men man kan gøre det, og det er en rigtigt god måde at komme i gang. Så kan man altid lære mere i takt med, at ens behov vokser.
Konkrete eksempler
Når tiden tillader det, vil jeg prøve at skrive mere om mine projekter med ESP32 - jeg forventer at komme til at bruge en meget stor mængde af dem på vores modelbane. I denne omgang vil jeg dog nøjes med at vise et par eksempler fra mit værksted.
Det første er en klassisk test opstilling med en NodeMCU som kerne:
Projektet her skal bruges til et diorama/test setup af en havnekaj. I midten ses en NodeMCU, mens man til venstre ser et micro SD card med tilhørende læser: Ideen er her, at man kan lægge lyde på kortet, som så skal kunne afspilles efter behov. ESP32 kan lave digital lydbehandling, og herefter kan lyden sendes via protokollen I²S til de to små klasse D udgangsforstærkere, der ses øverst til højre. Mit diorama har to små højttalere indbygget, så man kan få mågeskrig i stereo. 
På det næste billede er jeg i gang med et hus - mere præcist ser man bagdelen til en Artitec front - mere om det projekt senere. Huset er udstyret med en S2 Mini til styring af lys, så der bliver tale om en model med egen WiFi forbindelse. Fordelen er, at huset kun skal have en 5V strømforsyning for at fungere, så der bliver minimalt brug for ledninger på anlægget. Alligevel kan man tænde og slukke lyset i hvert rum for sig, og man kan skrue op og ned for lysstyrken, så huset ikke kommer til at oplyse hele gaden. Al denne styring foregår i første omgang fra en mobiltelefon, men senere bliver det koblet til resten af modelbanen, så det også kan styres med f.eks. DCC fra min ECoS. Stadig trådløst via WiFi. Det lyder lidt vildt, men det hele kommer til at koste under 50,- kr.
MVH
Lars

Søndag d. 2/11/2025 - 12:19
Skott
Ingeniør
Indlæg: 1.943
Fantastisk beskrivelse, Lars
Skønt, at du vil dele ud af dine erfaringer på denne måde! Ser frem til fortsættelserne
Med venlig hilsen
Skott