Overzicht#

Dit is de documentatie bij een online cursus van 3 bijeenkomsten, over “het Internet of Things met de micro:bit”. Deze cursus is gebaseerd op het lesmateriaal van het keuzethema Netwerken (Internet of Things). Je kunt dat materiaal gebruiken met verschillende soorten IoT-knopen. In de huidige versie zit de micro:bit daar nog niet bij. Met deze aanvulling kun je het materiaal ook met de micro:bit gebruiken.

_images/microbit-v2-front.png

Fig. 6 micro:bit versie 2#

Waarom IoT met de micro:bit?.

  • microbits zijn laagdrempelig in het gebruik, en zijn op veel scholen beschikbaar (in tegenstelling tot de andere voorbeelden in het IoT lesmateriaal).

  • een micro:bit heeft alle componenten van een IoT-knoop: sensoren, actuatoren, microcontroller en radio, en kun je eventueel eenvoudig uitbreiden met extra sensoren en actuatoren.

  • de microbit V2 biedt (eindelijk) goede mogelijkheden voor het programmeren in Python

  • de microbit V2 kun je energie-zuinig gebruiken - voor IoT-knopen met batterijvoeding.

De cursus. De nadruk van de cursus ligt op een aantal praktische opdrachten waarbij de microbit als IoT-knoop gebruikt wordt, in een lokaal IoT-netwerk met meerdere microbits, verbonden via een (microbit) gateway met het internet. Het gebruik van de microbit vormt een uitbreiding op het bestaande lesmateriaal, met als doel om de praktische opdrachten laagdrempeliger te maken.

Wat heb je nodig?

Hardware

Benodigde hardware

Software

Gebruikte software

Netwerk

Lokaal WiFi netwerk, verbonden met het internet

Internet of Things: architectuur, communicatie#

Het Internet of Things is gericht op slimme toepassingen, waarbij data van lokale sensoren gecombineerd wordt met data en diensten “in the cloud”, voor het nemen van betere beslissingen, bijvoorbeeld voor het aansturen van lokale actuatoren. In het lesmateriaal staan enkele voorbeelden van dergelijke toepassingen.

In deze cursus (en in het lesmateriaal) gebruiken we “simpele” sensoren en actuatoren, met lage eisen aan de communicatie: we kunnen werken met lage bandbreedtes (zeer weinig bits/s) en hoge latency (mogelijk enkele seconden). Dit geeft een grote vrijheid voor de fysieke (radio)communicatie.

_images/iot-functionele-architectuur.drawio.png

Fig. 7 IoT functionele architectuur#

Bovenstaand schema geeft de functionele onderdelen van een IoT-toepassing, zonder de communicatie. Omdat deze onderdelen fysiek ver van elkaar verwijderd zijn speelt de communicatie een essentiële rol. In een dergelijk gedistribueerd systeem gebeurt de interactie tussen de onderdelen op basis van berichten. (Dat vraagt om een wat andere manier van programmeren, wat je terug vindt in NodeRed.)

In deze cursus gebruiken we IoT-nodes op basis van de microbit.

_images/iot-netwerk-architectuur.drawio.png

Fig. 8 IoT netwerk-architectuur#

De IoT netwerk-architectuur bevat naast de genoemde functionele onderdelen ook de verbindingen en netwerkapparaten. Vanuit het netwerk bezien zijn de functionele onderdelen eindapparaten.

De IoT-gateway verbindt het IoT-netwerk met het lokale (WiFi) netwerk. Deze moet dus zowel een microbit-radio bevatten als een WiFi-radio.

_images/iot-protocollen.drawio.png

Fig. 9 IoT protocollen#

Onze IoT-toepassing gebruikt het MQTT-protocol. MQTT is een publish/subscribe protocol, waarmee een symmetrische interactie tussen de verschillende onderdelen mogelijk is.

Web-toepassingen gebruiken HTTP als belangrijkste protocol. Dat is een client-server protocol, waarbij de client een andere rol heeft dan de server (asymmetrische interactie).

_images/iot-protocol-stack.drawio.png

Fig. 10 IoT protocol-stack#

Voor de IoT-toepassing gebruiken we een eigen protocol met het LPP-formaat voor de data (payload). In het IoT-netwerk gebruiken we dat in binaire vorm. In het internet transporteren we dat in een JSON-LPP (string) formaat over MQTT.

Het MQTT-protocol gebruikt de internet-protocollen TCP en IP.

Bijeenkomst 1#

In de eerste bijeenkomst geven we eerst een overzicht van een IoT-toepassing: welke onderdelen (hardware en software) spelen daarbij een rol? Hoe ziet de communicatie tussen deze onderdelen eruit?

Daarna gaan we dieper in op het microbit-IoT-netwerk, met de microbit radio als basis. Hiervoor gebruik je twee microbits: één als IoT-knoop, en één als radiologger; deze laatste is optioneel, maar wel handig. De communicatie in het netwerk gebruikt het binaire Cayenne LPP formaat voor de “payload” met de sensor-data.

We slaan de IoT-gateway even over: die komt de volgende keer aan de beurt. (Dan heb je nog even tijd om de hardware te bestellen, als je die nog niet hebt.)

De rest van de communicatie in de IoT-toepassing gebruikt het MQTT-protocol als basis. We behandelen de principes van dit protocol, en de manier waarop we dit in de IoT-toepassing gebruiken. Je kunt dit uitproberen met IoT-knopen op afstand, en met een gesimuleerde IoT-knoop in je browser.

Als er tijd over is maken we een begin met NodeRed: het programma waarmee je eenvoudig controllers kunt maken voor IoT-toepassingen. In zo’n controller verwerk je de sensordata, combineert deze eventueel met data en diensten “in the cloud”, en stuur je de actuatoren in de IoT-knopen aan.

Bijeenkomst 2#

We gaan nu met de IoT-gateway aan de slag: daarmee koppel je het microbit IoT-netwerk aan het internet. Je kunt dan de sensordata via het internet naar de controller sturen, en naar de web-app voor display van de data. En je kunt vanuit de web-app en de controller de actuator(en) van de IoT-knopen aansturen. Deze communicatie verloopt steeds via het MQTT protocol.

In NodeRed maken we flows voor de verwerking van sensordata die via MQTT binnenkomt. Hiermee kun je een dashboard maken met een grafische weergaven van de sensordata. En we maken eenvoudige flows voor het (handmatig) aansturen van de actuatoren, weer via MQTT.

Bijeenkomst 3#

We maken de toepassing compleet, door in de NodeRed controller flows te maken waarin we de sensordata (en eventuele gebruikersinvoer) koppelen aan flows voor het aansturen van de actuator(en) van de IoT-knopen.

We bespreken wat er nodig is om de toepassing uit te breiden: met extra sensoren; met extra IoT-knopen; met extra IoT-netwerken; met diensten “in the cloud”.

Tenslotte gaan we in op de manier waarop je dit materiaal in de klas kunt gebruiken: wat heb je daarvoor nog meer nodig?