Arduino und KNX

Arduino ist eine Hardwareplattform auf Basis eines Atmel Prozessors welcher sehr einfach über eine IDE programmiert werden kann. Es läuft kein Betriebssystem auf der Hardware sondern nur ein sehr schmaler Bootloader welcher direkt das eigene Programm startet. Dank vielfältiger I/O Anschlüsse, welche direkt angesprochen werden können, eignet er sich perfekt als Sensor und Steuerungsplattform.

Anbindung an KNX

Da ich bei mir KNX einsetze, war es naheliegend beides zu verbinden. Bei meinen Recherchen bin ich auf einen Busankoppler von Siemens gestossen. Über den Pfostenstecker des Busankopplers wird eine Spannung von 5V sowie eine Serielle Schnittstelle bereit gestellt. Somit ist keine zusätzliche Spannungsversorgung notwendig.

Auswahl des Arduino Boards

Als erstes muss man sich für eine Hardwareversion entscheiden. Bei mir kommt der Arduino Pro Mini zum Einsatz. Ihn gibt es in einer besonders stromsparenden Variante mit 3.3V welche unter Volllast gerade mal 4,47mA verbraucht. Durch gesonderte Massnahmen kann dies weiter optimiert werden.

API zum ansteuern des Busankopplers

Weiterhin gibt es mittlerweile 2 Community Projekte welche eine API für Arduino und genau diesen Busankoppler bereit stellen.

  • Variante 1 ist meine Wahl und macht auf mich einen etwas schlankeren Eindruck.
  • Variante 2 ist etwas komplexer und damit wahrscheinlich auch flexibler aber für meine Bedürfnisse Zuviel.

Bauteilliste

Zusamenbau

Als erstes wird der Pfostenstecker auf der Vorderseite des Busankopplers ausgelötet und auf der Rückseite eine auf 5 Stifte gekürzte Stiftleiste angelötet. Zusätzlich muss mit einem scharfen Messer oder Skalpell auf der Gehäuserückseite eine Aussparung für die neue Stiftleiste ausgeschnitten werden.

Nun wird der Arduino mit dem Busankoppler mit Hilfe der Pin Header Kabel verbunden. Hierzu folgende Pins miteinander verbinden

Arduino
Busankoppler
GND
GND (PIN 1)
RAW
5V VCC (PIN 5)
RX
TX (PIN 4)
TX
RX (PIN 2)


Anbindung des 3.3V Arduino Pro Mini


oder Alternativ die 5V Arduino Pro Mini Variante


und der fertige Aufbau.

Ein Flüchtigkeitsfehler, der mich 2 Stunden gekostet hat, war am Anfang der falsche Anschluss des seriellen Ports zwischen Busankoppler und Arduino.
Die Pins RX und TX müssen gekreuzt werden.

Schlusswort

Nun kann man mit Hilfe der API aus seinem Arduino Programm heraus KNX Nachrichten an den KNX Bus senden oder empfangen. Auf diese Art können vom Arduino gemessene Sensordaten periodisch gesendet werden oder, falls das Arduinoboard als Listener programmiert ist, auch Nachrichten empfangen werden und damit Schaltvorgänge auslösen.
In meinem Fall sendet das Arduinoboard periodisch Sensordaten welche von OpenHAB mit dem KNX Binding empfangen werden.

Dank der kompakten Bauweise passt alles bequem in eine 40mm Unterputzdose.

Ein erstes Anwendungsscenarion sind verschiedene Sensoren. Allerdings sind dank der Flexibilität von Arduino unendlich viele weitere Möglichkeiten denkbar.