Montag, 8. August 2016

Ein paar Tricks für den Raspberry

Onboard LEDs

Jeder Raspberry, also egal welcher Typ hat mindestens zwei LEDs eine rote für Power und ein grüne für Aktivität.
Die Grüne ist per Software ansteuerbar, man könnte damit Signale an die Außenwelt geben.
Die folgende Information ist von hier übernommen:

Die Steuerung übernehmen
echo none >/sys/class/leds/led0/trigger


Die Steuerung wieder Original setzen
echo mmc0 >/sys/class/leds/led0/trigger

Die LED steuern
echo 1 >/sys/class/leds/led0/brightness
echo 0 >/sys/class/leds/led0/brightness

Oder die LED über Python steuern
#!/usr/bin/python

import RPi.GPIO as GPIO
from time import sleep

# Needs to be BCM. GPIO.BOARD lets you address GPIO ports by periperal
# connector pin number, and the LED GPIO isn't on the connector
GPIO.setmode(GPIO.BCM)

# set up GPIO output channel
GPIO.setup(16, GPIO.OUT)

# On
GPIO.output(16, GPIO.LOW)

# Wait a bit
sleep(10)

# Off
GPIO.output(16, GPIO.HIGH)

Eingänge mit Pull UP oder Pull Down Widerstand beschalten

Will man mit einfachen Tastern etwas eingeben, muss der Eingang zunächst einen definierten Zustand haben. Entweder einen Widerstand nach Plus - PullUp oder einen nach Masse - PullDown.
Sicher ist sicher wenn man eine externen Widerstand verwendet, aber die Himbeere hat auch schon welche eingebaut. Diese 50 kOhm Widerstände kann man aktivieren.

Mit dem GPIO Tool

Mit verschiedenen Sprachen

Nur mit der Shell geht es offenbar nicht.

Mit Python (Quelle)

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
if(GPIO.input(23) ==1):
print(“Button 1 pressed”)
if(GPIO.input(24) == 0):
print(“Button 2 pressed”)
GPIO.cleanup()

Anwendungsbeispiel

Mit einem Taster den Raspberry starten bzw. herunterfahren, quasi ein Soft Power Switch.
Zwischen Pin 5 (GPIO3) und Pin 9 oder Pin 6 (Masse) des GPIO Connectors schalten wir einen kleinen Taster. Oder wir verwenden nur einen Jumper (Pin 5 - 6) falls nichst weiter am GPIO Connector steckt.
Wird Pin 5 bei herunter gefahrenem Pi (sudo halt) kurz!!! auf Masse gelegt, startet der Pi ohne die Stromversorgung unterbrechen zu müssen.
ToDo Schaltbild

Das Geniale dabei ist: Den gleichen Taster kann man verwenden um den Pi genau in diesen Aus (Halt) Zustand zu bringen.
ToDo Programm beim Systemstart zum konfigurieren des Eingangs mit PullUp und Abfrage und Einbindung in den Systemstart.
Zunächst also mal die Abfrage der Taste und den Pi herunterfahren.
Diese Python Script zum Herunterfahren habe ich von hier.
#! /usr/bin/env python
import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# GPIO3 (pin 5) set up as input. It is pulled up to stop false signals
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
    while True:
        # wait for the pin to be sorted with GND and, if so, halt the system
        GPIO.wait_for_edge(3, GPIO.FALLING)
        # shut down the rpi
        os.system("/sbin/shutdown -h now")
except:
    GPIO.cleanup()

Um eine Quittung zu bekommen, dass der shutdown Prozess eingeleitet wurde lassen wir die grüne LED zweimal blinken.
ToDo Programm um die grüne LED umzukonfigurieren und blinken zu lassen
http://www.forum-raspberrypi.de/Thread-python-aufruf-von-shell-script-in-python
http://www.python-kurs.eu/os_modul_shell.php