Software
Die Platine selbst enthält keinen Controller und damit keine Firmware. Hier jedoch einige nützliche Hinweise und Codeschnipsel zur Ansteuerung. Ich habe sie bisher nur über Bash-Scripts gesteuert.
Bash-Skripts
Die Richtung der I/O-Pins wird zwar bereits vom EEPROM vorgegeben, um sie per Bash-Script nutzen zu können müssen wir sie jedoch exportieren:
Erst danach können wir die Pins direkt setzen, z.B. so:
Hier sehen wir auch gleich wie man Impulse erzeugt, die zum Ansteuern bipolarer Relais erforderlich sind. Der erste Sleep sorgt mit 2 Sekunden dafür, dass der Kondensator ausreichend geladen ist. Dann wird der Treiber eingeschaltet und mit einem 50 ms-Sleep die Impulszeit abgewartet. Danach schalten wir den Treiber wieder aus.
Das Timing mit Sleep ist selbst in Bash hinreichend genau. Zur Erzeugung von Messimpulsen (zum Ermitteln der aktuellen Relais-Stellung) und zur Auswertung von Tpulse reicht Bash jedoch nicht. Hier bräuchte man ein exaktes Timing und Auflösungen im µs-Bereich. Das habe ich bisher nicht versucht und ich weiß auch nicht, ob das mit dem Pi überhaupt möglich ist (zumindest mit Raspbian).
Wichtig ist, dass immer nur eine einzige Spule eines einzigen Relais angesteuert wird und davor zwei Sekunden gewartet wird um sicherzustellen, dass der Speicherkondensator geladen ist.
Cron-Skript
Als Systemkonstante ist die NAS-Platte per UUID definiert. Damit wird vermieden, versehentlich die falsche Platte (/dev/sdx) als NAS zu mounten. Unter /proc/mounts erscheint sie jedoch als sdx. $(/bin/readlink -e $d) hilft hier bei der Zuordnung, wobei $d der UUID-Link (/dev/disk/by-uuid/<UUID>) ist.
Backup-Skript
Das Backup-Skript ist etwas länger, deshalb habe ich ihm eine eigene Seite spendiert.