Jeg har vel et dusin forskjellige devkort basert på ESP32, men for denne sessionen skal jeg bruke et kort som ikke er selv-laget og som støttes av Espressif i Zephyr. Det gjør prosessen veldig mye enklere.
For å følge med så må du bruke Windows Subsystem for Linux (WSL2) med Ubuntu installert. Du kan også bruke Ubuntu direkte uten Windows, og jeg antar du klarer sortere ut hvilke deler du kan hoppe over.
Devkortet jeg kommer til å bruke heter ESP32-C6-DevKitC-1 som har en ESP32-C6-WROOM modul på seg i tillegg til en RGB LED. Du får helt sikkert dette til med et annet devkort også!
Oppdater Ubuntu
Du må holde systemet oppdatert, og gamle pakker kan skape trøbbel under installering av ting, så for din egen del kjør kommandoen sudo apt update ; sudo apt upgrade
før du går videre.
Installere nødvendige pakker
Dette er strengt tatt ikke nødvendig, men vi legger til Kitware sin repository for å få en nyere versjon av CMake.
|
|
Så bruker vi apt
til å installere noen nødvendige pakker:
|
|
Installere Python pakker og hente Zephyr
Vi begynner med å lage et virtuelt Python miljø. Da slipper du at Python installasjonen din blir tukla til og vice versa. Først installerer vi venv
pakken:
|
|
Så lager vi et virtuelt miljø:
|
|
Deretter aktiverer vi miljøet, og dette vil du gjøre hver gang før du bruker Zephyr:
|
|
Nå skal vi installere west
som er Zephyr sitt verktøy for “alt”:
|
|
Nå begynner vi å sette opp et workspace:
|
|
Vi er godt i gang nå. Vi fortsetter med å eksportere en Zephyr CMake pakke, som gjør det mulig for CMake å finne sakene du trenger for å bygge Zephyr applikasjonene dine:
|
|
Og til slutt installerer vi Python pakker som Zephyr krever med kommandoen:
|
|
Installere Zephyr SDK
Trodde vel ikke vi var ferdige alt? Nå skal vi hente SDK pakken, og den legger vi i mappen ~/zephyrproject/zephyr
med disse kommandoene:
|
|
Greia her er at Zephyr inkluderer bare host tools til Linux, og ikke til Windows. Så med å da bruke WSL2 så slipper vi mange andre skritt, og mindre stress. Vi liker mindre stress.
Så langt er installeringen helt generisk for Zephyr, og det vil være samme opplegget for de fleste andre supporterte mikrokontrollere.
Installere binærtillegg fra Espressif
Espressif har prekompilerte binærfiler som vi må linke mot for å bruke ESP32. Disse inneholder sikkert skumle ting som må holdes hemmelig (?) siden Espressif ikke publiserer dem. Uansett, skriv disse kommandoene:
|
|
Klapp deg selv på skulderen. Forhåpentligvis har du klar å klippe og lime alle kommandoene korrekt, og er derfor halvveis på reisen. En Martini med en grønn oliven er ikke feil nå - og ikke glem shaker med is og så strainer du av isen. Splendid.
Bygge Hello World
Hva passer bedre nå enn å kjøre en klassisk Hello World? Nei nettopp. Vi kopierer sample koden:
|
|
Går inn i hello_world
mappa:
|
|
Bygger koden:
|
|
Se etter teksten Successfully created esp32c6 image.
. Gratulerer, du har et image til mikrokontrolleren din.
Men det gjør ingen nytte på PCen din, så la oss flashe det til devkortet. Enkelt med west
:
|
|
What? A fatal error occurred: Could not connect to an Espressif device on any of the 0 available serial ports.
my a$$. Så så, det er ikke så ille som meldingen sier, men dersom du får denne meldingen så har vi noen skritt til som må gjøres.
Saken er den at Windows har oppdaget kortet ditt og lastet drivere i Windows for dette. Så det som må gjøres er å redirigere disse til WSL2, og for å gjøre dette enkelt så bruker vi noen ekstra programmer.
Først trenger vi usbipd-win
som kan installeres med kommandoen:
|
|
Det neste er et QoL tillegg da et GUI gjemmer bort avanserte ting for oss, og det kan du laste ned og installere herfra: alelec / wsl-usb-gui
Nå skal du finne kortet ditt i listen, og rett og slett høyreklikke og velge Attach to WSL
.
La oss teste flashing igjen:
|
|
Qapla’! eller den satt i sikringsboksen… Vi flasha kortet! La oss sjekke med monitor
:
|
|
Å-ja-da! Dette ser lovende ut!
|
|
Da er du klar til å utvikle spennende løsninger i Zephyr, og gjøre koden din litt mindre avhengig av hvilken mikrokontroller du har. Den store fordelen med Zephyr er jo nettopp at samme kodebase brukes mot mange mikrokontrollere og det er minimalt, om noe, behov for spesialkode.
G’luck mate!