Mer om Arduino: Debouncing

Et vanlig problem når man har en knapp eller en bryter av noe slag, er at verdiene går mellom høy og lav veldig mange ganger, veldig fort. Dette kan bli et problem og det er derfor vanlig at man kompenserer for det med å justere koden knyttet til knappen/bryteren. Måten dette gjøres på, er ved å sjekke flere ganger om knappen har blitt trykket på, og dette kalles debouncing. Det finnes egne biblioteker / egen eksempelkode man kan bruke for å komme rundt dette problemet. Det viktige er å være klar over at dersom dine kretser ikke oppfører seg helt som du forventer, kan det hende du trenger å implementere debouncing.

 Det er verdt å være obs på at det kan komme nye versjoner av disse bibliotekene fortløpende. Den siste versjonen tidlig i 2017 heter Bounce2.

Selv om vi i dette kapittelet og i prosjektoppgaven tar utgangspunkt i bare én bestemt type Arduino-bord, er det greit å være klar over at det finnes mange å velge i. I lenken under er en funksjonsmatrise som viser navnet på en del forskjellige bord og litt av hvilke egenskaper som kan skille dem. Trenger man høy klokkefrekvens, altså hvis man skal lage en krets hvor det er viktig at ting går fort, kan vi se at modellen som heter «Due», er den raskeste, med en CPU på 84 Mhz. Det er også den modellen med det største flashminnet.

Funksjonsmatrise: https://www.arduino.cc/en/Products/Compare 

Arduino shields

I tillegg til at man kan velge mellom forskjellige varianter av Arduino, finnes det også et bredt utvalgt av såkalte shields. Et shield er et eget kretskort som monteres oppå et Arduino-kort. Dette kretskortet lar deg utvide funksjonaliteten til Arduino. Et eksempel kan være et Ethernet-shield. Dette lar deg kople kretsen din til internett via en nettverkskabel. Andre shields kan styre DC-motorer. Det finnes shields med kamera og mikrofon, det finnes shields som er spesialisert for å å lage roboter, og veldig mange flere. Det finnes mange hundre typer shields.

Det er flere fordeler med å bruke shields fremfor å bruke tradisjonelle komponenter. Det mest åpenbare er at man sparer tid på å bygge kretser selv. Det andre er at de fleste shields har samme form og størrelse som selve Arduinoen. Dette gjør at man får en veldig kompakt enhet, uansett hva shieldets funksjon er. Det finnes shields som er en LCD touchskjerm, ikke ulik dem som brukes på mobiltelefoner. Andre shields kan ha støtte for mobile tjenester som SMS, GSM/GPRS og TCP/IP. Noen shields har som eneste funksjon å være et breadboard som kan monteres direkte oppå selve Arduinoen. Dette gir en svært kompakt enhet sammenlignet med å skulle plassere komponentene på et eget brett ved siden av. Det finnes også shields som gir deg WiFi-støtte, Bluetooth-støtte, osv. Det er også mulig å lage sine egne shields.

shield.png

Dokumentasjon og ressurser for læring

Kanskje den viktigste ressursen når man jobber med Arduino, er nettsidene til  Arduino: Arduino.cc. På denne siden kan man kjøpe komponenter, forskjellige Arduino-brett, byggesett av forskjellige slag, bøker og mer. Under fanen Learning finnes mye god informasjon, om man går inn på Tutorials, vil man finne flere trinnvise beskrivelser av forskjellige prosjekter man kan lære av. Hvis man ønsker å virkelig forstå prosjektene sine, kan man gå inn på Reference for å finne en forklaring på hva de forskjellige elementene og ordene (syntaks) i koden betyr. Det anbefales også å registrere seg på forumet, der man kan spørre om råd og hjelp.

Instructables.com

En annen meget god ressurs er nettsiden Instructables.com, som lar brukere dele prosjektene de lager selv. Vanskelighetsnivået på disse prosjektene er fra svært lav til svært høy. De fleste prosjektene kommer i form av en trinn for trinn-oppskrift, med komplett liste over alle nødvendige komponenter/utstyr, og har detaljerte bilder og ofte videoer som beskriver fremgangsmåten.

Grenseløs teknologi

Som en illustrasjon på hvor grenseløs denne teknologien er, kan det nevnes et prosjekt hvor man kombinerer Arduino og Minecraft. Det er utviklet et rammeverk for modifikasjoner til Minecraft som støtter kommunikasjon mellom spillet og den virkelige, fysiske verden. Et eksempel på dette kan være at man kan slå på lyset på nattbordet ved å trykke på en knapp i spillet eller spille av en lyd i spillet når noen går inn døren på rommet ditt. Det er bare fantasien som setter grenser.

Open Source

Helt sentralt for Arduino-«bevegelsen» er noe som heter Open Source. Dette er et begrep som kommer fra programvareutvikling, hvor tanken er at all kode skal være «fri» – den skal være tilgjengelig for alle, alle skal kunne endre på kode, alle skal kunne bidra, uansett formål. Operativsystemet Linux er et klassisk eksempel på dette. En motsetning til Open Source er såkalle proprietære løsninger. Her er koden eid av og tilgjengelig bare for den/dem som utviklet koden. Eksempel på dette kan være Microsoft Windows, programvare man typisk må betale for å bruke. Men det finnes også gratis programmer hvor koden er proprietær, det vil si at den ikke er tilgjengelig for andre.

Open source maskinvare

Når det kommer til Arduino, er det ikke bare programvaren som er Open Source, men også maskinvaren. Tanken er at også maskinvare skal være tilgjengelig, alle skal kunne undersøke den, gjøre forbedringer på den og dele den. Dette vil si at man kan laste ned tegningene og dokumentasjonen til en Arduino og gjøre endringer på selve elektronikken. Dette krever selvsagt kunnskap, men er et viktig bidrag til diskusjonene omkring Open Source og hvem som skal «eie» teknologien i samfunnet.

Fritzing

Fritzing er et program (åpen kildekode) som brukes for å dokumentere prosjekter og lage design av kretskort. Fritzing lar deg se hvordan kretsene er koplet både rent fysisk, men også elektrisk. Fritzing er utviklet for å gjøre det enklere å dele prosjekter. I applikasjonen finnes en egen «Share»-knapp. Fritzing er svært enkelt i bruk og følger mye av den samme tankegangen som vi ser i Arduino: Det skal være enkelt å komme i gang, det skal være morsomt, og det skal være lærerikt.

Ulike visninger

Fritzing har flere forskjellige visninger som hver tilbyr sine unike fordeler. Utgangspunktet er Breadboard View, og man kan enkelt plassere ut forskjellige komponenter og ledninger på/ved brettet, akkurat slik man gjør når man kopler opp en «ekte» krets. I tillegg har man to andre visninger. Den første er Schematic View. I Schematic View vises en tradisjonell tegning av kretsen din, av samme type som brukes i skolebøker. Denne visningen er svært nyttig for å lære seg å forstå skjematikk, noe som er essensielt i det å kunne lese dokumentasjon på kretsene du kommer bort i. Den andre visningen er Printed Circuit Board View, og som navner tilsier, er dette en visning som viser hvordan komponentene er koplet sammen, rent elektrisk. Du kan benytte dette som basis hvis du ønsker å lage ditt eget kretskort helt fra bunnen av. En annen nyttig funksjon i Fritzing er at programmet genererer en materialliste til deg.

 

Designe og dokumentere selv

En av de store fordelene med Fritzing er at selv amatører relativt enkelt kan designe og dokumentere kretser og bestille kretskort basert på en eksportert tegning fra Fritzing. Akkurat som med Arduino er det et stort hobbymiljø rundt Fritzing hvor man kan vise frem ting man har laget, eller spørre om hjelp. I tillegg kan man bestille printkort basert på det man har designet i Fritzing. Fritzing kan kjøres på Windows, Mac og Linux.

Utviklingen av DIY- og Open Source-bevegelsen

De siste årenes raske utvikling innenfor DIY-elektronikk kan sammenlignes med utviklingen av internett mot slutten av nittitallet. Engasjerte hobbybrukere fant en plattform hvor de kunne være kreative, dele og innhente informasjon, og det tidlige internett var i stor grad en stor tumleplass uten særlige begrensninger. Dagens situasjon, hvor hvem som helst med minimale forkunnskaper kan lære seg å lage en radio, en fjernkontroll til TV-en eller kanskje sin helt egen robot, kan hinte mot en fremtid hvor man ikke lenger nødvendigvis må kjøpe elektronisk «hyllevare», men heller kan sette sin egen vri på den teknologiske hverdagen. Man kan godt si at det pågår en demokratisering av teknologi hvor internett, Open Source, enkel tilgang på plattformer for prototyping av elektronikk samt 3D-printing står helt sentralt.

Alternative teknolgier innenfor DIY 8 makers

Raspberry Pi er en liten datamaskin på størrelse med et kredittkort. Den har USB-porter, HDMI, nettverksport, 512 MB RAM og en kortleser for SD-kort. SD-kortet benyttes som harddisk, og her kan man installere et operativsystem. Det finnes flere valg når det kommer til operativsystem, men mange velger Raspbian, som på mange måter kan regnes som det offisielle operativsystemet, i den forstand at det er bygget spesifikt for Raspberry Pi. Raspbian er en versjon av Linux og passer slik sett godt inn i landskapet omkring Open Source. Raspberry Pi er veldig mye raskere og har mye mer minne enn Arduino. Til gjengjeld er Arduino bedre når det kommer til prosjekter hvor man skal kople til mange sensorer og forskjellige outputs. Arduino er også mye gjerrigere når det kommer til strømforbruk.

I grove trekk kan man si at en Arduino er bedre egnet hvis hensikten med prosjektet er å kontrollere sensorer og utenheter, mens Raspberry Pi er bedre hvis prosjektet handler om å prosessere data.