2. Moment02 - Arduino grund

I detta moment så skall vi börja arbeta med våra Arduino / RedBoard.

2.1 Momentets innehåll och introduktion

Först så skall jag köra en kort presentation av Arduino som är hårdvaran som kommer användas i detta moment och sedan kommer vi följa ett material från SparkFun där vi lär oss att jobba med, och lär oss styra, ett gäng olika komponenter kopplat till våra Arduinos.

2.1.1 Arduino

Arduino är en utvecklingsplattform utvecklad som ett mikrokontrollerkort baserad på öppen hårdvara. Arduino är liten, flexibel och skall vara enkel att använda och en bra start för mindre projekt. En Ardunio kan t.ex. läsa av olika sensorer och sedan med hjälp av programmering avgöra vad som skall ske.

Tack vare att det är öppen hårdvara så finns det flera olika typer av mikrokontrollkort som fungerar på liknande sätt. Arduino som varumärke har flera olika versioner av sina mikrokontrollerkort, den som är intresserad kan kika här, och sedan finns det en enorm bredd av sensorer och tillbehör som kan användas ihop med kontrollkortet beroende på vilket projekt man har valt att utveckla.

Eftersom det är en öppen hårdvara så finns det idag ett antal olika varumärken som gör olika varianter av liknande mikrokontrollerkort såsom Genuino (gruppen som skapade Arduino blev osams och skapade två olika hårdvaror), RedBoard, NodeMCU, teensy mfl. Vi kommer i denna kursen att jobba med RedBoard från sparkfun och vi utgår ifrån deras paket som heter SparkFun Tinker Kit men vi kommer ändå hänvisa till Arduino.

Vi kommer också att lära oss att programmera vår Arduino, språket som används heter Arduino Programming Language, APL, och är baserat på C och C++.

2.1.2 Community och länkar

Arduino är väldigt populärt i makervärlden och det finns mängder av ritningar, tutorials och beskrivningar av projekt som olika personer har gjort. Det finns också samlingsplatser för de som brinner för att utveckla projekt med Arduino.

2.1.3 Arbetsmodell

I detta moment kommer vi att använda oss av material från SparkFun som är anpassat till de kit som de säljer. Det kit som vi har är inte 100% identiskt med det kit som används i materialet så jag kan inte garantera att alla övningar går att genomföra fullt ut, jag kör själv övningarna före de läggs upp här (iaf i början) men skulle någon övning behöva utgå så får vi helt enkelt ta bort den.

Materialet från SparkFun är väldigt genomarbetat och övningarna är både filmade, presenteras på webben och dessutom i en samlad PDF. Du väljer själv vilket material du väljer att följa.

Till varje övning så finns det tydliga beskrivningar hur du skall koppla de olika komponenterna samt en färdig kod som du kan testa och utgå ifrån.

Målet med detta arbetet är att du skall bli van att koppla ihop komponenter, lära dig hur komponenterna fungerar och även våga ändra i koden för att tillslut bli så duktig så att du kan skapa egna projekt.

Elektroniska komponenter är känsliga

Tänk på att vissa elektroniska komponenter är väldigt känsliga för stark ström vilket innebär att de kan gå sönder. Att komponenter går sönder och bränns är inte hela världen men vi behöver ju inte bränna komponenter i parti och minut. Utgå ifrån att strömmen in från datorn oftast behöver någon form av resistor för att inte bränna känsliga komponenter. En uppenbart trasig komponent behöver du inte lägga tillbaka i din låda.

Vi kommer lära oss mer om detta längs vägen.

2.1.4 Förberedelser

Innan du är redo att göra första uppgiften så behöver vissa saker finnas på plats.

2.1.4.1 Hårdvara

Du kommer få ut en låda med SparkFun Tinker Kit och en adapter. Adaptern behövs för att koppla USB-kabeln till din dator. Bägge dessa produkter kommer du få signera att du har fått utlämnat och dessa skall lämnas tillbaka när kursen är slut.

2.1.4.2 Arduino IDE

Du behöver installera Arduino IDE för att kunna programmera och överföra ditt program till din Arduino. Välj den senaste stabila versionen och ladda ner installationsfilen anpassad till ditt operativsystem. Länken finns här.

Att använda Arduino IDE visas i det material som kommer men om du vill få en genomgång av själva programmet så finns det en film här.

Fungerar inte?

Troligtvis kommer installationen gå smärtfritt men om du använder en äldre dator så kan du behöva installera drivern CH340 för att det skall fungera. Info hittar du här.

2.1.4.3 Arduino exempelkod

Till alla övningar finns det färdig programmeringskod att utgå ifrån. Hämta hem samtliga koder här eller kika på alla koder här. När du installerar Arduino IDE så kan du under inställningar välja Skissboksplats och här har jag lagt samtliga exempelkoder.

2.1.4.4 Undervisningsmaterial

Materialet vi använder kommer från SparkFun och det består av fem olika projekt där varje projekt har fokus på en viss typ av komponenter. Varje projekt består sedan av någon eller några olika uppgifter. Till varje projekt/uppgift så finns det en film som visar allt som skall göras, det finns en webbsida som med bilder och text visar och förklarar vad som görs och vad som händer samt att det finns en PDF med i stort sett samma material som webbsidan visar. Välj själv hur du följer uppgiften, filmerna är bra men jag tycker ibland att det är svårt att följa alla kopplingar så ett kopplingsschema på bild underlättar ofta det arbete som skall göras.

Filmerna och PDF:en är egentligen kopplade till Inventor's Kit medan vi har Tinker Kit vilket innebär att vi kan göra något färre uppgifter än vad som finns dokumenterat i Inventor's Kit utifrån de komponenter vi har till vårt förfogande. Kanske köper vi in några ytterligare komponenter för att senare kunna genomföra ytterligare uppgifter.

Varje uppgift slutar med att exempelkod överförs och testas i den fysiska produkten. De ger ibland utmaningar att på egen hand förändra koden och testa på egen hand. Gör gärna detta.

På vissa uppgifter kommer jag utmana dig lite mer och ge dig uppgifter som skall utföras.

Ta för vana att dokumentera ditt arbete och spara alla koder som du skapar på egen hand, man vet aldrig när detta kan komma till användning.

2.2 Laborationer

Vi följer de laborationer som är kopplade till vårt kit för att lära oss de olika delarna.

2.2.1 Circuit 1: Blink an LED

I denna uppgift så skall du koppla in en LED och få den att blinka.

Material [klicka för att visa]

Circuit 1: Blink an LED

Genomför övningen och förändra koden så att du kan styra hur snabbt lampan kan blinka.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det två kodutmaningar; den första handlar om hur fort lampan kan blinka för att det för vårt öga skall se ut som att den lyser hela tiden och den andra utmaningen handlar om att du skall försöka få lampan att blinka ett program i morsekod. SOS kommer du kanske ihåg är tre korta, tre långa och tre korta. Kan du blinka ditt namn med morsekod?

2.2.2 Circuit 2: Potentiometer

I denna första uppgift så skall du få bekanta dig med en potentiometer och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 2: Potentiometer

Genomför övningen enligt instruktioner. På webbsidan så visas hur du använder Serial Monitor, kolla inom vilka värden potentiometern ger utslag på Serial Monitor.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det två kodutmaningar;

  1. Ändra räckvidden på potentiometern så att du kan öka eller begränsa räckvidden på potentiometerns för att påverka hastigheten på blinkningarna som LED-lampan gör.
  2. Nästa uppgift är att sätta upp fler LED-lampor till din krets. Kan du få olika LED-lampor att blinka olika lång tid?

2.2.3 Circuit 3: Photoresistor

I denna uppgift så skall du få bekanta dig med en fotoresistor och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 3: Photoresistor

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det två kodutmaningar;

  1. Första utmaningen innebär att du använder fotoresistorn som en no touch button för att aktivera en händelse.
  2. I den andra utmaningen skall du byta ut en resistor mot en LED-lampa.

2.2.4 Circuit 4: RGB Night-Light

I denna uppgift så skall du få bekanta dig med en RGB LED och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 4: RGB Night-Light

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det fyra kodutmaningar, gör de som du känner är en lagom utmaning.

2.2.5 Circuit 5: Buzzer

I denna uppgift så skall du få bekanta dig med en buzzer och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 5: Buzzer

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det två kodutmaningar, den ena använder du för att öka tempot på din melodi och den andra handlar om att skapa en egen melodi.

Ytterligare en utmaning är att bygga in en fotoresistor och styra när musiken börjar spelas upp, eller använda den för att upprepa musiken en gång till.

2.2.6 Circuit 6: Digital Trumpet

I denna uppgift så skall du få bekanta dig med tryckknappar och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 6: Digital Trumpet

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning.

2.2.7 Circuit 7: Simon Says Game

I denna uppgift så skall du få bygga ett klassiskt spel, Simon Says, som byggs med LED-lampor och tryckknappar.

Material [klicka för att visa]

Circuit 7: Simon Says Game

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning? Kanske använda en RGB-LED istället för fyra unika LED-lampor?

2.2.8 Circuit 8: Servo Motors

I denna uppgift så skall du få bekanta dig med en servomotor och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 8: Servo Motors

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning?

2.2.8 Circuit 8: Servo Motors

I denna uppgift så skall du få bekanta dig med en servomotor och lära dig vad den komponenten är användbar till.

Material [klicka för att visa]

Circuit 8: Servo Motors

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning?

2.2.9 Circuit 9: Temperature Sensor

SparkFun Inventor Kit vs SparkFun Tinker Kit

Här skiljer det sig en hel del mellan laborationerna som heter samma men som fungerar olika för Inventor Kit och Tinker Kit. Var därför extra nogrann med att följa mina länkar och inte bara fortsätta från tidigare länkar/sidor.

I denna uppgift så skall du få bekanta dig med en temperatursensor och lära dig vad den komponenten är användbar till.

För tillfället finns det ingen film som är tillgänglig utan du får följa instruktionerna på Webbsida. Det finns en del att läsa och förstå för att kunna omvandla strömmen till en temperatur. Eftersom vi nu inte heller har tillgång till en LCD-skärm så behöver du kopiera koden på webbsidan istället för att använda kod från ditt skissblock.

Circuit 9: Temperature Sensor

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det fyra kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning?

En av kodutmaningarna handlar om att visa temperaturen på en LED bar graph men tyvärr har vi inga sådana komponenter. Kanske kan vi köpa några sådana ihop med en LCD-display vid ett senare tillfälle.

2.2.10 Circuit 10: Motor Basics

I denna uppgift så skall du få bekanta dig med en motor och vad du behöver för att kunna få ut kraft och hastighet ur en motor.

Material [klicka för att visa]

Circuit 10: Motor Basics

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning? Den tredje utmnaingen som finns noterad handlar om att lägga till hjul som styrs av motorn/motorerna. Tyvärr har vi inte dessa hjul men kanske har du några hjul från en gammal leksak hemma som går att använda?

2.2.11 Circuit 11: Driving a Motor w/ Inputs

I denna uppgift så skall du få bekanta dig med en ny komponent och det är en switch som kan öppna och stänga en krets.

Det finns ingen film för denna övning utan då får följa instruktionerna på webbsidan.

Circuit 11: Driving a Motor w/ Inputs

Genomför övningen enligt instruktioner.

Extrauppgift [klicka för att visa]

Längst ner på webbsidan så finns det tre kodutmaningar, gör de som du känner är en lagom utmaning. Kanske kan du lägga till en egen utmaning.

2.3 Eget mindre projekt

Nu har du fått lära dig om användningsområdet för flera olika komponenter. Kanske har du jobbat vidare med någon Coding Challenges i slutet av någon av de tidigare uppgifterna. Nu skulle jag vilja att du jobbar vidare med en tidigare uppgift eller skapar en egen utmaning. Hur många olika komponenter kan du bygga ihop och styra? Uppgiften vill jag att du dokumenterar så att du beskriver vad den skall göra och hur den fungerar. Jag vill också att du kan rita upp kretsen så att den är enkel att följa, kika gärna på hur de de olika uppgifterna är dokumenterade med kopplingsschema samt koder. Du väljer själv hur du dokumenterar detta, kanske skapar vi senare i kursen en standardiserad modell för våra modeller. TinkerCad har ni tidigare använt i kursen Teknik 1 och det är väl en lämplig startpunkt för att kunna rita egna kretsar.

Dokumentera detta i ett Google Dokument eller som en post/page i WordPress om du har tillgång till det. Presentera uppgiften, visa en ritning, klistra in koden på lämpligt sätt samt skriv en kort utvärdering av ditt arbete.