Viele werden sich fragen:
KNX mit dem Arduino? Wie geht das? Das ist doch kompliziert, oder?
KNX mit dem Arduino zu verbinden ist eigentlich ganz einfach. Mit ein klein wenig Grundverständnis für Elektronik und einfacher Softwareprogrammierung ist das kein Hexenwerk.
Zutatenliste:
- Ein Arduino, z.B. ein Arduino Zero oder Seeeduino XIAO.
- Ein „SIEMENS 5WG1117-2AB12 KNX Busankoppler BTM UP 117 m. Schraubbefestigung„, oder kurz: eine „Siemens BCU“ mit einem Pegelwandler oder eine MikroBCU oder NanoBCU.
- Ein Breadboard oder auch „Steckbrett“
- Ein paar Jumperwire oder auch „Käbelchen zum stecken“
- Ein Taster (und ein Kondensator und Widerstand)
Nicht alles auf der Zutatenliste muss man kaufen. Taster und Steckbrett kann man sich für die allerersten Gehversuche auch sparen und die Komponenten direkt mit den Käbelchen verbinden und eine Drahtbrücke als Tasterersatz verwenden. Je mehr man jedoch experimentiert oder anschließt, desto eher macht es Sinn sich ein solches Steckbrett (gerne auch größer) und vernünftige Zusatzkomponenten wie Taster und LEDs etc. zuzulegen.
Das „Geheimnis“ der Verbindung mit dem KNX Bus liegt in der Siemens BCU (BCU = Bus Coupling Unit = Busankoppler). Eigentlich ist das ein kleines Unterputz-Gerät von Siemens für deren „Gamma“-Serie, an das man verschiedene Aufsatzmöglichkeiten anschließen kann: Taster, Anzeigen, …
In dem Gerät steckt ein kleiner Chip, der die KNX Signale vom Bus in „lesbare Telegramme“ wandelt und über eine serielle Schnittstelle „anbietet“. Und hier kommt der Arduino zum Zug: Dieser verfügt ebenfalls über eine serielle Schnittstelle. Mit einer passenden Programmierbibliothek kann dieser die Telegramme vom Bus lesen und auch welche senden.
Das ganze „drum herum“ braucht man nicht unbedingt. Man kann den Rahmen entfernen und die Platine aus ihrem Plastik-Gehäuse holen wenn man möchte. Dann sieht das schematisch in etwa so aus:
Es gibt nur zwei Stellen die man anschließen muss: Die obere Seite mit der KNX Klemme, und die untere Seite mit dem 2×5 Pin Anschluss (2,54mm Rasterformat, passt „ausgepackt“ prima in einen 2×5 Pin Wannenstecker).
Nun geht’s an die Verbindung zwischen Arduino und BCU:
Das sieht vielleicht ein wenig komplizierter aus als es tatsächlich ist:
Man verbindet Pin 2 TxD der BCU mit dem RX-Pin des Arduino. Und Pin 4 RxD der BCU mit dem TX-Pin des Arduino. Das was der Arduino auf seiner TX-Leitung (TX=transmit) sendet, kommt also auf der RX-Leitung (RX=receive) der BCU an, und umgekehrt. Damit hat man die serielle Verbindung zwischen beiden Hergestellt.
Die BCU liefert an ihrem +5V Ausgang zwar offiziell nur 10mA, unsere Test belegen aber, das bis zu 50mA kein wirkliches Problem darstellen. Unter dem Strich reicht das aus um den Arduino und ein paar Sensoren, Taster und LEDs (besser low-current 1mA) zu versorgen. Also verbindet man noch Pin 5 +5V der BCU mit dem 5V Pin des Arduino. Gleiches tut man noch mit Pin 1 Gnd der BCU mit dem Ground (=Masse, oder umgangssprachlich „Minus“) Pin des Arduino. Damit hat man die Versorgung hergestellt.
Zuguter letzt braucht man noch einen Taster, mit dessen Hilfe man den Arduino dann in den Programmiermodus versetzen kann. In diesem Beispiel haben wir ihn auf Pin 3 angeschlossen. Wichtig ist hier: Bei der Verwendung unserer Programmierbibliothek für KNX muss der Programmier-Knopf an einem Interrupt-fähigen Pin angeschlossen werden (was mit Pin 3 des Zero der Fall ist). Der Taster brückt einfach +5V auf den entsprechenden Pin. Um den Schalter gleich per Hardware zu „entprellen„, kann man einen kleinen Kondensator parallel schalten und den Pin 3 mit einem „Pull Down“ Widerstand auf Masse ziehen. Man kann die beiden Bauteile auch weglassen, aber ohne ist die wahrscheinlichkeit groß, dass der Tastendruck den Programmiermodus nicht sauber einschaltet.
Anmerkung für den Elektronik-Laien: Lass dich nicht von „entprellen“ und „Pull Down“ verwirren. Das dient lediglich dazu, dass ein einzelner Tastendruck auch als solches erkannt wird. Nimm die Konstellation von Kondensator und Widerstand erstmal so hin und lese dich später über die Links zu den Details ein.
Als Programmier-LED kann man entweder selbst eine LED (mit Vorwiderstand) anschließen, oder man verwendet die LED die auf dem Arduino bereits verbaut und mit Pin 13 verbunden ist. Achtung: Die LED auf dem XIAO ist genau anders herum angeschlossen wie üblich. Also Programmier-Modus wenn LED aus.
Das war auch schon die ganze Kunst der Verkabelung.
Dieses minimale Setup kann natürlich nicht viel. Denn mehr wie eine LED und einen Taster haben wir nicht. Aber für den Anfang reicht es.
FAQ
- Kann ich jede beliebige KNX BCU nehmen, oder muss es diese spezielle sein
Antwort: Es muss diese spezielle sein. Andere BCUs arbeiten mit anderen Chips, die keine passende serielle Schnittstelle liefern