| TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
![]()
DU LERNST HIER... |
mit dem Temperatur-, Feuchtigkeit- und Luftdrucksensor die Umweltbedingungen erfassen und einfache Regelungssysteme programmieren. Interessant sind Umweltsensoren insbesondere im Zusammenhang mit den IoT-Anwendungen, wie du im Kapitel Internet of Things sehen kannst. |
HOCHPRÄZISE UMWELTSENSOREN |
Da Lego EV3 das I2C-Protokoll für die Kommunikation mit den Sensoren unterstützt, können nicht nur die Lego-Sensoren, sondern auch andere hochpräzise Sensoren an die EV3-Sensorports angeschlossen werden. Die TigerJython-Robotik-Bibliothek unterstützt
Sensoren mit einem angelöteten EV3-kabel können bei der TigerJython Group (TJ Group) bestellt werden. Sensirion SHT31 für Fr. 19.-, GY-SHT31 für Fr. 14.-, BME280 für Fr. 14.- (inkl Versandkosten). Die Lötarbeiten werden durch die Mitglieder der TJGroup vorgenommen. Die Bestellung erfolgt mit einem eMail an admin@tjgroup.ch. |
MUSTERBEISPIELE |
from grobot import * repeat: temp, humi = sht1.getValues() print(temp) delay(500) Wenn sich der EV3 nicht in der Nähe deines Computers befindet, oder wenn du das Beispiel mit Online-Editor ausführst, kannst du die Sensorwerte auf seinem LCD-Display anzeigen. Dazu verwendest du anstelle des Befehls print() den Befehl Beispiel 2: Temperatur und Feuchtigkeit mit formatierter Ausgabe
from grobot import * while not button_escape.was_pressed(): temp, humi = sht1.getValues() print("Temp: %6.2f, Humi: %6.2f" % (temp, humi)) delay(500) exit() Um die Werte auf dem EV3-Display anzuzeigen, verwendest du die Befehle Beispiel 3: Wetterstation mit BME280 Sensor
from grobot import * while not button_escape.was_pressed(): v = bme1.getValues() print("t: %6.2f, h: %6.2f, p: %6.2f" % (v[0], v[1], v[2])) delay(500) exit() Gleich wie beim Sensirion-Sensor, kannst du auch hier nur die einzelnen Sensorwerte anzeigen. from grobot import * repeat: temp,humi,p = bme1.getValues() print(temp) drawString("Temp: " + str(temp), 2, 2) delay(500) Beispiel 4: Temperatur-Regelung
from grobot import * ts = 30 #sollWert repeat: temp, humi = sht1.getValues() print(temp) if temp < ts - 1: setLED(1) elif temp > ts - 1 and temp < ts + 1: setLED(3) elif temp > ts + 1: setLED(0) delay(300) Auf dem gleichen Prinzip werden viele Regelsysteme aufgebaut. Anstelle der LEDs kann z.B. eine Heizung ein- und ausgeschaltet werden. |
MERKE DIR... |
Ist der SHT31 Sensor am Port 1 angeschlossen, liefert der Befehl sht1.getValues() ein Tupel mit zwei Werten (Temperatur in ° C und Luftfeuchtigkeit in %). Der BME280 Sensor liefert mit bme1.getValues() Temperatur, Feuchtigkeit und Luftdruck. Die Sensorwerte können mit dem Befehl print() im Terminalfenster oder mit dem Befehl drawString() auf dem EV3 Display angezeigt werden. Für die Anzeige wird oft eine formatierte Ausgabe verwendet. |
ZUM SELBST LÖSEN |
|
ZUSATZSTOFF |
Grafische Darstellung der Sensorwerte
Das Grafik-Fenster wird mit makeGPanel (-5, 53, -3, 52) erzeugt. Es wird in der Regel etwas grösser gewählt, damit die Beschriftung der Koordinaten-Achsen sichtbar ist. pos(x, y) setzt den Grafikcursor an die gegebene Koordinate, draw(x, y) verbindet den aktuellen Punkt mit dem Punkt(x, y). Die x-Koordinate wird nach jedem gezeichneten Wert umd 1 vergrössert. Wenn sie das Ende des Fensters erreicht hat (x = 50), beginnt die Aufzeichnung wieder am linken Rand (x = 0). Weitere Erklärungen zu den Bibliotheken ev3robot und gpanel findest du unter www.jython.ch/ev3 from ev3robot import * from gpanel import * makeGPanel(-5, 53, -3, 52) drawGrid(0, 50, 0, 50, "gray") setColor("blue") lineWidth(2) robot = LegoRobot() sht = SHTSensor(SensorPort.S3) robot.addPart(sht) x = 0 while not robot.isEscapeHit(): v = sht.getValues() temp = v[0] if x == 0: pos(x, temp) else: draw(x, temp) print(temp) x = x + 1 if x == 50: x = 0 clear() drawGrid(0, 50, 0, 50, "gray") Tools.delay(1000) robot.exit()
|
![]()