Aus Raspberry Pi Geek 06/2014

Arduino und RasPi drahtlos koppeln (Seite 2)

Auch das Ansteuern von Servo-Motoren beherrscht das XinoRF. Dazu schließen Sie den Motor an Pin 9 an und bedienen den Servo über den zugehörigen Schieberegler neben D09 (Abbildung 4).

Abbildung 4: So schließen Sie einen Servo-Motor an den XinoRF an.

Abbildung 4: So schließen Sie einen Servo-Motor an den XinoRF an.

WIK ermöglicht aber noch ausgeklügeltere Projekte. Über den Abschnitt Advanced Analog lesen Sie beispielsweise die Temperatur eines mit dem XinoRF verbundenen Thermistors aus (Abbildung 5). Das erfordert normalerweise eine komplizierte Umrechnung des gemessenen Widerstandswerts, in diesem Fall allerdings erledigt das WIK transparent für Sie.

Abbildung 5: Verkabelungsdiagramm für den Thermistor.

Abbildung 5: Verkabelungsdiagramm für den Thermistor.

Dazu wechseln Sie in die Sektion Advanced Analog von WIK und klicken Read an – schon erscheint im Feld Temperature der aktuelle Wert (Abbildung 6). WIK ist allerdings nur auf Temperaturen zwischen 0 und 40 Grad Celsius geeicht. Liegt der zu messende Wert außerhalb dieses Bereichs, steht eine komplexe Rekalibrierung an.

Abbildung 6: Auslesen der Temperatur mittels eines Resistors in WIK.

Abbildung 6: Auslesen der Temperatur mittels eines Resistors in WIK.

Mithilfe von WIK lassen sich die erfassten Temperaturwerte auch als Diagramm ausgeben. Dazu verlassen Sie die bisher verwendete Oberfläche und wählen bei einem erneuten Start im WIK-Launcher den Punkt Graphs an. Im Reiter Introduction klicken Sie auf Connect, um wieder eine Verbindung zwischen RasPi und XinoRF herzustellen.

Wechseln Sie in die Sektion Temperature und klicken Sie dort Go an. Die Anwendung liest daraufhin 20 Sekunden lang jede Sekunde einmal den Wert von Pin A0 des XinoRF ein und erzeugt damit ein Diagramm. Durch Modifizieren der Parameter für Delay und Repeat verändern Sie das Intervall zwischen den Messungen und die Dauer der Messwerterfassung nach Belieben.

LLAP

Zwar erleichtert WIK den Einstieg in den Umgang mit dem RasWIK-Paket, hat aber nur begrenzten praktischen Nutzen. Erfreulicherweise beherrschen das Slice of Radio und der XinoRF das Lightweight Local Application Protocol (LLAP), über das sie drahlos Nachrichten austauschen können. Im Endeffekt bedeutet das, dass Sie bei Bedarf den XinoRF vom RasPi aus mittels Python-Skript steuern. Listing 1 demonstriert das anhand des bereits beschriebenen LED-Versuchs – diesmal aber ohne WIK und mit drahtloser Steuerung.

Listing 1

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Einfaches Python-Skript zur LED-Ansteuerung
import serial
from time import sleep
port = '/dev/ttyAMA0'
baud = 9600
serial_connection = serial.Serial(port=port, baudrate=baud)
sleep(0.2)
serial_connection.write('a--D11HIGH--')
sleep(3)
serial_connection.write('a--D11LOW--')
serial_connection.close

Das Skript definiert zunächst den Port und dessen Geschwindigkeit. Anschließend öffnet es eine serielle Verbindung und schickt Nachrichten an den XinoRF. Die lauten hier a--D11HIGH-- und a--D11LOW-- und setzen Pin 11 auf HIGH respektive LOW, was die LED ein- und ausschaltet.

Das Auslesen eines Pin-Werts auf dem XinoRF gestaltet sich ähnlich simpel. Die beiden Anweisungen aus Listing 2 lesen 12 Zeichen über den seriellen Port ein und geben diese aus.

Listing 2

 

reading = serial_connection.read(12)
print (reading)

Ans Eingemachte

Die Möglichkeit, programmgesteuert Werte über die XinoRF-Pins einzulesen, eröffnet ein weites Feld an Einsatzmöglichkeiten. So können Sie beispielsweise den mitgelieferten Fotowiderstand (Light-dependent Resistor, LDR) und einen normalen 10K-Widerstand mit dem Board verbinden, die gelieferten Werte kontinuierlich einlesen und in eine Textdatei schreiben.

Dazu verbinden Sie zunächst einmal, wie in Abbildung 7 gezeigt, die Widerstände mit dem Board. Dann tippen Sie den Code aus Listing 3 ab, speichern ihn als read_write_values.py und machen die Datei über das Kommando chmod +x read_write_values.py ausführbar.

Abbildung 7: Verkabelungsdiagramm für den Fotowiderstand.

Abbildung 7: Verkabelungsdiagramm für den Fotowiderstand.

Wie der Code aus dem vorigen Beispiel initialisiert auch dieses Skript zunächst eine serielle Schnittstelle und stellt die Verbindung zum XinoRF her. Über eine Endlosscheife liest es dann die Werte von Pin 0 aus. Die zurückgelieferten Rohdaten der Form a–A0+593— parst es dann, indem es die ersten sechs Zeichen verwirft und alle Minus-Zeichen entfernt.

Übrig bleibt der Messwert, den das Skript dann an die Datei values.txt anhängt. Die sleep-Befehle innerhalb der Schleife definieren die Intervalle zwischen den einzelnen Lese- und Schreibvorgängen. Das Skript arbeitet die Schleife so lange ab, bis ein Fehler auftritt, wie etwa eine Unterbrechung per Tastatur mit [Strg]+[C].

RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben