Mikrokontroller

En mikrokontroller er en kompakt mikrodatamaskin som kan brukes til å styre funksjon og drift av innebygde systemer i for eksempel biler, roboter, kontormaskiner, mobiltelefoner, hvitevarer og nesten alt som finnes av elektriske eller elektroniske apparater. I likhet med større datamaskiner inneholder mikrokontrolleren typisk en prosessor, minne og forskjellige periferienheter.

De første mikrokontrollerne kom på syttitallet. På dette tidspunktet var mikrokontrollerne stort sett tenkt brukt til lommekalkulatorer. Etter hvert fant man stadig flere bruksområder, for eksempel klokker, mikrobølgeovner og bensinpumper.

Flashminne

På nittitallet ble det lansert avanserte mikrokontrollere som hadde elektrisk slettbare og programmerbare ROM-minner, for eksempel flashminne. Det unike med disse mikrokontrollerne var at de kunne programmeres, slettes og omprogrammeres med hjelp av bare elektriske signaler. Mange av mikrokontrollerne vi bruker i dag, fra for eksempel Atmel og Microchip, bruker flashminneteknologi. Andre store produsenter av mikrokontrollere er Texas Instruments og Intel.

Dagens mikrokontrollere, som AVR og PIC, blir stadig mindre, men også stadig kraftigere. Det finnes mikrokontrollere som er så små og billige at man bruker dem i tannbørster, leketøy og klær.

Arduino

Tradisjonelt sett har bruken av mikrokontrollere vært forbeholdt profesjonelle. De senere årene har man sett en oppblomstring av verktøy og miljøer (såkalte DIY-miljøer – «gjør det selv»-miljøer) som lar hobbybrukere skape relativt kompliserte systemer på «gutterommet». Et av de mest populære systemene for å utvikle elektroniske prototyper eller hobbyprosjekter kalles Arduino.

Arduino er en plattform for utvikling av elektroniske kretser, basert på maskin- og programvare som er enkel å bruke. Du kan bruke Arduino til å lese informasjon fra sensorer, tolke informasjonen og styre ting som lys, motorer, skjermer, eller kople den til internett, sende e-poster eller automatisk laste opp bilder tatt av et kamera. Det er i grunn bare fantasien som setter grenser for hva du kan bruke Arduino til. Hvis en ting på noe vis er tilkoplet eller kontrollert av strøm, kan Arduino gjøre ting med den.

Arduino ble utviklet i Italia, på et institutt for design, i 2005 med det formål å være en enkel måte for studenter og nybegynnere å lage enkle elektroniske innretninger på. Arduino er en videreutvikling av en lignende platform som het Wiring og et programmeringsspråk som het Processing. Ambisjonen til menneskene bak Arduino var at man med det nye systemet skulle begynne å lære fra dag én ved å kople opp kretser, i stedet for å først måtte lære seg algebra eller avansert programmering.

Billig

Fordelen med Arduino fremfor tradisjonelle mikrokontrollere er at komponentene er billige, dokumentasjonen er god, og man trenger ikke være ingeniør eller ha masse erfaring med elektronikk, lodding og etsing av kretskort for å lage avanserte systemer som virker. I tillegg er det mange nettforum hvor man kan stille spørsmål og få svar.

SparkFun RedBoard

Det brettet vi skal jobbe med i dette kapittelet og i prosjektoppgaven, heter SparkFun RedBoard og er en del av et sett fra et selskap som heter SparkFun. Brettet er svært likt Arduino Uno og består av en mikrokontroller, en USB-inngang, 14 digitale input/output-pinner, seks såkalte PWM-outputer, seks analoge inputer (som også kan brukes som output), en 16 Mhz krystalloscillator, en USB Mini-B-inngang, strømforsyning (mellom 7 og 15 V), en ISP-header (for bruk med såkalte shields) og en resetknapp.

Input og Output. Sensorer og aktuatorer

En sensor er i denne sammenheng en input, noe du kopler til en Arduino. Det er en elektronisk krets som kan fortelle noe om sine omgivelser og gi beskjed om dette til Arduinoen. Det finnes svært mange forskjellige sensorer man kan kople til en Arduino. Man kan måle temperatur, fukt, lyd, lys, magnetisme, elektrofelt, avstand, bevegelse, trykk og mye mer. Man kan kople seg til nettet eller andre enheter via WiFi, Ethernett, Bluetooth, RF eller mobilnettet. I tillegg kan man kople til andre typer input, som for eksempel et tastatur, et kamera osv.

En aktuator er en output, en komponent som gjør elektriske signaler om til mekanisk bevegelse. Eksempler på aktuatorer er servoer og motorer. De fleste aktuatorer krever mer strøm/spenning enn det Arduino kan levere. I disse tilfellene må man bruke en forsterker av noe slag, for eksempel en transistor eller et relé.

Sensorer og aktuatorer

Både sensorer og aktuatorer kan være enten digitale eller analoge. Det finnes enheter som er tilpasset Arduino, og som bare kan plasseres på brettet, mens andre må koples opp som en egen krets før de fungerer.

Det finnes også andre typer enheter enn sensorer og aktuatorer, for eksempel lysdioder, kodetastaturer, høyttalere, displayer osv.

Inventor's Kit

For å komme i gang med Arduino er det enkleste å kjøpe et startsett som inneholder det man trenger av sensorer og andre komponenter. Oppgavene i dette kapittelet tar som sagt utgangspunkt i Sparkfun.com sitt Inventor's Kit, men det er også nødvendig å kjøpe enkelte komponenter i tillegg. Der dette er tilfellet, nevnes det i oppgaveteksten.

Inkludert i settet fra SparkFun får man alt man trenger for å kople opp 16 kretser som lærer en hvordan man kan lese sensorer, vise informasjon på en LCD-skjerm, drive motorer og mer. Man trenger ikke noen tidligere erfaring med programmering eller elektronikk for å bruke dette settet, og det krever heller ikke at man kan lodde. Med i settet følger en bok med trinnvise instruksjoner for hvordan man kobler hver enkelt krets med de medfølgende delene. Boka inneholder forklaringer av relevant kode og feilsøkingstips hvis noe går galt.

Kretsene som kan kobles opp

  • Krets 1: Blinke en LED

  • Krets 2: Lese et potensiometer

  • Krets 3: Kjøre en RGB LED

  • Krets 4: Kjøre flere lysdioder

  • Krets 5: Trykknapper

  • Krets 6: Lese en fotoresistor

  • Krets 7: Lese en temperatursensor

  • Krets 8: Kjøre en servomotor

  • Krets 9: Bruke en bøyesensor

  • Krets 10: Lese av press ved hjelp av et mykt potensiometer

  • Krets 11: Bruke en buzzer

  • Krets 12: Kjøre en motor

  • Krets 13: Bruke releer

  • Krets 14: Bruke et shiftregister for å få flere utganger

  • Krets 15: Bruke en LCD

  • Krets 16: Lage et minnespill

Arduino prosjektoppgave

Det anbefales at alle oppgavene i SIK-guiden utføres før man setter i gang med prosjektoppgaven. Det vil være en fordel å ha noen ekstra sett tilgjengelig, slik at man kan ha et bord tilgjengelig hvor man kan teste mindre elementer av større, mer kompliserte oppgaver. Det anbefales at man har ekstra koblingsledninger tilgjengelig utover det som følger med. Helst bør man kjøpe et sett med ekstra lange koplingsledninger og et sett med han/hun-koplingsledninger. Det vil også være lurt å ha noen større koblingsbrett tilgjengelig, eventuelt flere små som kan koples sammen.

Plattform

Som nevnt innledningsvis er Arduino en plattform for utvikling av elektroniske kretser. Med plattform mener vi her en kombinasjon av flere ting, som i dette tilfellet hardware, det vil si forskjellige fysiske komponenter, og software – programvare på en datamaskin. Disse i kombinasjon utgjør en helhet, et «system» som legger til rette for at du kan utføre de oppgavene du trenger å gjøre.

Arduino IDE

Programvaren til Arduino heter Arduino IDE. IDE står for «Integrated Developer Environment», et vanlig uttrykk innenfor programvareutvikling. En IDE er en type programvare som brukes til å skrive annen programvare. Den består typisk av en teksteditor, en kompilator og en debugger. Vi kommer tilbake til hva dette betyr senere. Det er greit å være klar over at det finnes andre IDE-er man kan bruke, men Arduino IDE er nybegynnervenlig og har alle funksjonene man trenger på dette tidspunktet.

Arduino IDE er et program man må laste ned og installere på sin egen PC. Dette gjøres ved å gå til https://www.arduino.cc/en/Main/Software. Her vil man kunne velge riktig installasjonsfil for sitt operativsystem.

I Arduino IDE skriver man instruksjoner som forklarer mikrokontrolleren hva den skal gjøre med de forskjellige tingene som er koplet til. Hvis man kopler en diode til mikrokontrolleren, er det ikke sånn at den automatisk vet at man ønsker at dioden skal lyse – man må skrive kode for å få mikrokontrolleren til å gjøre det man ønsker. Kode skrives i noe som kalles et programmeringsspråk. I Arduino kalles denne koden for en skisse eller en sketch.