Internet of Things/Node-architectuur: verschil tussen versies

Uit Lab
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met '== Node-architectuur == De architectuur van een node, en de keuzemogelijkheden die je daarvoor hebt, hangen nauw samen met de lokale IoT-architectuur. (Het niet-lo...')
 
Geen bewerkingssamenvatting
Regel 3: Regel 3:
De architectuur van een node, en de keuzemogelijkheden die je daarvoor hebt, hangen nauw samen met de lokale IoT-architectuur. (Het niet-lokale deel is - door het gebruik van de juiste interfaces en protocollen - niet hard gekoppeld aan de node-architectuur.
De architectuur van een node, en de keuzemogelijkheden die je daarvoor hebt, hangen nauw samen met de lokale IoT-architectuur. (Het niet-lokale deel is - door het gebruik van de juiste interfaces en protocollen - niet hard gekoppeld aan de node-architectuur.


=== Voorbeeld: Arduino Uno met Ethernet ===
== Voorbeeld: Arduino Uno met Ethernet ==


Het eerste voorbeeld van een node is een Arduino Uno met een Ethernet-verbinding, bijvoorbeeld in de vorm van een Ethernet-shield.
Het eerste voorbeeld van een node is een Arduino Uno met een Ethernet-verbinding, bijvoorbeeld in de vorm van een Ethernet-shield.
Regel 13: Regel 13:
* energie: bedraad (bijv. via USB; eventueel: Power over Ethernet)
* energie: bedraad (bijv. via USB; eventueel: Power over Ethernet)


=== Voorbeeld: NodeMCU met WiFi ===
== Voorbeeld: NodeMCU met WiFi ==


De NodeMCU-bordjes zijn gebaseerd op de ESP8266, waarin een WiFi-radio gecombineerd wordt met een redelijk krachtige processor. Ten opzichte van een Arduino UNO heb je veel meer rekenkracht en geheugen tot je beschikking (maar iets minder I/O pinnen). Je kunt deze bordjes gewoon via de Arduino-IDE programmeren. Bovendien zijn deze bordjes goedkoop (vergeleken met een Arduino): -12 Euro, afhankelijk van de leverancier.
De NodeMCU-bordjes zijn gebaseerd op de ESP8266, waarin een WiFi-radio gecombineerd wordt met een redelijk krachtige processor. Ten opzichte van een Arduino UNO heb je veel meer rekenkracht en geheugen tot je beschikking (maar iets minder I/O pinnen). Je kunt deze bordjes gewoon via de Arduino-IDE programmeren. Bovendien zijn deze bordjes goedkoop (vergeleken met een Arduino): -12 Euro, afhankelijk van de leverancier.
Regel 31: Regel 31:
* https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/example-sketch-goodnight-thing-sleep-mode
* https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/example-sketch-goodnight-thing-sleep-mode


=== Voorbeeld: Raspberry Pi als node ===
== Voorbeeld: Raspberry Pi als node ==


We kunnen sensoren e.d. ook direct aansluiten op een Raspberry Pi: we kunnen deze ook gebruiken als IoT-node.
We kunnen sensoren e.d. ook direct aansluiten op een Raspberry Pi: we kunnen deze ook gebruiken als IoT-node.
Regel 43: Regel 43:
** zie verder de Paho-documentatie.
** zie verder de Paho-documentatie.


=== Voorbeeld: Arduino (enz.) met RFM69 ===
== Voorbeeld: Arduino (enz.) met RFM69 ==


We gebruiken in dit geval een andere radio: de RFM69 gebruikt de 868 MHz-band. Hierdoor heeft deze een groter bereik dan het normale WiFI-bereik; bovendien is er minder kans op storing: op veel plaatsen is de WiFi-band nogal druk bezet, door WiFi, Bluetooth (en magnetrons;-). Deze radio is bovendien energie-zuinig (ten opzichte van WiFi).
We gebruiken in dit geval een andere radio: de RFM69 gebruikt de 868 MHz-band. Hierdoor heeft deze een groter bereik dan het normale WiFI-bereik; bovendien is er minder kans op storing: op veel plaatsen is de WiFi-band nogal druk bezet, door WiFi, Bluetooth (en magnetrons;-). Deze radio is bovendien energie-zuinig (ten opzichte van WiFi).
Regel 49: Regel 49:
De radio-module sluiten we door middel van een speciaal bordje aan op de Arduino: dit zorgt voor de mechanische en elektrische aanpassing. De radio gebruikt 3.3V, waar een normale Arduino 5V gebruikt.
De radio-module sluiten we door middel van een speciaal bordje aan op de Arduino: dit zorgt voor de mechanische en elektrische aanpassing. De radio gebruikt 3.3V, waar een normale Arduino 5V gebruikt.


==== Evaluatie ====
=== Evaluatie ===


Als je het energieverbruik van een node erg klein wilt maken, bijvoorbeeld om een kleinere batterij te gebruiken, of om minder vaak de batterij te vervangen, dan kun je de volgende maatregelen nemen:
Als je het energieverbruik van een node erg klein wilt maken, bijvoorbeeld om een kleinere batterij te gebruiken, of om minder vaak de batterij te vervangen, dan kun je de volgende maatregelen nemen:

Versie van 2 nov 2016 07:55

Node-architectuur

De architectuur van een node, en de keuzemogelijkheden die je daarvoor hebt, hangen nauw samen met de lokale IoT-architectuur. (Het niet-lokale deel is - door het gebruik van de juiste interfaces en protocollen - niet hard gekoppeld aan de node-architectuur.

Voorbeeld: Arduino Uno met Ethernet

Het eerste voorbeeld van een node is een Arduino Uno met een Ethernet-verbinding, bijvoorbeeld in de vorm van een Ethernet-shield.

  • In dit geval gebruik je voor de communicatie met het internet een bedrade verbinding (Ethernet). Deze kun je eventueel ook gebruiken voor de energievoorziening van de node, via "Power over Ethernet" (PoE). Hiervoor heb je extra onderdelen nodig, zowel aan de kant van de router/switch (voor het toevoegen van de power) als aan de kant van de node (voor het gebruik van de power).
  • Het officiële Arduino Ethernet-shield is nogal duur; je kunt er ook voor kiezen om hiervoor een goedkopere (Chinese) variant te gebruiken.
  • processor: Atmega328 (32 kbyte programmageheugen; 2 kbyte RAM)
  • communicatie: Ethernet (via Ethernet shield)
  • energie: bedraad (bijv. via USB; eventueel: Power over Ethernet)

Voorbeeld: NodeMCU met WiFi

De NodeMCU-bordjes zijn gebaseerd op de ESP8266, waarin een WiFi-radio gecombineerd wordt met een redelijk krachtige processor. Ten opzichte van een Arduino UNO heb je veel meer rekenkracht en geheugen tot je beschikking (maar iets minder I/O pinnen). Je kunt deze bordjes gewoon via de Arduino-IDE programmeren. Bovendien zijn deze bordjes goedkoop (vergeleken met een Arduino): -12 Euro, afhankelijk van de leverancier.

  • processor:
    • 4 MByte programmageheugen/Flash storage
    • 128 kbyte RAM
  • communicatie: WiFi (ingebouwd in ESP8266-module)
  • energie: via USB

De WiFi-communicatie vraagt de nodige energie (???); het ligt daarom niet voor de hand om hiervoor een batterij te gebruiken.

Een variant van de NodeMCU is de xxx. Deze is iets kleiner en heeft minder pinnen beschikbaar, maar is voor het overige te vergelijken met de NodeMCU-bordjes. Deze zijn nog goedkoper dan de NodeMCU-bordjes.

Je gebruikt deze bordjes vaak in combinatie met een breadboard waarop je de sensoren e.d. kunt monteren.

Voorbeeld: Raspberry Pi als node

We kunnen sensoren e.d. ook direct aansluiten op een Raspberry Pi: we kunnen deze ook gebruiken als IoT-node.

Voor het aansturen en uitlezen van de sensoren en actuatoren kunnen we NodeRed gebruiken: de NodeRed-versie van de Raspberry Pi heeft speciale nodes voor de toegang tot de de GPIO-poorten van de Raspberry Pi. NodeRed kan ook optreden als MQTT-client, zowel voor uitgaande berichten (publish) als voor binnenkomende berichten (subscribe).

Een alternatief is het gebruik van Python. Vanuit Python hebben we toegang tot de GPIO-poorten. We hebben in dit geval een MQTT-library nodig, om de Raspberry Pi als MQTT-client te kunnen gebruiken. De Paho-library is hiervoor geschikt.

  • documentatie van Paho-library: https://eclipse.org/paho/clients/python/
  • installeren van Paho-library: pip install paho-mqtt
  • gebruik van Paho-library in Python: import paho.mqtt.client as mqtt
    • zie verder de Paho-documentatie.

Voorbeeld: Arduino (enz.) met RFM69

We gebruiken in dit geval een andere radio: de RFM69 gebruikt de 868 MHz-band. Hierdoor heeft deze een groter bereik dan het normale WiFI-bereik; bovendien is er minder kans op storing: op veel plaatsen is de WiFi-band nogal druk bezet, door WiFi, Bluetooth (en magnetrons;-). Deze radio is bovendien energie-zuinig (ten opzichte van WiFi).

De radio-module sluiten we door middel van een speciaal bordje aan op de Arduino: dit zorgt voor de mechanische en elektrische aanpassing. De radio gebruikt 3.3V, waar een normale Arduino 5V gebruikt.

Evaluatie

Als je het energieverbruik van een node erg klein wilt maken, bijvoorbeeld om een kleinere batterij te gebruiken, of om minder vaak de batterij te vervangen, dan kun je de volgende maatregelen nemen:

  • beperk het gebruik van de radio;
    • hoewel zenden meer energie kost dan ontvangen, vraagt ook het ontvangen de nodige energie. Een ontvanger die continu aanstaat vraagt dan uiteindelijk veel meer energie dan een zender die maar even actief is.
  • zet de node zoveel mogelijk in de "sleep" toestand;