Oppsett og koding av Deploii i Arduino IDE
Programmering i Arduino IDE
For å kunne opprette kommunikasjon mellom mikrokontrollaren og Deploii må du laste opp ein kode til kortet ditt. Det er det same om du gjer det først, eller set opp alt på nettsida først.
Har du jobba med mikrokontrollarar før, kjenner du nok allereie til delar av desse trinna. Viss du ikkje har brukt Deploii før, har du nok ikkje biblioteket lasta ned, og då må du gjere dette.
Arduino IDE
Det første du skal gjere viss du ikkje har jobba med Arduino før, er å laste ned programvara ved å følge oppstartsguiden for Arduino IDE på nettstaden til Arduino. Deploii er ikkje brukt/testa mykje med Arduino versjon 1, så det blir tilrådd å bruke versjon 2. Har du versjon 1 frå før, burde du altså oppgradere.
Etter at du har lasta ned og opna programvara, skal det sjå ut omtrent som i biletet under. Det er ein tom eksempelkode midt på biletet og ein del knappar på venstre side. Desse opnar ulike undersider. I øvre, venstre hjørne er det ein kvit boks der du vel kva kort du skal laste opp kode til.
Etter du har valt eit kort, bruker du den runde knappen med ei pil til høgre for å laste opp koden du har skrive. Ein meir detaljert guide om korleis Arduino IDE fungerer, finn du fleire stader på NDLA og på internett.

For å komme vidare i programmeringa treng du mikrokontrollaren din, til dømes ein Arduino UNO R4 med wifi eller ein ESP32, kopla til pc-en din med USB-kabel.
Hugs at ikkje alle USB-kablar er like. Dei svært billige kablane kan ofte ikkje laste over kode til eit kort (dei har ikkje signallinje, berre straumlinje for lading).
Dette er første feilkjelde du kan sjekke viss det ikkje fungerer som det skal å laste opp kode seinare.
Sjølv om du har kopla kortet til pc-en med USB-kabel, er det ikkje sikkert at Arduino IDE kjenner igjen kortet du bruker. Programvara kjem med nokre kort installerte på førehand, men dette er ofte ikkje dei som har støtte for wifi.
Viss du opplever at Arduino IDE ikkje kjenner igjen kortet ditt, må du starte ein "boards manager" frå verktøymenyen for å laste ned ei utviding for bruk med akkurat ditt kort.
I denne guiden bruker vi ein Arduino UNO R4 WiFi og søker derfor opp denne i "boards manager". Denne sida finn du ved å trykke på symbolet på venstre side som ser ut som eit kort (mikrokontrollar/kretskort). Her er det berre å trykke på "install"-knappen og vente litt.
Bruk du ein ESP32, kan du søke opp det i staden for og velje det nedste alternativet av Espressif Systems.

I biletet under kan du sjå at vi allereie har kortet installert, men at det ligg ei oppdatering klar. Då kan det vere smart å køyre denne oppdateringa før du går vidare.

Det siste du treng for å skape kommunikasjon mellom mikrokontrollaren og Deploii, er biblioteket til Deploii. Eit bibliotek i Arduino-verda er eit sett med førehandslaga kode som gjer det enklare for deg å kode sjølv. I dette tilfellet vil biblioteket vårt gjere det enklare for deg å bruke Deploii.
Vel bøker-symbolet i menyen til venstre og søk opp "deploii".

Siste trinn er å laste opp eigen kode! Her blir ein eksempelkode vist lagd inn i Arduino IDE. Du finn eksempelkode på nettsida til Deploii, men òg lenger nede på denne sida.

Forklaring av kode
Programkode kan ofte vere vanskeleg å forstå, men her skal vi gå gjennom dei kodelinjene som er viktige for å få mikrokontrollaren til å snakke med Deploii.
Kommunikasjonsprotokollar og bibliotek
Øvst i koden vil du finne to "define" og éin "include".
"define" lagar ein variabel, og i dette tilfellet er det for å stille inn biblioteket til Deploii for bruk med wifi og kommunikasjonsprotokollen WebSockets. Ønsker du heller å bruke til dømes NarrowBand og HTTP, kan dette forandrast her.
"include" er å legge til biblioteket til Deploii i koden, så du får tilgang til alle funksjonane du bruker vidare mens du kodar.

Trådlaust nettverk
Viss du bruker wifi, er det neste du må skrive inn, namnet og passordet på nettverket. Er du heime, har du ofte sett opp dette sjølv, er du på skulen, må du få det frå læraren din.
Hugs at du må bruke 2,4 GHz nettverk (ikkje 5 GHz), dette er ei innstilling som kan forandrast på ruteren. Grunnen er at dei fleste kort berre støttar wifi på denne frekvensen.
Du må her forandre teksten i koden slik at du legg inn namnet og passordet du skal bruke i staden for teksten som står mellom hermeteikna (" ").
![Skjermbilete frå programvara Arduino IDE som viser ein programkode med nettverk og passord. Første linje: char wifiNavn [ ] = "wifi-navn";. Andre linje: char wifiPassord [ ] = "wifi-passord";. Skjermutklipp.](https://images.ndla.no/hIIil79Q.png?width=1024)
Kort-ID
Det første du laga på nettsida, var eit kort, og dette fekk automatisk tildelt ein kort-ID. Skriv eller lim inn kort-ID-en du fekk på Deploii sine nettsider, mellom anførselsteikna i koden.
![Skjermbilete frå programvara Arduino IDE, som viser ei programlinje med kort-ID. Kodelinja:
char kortId [ ] = "kort-ID";. Skjermutklipp.](https://images.ndla.no/Z7HvfYvK.png?width=1024)
Setup
I setup-funksjonen finn du tre sentrale funksjonar frå Deploii-biblioteket:
- "oi.connect"
- koplar kortet først til wifi og deretter til Deploii si sky.
- "oi.interval"
- spesifiserer kor ofte data skal sendast til Deploii (ved å bruke funksjonen "sendData"). Den minste verdien er 1 000 ms (1 sekund).
- "oi.receive"
- spesifiserer kva funksjon (her "mottaData") som skal få data når det blir sendt frå kontrollpanelet i Deploii.

Send data
Funksjonen kalla "sendData" har eit heilt vilkårleg valt funksjonsnamn. Han kunne like godt heitt til dømes "minFunkSomSenderData", så lenge du òg skreiv det same i setup-funksjonen "oi.receive".
Det "sendData" gjer, er å generere tre tilfeldige talverdiar med namna temperatur, fukt og trykk. Vanlegvis ville desse verdiane vore data som kjem frå ein faktisk sensor, men det blir det oppgåva di å legge til sjølv.
Etter at desse tre variablane er laga, blir den viktigaste funksjonen brukt i biblioteket, "oi.send". Denne sender dataa du vel, til Deploii. Funksjonen krev to argument, den første er sjølve datastraum-ID-en, og den andre er dataa du ønsker å sende.
Dette er teikna inn i biletet, sidan det er lett å blande kva som er kva. Etter at du har laga ein datastraum på nettsida, kopierer du ID-en inn i koden som vist på biletet. Alle variabeltypar som Arduino har bygd inn, kan du sende med "oi.send"-funksjonen, inkludert arrays.

Motta data
Funksjonen "mottaData" har òg eit vilkårleg namn som kan bytast ut. Denne fungerer litt som "oi.send" i revers. Kvar gong du bruker ein modul på nettsida, blir ID-en og dataa sende til kortet ditt.

Fullstendig eksempelkode
No som vi har sett på dei ulike delane av koden, skal du få heile eksempelkoden i eitt. Han kan innehalde nokre linjer som ikkje er eksplisitt nemnde tidlegare, men dei treng du ikkje forstå kjempebra. Eksempelkoden er korleis ein sensorstasjon/miljøstasjon kan ha strukturert koden sin for å sende data til Deploii.
OBS!
Sjølve koden til eventuelle sensorar og aktuatorar følger ikkje med her. Her blir berre tilfeldige tal genererte for å sjå at kommunikasjonen fungerer. Faktiske sensorar og aktuatorar må du sjølv programmere inn i koden og legge data til dei variablane som du vil nytte.
