Arduino mit KNX verbinden

Seit einigen Jahren rüste ich mein Haus auf KNX um. Hierfür habe ich viele Standard KNX-Module erworben, um Heizkörper, Licht und Lüftung anzusteuern. Inzwischen haben sich aber auch einige Spezialfälle ergeben, für die es keine KNX-Module gibt oder diese besonders teuer sind. Hier kommt für mich der Ardunio ins Spiel, da er günstig, vielseitig und leicht zu programmieren ist.

Damit diese Module sich einfach in das bestehende Steuerungssystem einfügen, war es mein Ziel den Arduino mit dem KNX-Bus zu koppeln. Das spart dann auch die Verlegung eines weiteren Bussystems und Kabel ein.

Die Hardware

Ich gebe zu, ich habe hier das Rad nicht neu erfunden und auf eine Lösung gesetzt, die auch schon anderswo im Internet beschrieben ist. Die wesentliche Komponente ist der Busankoppler 5WG1 117-2AB12 von Siemens, der für rund 25,00€ zu bekommen ist. Um den KNX-Bus und die Ardunio-Schaltung ordentlich von einander zu trennen, habe ich zusätzlich in Fernost für einen Euro den ADUM1201 besorgt:

Ardunio mit Siemens 5WG1 117-2AB12 und ADUM1201

Der Anschluss ist dann eigentlich recht einfach. Man verbindet den Busankoppler mit dem ADUM1201 auf der einen Seite und die andere Seite mit dem Arduino. Leider haben viele Arduinos nur eine serielle Schnittstelle, was das Programmieren und Debuggen erschwert, denn USB-Adapter und Busankoppler können dann nicht parallel angeschlossen werden. Da die fertigen Steuerungsmodule aber im laufenden Betrieb keinen Anschluss an den Computer benötigen, stört mich das nicht weiter. In der Anfangsphase habe ich einfach alles auf einem Steckbrett aufgebaut, so daß ein Umstecken recht zügig möglich ist.

SimpleKnx

Im Internet gibt es bereits verschiedene Arduino Libraries für KNX. Leider hatte ich mit allen so meine Probleme, da jede für mich bestimmte Nachteile hatte:

  • läuft überhaupt nicht oder instabil
  • verliert oder wiederholt Telegramme
  • überträgt Daten falsch
  • ist einfach zu groß, für die kleine Arduinos mit ATmega168 Prozessor

Vielversprechend und eigentlich sehr interessant ist der Ansatz von Konnekting. Das Projekt versucht recht nahe an die KNX-Welt zu kommen, in dem es z.B. auch die Parametrisierung der Geräte erlaubt. Das ist zwar schön, braucht aber auch Speicher. Am Ende habe ich auf Basis von Konnekting eine neue Libray entwickelt: mit SimpleKnx kann man einfach nur KNX-Telegramme senden und empfangen. Der Stack ist zwar immer noch nicht klein, passt aber jetzt gut auf einen 3,3V Arduino mit ATmega168 Prozessor.