Tilbake
3.8
IoT og nettverkstilkobling

3.8 IoT og nettverkstilkobling

Koble mikrokontrollere til internett og bygge enkle IoT-løsninger.

55 min
5 oppgaver
IoTWiFi-modulMQTTSkytjenesterDatainnsamling
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 5 oppgaver

IoT og nettverkstilkobling

IoT (Internet of Things) – tingenes internett – handler om å koble fysiske gjenstander til internett slik at de kan samle inn data, kommunisere og utføre handlinger automatisk.

Tenk deg en temperatursensor i et drivhus som sender målinger til en sky-tjeneste. Hvis temperaturen faller under en grense, sender systemet en varsling til mobilen din og slår på varmesystemet automatisk. Dette er IoT i praksis!

IoT-arkitektur i fire lag:
1. Sensorer – samler inn data fra den fysiske verden (temperatur, fuktighet, lys, bevegelse)
2. Nettverk – overfører data via WiFi, Bluetooth eller mobilnett
3. Sky (cloud) – lagrer, analyserer og visualiserer dataene
4. Handling – alarmer, styring av enheter, varsler til brukere

I dette kapittelet skal du lære:
- Hvordan IoT-systemer fungerer
- Bruke ESP32/ESP8266 for WiFi-tilkobling
- MQTT-protokollen for enkel datautveksling
- Sende sensordata til en skytjeneste

ESP32 og ESP8266 – WiFi-mikrokontrollere
ESP32 og ESP8266 er mikrokontrollere med innebygd WiFi (og Bluetooth på ESP32). De programmeres med Arduino IDE og bruker nesten identisk syntax som vanlig Arduino.

Forskjeller fra vanlig Arduino:

EgenskapArduino UnoESP32
WiFiNei (krever ekstra modul)Ja, innebygd
BluetoothNeiJa
Klokkefrekvens16 MHz240 MHz
Analog oppløsning10 bit (0–1023)12 bit (0–4095)
Pris~200 kr~50 kr

Koble til WiFi med ESP32:
#include <WiFi.h>

const char* ssid = "MittNett";
const char* passord = "hemmelig123";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, passord);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("Tilkoblet!");
  Serial.print("IP-adresse: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // IoT-logikk her
}
📝Oppgave 1

Hva er en viktig fordel ESP32 har over en standard Arduino Uno?

MQTT – protokoll for IoT
MQTT (Message Queuing Telemetry Transport) er en lettvekts kommunikasjonsprotokoll designet for IoT. Den bruker en publish/subscribe-modell:

Tre roller:
- Broker – en server som mottar og videresender meldinger (f.eks. Mosquitto)
- Publisher – sender data til et emne (topic)
- Subscriber – abonnerer på et emne og mottar meldinger

Eksempel:

Sensor (publisher) → "drivhus/temperatur" → Broker → App (subscriber)

Sensoren publiserer temperaturen til emnet drivhus/temperatur. Appen abonnerer på samme emne og mottar oppdateringer automatisk.

Fordeler med MQTT:
- Svært lite dataforbruk (perfekt for batteridrevne enheter)
- Pålitelig levering med tre kvalitetsnivåer (QoS 0, 1, 2)
- Støtter tusenvis av enheter samtidig
- Emner (topics) organiseres hierarkisk: hus/stue/temperatur, hus/soverom/fuktighet

✏️Sende temperatur via MQTT

Vis hvordan en ESP32 kan lese en temperatursensor og publisere verdien via MQTT.

#include <WiFi.h>
#include <PubSubClient.h>  // MQTT-bibliotek

const char* ssid = "MittNett";
const char* passord = "hemmelig123";
const char* mqttServer = "broker.hivemq.com";
const int mqttPort = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);

  // Koble til WiFi
  WiFi.begin(ssid, passord);
  while (WiFi.status() != WL_CONNECTED) delay(500);

  // Koble til MQTT-broker
  client.setServer(mqttServer, mqttPort);
  while (!client.connected()) {
    client.connect("ESP32_Sensor");
  }
  Serial.println("MQTT tilkoblet!");
}

void loop() {
  int raVerdi = analogRead(34);
  float temp = raVerdi * 0.1;  // Forenklet omregning

  char melding[10];
  dtostrf(temp, 4, 1, melding);
  client.publish("drivhus/temperatur", melding);

  Serial.print("Sendt: ");
  Serial.println(melding);
  delay(5000);  // Send hvert 5. sekund
}

Programmet publiserer temperaturen til emnet drivhus/temperatur hvert 5. sekund. Enhver enhet som abonnerer på dette emnet, mottar verdien automatisk.

📝Oppgave 2

I MQTT-protokollen, hva er rollen til en «broker»?

Datainnsamling til sky

En skytjeneste lar deg lagre, analysere og visualisere IoT-data. Populære plattformer inkluderer:

- ThingSpeak – gratis plattform med grafer og analyser
- Adafruit IO – brukervennlig med dashbord
- Firebase – Googles plattform med sanntidsdatabase
- Home Assistant – åpen kildekode for hjemmeautomasjon

Typisk IoT-dataflyt:

Sensor → ESP32 → WiFi → MQTT broker → Skytjeneste → Dashbord/App

Eksempel – sende data til ThingSpeak:

#include <WiFi.h>
#include <HTTPClient.h>

String apiKey = "DIN_API_NOEKKEL";

void sendTilThingSpeak(float temperatur) {
  HTTPClient http;
  String url = "http://api.thingspeak.com/update?api_key="
               + apiKey + "&field1=" + String(temperatur);
  http.begin(url);
  int respons = http.GET();
  http.end();
}

Med ThingSpeak kan du lage grafer og sette opp varsler basert på sensordata – alt via en nettleser.

✏️IoT-system for et drivhus

Beskriv arkitekturen for et IoT-system som overvåker temperatur og fuktighet i et drivhus.

Systemarkitektur:

1. Sensorlag:
- ESP32 med DHT22-sensor (temperatur + fuktighet)
- Jordfuktighetssensor for å overvåke vanningsbehov
- Strømforsyning: USB eller solcelle med batteri

2. Nettverkslag:
- ESP32 kobler til WiFi i drivhuset
- Data sendes via MQTT til en lokal broker eller direkte til skyen
- Emner: drivhus/temperatur, drivhus/fuktighet, drivhus/jord

3. Skylag:
- ThingSpeak lagrer data og lager grafer over tid
- Regler: Hvis temperatur < 5°C, send varsling

4. Handlingslag:
- Mobilapp viser sanntidsdata og historikk
- Automatisk varsling ved ekstreme verdier
- Mulighet for å styre vanning og ventilasjon remotely

Hele systemet kan bygges for under 300 kr i komponenter.

📝Oppgave 3

Beskriv de fire lagene i en IoT-arkitektur for et smart klasserom som måler temperatur, CO₂-nivå og støynivå. For hvert lag, forklar hvilke komponenter du ville brukt og hvorfor.

Oppsummering

I dette kapittelet har du lært om IoT – tingenes internett:

- IoT-arkitektur: Sensorer → Nettverk → Sky → Handling
- ESP32/ESP8266: Mikrokontrollere med innebygd WiFi, programmeres med Arduino IDE
- MQTT: Lettvekts publish/subscribe-protokoll for IoT-kommunikasjon
- Skytjenester: ThingSpeak, Adafruit IO m.fl. for lagring og visualisering

Nøkkelbegreper


BegrepForklaring
IoTInternet of Things – fysiske enheter koblet til internett
ESP32Mikrokontroller med innebygd WiFi og Bluetooth
MQTTLettvekts meldingsprotokoll med publish/subscribe-modell
BrokerServer som videresender MQTT-meldinger
TopicEmne (adresse) som meldinger publiseres til og abonneres på
SkytjenesteNettbasert plattform for lagring og visualisering av data
📝Oppgave 4

Hvilken MQTT-topicstruktur er mest hensiktsmessig for et smarthus med sensorer i flere rom?

📝Oppgave 5

Design et komplett IoT-system for en værstasjon som måler temperatur, luftfuktighet og lufttrykk. Beskriv: a) Hvilke sensorer og mikrokontroller du ville brukt, b) Hvordan data overføres og lagres, c) MQTT-topicstrukturen, d) Hva slags visualisering og varsler du ville satt opp.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.