BeagleBoard Digitalen Ausgang

GPIO Ausgänge ansprechen

Was ist ein GPIO Port?

Ein GPIO (General Purpose Input/Output) ist eine TTL Schnitt­stelle, welche via Software angesprochen werden kann. Im Fall des BeagleBoards kann jeder dieser Ein/Ausgänge (IO-Ports) individuell geschaltet werden. Hierzu wird als erstes festgelegt ob der Port ein Aus oder Eingang ist und kann dann geschaltet werden.

Der GPIO Port findet sich auf der Rückseite und ist mit „Expansion“ beschriftet und hat 28 Pins. Wichtig ist, das das BeagleBoard mit einem TTL Pegel von 1,8 Volt arbeitet und nicht wie üblich mit 5Volt!

Port ein/ausschalten

Hierzu verwendete ich das unten aufgeführte Skript. Es wird mit einem Parameter aufgerufen, der GPIO Nummer. Zum Beispiel mit ./blink.sh 158 Quelle des Skriptes

Wichtig ist, dass man nicht versucht direkt eine LED an den Digitalen Ausgang anzuschliessen, es handelt sich um einen direkten Anschluß an die CPU, der den üblichen Strom von 20mA einer Leucht­diode nicht verkraftet!

Auch ist wichtig zu wissen ist das nicht jeder Port zur Verfügung steht, das hängt vom verwendten Betriebs­system ab. Der hier verwendete Port 158 funktioniert unter Ubuntu 12.04 und Schaltet PIN 12 des BeagleBoards. Die Zu­ordnungen von Portnummern zum Aus-/Eingang findet sich in Table 22 des BeagleBoard Reference Manual Seite 108.

#!/bin/sh
# Blink the onboard LED

GPIO=$1

cleanup() { # Release the GPIO port
  echo $GPIO > /sys/class/gpio/unexport
  exit
}

# Open the GPIO port
echo $GPIO > /sys/class/gpio/export 

trap cleanup SIGINT # call cleanup on Ctrl-C

# Blink forever
while [ "1" = "1" ]; do
  echo "high" > /sys/class/gpio/gpio$GPIO/direction 
  sleep 1
  echo "low" > /sys/class/gpio/gpio$GPIO/direction  
  sleep 1
done

cleanup # call the cleanup routine

Quelle von „strobe_gpio“: http://bbfordummies.blogspot.de/2009/07/1.html
Das TTL Signal läßt sich per Multimetter messen, 0,2 und 1,8 Volt.

Software

Ich installierte auf die üblichen weise Pakete wie apache-prefork und php. Durch folgendes PHP Skript lassen sich nun per Webbrowser die GPIO Ports ein und aus­schalten. Ich habe wie in der InterfaceGpio Klasse zu sehen drei Ports verwendet um Grün, Gelb und Rot anzusprechen. Der Apache Benutzer ist so eingestellt das er sudo ohne Passwort machen kann. Diese Methode is nicht zu empfehlen! Spätere Projekte, wie die Heizungsteuerung verwenden eine bessere Variante, damit der Webserver auf die Ports zugreifen darf.

<?php
/**
 * TestCase Digitale Ausgänge auf dem Beagleboard ein/ausschalten
 * 
 * www-data ist ein passwordless sudo user
 * 
 * @author Thomas Eimers <notdefine@gmx.de>
 * 
*/
header('Content-Type: text/plain');
require_once('InterfaceGpio.class.php');
$interface=new InterfaceGpio();
echo "All lights on...\n";
$interface->allOn();
sleep(1);
echo "All lights off...\n";
sleep(1);
$interface->allOff();
echo "Red on...\n";flush();
$interface->setPort('red', true);
sleep(1);
$interface->setPort('red', false);
...
Quellcode zum Ansteuern der Ports via PHP (InterfaceGpio.class.php)

Anschluss der LEDs

LEDs der Ampel anschliessen, sowie einbau ins Gehäuse

Für den Anschluss der LEDs ver­wendet ich eine kleine Treibe­rstufe, wie im Artikel Pegelwandler 1,8Volt => 5Volt nach­zulesen ist. Genausogut könnten an die Treiberstufe auch weitere TTL Bausteine ange­schlossen werden.

Last Change: 01-Sep-2017 03:26

Kontakt und Infos zur Person: Thomas Eimers