linslot - Software
Voraussetzungen
- Arduino - Diecimila (optional mit Erweiterungsplatine) oder IO-Warrior 24
- qt4, qt4-dev (bei gängigen Distributionen als Paket verfügbar)
- libsqlite3, libsqlite3-dev (bei gängigen Distributionen als Paket verfügbar)
- Für
die Sound Ausgabe wird das 'Network audio System' NAS benötigt. Der
nasd muss laufen, wird bei den gängigen Distributionen via /etc/init.d/nas start gestartet.
Arduino
- avr-libc, avrdude, gcc-avr, binutils-avr (bei gängigen Distributionen als Paket verfügbar)
- die
Entwicklungsumgebung von hier http://www.arduino.cc/en/Main/Software
(davon wird nicht die IDE sondern die Arduino-Libraries benötigt)
IO/Warrior
- Das Kernelmodul fuer den IO/Warrior (http://www.codemercs.com)
Build
Auspacken
tar xvjf linslot-x.x.x.tar.bz2
cd linslot
Hardware wählen
In der Datei linslot.pro die Hardware wählen (Arduino/IO-Warrior), einfach die
andere HW auskommentieren. Beispiel:
#interface = iowarrior
interface = arduino
Compilieren
qmake # je nach QT-Installation ggf. qmake-qt4 (wichtig ist das qmake von qt4.x verwendet wird)
make -s
Build / Upload des Arduino (ATmega) Codes
Der Build Prozess ist nur nötig wenn man am Code des ATmega Programmteils etwas verändert hat, ansonsten kann man zum nächten Schritt (upload) übergehen (das aktuelle HEX File ist bereits im Tarball enthalten).
Vor
dem build muss im Makefile (avr/Makefile) der Installationspfad
der Arduino Library angegeben werden (Zeile: ARDUINOBASE = ....)cd linslot/avr
make clean
make -s
Arduino an USB anschließen, den USB Port im Makefile einstellen (Zeile: PORT = /dev/ttyUSB0)
Nun noch der Upload
make upload
Hinweis:
Sollte der upload nicht starten hilft bei mir das gleichzeitige 'kurze' betätigen
der Reset-Taste auf dem Arduino (gleichzeitig mit dem starten von 'make upload')
Installation
System
Das Kernel Modul solle nach der Installation automatisch geladen werden.
Arduino: Modul 'ftdi_sio'
IO/Warrior: Modul 'iowarrior'
IO/Warrior
Um den Warrior nun immer unter dem gleichen Device File ansprechen zu können
ist es hilfreich eine entsprechende udev-Regel anzulegen. Ein Beispiel wie es unter
den meisten aktuellen Distributionen funktionieren sollte liegt im Ordner udev.
Einfach die Datei nach /etc/udev/rules.d/ kopieren:
cp ./udev/10-iowarrior.rules /etc/udev/rules.d/
Programm
cd linslot
su root
mkdir -p /usr/local/share/linslot/
cp -a pixmap sound /usr/local/share/linslot/
chmod -R a+rX /usr/local/share/linslot/
cp linslot /usr/local/bin
chmod 755 /usr/local/bin/linslot
Start
linslot
oder ohne Anschluss externer Hardware (Arduino, IO/Warrior, ...) im Testbetrieb
linslot -t
dann gibt es ca. alle zwei Sekunden ein generisches Durchfahrtsignal.
Windows
Das
Programm sollte ebenso unter Windows laufen, dort stehen ebenso
die verwendeten Libraries (QT4) und Treiber zur Verfügung.Eventuell sind kleinere Anpassungen nötig, generell habe ich die
Erfahrung gemacht, dass mit QT entwickelte Programme ohne viel Aufwand
unter Windows laufen.