Embedded systemering

Eksempelbilde på embedded systemering, blinkende lys

I dag snakker mange om koding – og det finnes mange eksempler tilgjengelig på forskjellige plattformer. Enten det er PC eller Mac-basert, eller mindre enheter som Arduino og Raspberry. I dette blogginnlegget ønsker jeg å synliggjøre noe enda mindre, ikke minst gi noen eksempler på bruksområder.

Hva er embedded systemering?
Hvorfor velge embedded system?
Noen kjekke bruksområder
Så hvor begynner vi?
Til slutt

Hvorfor velge embedded system

For meg er forenkling nøkkel til å få til noe som er robust og varer lenge. Jo færre deler man har, dess mindre har man som kan gå i stykker. Et embedded system velger man fordi det foreligger et konkret behov eller en funksjonalitet som vi ønsker å realisere, alt annet er bare støy og strengt tatt unødvendig.

Vi ønsker noe som skal klare seg selv og ikke må overvåkes hele tiden, noe som bare skal virke – noe som aldri feiler.

Programvare er ikke utsatt for slitasje.

Se for deg girsystemet på sykkelen din. Etter et år med sykling til og fra jobb, uten regelmessig vedlikehold (overvåking), så skjer det en dag. Giret virker ikke lenger.

Slik er det ikke med programvare. Programvare følger bare en oppskrift, den oppfører seg likt hver gang – om igjen og om igjen og om igjen. I programvare finnes det ingen slitedeler, derfor utsettes den heller ikke for slitasje.

Så hvorfor slutter programvare å virke?

Alt av elektronikk er skjørt. Jeg tror de aller fleste velger å ta av seg smartklokken sin når de skal dusje dersom det ikke står eksplisitt at den skal tåle å være under vann. For har du først fått en vannskade kan du være heldig å få liv i den igjen etter en god skylle/tørkerunde. Likevel har du ingen garanti for det. Har du først kortsluttet elektronikk, så er sjansen stor for at du har fått oppleve at disse små, svarte, dippeduttene egentlig bare er komprimert røyk.

Statisk elektrisitet kan også være skummelt for elektronikk, og jeg tror veldig mange har opplevd det, særlig på vinterstid når luften er tørrere og statisk ladning kan bygges opp bare ved å gå på et teppelagt gulv. Vi merker det som et lite stikk når vi tar på noe av metall, og noen ganger kan det til og med komme en liten gnist. Selv om denne utladningen er helt harmløs for oss, kan den være katastrofal for ulike typer elektronikk.

Slitasje kommer veldig ofte i form av noe mekanisk, ref. girsystemet jeg nevnte tidligere. For en stund siden var det også mye skriverier om mobiltelefoner som ikke tåler å bli bøyd, alt som involverer bevegelige deler vil endre karakter over tid. Så skal vi håndtere elektronikk, da må vi også håndtere omgivelsene. Så enkelt er det. Elektronikk er enkelt, enten virker det eller så virker det ikke. Det finnes ikke noe “virker litt” tilstand når det gjelder elektronikk.

Når vi først har vært innom sykkeltemaet, hva med å se for seg en sykkelhjelm med blinklys og kanskje en retningsindikator. Eller når vi først kommer inn på lys. Det er jo veldig kjekt med lys inni kjøleskapet (spesielt når det er tid for litt nattmat), men hvorfor har vi ikke også nattlys i skapet hvor tallerkene står? Når vi snakker om skap. Hvorfor har vi ikke en liten dings som sørger for at skapet der alt snopet er lagret, ikke kan åpnes når ungene er alene hjemme?

Listen kan jo fortsette i det uendelige, men tenker at resten kan være opp til deg å finne ut av.

Så hvor begynner vi?

Listen er lang over morsomme måter du kan komme i gang med embedded design, et tips er å vende blikket mot noe som rett og slett bare er morro. Det er en umulig oppgave å gå gjennom alt som finnes, men noen tips kan dere få på veien.

Minikontrollere (MCU) er en populær inngangsport og det finnes mange varianter å velge mellom. For å ta noen; Atmel, Microchip, ESP32, Blackfin, Sharc og min favoritt STM32. Det som kan være greit å merke seg er at flere av disse typene også bruker samme type prosesserings enhet internt (ARM), med samme prosesseringsenhet er det mulig å bytte mellom forskjellige typer – selv om det er enklest å holde seg innenfor samme familie.

De fleste familier med minikontrollere tilbyr også såkalte evalueringskort. Disse er som ofte rimelige og kommer gjerne med mange forskjellige applikasjoner for å kunne demonstrere forskjellige funksjoner. Enkelt forklart så kan man se på evalueringskortene som en LEGO-modell, du har en eske som inneholder alt det du trenger for å bygge en ferdig modell. Du kan alltids sette bitene sammen slik at det blir noe annet, eller koble dem sammen med andre legoklosser for å skape noe helt nytt.

STM32 baserer seg på ARM i forskjellige varianter, og det finnes mange å velge mellom her. STM32 gjort en god jobb med en såkalt HAL (Hardware Abstraction Layer), som igjen gjør at programmer fra en STM32 MCU enkelt kan flyttes til en annen STM32 MCU uten store endringer. Det forenkler jobben, og hvem vil vel ikke ha det enkelt? Her får du også flere inngangsporter, tre favoritter kan trekkes frem:

Som nevnt er det relativt enkelt å flytte applikasjoner fra en STM32 MCU til en annen, derfor kan det være smart å begynne med en Discoveryvariant, som er noen hakk over det du egentlig trenger, og nedskalere i etterkant til for eksempel en Nucleo – som tar bort alt du ikke trenger.

I første omgang ser du etter:

  • Digitale inn og utganger, kalt GPIO (General Purpose Input/Output).
  • Analoge inn og utganger, kalt ADC (Analog Digital Converter) og DAC (Digital Analog Converter).

Det kan være verdt å merke seg at flere av disse evalueringskortene også gir deg muligheten til å koble på andre ting via et standard grensesnitt. Det kunne vært utvidelsesmoduler fra Arduino, eller kombinere Nucleo kort med ferdige sensor løsninger.

Dette trenger du for å lage et embedded system til eksempler nevnt i denne bloggen:

  1. En PC (har kun erfaring fra Windows)
  2. Et utviklingsmiljø STM32CubeIde passer perfekt.
  3. Et Evalueringskort – jeg hadde begynt med et Discovery kit.
  4. LED Lys, (og kanskje et akselerometer – denne viser bevegelse i typisk tre akser). Finnes og som Arduino moduler.
  5. Sensor for å se om en dør er lukket, finnes og som Arduino modul.
  6. En servo motor for å aktivere en dørlås, finnes og som Arduino modul.

Vi holder det enkelt – og det trenger ikke være vanskelig.

Sjekk igjen opplæringsportalen til STM32, her finner du oppskrifter på det meste, og du får enkle beskrivelser for hvordan du kan komme i gang med forskjellige evalueringskort.

Med STM32CubeIde installert på en PC, en USB kabel tilkoblet et evalueringskort ( Nucleo boards eller Discovery kits) så er du i gang. Samtlige evalueringskort har minst en eksempel applikasjon tilgjengelig i STM32CubeIde. Last inn den som passer – og vipps!

Deretter:

  1. Kompiler – gjør om den lesbare koden til “maskinspråk” som kan lastes ned til evalueringskortet.
  2. Last ned – lagre programmet på evalueringskortet.
  3. Kjør – start programmet på evalueringskortet.

Viktigst av alt – ha det gøy!