.. _`tp2/dimmer`: KogniDoor-LED-Steuerung ======================= :Kontakt: Alexander Neumann ; Michael Adams :CITK: Die Komponente läuft auf einem Raspberry Pi2 und wird manuell installiert. :Setup: * Betriebssystem: Für das Raspberry Pi 2 kommt ein Ubuntu 14.04 ARM () zum Einsatz. * Enviroment/**CMake Prefix**: /home/ubuntu/door-pi * Workspace: /home/ubuntu/workspace * Standardbenutzer: ubuntu * Standardpasswort: ubuntu (Änderung empfohlen!) * Pin Belegung für I2C: 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 (Beispiele: ):: $ 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: :ref:`guides/rsb`. 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 :Vorbedingung: Der Quellcode kann aus dem Git-Repository 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 RSB-Schnittstellen ------------------ .. rsbpubsub:: IN /io/vision/led/rgba rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/inside/1 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/inside/2 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/inside/3 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/outside/1 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/outside/2 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgba/outside/3 rst.vision.Color setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/inside/1 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/inside/2 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/inside/3 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/outside/1 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/outside/2 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/blink/outside/3 rst.vision.Color blinkt in der gesetzten LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/rgbastring string setzt setzt LED-Zargenfarbe .. rsbpubsub:: IN /io/vision/led/ir int setzt IR-LED-Intensität in der Zarge .. rsbpubsublist:: :type: IN 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.