TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
wie du Wetterdaten, nämlich die Umgebungstemperatur und die Luftfeuchtigkeit mit Sensoren bestimmst und sie für einen Webbrowser, z.B. auf einem Smartphone, abrufbar machst. |
DIGITALER TEMPERATUR- UND FEUCHTIGKEITSSENSOR |
Digitale Sensoren wandeln eine physikalische Messgrösse nicht nur in eine Spannung um, sondern digitalisieren diese gleichzeitig und können den Messwert noch aufbereiten, beispielsweise kalibrieren, bevor sie ihn über eine digitale Schnittstelle, meist mit dem I2C-Protokoll, zur Verfügung stellen. Der Sensor SHT31D der Schweizer Firma Sensirion ist ein solcher digitaler Temperatur- und Luftfeuchtigkeitssensor hoher Präzision. Seine Genauigkeit beträgt typisch +-0.3 °C für die Temperatur und +-2 % für die Feuchtigkeit. Der Chip wird nur im SMT-Gehäuse hergestellt. Es gibt aber Breakout-Boards, an denen man ein 4-adriges Kabel mit einem Grove-Secker anlötet (Bezugsquellen: Adafruit, eBay). Die I2C-Adresse ist standardmässig 0x44. Im folgenden Programm verwendest du als Treiber das Modul sht31 mit der Klasse SHT31 und schreibst periodisch Temperatur und Feuchtigkeit auf der Konsole aus und zeigst sie gleichzeitig auf dem LED-Display an.
Programm: from oxocard import * from sht31 import SHT31 from time import sleep sht = SHT31() while True: temp, humi = sht.get_temp_humi() print("Temperature: %5.2f degC - Humidity: %5.2f%%" %(temp, humi)) display(int(temp + 0.5)) sleep(3) display(int(humi + 0.5)) sleep(3) display("::") sleep(2) |
MUSTERBEISPIELE |
Programm: from oxocard import * from tcpcom import * from sht31 import SHT31 from time import sleep html = """<!DOCTYPE html> <html> <head> <title>OxoBoard Sensirion</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="refresh" content="10" > </head> <body> <h1>Sensirion Sensor</h1> %s<br> %s<br> </body> </html> """ def onRequest(clientIP, filename, params): return html % (t, h) def show(): display(int(temp + 0.5)) sleep(3) display(int(humi + 0.5)) sleep(3) display("::") sleep(2) sht = SHT31() Wlan.activateAP(ssid = "sensirion", password = "") HTTPServer(requestHandler = onRequest) while True: temp, humi = sht.get_temp_humi() t = "Temperature: %5.2f C" % temp h = "Humidity: %5.2f %%" % humi show() Im Hobbybereich weit verbreitet ist der digitale Temperatur- und Feuchtigkeitssensor DHT22 bzw. der baugleiche Typ AM2302 mit einer typischen Genauigkeit von 0.5 °C für die Temperatur und 3 % für die Feuchtigkeit. Er verwendet ein 1-Wire-Interface, benötigt also neben der Spannungsversorgung von 3.3V nur einen einzigen GPIO-Port. Du lötest den Sensor am besten auf ein kleines Stück einer Hartpapier-Leiterplatte mit einem 6 poligen Winkelstecker, den du in den GPIO-Sockel der Oxocard steckst. Als Treiber verwendest du das Modul dht mit der Klasse DHT22.
Programm: from oxocard import * from dht import DHT22 from machine import Pin P_ONE_WIRE = 5 def show(): display(int(temp + 0.5)) sleep(3) display(int(humi + 0.5)) sleep(3) display("::") sleep(2) dht = DHT22(Pin(P_ONE_WIRE)) while True: dht.measure() temp = dht.temperature() humi = dht.humidity() print("Temperature: %5.2f degC - Humidity: %5.2f%%" %(temp, humi)) show() Auch dieses Programm kannst du leicht so ausbauen, dass die Werte über das WLAN mit einem Browser abrufbar sind. |
MERKE DIR... |
Digitales Sensoren lassen sich sehr einfach mit einem Mikrocontroller verbinden. Meist wird dabei das I2C, das SPI oder das 1-Wire-Protokoll verwendet. Für die Funkverbindung zu einem Handy oder Notebook startet man einen Access Point und einen Webserver, der die Daten im HTML-Format an einen Browser sendet. |
ZUM SELBST LÖSEN |
|
MESSDATEN ÜBER DAS INTERNET ZUR VERFÜGUNG STELLEN |
Du kannst die Messdaten auch über das Internet verfügbar machen, wenn sich die Oxocard, wie in Aufgabe 1 gezeigt, auf einem WLAN-Router anmeldet, der über das Internet zugänglich ist. Dazu musst du den Router so konfigurieren, dass er eine Hostanfrage transparent an die Oxocard weiterleitet. Meist handelt es sich dabei um eine Option unter "Virtual Servers", z.B. falls die Oxocard die IP 192.168.0.101 erhalten hat: Damit die Oxocard immer dieselbe Adresse erhält, kannst du die Mac-Adresse der Oxocard in der Router-Configuration auf eine fixe Adresse reservieren: Der Router erhält seine nach aussen sichtbare IP-Adresse von Internet-Provider. Im Router-Setup ist diese ersichtlich: Wenn nun jemand irgendwo auf der Welt im Browser diese URL 80.219.253.111 eingibt, erhält er deine Wetterdaten. Es ist sogar möglich, dass man mit einem eigenen Domain-Namen, hier bernweather.dynns.com auf die Oxocard zugreifen kann. Dazu muss man die Dienste von www.noip.com in Anspruch nehmen und in der Router-Configuration das Konto angeben: Eine andere Möglichkeit besteht darin, dass die Oxocard die Daten auf einen Cloudserver kopiert und sie so im Internet zugänglich macht. Das Vorgehen lernst du im Kapitel Cloudcomputing kennen.
|