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

  • Zunächst sollte der (if !exists() ) Workspace (sämtlichen Code hier auschecken) angelegt werden:

    $ mkdir /home/ubuntu/workspace
    $ cd /home/ubuntu/workspace
    
  • WiringPi – Serial communication library <http://wiringpi.com/> (Beispiele: <https://projects.drogon.net/raspberry-pi/wiringpi/i2c-library/>):

    $ cd /home/ubuntu/workspace
    $ git clone git://git.drogon.net/wiringPi
    $ cd wiringPi
    $ ./build
    
  • Spread –Communication Infrastructure:

    $ cd /home/ubuntu/workspace
    $ git clone https://code.cor-lab.org/git/packaging.git.spread
    $ cd packaging.git.spread
    $ git checkout 4.4
    

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 setuptools installiert:

$ python setup.py install --prefix=/vol/kognihome/releases/nightly
Quickstart:

led-dimmer ist speziell für die Konfiguration des Raspberry Pis angepasst und benötigt keine Argumente:

$ 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.