Hopp til innhold
Bokmål
Fagstoff

Oppsett og koding av Deploii i Arduino IDE

For å bruke Arduino eller ESP32 med Deploii må du laste opp kode til kortet. Du installerer Arduino IDE, legger inn riktig kort og bibliotek, og kopler kortet til Deploii. Da kan kortet sende og motta data fra skya.

Programmering i Arduino IDE

For å kunne opprette kommunikasjon mellom mikrokontrolleren og Deploii må du laste opp en kode til kortet ditt. Det er det samme om du gjør det først, eller setter opp alt på nettsida først.

Har du jobba med mikrokontrollere før, kjenner du nok allerede til deler av disse stegene. Hvis du ikke har brukt Deploii før, har du nok ikke biblioteket lasta ned, og da må du gjøre dette.

Arduino IDE

Det første du skal gjøre hvis du ikke har jobba med Arduino før, er å laste ned programvaren ved å følge oppstartsguiden for Arduino IDE på nettstedet til Arduino. Deploii er ikke brukt/testa mye med Arduino versjon 1, så det anbefales å bruke versjon 2. Har du versjon 1 fra før, burde du altså oppgradere.

Etter at du har lasta ned og åpna programvaren, skal det se ut omtrent som i bildet under. Det er en tom eksempelkode midt på bildet og en del knapper på venstre side. Disse åpner forskjellige undersider. I øvre, venstre hjørne er det en hvit boks hvor du velger hvilket kort du skal laste opp kode til.

Etter du har valgt et kort, bruker du den runde knappen med en pil til høyre for å laste opp koden du har skrevet. En mer detaljert guide om hvordan Arduino IDE fungerer, finner du flere steder på NDLA og på internett.

For å komme videre i programmeringa trenger du mikrokontrolleren din, for eksempel en Arduino UNO R4 med wifi eller en ESP32, kopla til pc-en din med USB-kabel.

Husk at ikke alle USB-kabler er like. De svært billige kablene kan ofte ikke laste over kode til et kort (de har ikke signallinje, bare strømlinje for lading).

Dette er første feilkilde du kan sjekke hvis det ikke fungerer som det skal å laste opp kode seinere.

Selv om du har kopla kortet til pc-en med USB-kabel, er det ikke sikkert at Arduino IDE gjenkjenner kortet du bruker. Programvaren kommer med noen kort installert på forhånd, men dette er ofte ikke de som har støtte for wifi.

Hvis du opplever at Arduino IDE ikke gjenkjenner kortet ditt, må du starte en "boards manager" fra verktøymenyen for å laste ned en utvidelse for bruk med akkurat ditt kort.

Vi bruker i denne guiden en Arduino UNO R4 WiFi og søker derfor opp denne i "boards manager". Denne sida finner du ved å trykke på symbolet på venstre side som ser ut som et kort (mikrokontroller/kretskort). Her er det bare å trykke på "install"-knappen og vente litt.

Bruker du en ESP32, kan du søke opp det istedenfor og velge det nederste alternativet av Espressif Systems.

I bildet under kan du se at vi allerede har kortet installert, men at det ligger en oppdatering klar. Da kan det være smart å kjøre denne oppdateringa før du går videre.

Det siste du trenger for å skape kommunikasjon mellom mikrokontrolleren og Deploii, er biblioteket til Deploii. Et bibliotek i Arduino-verdenen er et sett med forhåndslaga kode som gjør det enklere for deg å kode selv. I dette tilfellet vil biblioteket vårt gjøre det enklere for deg å bruke Deploii.

Velg bøker-symbolet i menyen til venstre og søk opp "deploii".

Siste steg er å laste opp egen kode! Her vises en eksempelkode lagt inn i Arduino IDE. Du finner eksempelkode på nettsida til Deploii, men også lenger nede på denne sida.

Forklaring av kode

Programkode kan ofte være vanskelig å forstå, men her skal vi gå gjennom de kodelinjene som er viktige for å få mikrokontrolleren til å snakke med Deploii.

Kommunikasjonsprotokoller og bibliotek

Øverst i koden vil du finne to "define" og én "include".

  • "define" lager en variabel, og i dette tilfellet er det for å stille inn biblioteket til Deploii for bruk med wifi og kommunikasjonsprotokollen WebSockets. Ønsker du heller å bruke for eksempel NarrowBand og HTTP, kan dette forandres her.

  • "include" er å legge til biblioteket til Deploii i koden, så du får tilgang til alle funksjonene du bruker videre mens du koder.

Trådløst nettverk

Hvis du bruker wifi, er det neste du må skrive inn, navnet og passordet på nettverket. Er du hjemme, har du ofte satt opp dette selv, er du på skolen, må du få det fra læreren din.

Husk at du må bruke 2,4 GHz nettverk (ikke 5 GHz), dette er ei innstilling som kan forandres på ruteren. Grunnen er at de fleste kort bare støtter wifi på denne frekvensen.

Du må her endre teksten i koden slik at du legger inn navnet og passordet du skal bruke i stedet for teksten som står mellom anførselstegnene (" ").

Kort-ID

Det første du laga på nettsida, var et kort, og dette fikk automatisk tildelt en kort-ID. Skriv eller lim inn kort-ID-en du fikk på Deploii sine nettsider, mellom anførselstegnene i koden.

Setup

I setup-funksjonen finner du tre sentrale funksjoner fra Deploii-biblioteket:

"oi.connect"
kopler kortet først til wifi og deretter til Deploii sin sky.
"oi.interval"
spesifiserer hvor ofte data skal sendes til Deploii (ved å bruke funksjonen "sendData"). Den minste verdien er 1 000 ms (1 sekund).
"oi.receive"
spesifiserer hvilken funksjon (her "mottaData") som skal motta data når det sendes fra kontrollpanelet i Deploii.

Send data

Funksjonen kalt "sendData" har et helt vilkårlig valgt funksjonsnavn. Den kunne like godt hett for eksempel "minFunkSomSenderData", så lenge du også skrev det samme i setup-funksjonen "oi.receive".

Det "sendData" gjør, er å generere tre tilfeldige tallverdier med navnene temperatur, fukt og trykk. Vanligvis ville disse verdiene vært data som kommer fra en faktisk sensor, men det blir det din oppgave å legge til selv.

Etter at disse tre variablene er laga, brukes den viktigste funksjonen i biblioteket, "oi.send". Denne sender dataene du velger, til Deploii. Funksjonen krever to argumenter, den første er selve datastrøm-ID-en, og den andre er dataene du ønsker å sende.

Dette er tegna inn i bildet, siden det er lett å blande hva som er hva. Etter at du har laga en datastrøm på nettsida, kopierer du ID-en inn i koden som vist på bildet. Alle variabeltyper som Arduino har bygd inn, kan du sende med "oi.send"-funksjonen, inkludert arrays.

Motta data

Funksjonen "mottaData" har også et vilkårlig navn som kan byttes ut. Denne fungerer litt som "oi.send" i revers. Hver gang du bruker en modul på nettsida, sendes ID-en og dataene til kortet ditt.

Fullstendig eksempelkode

Nå som vi har sett på de forskjellige delene av koden, skal du få hele eksempelkoden i ett. Denne kan inneholde noen linjer som ikke er eksplisitt nevnt tidligere, men de trenger du ikke forstå kjempebra. Eksempelkoden er hvordan en sensorstasjon/miljøstasjon kan ha strukturert koden sin for å sende data til Deploii.

OBS!

Selve koden til eventuelle sensorer og aktuatorer følger ikke med her. Her genereres bare tilfeldige tall for å se at kommunikasjonen fungerer. Faktiske sensorer og aktuatorer må du selv programmere inn i koden og legge data til de variablene som du vil benytte.

Programkoden som tekst

//Deploii v1.0 //

#define DEPLOII_MEDIUM DEPLOII_MEDIUM_WIFI

#define DEPLOII_PROTOCOL DEPLOII_PROTOCOL_WEBSOCKETS

#include <deploii.h>

// Fyll inn nettverksinformasjon under

char wifiNavn[] = "wifi-navn";

char wifiPassord[] = "wifi-passord";

char kortId[] = "kort-ID";

Deploii oi(kortId);

void setup() {

oi.connect(wifiNavn, wifiPassord);

oi.interval(1000, sendData);

oi.receive(mottaData);

}

void loop() {

oi.loop();

}

void sendData() {

int temperatur = random(19, 21);

int fukt = random(40, 43);

int trykk = random(98, 100);

oi.send("temperatur", temperatur);

oi.send("fukt", fukt);

oi.send("trykk", trykk);

String log = String(temperatur) + ","

+ String(fukt) + "," + String(trykk);

oi.send("logg", log);

}

void mottaData(String modulID, String data) {

Serial.print(modulID);

Serial.print(": ");

Serial.println(data);

}

Skrevet av Roger Rosmo. Rettighetshaver: Company of Things AS.
Sist oppdatert 25.08.2025