ESP32 - den nye "Arduino"

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. Smile

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. Smile

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:

Billede

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.

Billede

Langt de fleste brugere køber dog et development board som denne meget populære NodeMCU:

Billede

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:

Billede

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. Smile

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.

Billede

__________________

MVH
Lars

Like 9 kan lide
Top

Picture

Skott

Ingeniør

Indlæg: 1.947

PB

Fantastisk beskrivelse, Lars

 

Skønt, at du vil dele ud af dine erfaringer på denne måde! Ser frem til fortsættelserne Smile

__________________

Med venlig hilsen

Skott

Like 0 kan lide
Top

Picture

TogSvendsen

Indlæg: 482

PB

Meget interessant. Er der nogle andre grund til det pludselige skift væk fra Arduino? Du plejede jo at være varm fortaler for Arduino.

Like 0 kan lide
Top

Picture

Lars Skjærlund

Rødovre

Webmaster

Indlæg: 4.255

PB  Blog  Hjemmeside

TogSvendsen skrev:
Meget interessant. Er der nogle andre grund til det pludselige skift væk fra Arduino? Du plejede jo at være varm fortaler for Arduino.

For mig er det ikke et pludseligt skift - det har været en glidende overgang gennem efterhånden mange år. Og jeg bruger stadigvæk Arduino nogle steder.

Men igen er det en lidt mærkværdig skelnen: For Arduino laver jo også "ægte" Arduinoer med ESP32 nu om dage, så når vi taler på denne måde, skal vi vel også afklare, hvilken slags Arduino, vi taler om, og hvem, der fremstiller den.

Det vigtigste ved Arduino platformen selv er vel deres fint udbyggede standard layout, der gør det muligt at lave en myriade af shields, der kan bruges på tværs af modellerne. For mit vedkommende er det bare aldrig noget, jeg har brugt ret meget.

Til gengæld får jeg lavet mine egne print fra bunden, og her er det meget lettere at lave et specielt modul baseret på et ESP32 modul end at skulle lave sin egen custom Arduino: Jeg får lavet print hos JLCPCB, og de har ganske mange ESP32 moduler på lager, klar til montering. De muligheder har man ikke med den "ægte" Arduino platform.

Men som du også kan se på fotoet ovenfor er størrelsen på nogle ESP32ere også en faktor: S2 Mini fylder ganske enkelt mindre og er mere velegnet til indbygning i modeller.

__________________

MVH
Lars

Like 1 kan lide
Top

Picture

HenningS

Roskilde

Indlæg: 46

PB

Jeg glæder mig til at se fortsættelsen. Specielt interesserer det mig meget, at få det integreret med DCC, således at jeg kan styre det med win-digipet

Den nye win-digipet har dog også fået en integration med MQTT. Måske det kan bruges i stedet for DCC. Jeg har allerede konfigureret en MQTT broker på en Rasberry PI jeg havde liggende.

Så bliver det spændende om jeg kan blive inden for de 255 ip-adresser, der er til rådighed på mit lokalnet. Tanken om at lave lokalnettet om er lidt skræmmende Smile

 

__________________

Med venlig hilsen

Henning

3-skinne med fokus på dansk Epoke III, men med kraftig tysk islæt, og enkelte fra andre epoker
CS3 (ikke plus) og CS2. En blanding af sporskiftedekoder og tilbagemelding fra flere producenter
Win-digpet 2025 premium. Intellibox 65000 til test og julebane
Medlem af MIST-Zealand

Like 0 kan lide
Top

Picture

Lars Skjærlund

Rødovre

Webmaster

Indlæg: 4.255

PB  Blog  Hjemmeside

Min plan er også baseret på MQTT - og så måske en DCC/MQTT gateway. Det sidste kan man lave selv, men der er også en del, der allerede har været der.

JMRI har også native support for MQTT.

Ellers har du ret med IP adresserne: Det kan blive en udfordring for nogen - men normalt er der absolut ingen hindringer for at lave endog meget store netværk, også privat. Det kræver blot, at man kan finde ud af at sætte det op.

En større udfordring er WiFi: Hvis man følger mine ideer her til dørs, kan man hurtigt ende med flere hundrede ESP32ere, der hver skal have en WiFi forbindelse (og en tilhørende IP). Det gør for det første MQTT overordentligt attraktivt - noget, jeg kommer til at skrive om senere - men det stiller også krav til ens netværk. Det er bestemt ikke alle små routere, der kan håndtere så mange WiFi klienter.

Hjemme hos os bruger vi Unifi: Det er top-professionelt - men også billigere end den Asus løsning, jeg brugte tidligere. Og de store Unifi access points kan sagtens håndtere op mod 500 klienter.

__________________

MVH
Lars

Like 0 kan lide
Top

Picture

Lars Skjærlund

Rødovre

Webmaster

Indlæg: 4.255

PB  Blog  Hjemmeside

En anden ting, der er værd at nævne omkring ESP32: Jeg har tænkt mig at lave en tidsserver til min modelbane. En server, der kan sende den øjeblikkelige tid til alle relevante enheder, speede tiden op, så et døgn kan overståes på et par timer, spole frem og tilbage i tiden, nulstille den mm. Og lære husene, hvordan de skal tænde og slukke lyset afhængigt af tiden.

Til det formål kan en dims som en Lilygo T-Display S3 være en fin ting: Den er rigtigt robust bygget, har OLED display og en touch skærm - og så er den også bygget over en ESP32, så den er meget lettere at programmere, når man først har lært dette økosystem at kende.

Billede

Jeg har også købt et par M5Stack Dial - de kunne være perfekte til at styre en drejeskive f.eks. Og er igen-igen bygget over en ESP32:

Billede

__________________

MVH
Lars

Like 1 kan lide
Top

Kommentarvisning

Vælg din foretrukne kommentarvisning og klik på "Gem indstillinger" for at aktivere dit valg.