iot

8. INTERNET OF THINGS (IoT)

 

 

DU LERNST HIER...

 

die Sensordaten deines Roboters per WLAN zur Verfügung stellen, ähnlich wie Milliarden IoT-Geräten, die weltweit miteinander und mit übergeordneten Systemen kommunizieren.

 

 

WAS IST IOT?

 

Das IoT ist eines der aktuellsten Themen der heutigen Informatik. Durch Einbau von kleinen, billigen aber WLAN-fähigen Microcontrollern können Geräte und Systeme (kurz Dinge) über ein Netzwerk Daten und Informationen untereinander und mit übergeordneten Systemen kommunizieren. Im Zusammenhang mit IoT spricht man häufig von Web 3.0, einem Internet, in dem Systeme mit Sensoren automatisch eine grosse Menge von Daten erfassen, auf Cloud-Servern speichern und durch weit entfernte Kommandozentralen gesteuert werden.

Auch dein Roboter verfügt über einen WLAN-fähiger Microcontroller und Sensoren, mit welchen du einfache IoT-Anwendungen programmieren kannst.

 

 

MUSTERBEISPIELE

 


Beispiel 1: Messwerte des Ultraschallsensors per WLAN zur Verfügung stellen


Du übernimmst das Konzept aus dem vorhergehenden Kapitel. Mit deinem Programm wird eine einfache Webseite auf den Roboter hochgeladen. Diese dient aber nicht zur Steuerung des Roboters, sondern zum Anzeigen der Sensorwerte.

 

Der Roboter misst die Distanz zum Hindernis und stellt diese Werte auf der Webseite zur Verfügung. Diese kann mit einem Webbrowser auf einem Smartphone oder PC angezeigt werden.

 

from linkup import *

html = """<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="3">
  </head>
  <body> 
    <h2>WebRobot</H2> 
    Current distance: %s<br>
  </body>
</html>
"""
print("Saving HTML")
saveHTML(html) 
► In Zwischenablage kopieren

Die Webseite besteht nur aus einer Überschrift und einer zweiten Zeile, in der die Distanz angezeigt wird. %s ist ein Platzhalter für den Messwert, welchen der Ultraschallsensor zurückgibt. Der zweiter Meta-Tag im HTML-Code bewirkt, dass die Webseite alle 3 Sekunden automatisch aktualisiert wird.

from mbrobot import *
from linkup import *

def onRequest(clientIP, state, params):
   d = getDistance()
   return [d]
    
ipAddress = connectAP(ssid="xx", password="yy")
print(ipAddress)
startHTTPServer(onRequest) 
print("Server starting")
► In Zwischenablage kopieren

Wenn ein Benutzer im Webbrowser die IP-Adresse des Roboters (z.B. 192.168.0.22) eingibt, wird die Webseite mit der aktuell gemessenen Distanz angezeigt. Das Smartphone/PC muss mit dem gleichen Accesspoint wir der Roboter verbunden sein.

 

Beispiel 2: Wasserstand online überwachen

Der Wasserstand einer Pflanze kann über das WLAN z.B. mit einem Smartphone überwacht werden.

Die micro:bit-Pins sind auch auf dem mbRobot zugänglich, so dass man sehr einfach mit Krokodilklammern einen Stromkreis aufbauen kann. Das eine Kabel verbindet man mit Pin1, das andere mit 3V.  

 

Pin1 und Pin2 werden für den Ultrasonic-Sensor verwendet. Wenn man diesen entfernt, so sind die beiden Pins für andere Anwendungen frei verwendbar.

Bei niedrigem Wasserstand sind die Messwerte, die man mit dem Befehl pin1.read_analog() erhält, wesentlich kleiner als beim hohen Wasserstand, wenn die beiden Kontakte im Wasser sind. Im Browser des Smartphones oder PCs werden die Werte angezeigt.

from linkup import *

html = """<!DOCTYPE html>
<html>
  <head> 
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="5">
  </head>
  <body> 
     <h2>Remote services</h2>
     Current humidity: %s<br>
  </body>
</html>
"""

print("Saving HTML...")
saveHTML(html)
print("Done")
► In Zwischenablage kopieren

 

from linkup import *
from mbrobot import *
from microbit import *

def onRequest(clientIP, filename, params):
   v = pin1.read_analog()
   return [v]

#ipAddress = connectAP(ssid = "xx", password = "yy")
#print(ipAddress)
startHTTPServer(onRequest)    
► In Zwischenablage kopieren

Falls du di IP-Adresse deines Roboters nicht mehr weisst, kannst du die beiden auskommentierten Zeilen aktivieren. Die IP wird danach im Terminal-Fenster angezeigt.

Verbinde deinen Smartphone mit dem gleichen Accesspoint und gib im Browser diese IP-Adresse ein, um den Wasserstand anzuzeigen.

 

Umweltsensoren

Die Robotik-Bibliothek unterstützt mehrere Sensoren, mit welchen man die wichtigsten Umweltindikatoren: die Umgebungstemperatur, die Luftfeuchtigkeit und den Luftdruck übermitteln kann. Sensirion Temperatur- und Luftfeuchtigkeits-Sensoren, die im nächsten Beispiel verwendet werden, sind hochpräzise Geräte, mit einer Genauigkeit von ±0,3°C bei den Temperaturmessungen und ±2% bei der Luftfeuchtigkeit. Man kann sie praktisch an jeden Microcontroller anschliessen.

Beispiel 3: Sensirion Temperatur- und Feuchtigkeitssensor
Der Sensirion SHT31 und SHT85 sind billige und vielseitig einsetzbare digitale Temperatur- und Feuchtigkeitssensoren hoher Präzision. Interessant sind solche Messungen insbesondere zusammen mit Datenübertragung, wenn der Roboter die Temperatur und Luftfeuchtigkeit misst und diese Daten über das WLAN an einen Computer oder Smartphone liefert.

Am einfachsten Schliesst man den Sensirion-Sensor mit Hilfe des IoT-Sets an. Dieser enthält den SHT85-Sensor und alle notwendigen Komponenten, um den Sensor am mbRobot oder direkt am micro:bit anzuschliessen.  


Mit dem ersten Programm wird der HTML-Code einer einfachen Webseiten hochgeladen. Diese enthält eine Überschrift und die Anzeige der Sensorwerte. %s, %s sind Platzhalter für die Sensorwerte temp und humi.

 



from linkup import *

html = """<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="3">
  </head>
  <body> 
    <h2>Sensirion Sensor</H2> 
    Current temperature, humidity: <br><br>
    %s, %s
  </body>
</body>
</html>
"""
print("Saving HTML")
saveHTML(html) 
► In Zwischenablage kopieren

Im Hauptprogramm importierst du das Modul sht, welches die Funktionen für den Sensirion-Sensor enhält. Mit dem Befehl sht.getValues() werden die aktuellen Temperatur und Feuchtigkeit gemessen und in den Variablen temp und humi gespeichert. Die beide Return-Werte erscheinen danach auf der Webseite.

from linkup import *
from mbrobot import *
import sht

def onRequest(clientIP, filename, params):
   temp, humi = sht.getValues()
   return [temp, humi]

#ipAddress = connectAP(ssid = "xx", password = "yy")
#print(ipAddress)
startHTTPServer(onRequest) 
► In Zwischenablage kopieren

Um die Werte auf deinem Smartphone anzuzeigen, musst du im Browser die IP-Adresse des Roboters eingeben. Falls du diese nicht mehr weisst, kannst du die beide auskommentierte Zeilen aktivieren, damit die IP-Adresse im Terminalfenster angezeigt wird.



 

MERKE DIR...

 

Als IoT («Internet of Things») bezeichnet man eine aktuelle Technologie, die es durch den Einbau von billigen, WLAN-fähigen Microcontrollern den Geräten (kurz "Dingen") ermöglicht, über das Internet Sensordaten und Informationen untereinander auszutauschen und mit übergeordneten Systemen zu kommunizieren. Auch mit deinem mbRobot kannst du IoT-Anwendungen programmieren.

 

 

ZUM SELBST LÖSEN

 

 

1.

Programmiere eine IoT-Anwendung, bei der der Roboter die Werte des linken Infrarotsensors auf einer Webseite zur Verfügung stellt, so dass du diese mit deinem Smartphone anzeigen kannst.

 

2.


Programmiere eine Alarmanlage. Ein Roboter mit einem Ultraschallsensor. überwacht einen Raum. Du kannst jederzeit mit deinem Smartphone die Distanz, die er detektiert abfragen. Falls sich ein Objekt näher als 30 cm befindet, schaltet er Alarm ein, wenn das Objekt entfernt, stellt er den Alarm ab.