Jython
Deutsch   English 

TJ Group-IoT-Set mit gesponsertem Sensirion-Sensor


Sensirion mit Sitz im schweizerischen Stäfa ist einer der führenden Hersteller digitaler Mikrosensoren. Die Produktpalette des Unternehmens umfasst Gas- und Flüssigkeitssensoren sowie Differenzdruck- und Umweltsensoren zur Messung von Temperatur, Feuchtigkeit, CO2 und Feinstaub.

Als Beitrag zur Technikförderung der Jugendlichen hat die Firma 500 hochpräzise Sensirion Temperatur-/Feuchtigkeit Sensoren SHT85 im Wert von über Fr. 10 000.- für den Einsatz in der Ausbildung gesponsert.

 

  Dieser digitale HighTech-Sensor ist samt Carrier Pin nur 17.8 mm hoch und 4.9 mm breit und liefert die Temperatur im Messbereich -40° bis +105°C und die relative Feuchtigkeit im Bereich 0 - 100%, beides auf 4 Dezimalstellen genau.

Um die Verwendung zu vereinfachen, haben wir einen IoT-Set bestehend aus dem Sensirion Sensor SHT85, Microcontroller ESP32, SensorLink von Oxon, Didel-mbHub für den Anschluss am micro:bit und drei Verbindungskabel zusammengestellt. SensorLink und mbHub verfügen neben dem Anschluss für den Sensirion-Sensor, über einige weitere Stecker und können auch für den Anschluss von anderen I2C Sensoren und Elektronikkomponenten verwendet werden. Eine genaue Beschreibung findet man im unter mbHub und SensorLink unten auf dieser Webseite.

TJ Group-IoT-Set

  • Sensirion Sensor SHT85
  • ESP32 Microcontroller
  • Didel-mbHub
  • SensorLink
  • 2 Grove-Verbindungskabel
  • Grove-Maqueen-Verbindungskabel

 

Beschaffung:

Das IoT-Set kann für Fr. 28.- bei der TigerJython Group (TJ Group) einzeln oder im Klassensatz (max. 10 Stück) bestellt werden. Die Bestellung erfolgt mit einem Email an:
info@tjgroup.ch (Versandadresse und Schule vermerken. Die Rechnung mit einem Einzahlungsschein wird beim Versand beigelegt).

Der Preis beinhaltet die Materialkosten für den ESP32, die Steckplatinen und Verbindungskabel. Der gesponserte Sensirion-Sensor im Wert von Fr. 24.- (solange Vorrat) und die Lötarbeiten, die durch die Mitglieder der TJGroup vorgenommen werden, sind gratis.

Zusätzlich braucht man einen micro:bit, wobei man auch den micro:bit vom mbRobot mit bereits installierten Firmware verwenden kann.


Anleitung zum Zusammenbauen und einführende Beispiele

Es gibt mehrere Möglichkeiten, das IoT-Set zu verwenden. Wir beschreiben den Anschluss des Sensirion-Sensors an einen micro:bit und mbRobot und im letzten Abschnitt die allgemeinen Anschlussmöglichkeiten für andere Sensoren und Elektronik-Komponenten.

1. Sensirion-Sensor an micro:bit anschliessen


Der Didel-mbHub wird mit zwei mitgelieferten Schrauben am micro:bit an den Pins GND und 3V angeschraubt (Schraubenkopf hinten, fest anziehen). Wenn der micro:bit am PC oder an einer Stromquelle angeschlossen ist, wird auch der Hub mit Strom versorgt.

Falls man einen neuen micro:bit verwendet, muss man eine Firmware installieren. Man wählt im TigerJython unter Tools/Devices microbit/Calliope aus und klickt unter Tools auf Flash Target (ausführliche Anleitung findet man im Kapitel Einrichtung).

 

Sensirion-Sensor vorsichtig in die kleine 4-Pin Buchse am SensorLink einstecken. Der Sensor-Chip muss im nebenstehenden Bild gegen rechts, im unteren Bild nach vorne schauen.

Achtung: Für den Transport empfiehlt sich, den Sensor jeweils wegzunehmen, da die Pins leicht beschädigt werden können.


Den SensorLink mit dem kurzen I2C-Verbindungskabel an einer I2C- Büchse am mbHub anschliessen.

 


Beispiel 1
: Messwerte des Sensirion-Sensors anzeigen.

In einer endlosen Schleife werden alle 200 Millisekunden die Sensorwerte abgefragt. Die Funktion sht.getValue() gibt zwei Werte: Temperatur (in Grad Celsius) und Luftfeuchtigkeit (in Prozent) zurück. Die beiden Werte werden alle 200 Millisekunden im Terminalfenster ausgeschrieben. Die Temperatur wird zusätzlich als Scrolltext auf dem micro:bit-Display angezeigt.

#ShtEx1.py
from microbit import *
import sht

while True:
   temp, humi = sht.getValues()
   print(temp, humi)
   display.scroll(str(temp))
   sleep(200)
► In Zwischenablage kopieren
 



Anzeige im Terminalfenster


Erklärungen zum Programmcode:
import sht: Importiert das Modul sht
temp, humi = sht.getValues(): Gibt die Messwerte des Sensirion-Sensors zurück
display.scroll(str(temp)): Zeigt die Temperaturwerte als Scrolltext auf dem micro:bit-Display an


2. ESP32 und Sensirion-Sensor an micro:bit anschliessen

Für Anwendungen mit WLAN-Kommunikation muss am micro:bit der ESP32 Microcontroller angeschlossen werden. Der ESP32 ist WLAN-fähig und erweitert wie ein Coprozessor die knappen Ressourcen des micro:bits. Ausserdem kann auf dem ESP32 ein einfacher Webserver eingerichtet werden, der auf HTTP-Requests von einem Smartphone oder PC reagiert.

Den ESP32 mit einem I2C-Verbindungskabel am mbHub anschliessen.

Auf dem ESP32 muss die LinkUp Firmware (Version Loboris) installiert sein. Auf dem ESP im IoT-Set ist die Firmware bereits vorinstalliert. Die Firmware kann jederzeit neu installiert werden. Man schliesst den ESP mit einem USB-Kabel am PC an, wählt im TigerJython unter Tools/Devices ESP32 , gibt den Anschluss-COM-Port an und klickt unter Tools auf Flash Target und wählt Loboris (Eine ausführliche Anleitung findet man im Kapitel LinkUp ).

Die beiden untenstehenden Programme werden auf dem micro:bit ausgeführt, dabei ist der micro:bit am PC angeschlossen und kommuniziert während der Programmausführung mit dem ESP. Dieser braucht immer eine eigene Stromversorgung über den USB-Stecker. Man schliesst ihn mit einem USB-Kabel an eine Powerbank oder an ein Ladegerät an.

Ist das Programm auf den micro:bit hinuntergeladen, genügt die Stromversorgung des ESP auch für den micro:bit.

 

 

Beispiel 2: Die Temperaturwerte im Browser auf einem Smartphone oder PC anzeigen.

Der ESP32 und der Smartphone bzw. PC müssen Zugang zum gleichen Accesspoint haben. Auf dem micro:bit wird zuerst das Programm SaveHTMLShtEx2.py ausgeführt. Dabei wird der HTML-Code einer einfachen Webseite auf den ESP32 hochgeladen.

# SaveHTMLShtEx2.py

from linkup import *

html = """<!DOCTYPE html>
<html>
  <head> 
    <title>Sensirion</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="5">
  </head>
  <body> 
     <h1>Sensirion</h1>
     Current temperature: %s<br>
  </body>
</html>
"""

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

 


Mit dem Programm ShtEx2.py wird eine Verbindung zum Accesspoint erstellt und ein Webserver gestartet. Die SSID und Passwort des Accesspoints werden im Programm eingegeben. Nach dem Programmstart wird die zugeteilte IP-Adresse des ESP32 mit Scrolltext auf dem micro:bit-Display angezeigt. Wählt man im Browser diese IP-Adresse, so wird ein HTTP-GET Request an den Server gesendet und die die Callbackfunktion onRequest() aufgerufen. Der Rückgabewert dieser Funktion ist ein Tupel mit den gemessenen Sensorwerten für die Temperatur und Feuchtigkeit. Auf der Webseite wird nur die Temperatur angezeigt und die Anzeige alle 5 Sekunden aktualisiert.


# ShtEx2.py
from linkup import *
from microbit import *
import sht

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

ipAddress = connectAP(ssid = "MySSID", password = "pw")
display.scroll(ipAddress, wait = False)
startHTTPServer(onRequest)
► In Zwischenablage kopieren
 


Erklärungen zum Programmcode:
connectAP() : Erstellt eine Verbindung zum Accesspoint (mit SSID und Passwort) und gibt die erhaltene IP-Adresse zurück
temp, humi = sht.getValues(): Messwerte des Sensirion-Sensors
startHTTPServer(onRequest): Startet einen HTTP-Servers, der die GET-Requests mit der Callbackfunktion onRequest() behandelt
meta http-equiv="refresh" content="5": Die Webseite wird alle 5 Sekunden aktualisiert
Current temperature: %s: Der HTML-Code enthält einen Format-Parameter %s, der durch den Messwert ersetzt wird


3. Sensirion-Sensor an mbRobot anschliessen

Hat man bereits einen mbRobot mit LinkUp zusammengebaut, kann der SensorLink mit dem Sensirion-Sensor direkt am mbRobot (Maqueen) angeschlossen werden.

Man entfernt das Kabel, mit welchem der ESP32 am Maqueen-Chassis angeschlossen ist. Den Ultraschallsensor kann man wegnehmen.

In den gleichen Stecker steckt man das längere Verbindungskabel (Grove-Maqueen-Kabel) aus dem IoT-Set (mit rot auf +).

Mit einem kurzen I2C-Verbindungskabel schliesst man den SensorLink an.

Das noch freie Kabel von ESP32 schliesst man neu am SensorLink an, wobei man wieder achten muss, das rote Kabel bei + ist.

Wird Maqueen der ESP32 aus dem IoT-Set verwendet, schliest man den ESP am Grove-Port des SensorLink an.

 

Zuerst wird, wie im Beispiel 2, einer Webseite hochgeladen. Mit dem Programm ShtEx3.py wird auf dem ESP32 ein Webserver und gleichzeitig auch ein Accesspoint mit der SSID = "mbRobot" und leerem Password eingerichtet. Will man mit einem Smartphone oder PC die Temperaturwerte anzeigen, muss mann in den WLAN-Einstellungen auf dem Smartphone/ PC den Accesspoint "mbRobot" wählen (Passwort leer) und im Browser die IP-Adresse 192.168.4.1 eingeben.

Der ESP32 benötigt wieder eine zusätzliche USB-Stromversorgung.

# SaveHTMLShtEx3.py
from linkup import *

html = """<!DOCTYPE html>
<html>
  <head> 
    <title>Sensirion</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="5">
  </head>
  <body> 
     <h1>Sensirion</h1>
     Temperature, humi: %s,%s<br>
  </body>
</html>
"""

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

 

# ShtEx3.py
from linkup import *
from microbit import *
import sht

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

createAP(ssid="mbRobot", password="")
startHTTPServer(onRequest)
► In Zwischenablage kopieren
 


Erklärungen zum Programmcode:
createAP("mbRobot", password="") : Erzeugt einen Accesspoint mit der SSID="mbRobot" und leerem Passwort


4. IoT-Set für weitere Elektronik-Experimente verwenden

Der Didel-mbHub und SensorLink sind so konzipiert, dass sie für den Anschluss von weiteren I2C-Sensoren und Elektronik-Komponenten verwendet werden können. Sie verfügen über drei I2C-Grove-Stecker und über weitere 4-Pin Headers (Stecker und Buchsen, 2.54 mm Norm).

Die Grove-Stecker haben immer 4 Pin-Anschlüsse (GND, VCC, SDA, SCL).

 

Kabelfarben: Anschlussbezeichnung   Anschlussbelegung beim I2C-Grove

schwarz
rot
weiss
gelb
GND ( -)
VCC (+ , 3.3V, 3V)
SDA ( D)
SCL (C)
 


Didel-mbHub - Beschreibung

   


Sensorlink - Beschreibung

 


Beispiel 4: Werte des Sensirion-Sensors am Oled-Display anzeigen

Das Oled-Display kann entweder an der 4-Pin Buchse oder mit einem Grove-Stecker angeschlossen werden.

 

Das Modul oled ist ein Zusatzmodul und muss zuerst an den micro:bit heruntergeladen werden. Dabei geht man wie folgt vor:
- im TigerJython Hilfe/APLU-Dokumentation/micro:bit/Zusatzmodule wählen
- Download aller Module wählen, die Datei mbmodules.zip und im beliebigen Ordner auspacken
- Die Datei oled.py im Editor öffnen
- Tools/Modul hinunterladen wählen

 

#ShtEx4.py
from microbit import *
import sht
import oled

oled.init()
while True:
   temp, humi = sht.getValues()
   print(temp, humi)
   oled.text(0, 0, "Temp:" + str(temp))
   oled.text(0, 1, "Humi:" + str(humi))
   sleep(500)
► In Zwischenablage kopieren


Erklärungen zum Programmcode:

oled.init() : initialisiert den Oled-Display
oled.text(x, y, s) : schreibt den Text s (Zeile x, Spalte y)