Startseite>Mit Tinkerforge für Embedded-Projekte entwickeln
Aus Raspberry Pi Geek 10/2018

Mit Tinkerforge für Embedded-Projekte entwickeln (Seite 2)

Für den Zugriff auf ein RED Brick stellt dieses unter anderem ein Webinterface bereit, das Sie erreichen, sobald Sie das Brick über eine Extension netzwerkfähig machen. Die Webseite liefert einen Überblick über die Software, die Logfiles sowie weitere Daten, die das Element sammelt oder bereitstellt.

Langsame Annäherung

Für einen Test stand ein vorgefertigtes Kit aus einem Infrarot-Sensor für Abstandsmessungen sowie einer schaltbaren LED bereit. Beides war bereits fertig mit einem Brick verbunden (Abbildung 1). Grundlage für den Code in Listing 1 bildete ein Beispiel von der Webseite [2], das die Callback-Funktion erläutert, hier aber einen anderen Callback verwendet, um die Fallunterscheidung zu ermöglichen.

Abbildung 1: Das Testkit umfasste ein Brick (links) sowie eine Mehrfarb-LED (rechts hinten) und einen Infrarot-Distanzsensor (rechts vorne).

Abbildung 1: Das Testkit umfasste ein Brick (links) sowie eine Mehrfarb-LED (rechts hinten) und einen Infrarot-Distanzsensor (rechts vorne).

Listing 1

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = "localhost"
PORT = 4223
DST_UID = "UID Abstandsmesser"
LED_UID = "UID LED"
LED_DST0_R = 255
LED_DST0_G = 0
LED_DST0_B = 255
LED_DST1_R = 0
LED_DST1_G = 0
LED_DST1_B = 255
LED_DST2_R = 0
LED_DST2_G = 255
LED_DST2_B = 0
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_distance_ir import BrickletDistanceIR
from tinkerforge.bricklet_rgb_led_button import BrickletRGBLEDButton
# Callback function for distance callback
def cb_distance(distance):
  print("Distance: " + str(distance/10.0) + " cm")
  if distance < 300:
    rgb.set_color(LED_DST0_R,LED_DST0_G,LED_DST0_B)
  elif 300 < distance < 500:
    rgb.set_color(LED_DST1_R,LED_DST1_G,LED_DST1_B)
  else:
    rgb.set_color(LED_DST2_R,LED_DST2_G,LED_DST2_B)
if __name__ == "__main__":
  ipcon = IPConnection() # Create IP connection
  dst = BrickletDistanceIR(DST_UID, ipcon) # Create device object
  rgb = BrickletRGBLEDButton(LED_UID, ipcon) # Create device object
  ipcon.connect(HOST, PORT) # Connect to brickd
  # Don't use device before ipcon is connected
  # Initialize color
  rgb.set_color(LED_DST2_R,LED_DST2_G,LED_DST2_B)
  # Register distance callback to function cb_distance
  dst.register_callback(dst.CALLBACK_DISTANCE, cb_distance)
  # Configure callback period
  dst.set_distance_callback_period(100)
  raw_input("Press key to exit\n") # Use input() in Python 3
  ipcon.disconnect()

In der Praxis misst der Sensor nun mit einer Periode von 100 Millisekunden den Abstand. Liegt dieser über 50 Zentimeter, leuchtet die LED grün, zwischen 50 und 30 Zentimeter wechselt sie auf Blau, und unterhalb von 30 Zentimeter Distanz schaltet sie (auf Wunsch eines jüngeren Familienmitglieds des Autors) auf Pink.

Möchten Sie das Codebeispiel für einen eigenen Aufbau mit denselben Teilen verwenden, müssen Sie lediglich die Variablen DST_UID sowie LED_UID anpassen. Mit diesen IDs registrieren sich die externen Elemente beim Brick, und nur mit der korrekten ID sind Sie in der Lage, diese anzusprechen. Diese IDs ermitteln Sie mit der Software Brickv, die der Hersteller bereitstellt (Abbildung 2). Sie finden die Werte in der Spalte UID der Übersicht.

Abbildung 2: Mit Brickv verschaffen Sie sich einen Überblick über die Module in einem Projekt, lesen deren UID aus und aktualisieren bei Bedarf die Firmware.

Abbildung 2: Mit Brickv verschaffen Sie sich einen Überblick über die Module in einem Projekt, lesen deren UID aus und aktualisieren bei Bedarf die Firmware.

Das Programm setzte im Test unter Ubuntu 16.04.4 LTS noch die Pakete python-pip, python-setuptools sowie python-wheel voraus. Danach klappte die Installation der Bibliothek tinkerforge mit folgendem Befehl:

$ pip install tinkerforge

Aufgrund der ausführlichen API-Dokumentation [3] klappt der Einstieg anschließend recht einfach. Das Unternehmen setzt den Open-Source-Gedanken konsequent um: Neben der ausführlichen Dokumentation der Schnittstellen und Funktionen liefert es auch Informationen zur Hardware. Das erlaubt es versierten Anwendern, die Bausteine für eigene Zwecke umzubauen oder sogar neue Module zu entwickeln.

Fazit

Dem System Tinkerforge fehlt verständlicherweise der chaotische Charakter, zu dem RasPi-Projekte bisweilen neigen. Wirre Kabel, dampfende Kondensatoren und hektisch blinkende Dioden sind hier eher die Ausnahme als die Regel. Der wohldefinierte Kosmos der vorgefertigten Bauteile bietet vor allem Einsteigern die Möglichkeit, sich in Ruhe mit den Eigenheiten der Komponenten zu beschäftigen.

In diesem Zusammenhang kommt einem schnell die Ausbildung in Schulen in den Sinn, für die das Unternehmen folgerichtig ein Komplettset anbietet. Das hat zwar einen happigen Preis, verursacht aber dennoch für die ohnehin schon arg gebeutelten Etats der Schulen keine akute Bankrottgefahr.

Im Rapid Prototyping punktet das System ebenfalls, da sich selbst Designer ohne tiefere Kenntnisse der Elektronik damit an erste Muster herantrauen dürfen. Mit den Schnittstellen nach außen weist das Tinkerforge-System dem Benutzer obendrein einen Weg in die Weiten der echten Elektronikbastelei. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland