Den siste tiden har jeg gått fra trearbeide til elektronikk og har så vidt startet med programmering av Arduino, ESP32 og Wemos Di Mini.
Dette er helt nytt for meg, men av en eller annen grunn ble jeg litt interessert i elektronikk etter at jeg så noen tilfeldige Youtube videoer som viste hvordan man kunne automatisere ting i heimen uten at det burde koste så mye.
Bratt lærekurve for en fersking
Jeg visste jo forskjell på pluss og minus, men steget derfra til å faktisk lage noe som fungerte har vært en lærerik opplevelse. Jeg startet jo helt på skratch, som for eksempel å få en led diode til å blinke ved hjelp av Arduino Uno og en kode.
Det meste av koder finner man ferdig på nettet, men man lærer jo ikke noe av klipp og lim. For meg var det viktig å vite hvordan koden faktisk fungerte, slik at jeg kunne gjøre endringer og i det hele tatt lage basic oppsett uten å kopiere andre.
Så hva er greia med slike micro controllere som Arduino, ESP32 etc.?
For å være ærlig, så skjønte jeg det ikke selv. Det meste som styrer lys ved hjelp av sensorer og en drøss andre ting får man jo kjøpt på Clasern og andre steder for en billig penge. For å få noe ut av slike micro controllere, så må man bruke fantasien litt.
Se for deg at du enkelt vil at lyset skal slå seg på automatisk når du går inn i et rom. Man kobler en bevegelses sensor til Arduino som merker at noen kommer og gir beskjed til en micro controller at hvis den merker bevegelse så aktiver et rele som slår på lyset i rommet. Så langt har man ikke akkurat funnet opp kruttet på nytt…
MEN!… så finner man ut at når men kommer inn i rommet så vil man kanskje samtidig ha en mail som bekrefter at noen har vært i rommet med klokkeslett etc. Ikke nok med det, men kanskje vil man også at 20 sekunder etter man har entret rommet at lyset dempes litt, helt automatisk?
Har man en kaffetrakter, så kan denne settes i gang automatisk, samtidig som det sendes en epost til madammen som sier “Hei, jeg befinner meg i furterommet” så fort du entrer rommet.
Flere ideer dukker plutselig opp på sikt…
Når man først har startet å leke seg med micro controllere så forstår man fort at det finnes lite eller ingenting som kan erstatte disse som finnes på Clasern eller andre steder.
Se for deg at du lenge har hatt et problem som har irritert deg. Som feks. at du til tider glemmer å lukke elektrisk drevne garasjeporten. Man må fomle etter fjernkontrollen og når man trykker på denne får man som oftest ingen bekreftelse på at porten faktisk går igjen. Dermed må man uansett ut for å sjekke.
Med en micro controller løser man dette veldig enkelt. En liten trykkbryter eller en sensor (det finnes bøttevis av sensorer å få kjøpt og dem koster bare noen få kroner) kan monteres og man kan gi micro controlleren beskjed om å gi deg en notis på telefonen når porten er igjen etc.
Er det vanskelig å kode micro controllere?
Hva som man betegner som vanskelig er ganske relativt. Første gangen man ser en kode så ser man bare stjerner og elefanter og skjønner ikke en dritt. Man må derfor lære seg hvordan en kode er bygget opp, før man begynner å prøve seg frem. De fleste som har drevet med webdesign og som har vært borti litt koding tidligere skjønner fort gangen.
Jeg må bare pressisere at JEG på ingen som helst måte er noen racer på å kode og jeg sitter ikke å skriver kode som jeg skriver et brev i Word (hvem gjør slikt lenger i dag egentlig…?) Det er fullt lovlig med klipp og lim og som tidligere nevnt finner man det aller meste av koder ferdig skrevet rundt om som man kan endre og tilpasse til eget bruk.
Det viktigste er som sagt at man forstår litt gangen og at man forstår hva man skal endre og hvordan koden er bygget opp.
En kort forklaring av hvordan C++ kodingen fungerer
En Arduino kode skal ALLTID ha “void setup()” og “void loop()”. Se for deg at koden blir lest av micro controlleren fra topp til bunn. Alt over “void loop()” blir lest kun en gang hver gang man starter opp eller resetter enheten.
Alt som derimot befinner seg i “void loop()” vil kjøre i en loop konstant og stopper ikke før du drar ut kontakten. Det er her man i hovedsak skal legge koden som skal kjøres. Hvis man for eksempel vil at en led diode blinker…
Hvordan kobler man en Arduino?
En Arduino Uno eller en nesten hvilket som helst micro controller gir du strøm via USB porten til PC’en. man kan også gi den strøm via en vanlig adapter med DC plugg, men for å programmere den må den være tilkoblet en pc med USB.
På bildet under kan man se hvordan en Arduino Uno ser ut sett ovenifra. Ser man på utgangene/inngangene markert med 0 til 13 øverst så er det her man kobler til sensorer, led dioder etc.
Nederst på bildet ser man noen pinner med markering A0 til A5. Dette er analoge innganger/utganger. Til venstre kobler man strøm og jord. VIN pin kan man bruke hvis man vil gi Arduino strøm fra ekstern kilde.
Hva trenger man for å komme i gang?
Enkelt sagt, så er alt man trenger for å komme i gang et Starter Kit. Med et slikt kit, så får du alt du trenger for å starte. Det følger også med en bok med enkle guider som tar deg gjennom fra det absolutt enkleste til mer avanserte oppgaver.
Du kan kjøpe Start Kit’et til Arduino – her
La oss starte fra scratch og koble til en led diode som blinker
Her så viser jeg kanskje det absolutt enkleste man kan gjøre med en micro controller som Arduino Uno, Arduino Nano, Arduino Mega, ESP32, Wemos D1 Mini etc. Jeg går her ut fra at man har Start kittet nevnt lenger opp.
- Last ned Arduino IDE programvaren og installer denne på PC’en. programvaren kan lastes ned her.
- Koble Arduinoen til PC’en med den medfølgende USB kabelen og åpne så Arduino IDE programmet.
- Finn frem “breadboardet” som fulgte med i kittet og koble til led diode og ledninger som vist på bildet under.
Man kan i utgangspunktet koble den røde ledningen til en hvilket som helst pin, men i dette tilfellet valgte jeg tilfeldig pin nr. 3.
PS! Husk å bruke en 220ohm resistor fra settet mellom +5v og led dioden. Glemmer du denne så vil du ødelegge dioden.
Nå er det på tide og skrive koden
I Arduino IDE programmet klikk på “Fil/Ny“. Fjern alt som står i vinduet så det er helt blankt og bare lim inn koden jeg skriver videre her i rekkefølge.
Det første man må gjøre er å fortelle Arduinoen hvilke pinner som skal brukes. I dette tilfellet skal vi kun bruke en pin og det er pin nr. 3. Så det første man skal skrive i den blanke ruten er koden under.
1 |
int ledPin = 3; |
Deretter skal man fortelle Arduino om denne pinnen skal sende eller motta data. Vi skal lyse opp en led diode, så vi skal sende data eller rettere sagt strøm til dioden for å lyse den opp. Dette gjør vi under void setup() funksjonen.
1 2 3 |
void setup(){ pinMode(ledPin, OUTPUT); } |
Nå har vi kort fortalt gitt beskjed til Arduinoen om hvilken pin som skal brukes og at den skal sende data til denne pinnen.
Nå skal vi skrive koden som gjør at led dioden skal slå seg på samt blinke. Dette gjør vi under void loop() funksjonen.
1 2 3 4 5 6 |
void loop(){ digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } |
Når man nå laster opp koden, så vil led dioden blinke. Ett sekund av og ett sekund på. Fra nå av er det bare å prøve seg frem og bruke fantasien.
Her er den fullstendige koden
Du kan lime inn en og en av kodene jeg har skrevet over, eller så kan du kopiere den fullstendige koden under.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// assign pin 3 for use with the led int ledPin = 3; /* all code inn setup runs only once, every time the unit restarts */ void setup(){ // declares led as an output pin pinMode(ledPin, OUTPUT); } /* all code in loop runs over and over again and does not stop until the unit restarts */ void loop(){ // tells the unit to turn on the led digitalWrite(ledPin, HIGH); // led is turned on for one second delay(1000); // tells the unit to turn off the led digitalWrite(ledPin, LOW); // led is turned off for one second delay(1000); } // end of code |
Er du kjent med Arduino fra før?
Hvis du er kjent med Arduino fra før og kanskje vil gi meg noen tips eller bare vil dele ideene dine, så legg igjen en kommentar i kommentarfeltet under. Artig og høre fra andre likesinnede rundt dette.