iot

8. INTERNET OF THINGS (IoT)

 

 

DU LERNST HIER...

 

die Sensordaten deines EV3-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.

Programm:

from grobot 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) 

def onRequest(clientIP, state, params):
   d = us3.getDistance()
   return [d]
    
startHTTPServer(onRequest)
print("Server starting")
while not button_escape.was_pressed():
    delay(100)
exit()
► 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.

Wenn ein Benutzer im Webbrowser die IP-Adresse des Roboters + :81 (z.B. 192.168.0.22:81) wird die Webseite mit der aktuell gemessenen Distanz angezeigt. Die Kommunikation erfolgt wieder über den Port 81, da der Port 80 für den Programmdownload reserviert ist.


Hochpräzise Umweltsensoren

Da Lego EV3 das I2C-Protokoll für die Kommunikation mit den Sensoren unterstützt, können auch hochpräzise Sensoren an den EV3-Sensorports angeschlossen werden. Die TigerJython-Robotik-Bibliothek unterstützt

  • Sensirion SHT31 Temperatur- und Feuchtigkeitssensor
  • ADXL345 Digitaler 3-Achsen-Beschleunigungssensor
  • BME280 Temperatur- Feuchtigkeit und Luftdrucksensor

Bezugsquelle: www.mouser.ch . Diese Sensoren sind nicht so robust verpackt wie die LEGO-Sensoren, dafür viel günstiger.

Beispiel 2: Sensirion Temperatur- und Feuchtigkeitssensor
Der Sensirion SHT31 ist ein billiger und vielseitig einsetzbarer digitaler Temperatur- und Feuchtigkeitssensor hoher Präzision. Interessant sind solche Messungen insbesondere zusammen mit Datenübertragung, wenn der EV3 die Temperatur und Luftfeuchtigkeit misst und diese Daten über das WLAN an einen Computer oder Smartphone liefert.

Um den Sensor am EV3-Sensorport anzuschliessen, schneidest du einen EV3-Verbindungskabel auf, isolierst die darin enthaltene Kabel ab und lötest das rote Kabel bei GND, das grüne bei VCC, das blaue bei SDA und das gelbe bei SCL an.

So präparierten Sensor kannst
du danach z.B. am Sensorport 1
anschliessen.


Der HTML-Code im Kopf deines Programms enthält eine Überschrift und die Anzeige der Sensorwerte. %s, %s sind Platzhalter für die Sensorwerte temp und humi.

Um die Werte auf deinem Smartphone anzuzeigen, muss du im Browser die IP-Adresse des EV3 mit dem Zusatz ":81" eingeben.

 




Programm:

from grobot 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) 

def onRequest(clientIP, filename, params):
   temp, humi = sht1.getValues()
   return [temp, humi]
    
startHTTPServer(onRequest)
print("Server running")
while not button_escape.was_pressed():
    delay(100)
exit()
► In Zwischenablage kopieren

 

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 dem EV3 kannst du IoT-Anwendungen programmieren.

 

 

ZUM SELBST LÖSEN

 

 

1.

Programmiere eine IoT-Anwendung, bei der der EV3 die Werte des Lichtsensors 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 jeder Zeit mit deinem Smartphone den Zustand überprüfen. Wenn der Roboter ein Objekt in der Nähe detektiert, schaltet er Alarm ein und stellt auf einer Webseite, die aktuelle Distanz dar.