Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    ARDUINO am KNX

    Update: die Library ist jetzt auf Bitbucket zu finden: https://github.com/thorsten-gehrig/a...knx-user-forum

    Hi,
    nachdem ich schonmal im "Sonstiges" angefangen hatte - sich der Fokus aber verschoben hat - versuche ich jetzt hier im DYI Bereich die Fortschritte zu Dokumentieren (und hoffentlich bald eine Lösung).

    Projekt:
    a) Generell: ARDUINO-Schaltung an den KNX Bus zu kriegen
    Dieser Ansatz sollte universell sein um jegmögliche Arduino-Sensoren an dem Bus zu haben.
    Kommunikation in 2 Richtungen:
    • vom ARDUINO zum KNX - z.B. für RFID-Leser
    • vom KNX zum ARDUINO - z.B. zum Schalten von Releais oder Anzeigeigen von Statusinformationen (LED / LCD)


    b) Einen ARDUINO-RFID-Leser an direkt an den Bus zu bringen.

    Status bisher:
    Basierend auf der DKA-Library - zufinden hier: https://bitbucket.org/dka/arduino-tpuart/ (update: link existiert nicht mehr)
    habe ich einen Arduino direkt an einen Busankoppler angeschlossen.

    Als Busankoppler habe ich einen BCU 5WG1117-2AB12 von Siemens für 26,50€ bei EIBMarkt.com eingesetzt:
    eibmarkt.com - Busankoppler UP Quadrat. Hängebügel 5WG1117-2AB12
    Hier das Datenblatt: http://www.opternus.com/uploads/medi...2012-05-30.pdf

    ArduinoFoto.JPG

    Entsprechend der Doku Verbindet man
    1 mit GND
    5 mit +5V (der Arduino bekommt seinen Saft from Busankoppler!)
    2 und 4 mit TX und RX am arduino.

    Basierend darauf sieht der Arduino-Code in etwa so aus:
    Code:
    #include <KnxTpUart.h>
    
    void setup() {
      Serial.begin(19200);
      knx.uartReset();
    }
    
    void loop() {
      knx.groupWriteBool(0,7,1, true);
      delay (1000);
      knx.groupWriteBool(0,7,1, false);
      delay (1000);  
    }
    Dieser Versuchsaufbau zeigt wie man mit 4 Kabeln und einem einfachen Code ein Telegram abschicken kann. Dieser sendet im Sekunden-Takt eine 0 bzw 1 auf die 0/7/1.

    Auf meinen RDIF-Leser warte ich noch aus China.
    Wichtig ist das es zwei verschiende Chipsätze gibt: basierend auf PN532 und PN522. Der PN532 ist "teurer" (ca. 16 €) kann aber auch irgendwelche Standards mehr die evtl. nötig sind um einen Handy-RFID richtig anzusprechen.
    Hier ein Link zu Amazon (wie gesagt: China is billiger):
    NFC / RFID Reader PN532 For Arduino the Evaluation: Amazon.de: Elektronik

    To do´s und Hinweiße:
    Ein Arduino UNO hat nur eine Serielle Schnittstelle.
    Es ist prinzipell möglich mit der BCU zu reden - dazu sind aber anpassungen an der TPUArt Library nötig (habe ich gerade so gemacht).
    Empfehlen würde ich auf jedenfall einen Arduino mit mehr seriellen Schnittstellen - ein Arduino MEGA (um die 20€) scheint eine gute Wahl (meiner ist auch gerade in der Post)

    Das einfache Einbinden des RFID (durch die vorhandenen Librariers) scheint mir sehr einfach (sofern man noch keine security implementiert und nur die !unsichere! Seriennummer des Transponders ausliest).
    Mein Wunsch wäre die Seriennummer auf den Bus zu schicken und extern (Homeserver) auszuwerten.
    Die DKA-Library kann aber noch kein 14Byte-Text telegram.

    Eine Logik ala
    if Seriennummer=0815 then knx.groupWriteBool(0,7,1, true);
    if Seriennummer=4711 then knx.groupWriteBool(0,7,2, true);
    dürfte ein Kinderspiel sein.

    Bei mir kommt die Anlage hinter ein Siedle-Klingelmodul (Freifeld) - ein Einbau in eine Standard-UP-Dose wird wohl nicht gehen.

    Wenn jemand das Know-How hat die DKA-Library um neue Telegramtypen zu erweitern - vor allem 14Byte-Text... wäre genial!

    Gruß
    Thorsten
    Zuletzt geändert von ThorstenGehrig; 03.10.2020, 13:34.
    Meine Inst.: 73 KNX-Geräte, 18 Rolläden, 36 Schaltkanäle, 22 Dimm-Kanäle, 12 Heizungskanäle, 16 PM, 18 Gruppentaster
    Wiregate: >50 x Temperaturfühler, 2 x Luftfeuchte, Transponderleser || Gira Homeserver: Visu: 98%, Logiken 98% || Heizung: Dimplex WP mit KNX || Sonstiges: 3xSqueezebox, Mobotix T24, Asterisk

    #2
    Hallo Thorsten,

    wow - das hört sich ja traumhaft an!!!

    Das eröffnet ja ganz neue Möglichkeiten, allerlei Peripherie an den Bus anzubinden....unbedingt dranbleiben!

    Ich denke da grade an so Dinge wie IR_to_KNX, serielle Anbindung von Multiroom-Audio, Heizung...mal eben kurz verschiedenen Temperatur-, Luftfeuchtigkeits, VOC-Sensoren an den Bus....die Auswahl an Sensorik mit fertigen LIBs für den Arduino ist riesig. Die könnte man dann problemlos auf gewohnte Weise am Arduino anschließen und die nach Arduino-interner Auswertung/Logik direkt per o.g. Busankoppler in die GAs schreiben.

    Das hat unglaubliches Potential für alle DIY'ler. Muss halt jedem bewusst sein, dass es sich um nicht zertifizierte Busgeräte handelt :-)
    Viele Grüße,
    Stefan

    DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

    Kommentar


      #3
      Muss halt jedem bewusst sein, dass es sich um nicht zertifizierte Busgeräte handelt :-)
      wieso die BCU ist ja zertifiziert
      EPIX
      ...und möge der Saft mit euch sein...
      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

      Kommentar


        #4
        Gibts da schon nen Plan wie man das irgendwie in die ETS bringen kann?

        Ansich ist den Controller zu programmieren nicht wirklich schwer, nur das einstellen von Werten und GAs ist halt so nen Ding.

        Wenn das nich wär hätt ich wohl auch schonmal damit angefangen, dazu mal ne andere Frage, kennt jemand ne C-Lib zur KNX-Kommunikation?

        Kommentar


          #5
          Mit der ETS-integration hab ich mich noch garnicht befasst - aus dem Hinterkopf habe ich das es ziemlich schwierig ist eine Datenbank selbst zu erstellen bzw. in die ETS reinzuschmuggeln...
          Ist bei mir erst Prio c - weil parametrisierung im Code ist während der Entwicklungsphase ja eh kein Problem...
          Was genau meinst du mit "C-Lib zur KNX-Kommunikation"?
          Für den Arduino? Das ist ja die DKA... und für eine ETS-Datenbank brauchst du das nicht, oder?

          Gruß
          Thorsten
          Meine Inst.: 73 KNX-Geräte, 18 Rolläden, 36 Schaltkanäle, 22 Dimm-Kanäle, 12 Heizungskanäle, 16 PM, 18 Gruppentaster
          Wiregate: >50 x Temperaturfühler, 2 x Luftfeuchte, Transponderleser || Gira Homeserver: Visu: 98%, Logiken 98% || Heizung: Dimplex WP mit KNX || Sonstiges: 3xSqueezebox, Mobotix T24, Asterisk

          Kommentar


            #6
            Interessante Lösung. Zumal die Busankoppler recht günstig sind.

            Wieviel mA zieht denn der Arduino? Reicht da die Leistung, die man vom Bus bekommt, aus?

            Kommentar


              #7
              Ein Arduino benötigt so um die 20mA-50mA@5V, das ist so gut wie nichts. Hängt in erster Linie von der Taktrate ab. Wenn das innerhalb der erlaubten Abnahme am BA bleibt (da steht was von 30mA bzw. 50mA bei IP20=0???), kein Problem.

              EDIT: IP20 heißt Stromabnahme am 20V-Ausgang...und damit dürfen an 5V maximal 50mA abgenommen werden.
              Viele Grüße,
              Stefan

              DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

              Kommentar


                #8
                Bezüglich ETS-Integration: braucht man das überhaupt?

                Soweit ich das verstanden habe, würde man den Arduino einfach auf den Bus schreiben und lesen lassen (z.B. über Dummy-Gerät in der ETS).

                Ich frage mich allerdings, ob dazu keine PA nötig ist? Wie identifiziert sich denn der Arduino am Bus...und wie sieht es denn mit Fehlerhandling aus (was passiert z.B. wenn ein Telegramm verloren geht?)?

                Nicht dass man sich da den Bus versaut...
                Viele Grüße,
                Stefan

                DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                Kommentar


                  #9
                  Wenn man da einen einfachen Arduino (evtl. auch nur den reinen ATMEGA) nimmt, sollten die 50mA wirklich reichen. Dann noch nen DS1820 und fertig ist der KNX-Temperatursensor für 26,50 (BCU) + 2 (DS1820) + 10 (Arduino Nano) Euro.

                  Kommentar


                    #10
                    Hmm,

                    und beim freebus.org projekt (basierend auf LPC oder ATMEGA) braucht man dann nicht mal mehr den teuren TPUART fuer KNX eigenbau.

                    Schon mal angesehen?

                    lg
                    Alex.

                    Kommentar


                      #11
                      Für die Freebus-Module habe ich mich eine Zeitlang seehr interessiert und habe hier auch einige Platinen liegen...nun kommt das ABER:

                      Man muss sich gefühlte Jahre in die Thematik einlesen, um überhaupt zu kapieren wie das mit dem Flashen der Controller und einzelnen Modulen funktioniert, dazu zig Firm- und Hardwarewareversionen mit allerlei Bugs und Instabilitäten, veraltete bzw. verstreute Doku, abrauchende Bauteile und zerstrittene und mitterweile konkurrierende Admins mit eigenen Busprojekten haben mir nicht das Vertrauen gegeben, diese Module nachzubauen.

                      Einzig das LCD-Touchprojekt ist quasi plug&play, sauber dokumentiert und von einem einzelnen erfahrenen Hardwaredesigner entwickelt.

                      Wenn Dir 25€ für den TPUART viel vorkommen, dann rechne mal die Bauteile der Freebusplatinen zusammen, die Du dann noch mühevoll zusammenlöten musst...für mich ist Freebus jedenfalls erstmal gestorben.

                      Jetzt aber bitte wieder btt...hier geht es schließlich um die Arduino-Anbindung und nicht um Alternativen... :-)
                      Viele Grüße,
                      Stefan

                      DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                      Kommentar


                        #12
                        Hi
                        kleine Neuigkeiten von mir:
                        Der China-Postman hat mir diverse RFID geliefert und ich hab gebastelt.
                        Mit einem RF532 an einem Arduino UNO sind es
                        4x Kabel BCU->Arduino
                        1 (GND) -> GND
                        2(RX) -> 1 (TX)
                        4(TX) -> 0 (RX)
                        5 (5v) -> 5V

                        Dazu 6x vom RFID zum Arduino
                        5V -> 5V
                        GND -> GND
                        MISO -> MISO
                        MOSI -> MOSI
                        SLC -> SS
                        SCK -> SCK

                        Die MISO/MOSI/SS/SCK müssen an die PINs am Arduino die im Code definiert sind. Beispiel:
                        #define SCK (9)
                        #define MOSI (11)
                        #define SS (10)
                        #define MISO (12)

                        Mein kleiner Testcode (Seriennummer auslesen und entsprechend der Seriennummer eine 1 auf die zugeordnete GA zu senden) funktioniert einwandfrei und problemlos - Security ist das natürlich nicht....

                        ALLERDINGS: der RFID funktioniert NUR wenn eine externe Spannungsversorgung angeschlossen ist (USB oder 9V Block)... scheinbar zieht der RFID mehr Strom (für das Magnetfeld) und der BCU begrenzt den Strom.

                        Wer den Code braucht -> PM an mich.

                        Ach ja: Bezüglich ETS und PA: es gibt eine ETS-Applikation für die BCU - vermutlich eine "Dummy-App" - die aber zumindest für die Programmierung des PA verwendet werden kann/muss. Von Werk hat die BCU 15.15.20.

                        Zum Freebus und Selfbus: ging/geht mir ähnlich: ich blicks nicht.
                        Bei Arduino hab ich mir ein paar Tutorials angesehen und dachte mir "das ist ja Einfach". Jetzt ein bisschen Copy&Paste, libs einbinden - und schon gehts.

                        NACHTEIL: die dka-lib ist mir noch zu limitiert mit Sendebefehlen... sieht aber "einfach" zu erweitern aus... jetzt muss das nur jemand machen der es kann.

                        Gruß
                        Thorsten
                        Meine Inst.: 73 KNX-Geräte, 18 Rolläden, 36 Schaltkanäle, 22 Dimm-Kanäle, 12 Heizungskanäle, 16 PM, 18 Gruppentaster
                        Wiregate: >50 x Temperaturfühler, 2 x Luftfeuchte, Transponderleser || Gira Homeserver: Visu: 98%, Logiken 98% || Heizung: Dimplex WP mit KNX || Sonstiges: 3xSqueezebox, Mobotix T24, Asterisk

                        Kommentar


                          #13
                          Hallo Thorsten,

                          das hört sich super an!

                          Wie funktioniert denn das mit der PA? Hast Du den BA einfach unprogrammiert an den Bus gehängt? Dann würde ja nur ein einziges Arduino-Gerät funktionieren da es die Standardadresse hat...

                          Ohne aufgesteckten TS kann man vielleicht gar keine PA programmieren, im Datenblatt des TPUART steht "Pushbutton and LED mounted on the PCBA are not applicable"...

                          Ich bin echt gespannt, wie es bei Dir weitergeht und wünsche Dir viel Erfolg! Hätte ich grad Zeit, würde ich sofort mitmachen :-)
                          Viele Grüße,
                          Stefan

                          DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                          Kommentar


                            #14
                            Ich hab erstmal nichts programmiert. Der BA hat einen programmierknopf - so das eine eigene per ETS einfach gesetzt werden kann...

                            Gruß
                            T.
                            Meine Inst.: 73 KNX-Geräte, 18 Rolläden, 36 Schaltkanäle, 22 Dimm-Kanäle, 12 Heizungskanäle, 16 PM, 18 Gruppentaster
                            Wiregate: >50 x Temperaturfühler, 2 x Luftfeuchte, Transponderleser || Gira Homeserver: Visu: 98%, Logiken 98% || Heizung: Dimplex WP mit KNX || Sonstiges: 3xSqueezebox, Mobotix T24, Asterisk

                            Kommentar


                              #15
                              Zitat von ThorstenGehrig Beitrag anzeigen
                              ...Der BA hat einen programmierknopf - so das eine eigene per ETS einfach gesetzt werden kann...
                              Ja, nur steht da eben im Datenblatt, dass der Knopf ohne Funktion ist wenn ich das richtig verstanden habe. Ich weiß nicht was da normal auf den BA gesteckt wird...vielleicht wird das Setzen der PA rein über die µC-Software des angesteckten Sensors angetriggert....

                              Kannst das ja mal bei Gelegenheit probieren, ansonsten wäre das leider das KO-Kriterium für den Einsatz mehrerer Arduinos.
                              Viele Grüße,
                              Stefan

                              DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                              Kommentar

                              Lädt...
                              X