Installation
- Falls noch nicht gemacht, SPI aktivieren
$ sudo raspi-config
> 8 > A5 > YES $ sudo apt-get install python3-pifacedigitalio
- Erster Test:
$ python3 /usr/share/doc/python3-pifacedigitalio/examples/blink.py
Meine Beispielprogramme
Spielereinen mit den 8 LEDs
led_lauflicht.py
led_pingpong.py
Eingabe mit den 4 Onboard-Tastern
- Drücke auf den ersten Taster (PIN 0) und dein Pi fährt herunter
- Die erste Zeile
#!/usr/bin/env python3
sorgt dafür, dass man das Programm mit./inp_shutdown.py
starten kann - Somit kann dieses Programm in die
/etc/rc.local
zum Autostart eingetragen werden
RGB-LED
Die NAND-Gatter werden zum invertieren des Signals benötigt, da der Piface nur Open-Collector-Ausgänge besitzt. Das Ganze würde mit drei Transistoren ebenfalls funktionieren. Eine RGB-LED mit gemeinsamer Anode könnte man direkt an die jeweiligen Ausgänge anschließen.
rgb_first.py
Bei diesen Programm muss die LED an die Pins 0, 1 und 2 angeschlossen werden.
rgb_html.zip
Steure die Farbe der LED über das Internet. index.php und clrs.txt liegen auf den Webserver. Beim Klicken auf eine Farbe, speichert PHP die neue Farbe in der clrs.txt. Der Phythonskript stellt jede Sekunde eine Anfrage an den Webserver und ruft die clrs.txt auf. Ändert sich der Text der clrs.txt. so sendet der Pythonskript die PIN-Kombination an das Piface.
Temperaturmessung und Anzeige
Schaltung
Die beiden Relays, die an Pin 0 und 1 angeschlossen sind, sollten durch die Jumper 5 und 6 deaktiviert werden.
Temperaturmessung
Der NE555 erzeugt ein Rechtecksignal, dessen Frequenz abhängig ist von den beiden Widerständen und den Kondesator.
Der Python-Skript misst die Periodendauer des Signal.
umgeformt:
Die Abhängigkeit des Widerstandes eines NTC von der Temperatur wird mit dieser Gleichung dargestellt. und sind spezifische Größen des Bauteils
umgeformt:
Bei meinen Temperatursensor gilt: und
Dieser Wert wird dann in einen Ringspeicher gespeichert. 128 Elemente haben sich als gut erwiesen. Nach Anfrage gibt diese Ringspeicher-Klasse den Mittelwert der gespeicherten Werte aus.
Temperatur speichern und Graph ausgeben
Der Pythonskript sendet eine Anfrage an die sendtemp.php mit GET-Elementen.
Das erste GET-Element ist data. data setzt sich aus einen UNIX-Zeitstempel, einen Unterstrich und der Temperatur aus den Ringspeicher zusammen.
Das zweite Element ist file. Dieses gibt an, in welcher Datei dieser Eintrag gespeichert werden soll. Der Dateiname wird in der Form Jahr-Wochennummer erstellt. PHP speichert den Wert von data in der entsprechenden Datei.
Ein drittes Element übermittelt ein Passwort, welches sich im Phythonskript befindet und mit dem eingebenen Passwort in der PHP-Datei übereinstimmen muss.
Dies geschieht aller fünf Minuten.
Die Darstellung des Diagramms erfolgt über jqplot. PHP fügt die Daten, die dargestellt werden sollen in die entsprechende JavsScript-Prozedur ein.
Senden an den Kilu-Server (OUTDATED!)
Jede halbe Stunde verbindet sich mein Pi via FTP mit dem Kilu-Server, wo eine Kopie meiner Homepage liegt. Diese ist im Gegensatz zu robfro.no-ip.org 24/7 erreichbar und deutlich schneller. Dann vergleicht der Pi die Dateigrößen der Wochendateien auf den Pi und auf den Kilu-Server. Wenn die Dateigröße nicht übereinstimmt, so überträgt er die entsprechende Datei. Login-Daten könne in den Phython-Skript eingetragen werden.
Temperaturanzeige
Da der Piface nur über acht Ausgänge verfügt, lässt sich eigentlich nur eine 7-Segment-Anzeige benutzen. Der Trick ist Multiplexing.
Durch das umschalten von Pin 0 wird zwischen den beiden Anzeigen umgeschalten. Das passiert alle 0,01s also 100 mal pro Sekunde.
Um auch zweistellige negative Zahlen darzustellen, habe ich folgende Regeln aufgestellt:
Der Pythonskript
MAIN.py
Der Pythonskript erstellt vier Threads: Temperaturmessung, Temperatur senden, Temperaturanzeige und Temperaturübertragung. Im MAIN-Thread läuft die Erkennung des Tastendrucks für einen Shutdown. Dieser Skript wird in /etc/rc.local eingetragen