1.30.1.1.3.7. KogniDoor-LED-Steuerung¶
Kontakt: | Alexander Neumann <alneuman@techfak.uni-bielefeld.de> ; Michael Adams <madams@techfak.uni-bielefeld.de> |
---|---|
CITK: | Die Komponente läuft auf einem Raspberry Pi2 und wird manuell installiert. |
Setup: |
Zur Aktivierung der Serial Console muss die Datei /boot/cmdline.txt geändert werden (vgl. Ubuntu Anleitung): dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootwait
und die neue Datei /etc/init/ttyAMA0.conf mit folgendem Imhalt hinzugefügt werden: start on stopped rc or RUNLEVEL=[12345]
stop on runlevel [!12345]
respawn
exec /sbin/getty -L 115200 ttyAMA0 vt102
Partionen (vgl. Ubuntu Anleitung): $ sudo fdisk /dev/mmcblk0
Delete the second partition (press d, press 2), then re-create it using the defaults (press n, press p, press 2, press enter, press enter), then write and exit (press w). Reboot the system, then: $ sudo resize2fs /dev/mmcblk0p2
There is no swap partition/file included. If you want swap, it’s recommended you do: $ sudo apt-get install dphys-swapfile
Benötigte Pakete: $ sudo apt-get install curl python2.7 python2.7-dev python-setuptools git subversion build-essential build-essential cmake htop c liblog4cxx10-dev i2c-tools libboost-dev libboost-atomic1.54-dev libboost-chrono1.54-dev libboost-date-time1.54-dev libboost-filesystem1.54-dev libboost-program-options1.54-dev libboost-regex1.54-dev libboost-signals1.54-dev libboost-system1.54-dev libboost-thread1.54-dev libprotobuf-dev protobuf-compiler gcovr lcov python-smbus
I2C einrichten Um Module beim Systemstart zu laden trägt man folgende Zeilen (Ein Modul pro Zeile) in die /etc/modules ein: i2c-bcm2708
i2c-dev
bzw. lädt die Module manuell: $ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev
und testet diese: $ lsmod | grep i2c
i2c_bcm2708 12672 0
Gruppen anpassen Der Benutzer muss zur Gruppe i2c hinzugefügt werden, um den I2C Bus ansprechen (Lesen/Schreiben) zu können: $ sudo adduser ubuntu i2c
I2C abschließend testen Falls kein Gerät angeschlossen ist, erscheint folgende Ausgabe (bei angeschlossenem I2C Gerät ein Eintrag mit Adresse): $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Quellcode der Drittprojekte
Spread sollte noch gepatched werden (im Ordner eine Datei mit folgendem Inhalt anlegen, z.B. patch.sh): #!/bin/bash
tar xzvf spread_4.4.0.orig.tar.gz
cd spread-src-4.4.0
PATCH_DIR=../spread-4.4.0/debian/patches
for PATCH in $(cat "${PATCH_DIR}/series") ; do
patch -p1 < "${PATCH_DIR}/${PATCH}"
done
autoconf
Und ausführen: $ chmod +x patch.sh
$ ./patch.sh
$ ./configure --prefix=/home/ubuntu/door-pi
$ make && make install
RSC/RSB/RST: Zur Installation von RSB, RSC und RST: Robotic Service Bus. Hier ist auf das Prefix zu achten. Im Rahmen der Installation für den RPi2 der KogniDoor ist das Prefix: /home/ubuntu/door-pi
|
Kontakt: | Erweiterungen: Britta Kemper <britta.kemper@dmwschwarze.de> |
Vorbedingung: | Der Quellcode kann aus dem Git-Repository <https://synergy.cit-ec.de/git/kognihome-tp2.led-dimmer.git>
runtergeladen werden. Danach wird das Programm mit $ python setup.py install --prefix=/vol/kognihome/releases/nightly
|
Quickstart: |
$ led-dimmer
|
1.30.1.1.3.7.1. RSB-Schnittstellen¶
Scope | Type | Description |
---|---|---|
/io/vision/led/blink/inside/1 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/blink/inside/2 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/blink/inside/3 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/blink/outside/1 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/blink/outside/2 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/blink/outside/3 | rst.vision.Color | blinkt in der gesetzten LED-Zargenfarbe |
/io/vision/led/ir | int | setzt IR-LED-Intensität in der Zarge |
/io/vision/led/rgba | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/inside/1 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/inside/2 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/inside/3 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/outside/1 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/outside/2 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgba/outside/3 | rst.vision.Color | setzt LED-Zargenfarbe |
/io/vision/led/rgbastring | string | setzt setzt LED-Zargenfarbe |
1.30.1.1.3.7.1.1. Anmerkungen¶
RST Typ
Der Wertebereich für Color
Nachrichten liegt pro Kanal zwischen 0.0
und 1.0
.
Für einen String wird das Format "r,g,b,a"
mit einem Komma als Trennzeichen verwendet.
Ein String, der an /io/vision/led/rgbastring
gesendet wird, könnte also "0.0,1.0,0.0,1.0"
sein, um die Beleuchtung auf grün zu stellen.
Einzelsegmente
Das LED Band besteht aus 6 Segementen, die einzeln angesteuert werden können. Der Scope /io/vision/led/rgba/inside/
bezieht sich auf die Innenseite der Wohnung in Bethel.
Jedem Segment kann eine andere Farbe zugewiesen werden.
Blink Modus
Über den Scope /io/vision/led/blink/
kann ein einzelnes Segment in einen Blink Modus gesetzt werden. In diesem Fall ist das LED Band 1s eingeschaltet und danach 1s ausgeschaltet.
Die Farbe kann unabhängig der anderen Bänder gewählt werden.
Es kann immer nur ein LED Band blinken.
Das Schicken einer Nachricht auf das Scope /io/vision/led/rgba
stoppt das Blinken.