Jython

14. Präzisionssensoren



 

   

Example 1: Temperatur-Messwerte des Sensirion-Sensors publizieren

Der Sensirion SHT31 ist ein billiger und vielseitig einsetzbarer digitaler Temperatur- und Feuchtigkeitssensor hoher Präzision mit einer I2C-Schnittstelle. Um die Temperatur mir MQTT zu übertragen, baut man eine einfache Anlage, die aus einem micro:bit, einen ESP32 Microcontroller und einem Sensirion-Sensor besteht. Da man für den Microcontroller und Sensor je eine I2C-Buchse braucht, muss man einige weitere Bauteile verwenden, wobei man folgende zwei Anschlussmöglichkeiten hat.

 

 

Der micro:bit ist mit einem PinBit-Stecker auf einem Breadboard befestigt. Am Grove-Anschluss (GND, 3V, sda, scl) werden zwei I2C Schnittstellen aufgebaut.

Entweder lötet man die I2C Buchsen an 4-Pin-Stecker an und steckt diese in das weisse Board ein  

oder man verwendet Grove I2C HUB und schliesst ihn mit einem Grove-Kabel mit 4 Stecker an (Bezugsquelle: www.reichelt.de).  

Die Temperatur-Messwerte werden alle 10 Sekunden unter dem Topic "/ch/sensirion/" publiziert und können mit einem Smartphone oder PC abgeholt werden.

# Sensirion1.py
import mqtt
from microbit import *
from sht31 import *
host = "broker.hivemq.com" 
topic = "/ch/sensirion"

def show(temp):
    s = "%.1f" % temp
    a = " : : "
    for c in s:
       a += c + " "
    display.show(a)

sht = SHT31()
mqtt.connectAP("mySSID", "myPassword")
mqtt.broker(host)
mqtt.connect()
while True:
    temp, humi = sht.getValues() 
    show(temp)
    mqtt.publish(topic, "Temperature: %.1f degC" %temp)
    delay(5000)
► Copy to clipboard
 

Explanations of the program code:

topic = "ch/sensirion": Die Messdaten werden unter dem Topic "ch/sensirion" publiziert
temp, humi = sht.getValues() xx
def show(temp): Formatiert die Temperatur-Anzeige zum Ausschreiben auf dem Display als Scrolltext. s ist die auf 1 Dezimalstelle gerundete Temperatur. Daraus wird eine String gebildet, der mit zwei Doppelpunkten beginnt und wo die Ziffern folgen  (mit einer Lücke zwischen den Zeichen)