1 SKOLELABORATORIET Arduino grunnkurs 4. og 5. mars Skolelaboratoriet av Nils Kr. Rossing og Frode Øren Skolelaboratoriet ved NTNU
2 SKOLELABORATORIET Kursprogram 08:30 – Velkommen. Praktisk informasjon 08:35 – 08:45 Introduksjon: Hva er en mikrokontroller 08:45 – 09:00 Gjennomgang av materiell 09:00 – 09:15 Introduksjon til C-programmering. 09:15 – 10:15 Laboratorieøkt 1: - Koble opp kretsen - Skriv inn og test øving 1 – Blinkende LED - Felles gjennomgang av programmet og elektronikk - Ekstra utfordringer 10:15 – 11:15Laboratorieøkt 2: Arbeid med anbefalte øvinger 11:15 – 11:30 Felles gjennomgang av øvinger med spørsmål og diskusjon 11: :00 Lunsj 12:00 – 12:45Laboratorieøkt 3 : Arbeid med anbefalte øvinger 12:45 – 13:00 Felles gjennomgang av øvinger med spørsmål og diskusjon 13:00 – 13:45 Laboratorieøkt 4 : Arbeid med anbefalte øvinger 13:45 – 14:00 Felles gjennomgang av øvinger med oppsummering
3 SKOLELABORATORIET Arduino Arduino mikrokontroller konsept Prosjektet startet i 2005 i den vesle universitetsbyen Ivrea Enklere og billigere for studenter å lære seg bruk av mikrokontrollere Utviklet av Massimo Banzi og David Cuarielles Oppkalt etter byens helteskikkelse: Arduin of Ivrea (”Sterk venn”) Programvaren utviklet av studenten Hermando Barragán Bruker Atmel kontrollere I 2011 eksisterte det ca ,- Arduino enheter
4 SKOLELABORATORIET AVR – mikrokontrollerserie Arduino bygger på Atmels kontrollerserie (Atmel verdens nest største lev.) Atmels første kontroller ble utviklet av studentene: Alf-Egil Bogen og Vegard Wollan, NTH studenter begynnelsen av 1990 Utviklet en serie med AVR mikrokontrollere (A lf V egard R isc ) Det produseres i dag ca. 35 AVR mikrokontrollere pr. sek. Atmel Norge ca. 200 ansatte Ledende på mikrokontrollere og berøringsskjermer Årets trøndere ATmega8 BogenWollan
5 SKOLELABORATORIET Hva brukes mikrokontrollere til?
6 SKOLELABORATORIET Elektronisk grunnenhet Nils Kr. Rossing Behandling av informasjon Sensorer Aktuator Timer Hukommelse Temperatur Lys Lyd Fuktighet Bevegelse Varmeovn Lys Motor/Vifte Alarm/Lyd
7 SKOLELABORATORIET Mikrokontrollere og mikroprosessorer Mikrokontroller 8 pin +4,5V 1 0V 8 Intern hukommelse Databehandlingsenhet Innganger Utganger In In 3 Out 2 5 Out Inngang 0 til +V (0 eller 1) ADC leser verdien av en spenning IR – Leser info fra fjernkontroll Utgang 0 til +V (0 eller 1) Tune - lydutgang
8 SKOLELABORATORIET Sparkfun Arduino Inventor’s kit
9 SKOLELABORATORIET Komponenter Gjennomgang av komponentene
10 SKOLELABORATORIET Montering
11 SKOLELABORATORIET Montering
12 SKOLELABORATORIET Koblingsbrett
13 SKOLELABORATORIET Komponenter Gjennomgang av komponentene
14 SKOLELABORATORIET Komponenter Resistanser
15 SKOLELABORATORIET Komponenter Input (Sensorer)
16 SKOLELABORATORIET Komponenter Output (Aktuatorer)
17 SKOLELABORATORIET Komponenter Output (Aktuatorer) JZC-11F 30V-10A 230V-5A
18 SKOLELABORATORIET Arduino UNO Power Digitale inn og utganger Analoge innganger USB Batteri- eliminator +5v0v
19 SKOLELABORATORIET Oppbyggingen av kretsen
20 SKOLELABORATORIET Byggebeskrivelse
21 SKOLELABORATORIET Detaljert byggebeskrivelse
22 SKOLELABORATORIET Programmeringsverktøyet
23 SKOLELABORATORIET Installasjon av programvare Hentes fra Dropbox: Arduino windows.zip eller fra: Installer programvaren på egen PC Koble til Arduino Uno-kort, med USB-kontakt (lysdiode lyser) Installer driver ved å følge anvisninger idet Arduino’en kobles til Oppsett av programvare: Velg: Tools på menylinjen Velg: Board Velg: Arduino Uno Velg: Tools på menylinjen Velg: Serial Port Velg riktig Com Port
24 SKOLELABORATORIET Editor 1.Sjekk koden 2.Stopp 3.Ny skisse 4.Åpne eksisterende skisse 5.Lagre skissen 6.Last programmet ned til Arduino 7.Datamonitor 8.Navnet på skissen 9.Område for skriving av programmet 10.Meldingsområde
25 SKOLELABORATORIET Innledende programmering
26 SKOLELABORATORIET Enkel programmeringsstruktur #include // Inkluderer spesielle biblioteker Deklarer globale variable void setup() { // Koden i denne rutinen kjører en gang ved oppstart …. } void loop() { // Deklarer lokale variable // Programlinjer … } setup loop start/reset
27 SKOLELABORATORIET Enkel programmeringsstruktur #include // Inkluderer spesielle biblioteker Deklarer globale variable void setup() { // Koden i denne rutinen kjører en gang ved oppstart …. } void loop() { // Deklarer lokale variable // Programlinjer … } int funksjon( ) { // Deklarer lokale variable // kode } setup loop start/reset Funksjon 1 Funksjon 2 Egendef. Funksjon 1 Funksjon 2 Arduinodef.
28 SKOLELABORATORIET Deklarasjon av variabler void loop() { int a;// deklarering av variabelen a int b = 6;// deklarering av variabelen b som gis verdien 6 char c = ‘k’;// deklarering av 8 bit karakter (byte) som gies bokstaven k float e, f;/* deklarering av variabelen (desimaltall ) f.eks. 1,65 (32 bit, dobbel word) */ a = 4;// gir heltallsvariabelen a verdien 4 e = 2.5;// gir heltallsvariabelen e float verdien 2,5; f = a * e;// gir float variabelen verdien … ? }
29 SKOLELABORATORIET Arbeidsform Synkron jobbing - Bygg opp Øving 1 - Skrive inn program Øving 1 - Laste opp programmet - Test ut Gjennomgang av: - skjema - litt komponentteori - programkode Lag en SOS-sender - gjennomgang av oppbygging og kode Jobber på egen hånd - Gjennomganger: - 11:15 – 11: :45 – 13: :45 – 14:00 Oppgaver: Oppgave 1 Blinkende LED Oppgave 2 Varierende blinkende LED Oppgave 6 LDR - Lyssensor Oppgave 3 RGB LED Oppgave 8 En enkel servo
30 SKOLELABORATORIET Øving 1 Blinkende LED
31 SKOLELABORATORIET Kommentar: LED må kobles riktig vei Langt bein mot pluss Alltid seriemotstand 220 – 330 Ohm er nok Øving 1 Blinkende LED - skjema
32 SKOLELABORATORIET Øving 1 Blinkende LED - montering Monter kretsen og last opp programmet:
33 SKOLELABORATORIET Skriv inn programmet
34 SKOLELABORATORIET Editor Sjekk om koden er riktig Kompiler og overfør Lagre filen Lagre filen som …
35 SKOLELABORATORIET Øving 1 Blinkende LED - Programmering
36 SKOLELABORATORIET pinMode (ledpin, OUTPUT); // Definerer pinnen ledpin som en utgang pinmode (pin, mode); // pin angir pinnenummer, // mode om det er OUTPUT eller INPUT digitalWrite(ledpin, HIGH); // Setter pinne ledpin høy digitalWrite(pin, value); // Skriv verdien value til pinne pin // value kan være HIGH og LOW delay(1000);// Stopper programmet i 1000 msek delay(ms) ;// Stopp programmet i ms antall millisekunder Nye kommandoer Blinkende LED
37 SKOLELABORATORIET Variabler
38 SKOLELABORATORIET Tilleggsoppgave Spesifikasjon B SOS (* * * * * *) Lag en morskode: Prikklengde 200 msek, Streklengde 600 msek, Mellomrom mellom strek/prikk er 200 msek, Mellomrom mellom bokstaver 600 msek Mellomrom mellom ord 1800 msek.
39 SKOLELABORATORIET Enkel programmering SOS
40 SKOLELABORATORIET Det skal lages en morsesender hvor det er lett å variere hastigheten Prikklengde = 200 msek, Streklengde = 600 msek, Mellomrom mellom strek/prikk = 200 msek, Mellomrom mellom bokstaver = 600 msek Mellomrom mellom ord = 1800 msek. Tilleggsoppgave Spesifikasjon C Lag en morskode: hastighet = 100 msek ; Prikklengde = 200 msek = 2*100, Streklengde = 600 msek = 2*100, Mellomrom mellom strek/prikk = 200 msek = 2*100, Mellomrom mellom bokstaver = 600 msek = 6*100 Mellomrom mellom ord = 1800 msek = 18*100.
41 SKOLELABORATORIET SOS med variabel hastighet Spesifikasjon C
42 SKOLELABORATORIET Det skal lages lyd i tillegg til lys Tilleggsoppgave Spesifikasjon D Slå på lyd: tone(, ); Slå av lyd: noTone ( ); Slå på lyd med en viss lengde: tone(,, ); Eksempel: tone(9, 440, 500);
43 SKOLELABORATORIET Montering av buzzer
44 SKOLELABORATORIET SOS med lys og lyd
45 SKOLELABORATORIET Det skal lages en SOS sender med lyd og lys og brukes funksjoner Tilleggsoppgave Spesifikasjon E Definisjon av funksjoner: void () { ; } Kall av funksjoner: ();
46 SKOLELABORATORIET SOS med bruk av funksjoner Spesifikasjon 5
47 SKOLELABORATORIET Lokale og globale variabler, funksjon void loop() { int c, d;// deklarering av lokale variable c og d ; c = 3; d = funksjon(c); } int funksjon(e) { int c, e;// deklarasjon av lokale variable c og e ; } int a, b;// deklarering av globale variable a og b
48 SKOLELABORATORIET Eksperimenter med eksempeloppgaver
49 SKOLELABORATORIET Eksperimenter med eksempeloppgaver Oppgave 2: Potensiometer (jobber med boka) Oppgave 6: Fotomotstand (jobber med boka) Oppgave 3: RGB LED (jobber med boka) Oppgave 8: En enkel servo (jobber med boka) Velg oppgaver dere har lyst til å lage fra heftet
50 SKOLELABORATORIET Skriv inn programmet
51 SKOLELABORATORIET Øving 2 Varierende blinkende LED Blinkfrekvensen styres ved hjelp av et potensiometer
52 SKOLELABORATORIET Øving 2 Varierende blinkende LED
53 SKOLELABORATORIET Bygg opp kretsen i øving 2
54 SKOLELABORATORIET Spenningsdeleren Potensiometeret V CC VSVS VS_VS_ R1R1 R2R2
55 SKOLELABORATORIET Øving 2 Variabel blinkende LED
56 SKOLELABORATORIET int sensorPin = 0; // Tilordner verdien 0 til variabelen sensorPin int var = val; // Tilordner verdien val til variabelen var pinmode (sensorPin, INPUT); // Definerer pinnen sesnorPin som en inngang pinmode (pin, mode); // pin angir pinnenummer, // mode om det er OUTPUT eller INPUT sensorValue =analogRead(sensorPin); // Les verdi på pinne sensorpin value = analogRead(pin); // Les verdien value fra pinne pin // Value kan være fra Øving 2 Variabelt blinkende LED – Nye kommandoer
57 SKOLELABORATORIET Det skal lages en SOS sender med lyd og lys og brukes funksjoner Hastigheten skal kunne justeres ved hjelp av et potensiometer Tilleggsoppgave Spesifikasjon 1 F
58 SKOLELABORATORIET Tilleggsoppgave Spesifikasjon 1 F
59 SKOLELABORATORIET Øving 3 RGB lysdiode Fargeblanding på mange måter
60 SKOLELABORATORIET Puls Bredde Modulasjon (PWM) analogWrite(, );
61 SKOLELABORATORIET Øving 3 RGB lysdiode - koblingsskjema
62 SKOLELABORATORIET Øving 3 RGB lysdiode - oppkobling
63 SKOLELABORATORIET Øving 3 RGB lysdiode - program
64 SKOLELABORATORIET Øving 3 RGB lysdiode – nye kommandoer
65 SKOLELABORATORIET if (betingelse) { programlinjer; } else if (betingelse) { programlinjer; } else } programlinjer; } Øving 3 RGB lysdiode – Nye kommandoer // Betingelsen må være oppfylt for at programlinjene // innenfor klammeparentesene skal bli utført // Om ingen av de foregående betingelsene er oppfylt // oppfylles disse programlinjene
66 SKOLELABORATORIET Øving 4 Rekke av lysdioder
67 SKOLELABORATORIET Øving 4 Rekke av lysdioder - koblingsskjema
68 SKOLELABORATORIET Øving 4 Rekke av lysdioder - oppkobling
69 SKOLELABORATORIET Øving 4 Rekke av lysdioder - program
70 SKOLELABORATORIET Øving 4 Rekke av lysdioder – nye kommandoer
71 SKOLELABORATORIET Øving 5 Trykknapper Trykk en av knappene og LED’en lyser Trykk begge knappene og LED’en lyser ikke
72 SKOLELABORATORIET Øving 5 Trykknapper - koblingsskjema
73 SKOLELABORATORIET Øving 5 Trykknapper - oppkobling
74 SKOLELABORATORIET Øving 5 Trykknapper - program
75 SKOLELABORATORIET Øving 5 Trykknapper – Nye kommandoer
76 SKOLELABORATORIET if (betingelse) { programlinjer; } else if (betingelse) { programlinjer; } else } programlinjer; } Øving 5 Trykknapper – Nye kommandoer // Betingelsen må være oppfylt for at programlinjene // innenfor klammeparentesene skal bli utført // Om ingen av de foregående betingelsene er oppfylt // oppfylles disse programlinjene
77 SKOLELABORATORIET Enkle betingelser if (A = = B) { } // Om A er lik B if (A < B) { } // Om A mindre enn B if (A > B) { } // Om A større enn B if (A! = B) { } // Om A er forskjellig fra B Sammensatt betingelser: if (A = = B) && (C ! = D) { } // Om A er lik B og C forskjellig fra D if (A = = B) || (C ! = D) { } // Om A er lik B eller C forskjellig fra D Øving 5 Trykknapper – Nye kommandoer
78 SKOLELABORATORIET Tilleggsoppgave Lag programmet slik at når knapp 1 trykkes inn så slås lyset på, og blir værende på helt til knapp 2 trykkes inn, da slukkes lyset.
79 SKOLELABORATORIET Øving 6 LDR - lyssensor
80 SKOLELABORATORIET Øving 6 LDR lyssensor - koblingsskjema
81 SKOLELABORATORIET Øving 6 LDR Lyssensor - oppkobling
82 SKOLELABORATORIET Øving 6 LDR – Lyssensor - program
83 SKOLELABORATORIET Lysfølsom motstand (LDR) Cadmiumsulfid Elektroner eksiteres til ledningsbåndet
84 SKOLELABORATORIET Fullt sollys lux (1000 W/m 2 ) Sollyset en tidlig morgen lux Belysningen i et TV-studio lux Et godt opplyst kontor 400 lux Lyset fra en fullmåne 1 lux Lysfølsom motstand (LDR)
85 SKOLELABORATORIET Måling av lysstyrke med LDR Økende spenning med økende lysstyrke +5 V ADC Økende spenning med fallende lysstyrke ADC +5 V Hvor skal LDR-motstanden plasseres? LDR
86 SKOLELABORATORIET Øving 6 LDR – Lyssensor – nye kommandoer
87 SKOLELABORATORIET Øving 7 Temperatursensor
88 SKOLELABORATORIET Måling av temperatur med temperaturfølsom pn-overgang (LM35/TMP35/6/7) En pn-overgang forspent i lederetning og med konstant strøm (1µA) gir en tilnærmet lineær spenningsvariasjon (1 mV/ºC) som funksjon av temperatur. µA V V out
89 SKOLELABORATORIET V(T) og T(V) Følsomhet 10 mV/K (LM35/36) og 20 mV/K (TMP37) 0,5V 10 mV/K V(T) = 0.01 [V/K] * T [K] [V] T = 100 * V(T) mV/K V(T) = 0.02 [V/K] * T [K] T = 50 * V(T) TMP37 LM36 V V K K 25ºC 500mV Område: ºC Nøyaktighet: +/- 2ºC Responstid: 240s (90% still air) Område: ºC Nøyaktighet: +/- 2ºC Responstid: 120 s (90% still air)
90 SKOLELABORATORIET Øving 7 Temperatursensor - koblingsskjema
91 SKOLELABORATORIET Øving 7 Temperatursensor - oppkobling
92 SKOLELABORATORIET Øving 7 Temperatursensor - program
93 SKOLELABORATORIET Øving 7 Temperatursensor – nye kommandoer
94 SKOLELABORATORIET Øving 8 Servo
95 SKOLELABORATORIET Øving 8 Servo - koblingsskjema
96 SKOLELABORATORIET Øving 8 Servo - oppkobling
97 SKOLELABORATORIET Øving 8 Servo - program
98 SKOLELABORATORIET Øving 8 Servo – nye kommandoer
99 SKOLELABORATORIET Servoer styres av pulser Servoen styres av pulser : 900 μsek – 0º 1500 μsek – 90º 2100 μsek – 180º
10 0 SKOLELABORATORIET Øving 9 Servo styrt av bøyesensor
10 1 SKOLELABORATORIET Øving 9 Servo styrt av bøyesensor - koblingsskjema
10 2 SKOLELABORATORIET Øving 9 Servo styrt av bøyesensor - oppkobling
10 3 SKOLELABORATORIET Øving 9 Servo styrt av bøyesensor - program
10 4 SKOLELABORATORIET Øving 9 Servo styrt av bøyesensor– nye kommandoer
10 5 SKOLELABORATORIET Øving 10 Soft potensiometer styrer farger
10 6 SKOLELABORATORIET Øving 10 Soft potensiometer styrer farger - koblingsskjema
10 7 SKOLELABORATORIET Øving 10 Soft potensiometer styrer farger- oppkobling
10 8 SKOLELABORATORIET Øving 10 Soft potensiometer styrer farger - program
10 9 SKOLELABORATORIET Øving 10 Soft potensiometer styrer farger – nye kommandoer
11 0 SKOLELABORATORIET Øving 11 Lydgiver
11 1 SKOLELABORATORIET Øving 11 Lydgiver - koblingsskjema
11 2 SKOLELABORATORIET Øving 11 Lydgiver - oppkobling
11 3 SKOLELABORATORIET Øving 11 Lydgiver - program
11 4 SKOLELABORATORIET Øving 11 Lag egne funksjoner
11 5 SKOLELABORATORIET Øving 11 Lydgiver – nye kommandoer
11 6 SKOLELABORATORIET Øving 12 Motorstyring
11 7 SKOLELABORATORIET Øving 12 Motorstyring - koblingsskjema Maks. strøm 200 mA Typ. strøm mA
11 8 SKOLELABORATORIET Øving 11 Motorstyring - oppkobling
11 9 SKOLELABORATORIET Øving 12 Motorstyring - program
12 0 SKOLELABORATORIET Puls Bredde Modulasjon (Puls Width Modulation (pwm)) analogWrite(motorpin, i); // Sett farten med verdien i analogWrite(pin, value) // Sett utgang pin til pwm dutcycle value Øving 3 Styring av motor – Nye kommandoer value 256
12 1 SKOLELABORATORIET Øving 12 Motorstyring – nye kommandoer
12 2 SKOLELABORATORIET Øving 13 Bruk av rele
12 3 SKOLELABORATORIET Øving 13 Bruk av rele - koblingsskjema
12 4 SKOLELABORATORIET Øving 13 Bruk av rele - oppkobling
12 5 SKOLELABORATORIET Øving 13 Bruk av rele - program
12 6 SKOLELABORATORIET Øving 14 Løpende lys - Skiftregister
12 7 SKOLELABORATORIET Øving 14 Løpende lys (skiftregister) - koblingsskjema
12 8 SKOLELABORATORIET Øving 14 Løpende lys (skiftregister) - oppkobling
12 9 SKOLELABORATORIET Øving 14 Løpende lys (skiftregister) - program
13 0 SKOLELABORATORIET Øving 14 – nye kommandoer
13 1 SKOLELABORATORIET Halvåpne oppgaver
13 2 SKOLELABORATORIET Halvåpne oppgaver Små halvåpne oppgaver: Velg en eller flere alt etter hvor mye tid dere trenger: Batteritester Automatisk vannvarmer m/termostat Automatisk vanningsanlegg for blomster Elektronisk terning En større halvåpen oppgave: Programmer et trafikklys - Vanlig ”dum” sekvens - Bestill grønn ”mann” - Grønn ”mann” med lyd - Blinkende gult når mørket faller på
13 3 SKOLELABORATORIET Mål temperatur i vannet ved oppstart Beregn hvor mye energi som må tilføres for å heve temperaturen Termisk energi: Q v = c 0 m(t 2 -t 1 ), Elektrisk energi: Q e = UIT Mål strøm og spenning over glødetråden og beregn levert effekt Beregn tiden det vil ta for å varme vannet opp til ønsket temperatur Stemmer beregningene og målingene overens?. Åpen oppgave
13 4 SKOLELABORATORIET Utstyrsliste: 2 esker med 4,5 V batterier 1 stk 30 W loddebolt m/stativ 1 rull loddetinn 4 stk sideavbiter 1 stk avmantlingstang 1 rull motstandstråd 4 stk flattenger 8 stk flatkabel – forlenger 8 stk multimetere 8 stk termometer 8 stk begerglass Stiftlister Prøvetrykk 7.2 av heftet: Grunnleggende elektronikk og sensorteknikk Bokser med utvalg av motstander NTC-motstander