NALS: Network-Attached-LED-Stripe (Teil 2)

Im ersten Teil habe ich die grundlegende Idee beschrieben. Wie angekündigt müssen wir nun die Infrarot Codecs herausfinden, die von der LED Stripe erwartet werden.

Installation der Software

Wie bereits erwähnt gibt es die IDE auf der Arduino Homepage zum Download. Die Software ist OpenSource und für 32- als auch für 64bit Linux verfügbar. Installiert werden muss nichts, es gibt ein Binary, welches einfach ausgeführt wird. Zu beachten dabei ist, dass man je nach Distribution verschiedene Rechte benötigt, damit die Software per USB auf das Device zugreifen kann. Ich habe mir das Leben an der Stelle ein wenig einfacher gemacht und einfach als root gearbeitet :-P

Der Sketch

Unter Arduino heißen die Scripte “Sketch”. Um die Befehle der Fernbedienung herauszufinden haben wir folgenden Code genutzt:

#include <IRremote.h>

const unsigned int IR_RECEIVER_PIN = 11;
const unsigned int BAUD_RATE = 9600;
IRrecv ir_receiver(IR_RECEIVER_PIN);
decode_results results;

void setup() {
 Serial.begin(BAUD_RATE);
 ir_receiver.enableIRIn();
}
void dump(const decode_results* results) {
 const int protocol = results->decode_type;
 Serial.print("Protocol: ");
 if (protocol == UNKNOWN) {
  Serial.println("not recognized.");
 } else {
  if (protocol == NEC) {
   Serial.println("NEC");
  } else if (protocol == SONY) {
   Serial.println("SONY");
  } else if (protocol == RC5) {
   Serial.println("RC5");
  } else if (protocol == RC6) {
   Serial.println("RC6");
  }
  Serial.print("Value: ");
  Serial.print(results->value, HEX);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)"); }
 }
}

void loop() {
 if (ir_receiver.decode(&results)) {
  dump(&results);
  ir_receiver.resume();
 }
}

Library

In dem Sketch ist euch vielleicht das include aufgefallen. Wir benutzen Funktionen aus einer externen Library. Diese wird einfach per include im Sketch eingebunden. Die IDE erwartet dass diese Library im Unterverzeichnis libraries zu finden ist (ansonsten gibt es Fehler und der Sketch kann nicht kompiliert werden).

Die IRremote Library findet ihr hier.

Upload

Damit der Sketch auf dem Arduino läuft, muss er kompiliert und hochgeladen werden. Das geschieht über die beiden Symbole links in der Symbolleiste der IDE.

Schaltplan

Der Schaltplan ist recht einfach. Wir benötigen den Infrarot Empfänger und das Arduino Board. Das ganze wird wie folgt verkabelt:

Die Codes

Nach dem Upload des Scripts startet Arduino neu und führt das Script aus. Um die Ausgaben des Scripts zu sehen, müssen wir die Serielle Konsole öffnen. Das geschieht über das Symbol ganz rechts innerhalb der IDE (USB Verbindung muss vorhanden sein!). Haltet nun die Fernbedienung auf den IR-Empfänger und drückt eine Taste. Es sollte sowas erscheinen wie


Protocol: NEC
Value: 77E1695E (32 bits)

Protocoll NEC, 32bit und der Value gibt den quasi den Code an.

Ihr müsst nun alle Tastenbefehle die nachher über den Arduino gesendet werden sollen, an das Board schicken und die Ausgabe entsprechend aufschreiben.

Im nächsten Artikel: Sender programmieren (und bauen), Status per Script setzen

6 Responses to NALS: Network-Attached-LED-Stripe (Teil 2)

  1. Andreas

    Am schönsten wäre es mit Funk das ganze zu regeln. Wo habt ihr die LED-Stripe her und was hat sie gekostet? Die meisten sind recht teuer :-/

    • Ronny

      Ja per Funk wäre auch nett :-)

      Wir haben die LED Stripe bei Conrad gekauft – ich glaube so 80€. Allerdings nur weil es nicht anders ging. Ein – optisch – gleiches Modell gab es auch bei Aldi für 50€ letztes Jahr (für 5m). Bei Ebay findet man die Teile auch ;-)

  2. Andreas

    Die loop-Funktion hat einen Klammerfehler :-(

    BTW: Wo soll der Arduino nachher hin? Infrarot benötigt doch Sichtkontakt oder nicht?

    Gruß
    Andreas

    • Ronny

      Sorry, den Klammerfehler hab ich korrigiert.

      Der Arduino muss Sichtkontakt zu dem Empfänger haben. Wir haben das hier so, dass der Arduino an der Wand (an der Netzwerkdose) hängt und die LED Stripe ist mehr oder weniger an der Decke. Prinzipiell kann der Arduino natürlich auch direkt neben dem Empfänger liegen ;-) Hübsch ist, dass man mit der Infrarot Variante auch mehrere dieser LED Stripes gleichzeitig steuern kann – soweit in Reichweite.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>