Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Hallo tuxedo,

    ich habe die Zeichnung für die Platine mit dem TP-UART2 gefunden (meinst du diese?), allerdings ist es nicht so wie wir uns das vorstellen.
    Dieses Board haben wir ja in gewisser Weise schon (siehe Daniel´s Blog, allerdings noch mit dem alten TP-UART)
    Kannst du uns den Link zu dem Source Code schicken?
    Unser Ziel wäre es ein Shield wirklich zum Aufstecken für den Arduino zu realisieren, um mehr Leute hierfür zu begeistern und im zweiten Step eine Unterputzvariante zu entwickeln.
    Leider sind die Produktdatenbanken geschützt, deshalb wird es die Möglichkeit nur mit vorhanden Librarys geben. Aber man kann über die ETS und einem definierten Gerät arbeiten. Dies funktioniert bereits.

    Viele Grüße

    Mario



    Kommentar


      Hallo Mario,

      alle Infos (Link zum Code, Screenshots, den Prototyp, ...) findest du in diesem Thread.

      allerdings ist es nicht so wie wir uns das vorstellen.
      Naja, wenn ich mich recht erinnere geht JuMis Prototyp einen Schritt weiter: Der Arduino ist da gleich mit drauf. Ergebnis: Klein aber fein.

      Unser Ziel wäre es ein Shield wirklich zum Aufstecken für den Arduino zu realisieren, um mehr Leute hierfür zu begeistern und im zweiten Step eine Unterputzvariante zu entwickeln.
      Für eine Bastelei am Schreibtisch ist ein auf den Uno, Leonardo oder Mega aufsteckbares Shield vielleicht ganz "okay". Aber für den tatsächlichen produktiven Einsatz ist das - sorry für die Worte - absolut gaga ...
      Wieso? Ganz einfach: Wo würde man so ein "großes Monster" tatsächlich einsetzen... Im Verteilerschrank? Wohl eher nicht. Da wäre ein Reg-Gehäuse ganz praktisch, und dafür eine ein modularer Ansatz hilfreich.
      In die UP-Dose passt diese Konstellation auch nicht. Das einzige das mit einfällt wäre die Zwischendecke oder Keller/Garage mit entsprechend großem Gehäuse.

      Und selbst für das basteln am Schreibtisch ist das nicht unbedingt notwendig/praktisch: Den Siemens BCU mit 3 Käbelchen an den Arduino anstecken ist auf für Anfänger "machbar". Wenn die das nicht schaffen, sollten sie besser die Finger davon lassen.

      JuMis Ansatz finde ich den einzig vernünftigen: Ein Board, möglichst klein und alles notwendige drauf (Arduino selbst, den TPUart und eine galv. Trennung). Der Rest ist sowieso individuell.

      Das einzige dass ich mir als Shield zum Aufstecken ganz gut vorstellen könnte:

      Ein Universalshield: Mindestens 4 Relais (die 230V AC mit mind 10A schalten können und dürfen) und mind. 4 Binäreingänge + noch ein paar Pins "zur freien Verfügung".
      Das ganze dann noch optional in ein passendes Reg-Gehäuse verpackt.
      Damit ließe sich schon eine Menge "out of the Box" anstellen.

      Leider sind die Produktdatenbanken geschützt, deshalb wird es die Möglichkeit nur mit vorhanden Librarys geben. Aber man kann über die ETS und einem definierten Gerät arbeiten. Dies funktioniert bereits.
      Ja, das ist bekannt. Und so machen es die Jungs von Freebus ebenfalls. Aber so wirklich "prickelnd" ist der Ansatz nicht.
      Beim basteln geht es ja nicht unbedingt darum "günstiger" ein bereits existierendes Produkt zu realisieren (wo man dann die Produktdatenbank "missbrauchen" könnte).
      Es geht primär (zumindest wenn man den Beiträgen dieses einzelnen Threads folgt) um Lösungen die es noch gar nicht gibt. Und da lässt sich dann keine Produktdatenbank missbrauchen.
      Deshalb haben wir ein Tool entwickelt das - ETS zum Vorbild genommen - alle Freiheiten in der Parametrisierung offen lässt. Ganz fertig ist es noch nicht. Aber fast.


      Kommentar


        Nun war ich in dem Fred schon länger nicht mehr aktiv, aber wenn es um Shields und die passende (Arduino-) Grundplattform geht, sollte man das hier vllt auch mal ins Auge fassen:
        https://tiny-circuits.com/tinyduino-...sor-board.html

        gruesse :: Michael
        Zuletzt geändert von wintermute; 21.07.2015, 01:47. Grund: typo

        Kommentar


          Die Teile sehen interessant aus. Ein KNX-Shield in der Größe wäre super ;-) Das wäre dann richtig plug'n'play und für die UP-Dose absolut klein genug.

          Kommentar


            Zitat von JuMi2006 Beitrag anzeigen
            Also bei mir läufts.

            Seit gestern Abend werkelt nun der Arduino mit meinen iButtons. Der sendet für jeden Button nach Änderung/Zyklisch eine 1 oder 0 auf die entsprechende GA.
            Können wir bald mit ner Doku zu deinem iButton Projekt rechnen.

            LG und Danke
            Daniel

            Kommentar


              Zitat von tuxedo Beitrag anzeigen
              Danke für die aufmunternden Worte. Glücklicherweise habe ich diese Woche Zeit und offenbar auch ausreichend Elan um dran zu bleiben.
              Zwischenzeitlich waren andere Dinge wichtiger, weshalb die Entwicklung aktuell von meiner Seite gerade etwas stagniert... Hab die nächsten 2 Wochen noch andere Dinge zu tun, aber dann werde ich wieder versuchen mit der weiteren Entwicklung fortzufahren.
              Wie schaut's mit dem Rest der Truppe aus? Ing-Dom JuMi2006 ... Weitere Mitstreiter?
              Hat hier jemand Zeit und Elan?

              Kommentar


                Bei 696 Beiträgen zu dem Thema, kann einem schon mal etwas schwindelig werden und die Evolutionsstufen sind tief vergraben.
                Ich möchte mich auf den Winter vorbereiten und deshalb etwas Hardware beschaffen.

                Somit ist meine Frage, welcher Arduino ist am sinnvollsten?
                Welche AVR sollte drauf sein. (Es gibt ja aus China auch andere Formfaktoren vom Leonardo zum Beispiel)
                Welcher Formfaktor hat am meisten potential, mit Hinblick auf das KNX-shield?

                Der 1-wire iButton Beitrag hat mich noch mehr darin bestärkt, dass der Arduino ne tolle Ergänzung für meinen Bus wäre.
                Ich hätte gerne einen SHT von Sensirion in meinen Bädern und das würde ich gern umsetzen wollen.

                Danke
                Gruß Stefan

                Kommentar


                  welcher Arduino ist am sinnvollsten?
                  Viel Speicher, viel RAM macht Sinn wenn du "viel" damit vor hast. Für kleine Dinge tut es auch ein Arduino Nano. Ansonsten würde ich zum Micro greifen.

                  Welche AVR sollte drauf sein.
                  Siehe letzte Frage.

                  Ideal zum basteln ist ein Arduino mit zwei seriellen Schnittstellen: Eine für den Bus, und eine für die Debug-Konsole.

                  Bzgl. Shield... JuMi bastelt bei sich den Arduino/AVR gleich drauf. Was Omegacontrol/Mario vor hat weiß man nicht.

                  Kommentar


                    Danke
                    Die schau ich mir genauer an.

                    Zitat von tuxedo Beitrag anzeigen
                    Bzgl. Shield... JuMi bastelt bei sich den Arduino/AVR gleich drauf. Was Omegacontrol/Mario vor hat weiß man nicht.
                    Das klingt ja nochmal besser.
                    Somit ist die iButton Hardware nur recycling?! :-)

                    Kommentar


                      Sehr interessantes Projekt, ich bin vor gut einem Jahr auf den Beitrag gestoßen und habe wieder Lust bekommen an unserem Hausautomatisierungsprojekt zu basteln. Hardware besorgt, aufgebaut, und liegen gelassen :-(
                      Erstmal Danke und Glückwunsch für euer karduino, ich kann gut nachvollziehen was so ein Projekt bedeutet.

                      Kurz zu mir - Wir, zwei Freunde und ich habe vor einiger Zeit ein Profibus DP-Slave gebaut. Dieser Slave ist eine MSP430F2252 als Basis, programmiert in C, der mit einer SPS S7 kommuniziert. Ich habe vor 10 Jahren mit ETS2 schon einige Projekte umgesetzte aber dann ging es eher Richtung SPS.
                      Hier einige Links von & zu uns
                      http://www.sps-forum.de/feldbusse/15...ber-bauen.html
                      http://www.see-solutions.de/projekte/projekte.htm
                      http://www.mikrocontroller.net/topic/106174

                      Habe gesehen dass sich auch hier der Informationen von Jörg bedient wurde, der „KNX_Twisted_Pair_Protokollbeschreibung.pdf“ von See-Solutions.de
                      Schön wenn diese Informationen auch anderen helfen :-)
                      Hier gibt’s auch nochmal etwas zum Reverse Engineering KNX http://www.see-solutions.de/sonstiges/sonstiges.htm

                      Habe mich mal durch die mittlerweile vielen Seiten gelesen und dachte ich fasse es kurz zusammen, bitte berichtigen oder ergänzen wenn es falsch ist.

                      Projekt karduino = KNX on Arduino
                      Initiator war „ThorstenGehrig“ größtenteils weiterentwickelt von „JuMi2006“ und "tuxedo"
                      Projekt ist hier gehostet https://github.com/KNX-on-Arduino

                      Zur Hardware:
                      Arduino Nano/Mini/Leonardo/Mega/UNO über seriellen Schnittstelle mit dem TP UART (5WG1117-2AB12)

                      „JuMi2006“ entwickelt gerade eine Platine mit allem onboard für die UP-Dose, oder? -> Wie ist der Status?

                      Java Tool von tuxedo „Karduino Graphical Tool„ ist zum Einstellen der Physikalischen Adresse des Moduls sowie der Gruppenadressen und der Geräteparameter.

                      Nun haben sich einige Fragen bzw. Unklarheiten für mich aufgetan
                      Die PA wird doch normal über die ETS Software vergeben, war oder ist ja noch in der lip vorhanden, was genau macht eigentlich das Karduino Graphical Tool?
                      Auf wie viele Gruppenadressen kann der karduino reagieren?
                      Wie werden die Karduino’s mit der ETS verknüpft, mit Universal-Modulen?
                      Irgendwo gab es eine Liste mit den Datentypen die die lip kann, finde sie aber nicht mehr
                      groupWrite2ByteFloat
                      ..

                      Hier mal ein kleine Auflistung was ich mit dem kleinen Burschen umsetzen würde, z.B. im Rauchmelder oder der UP-Dose untergebracht.

                      - Luftfeuchete/Temperatur VCO iaq-core
                      - Präsensmelder
                      - Einige E/A’s für Rollo’s, Lichtschalter, Fensterkontakte (evtl. auch ext. im Raum verbaut)
                      - Einige PWM für LED oder zur Ansteuerung der Heitzkreisverteiler (evtl. auch ext. im Raum verbaut)
                      - Klein für UP-Dosen oder Design für Rauchmelder
                      - kleines Display (evtl. auch ext. im Raum verbaut)
                      - Füllstand
                      - Wetterstation
                      - …

                      @ tuxedo: tolle Monologe ;-)

                      ... weiter so
                      Zuletzt geändert von Johannes F; 17.08.2015, 15:10.

                      Kommentar


                        bitte berichtigen oder ergänzen wenn es falsch ist.
                        Passt soweit denke ich.

                        Die PA wird doch normal über die ETS Software vergeben, war oder ist ja noch in der lip vorhanden, was genau macht eigentlich das Karduino Graphical Tool?
                        Jepp, die PA wird normalerweise über ETS gesetzt. Aber da wir keine signierten Applikationen für die KNX Geräte mit Arduino erstellen können, kannst sonst nichts in ETS mit dem Arduino-KNX-Teil gemacht werden.

                        Das Karduino Tools Programm ist als grafisches Frontend für die KNX-on-Arduino Basteleien gedacht. Quasi ein "ETS für KNX-on-Arduino". Damit kannst du die PA, GA sowie die Parameter deines KNX-on-Arduino-Gerätes setzen.

                        Auf wie viele Gruppenadressen kann der karduino reagieren?
                        Soviel wie du RAM-Speicher entbehren kannst. Momentan ist es so, dass die GAs im RAM gehalten werden. Kommt ein Telegram rein, wird mit den GAs im RAM abgeglichen und bei Bedarf darauf reagiert.
                        Man könnte die GAs auch rein in den EEPROM legen. Dann ist noch mehr Platz für GAs, aber dann kommt noch die Zugriffszeit auf den EEPROM hinzu. Und das kann, je nach Anwendung, zeitlich ungeschickt werden.
                        Jede GA im RAM belegt 2 byte. Je nach verwendeten Arduino variiert der zur Verfügung stehende RAM Speicher.

                        Wie werden die Karduino’s mit der ETS verknüpft, mit Universal-Modulen?
                        Entweder du führst sie überhaupt nicht in der ETS, oder eben mit Universal Modulen. Ich für meinen Teil führe sie in ETS gar nicht und hab eben in beiden Welten sich überschneidende GAs. Fertig.


                        Irgendwo gab es eine Liste mit den Datentypen die die lip kann, finde sie aber nicht mehr
                        Die "lip" schreibt sich mit "b", wegen "library" und so ;-)

                        Eine Liste hab ich nicht. Steht aber einigermaßen leserlich im Source: https://github.com/KNX-on-Arduino/Kn.../KnxTelegram.h


                        Hier mal ein kleine Auflistung was ich mit dem kleinen Burschen umsetzen würde, z.B. im Rauchmelder oder der UP-Dose untergebracht.
                        Ist mit dem Arduino alles möglich. Die Frage ist nur immer ob man feriges zusammensteckt und damit "mehr Platz" braucht, oder ob man die Platine mit Arduino und Co. selbst erstellt/fertigen lässt und damit deutlich kleiner wird.

                        Alles in allem:

                        An Karduino ist noch einiges zu tun. Da hier gerade bedingt durch das "Sommerloch" andere Dinge bei den anderen wohl wichtiger waren, hab ich mich auch erstmal um anderes gekümmert. Aber der Versuchsaufbau liegt noch auf dem Schreibtisch und wartet darauf weiter gebastelt zu werden.


                        Kommentar


                          Oje , da ging was beim Hochladen schief, sorry...
                          Hatte ständig ne Fehlermeldung ohne, das ich gemerkt habe, das er im Hintergrund den Eintrag erstellt hat...
                          Zuletzt geändert von kettheik; 08.09.2015, 20:38.

                          Kommentar


                            Hallo,
                            ich versuche nun seit einiger Zeit das Auslesen von Telegrammen hinzubekommen.
                            Leider erfolglos. Hat von euch noch jemand eine Idee?

                            Ich setze den UNO R3 ein.
                            Senden geht ohne Probleme.

                            Aber egal welche GAs ich auch auslesen möchte, er geht immer in den Zweig UNKNOWN... d.h. LED9 leuchtet.
                            (siehe... else if ( eType == UNKNOWN ) im Codeblock!)
                            Im ETS Busmonitor sieht man aber schön, dass Telegramme auf dem Bus liegen (auch leuchtet die LED nur dann...!)

                            Hier mein Aufbau: (um das Bild sehen zu können muss man eingeloggt sein) IMG_1705.JPG


                            Hier mal mein Code:
                            Code:
                            ////////////////////////////////////////////////////////////
                            // KNX Project - HN
                            // Receive Grouptelegrams and turn on/off coffee or doorbell
                            //
                            // Works with Arduino UNO (only tested with SMD-Edition)
                            // Only one serial port is needed, no debug outputs!
                            // Don't add Serial.println
                            // After Upload the sketch you have to disconnect the Arduino UNO from PC
                            // and shortcut the ICSP1 Pin 5 with ICSP1 Pin 6, Reset the Arduino Uno
                            //////////////////////////////////////////////////////////
                            #include <KnxTpUart.h>
                            
                            // Define send interval
                            #define SEND_INTERVAL_MS 3000
                            
                            // Define KNX Baudrate
                            #define KNX_BAUDRATE 9600
                            
                            #define LED_RED_9    9
                            #define LED_RED_10  10
                            #define LED_GRE_11  11
                            #define LED_YEL_12  12
                            
                            // Init Outputs
                            int led_red_9_state  = 0;
                            int led_red_10_state = 0;
                            int led_gre_11_state = 0;
                            int led_yel_12_state = 0;
                             
                            // Initialize the KNX TP-UART library on the Serial port of Arduino Uno
                            // and with KNX physical address 1.1.52
                            KnxTpUart knx(&Serial, "1.1.52");
                            
                            unsigned long startTime;
                            
                            
                            void setup() {
                              
                              // Initialize Bus with KNX Baudrate
                              Serial.begin(KNX_BAUDRATE);
                              // Even Parity          
                              UCSR0C = UCSR0C | B00100000;
                              knx.uartReset();            
                              
                              //The Group Adresses you want to listen too
                              knx.addListenGroupAddress("3/2/7");
                              knx.addListenGroupAddress("3/2/8");
                              knx.addListenGroupAddress("1/2/12");
                              
                              //Output pinMode
                              pinMode(LED_RED_9,  OUTPUT);
                              pinMode(LED_RED_10, OUTPUT);
                              pinMode(LED_GRE_11, OUTPUT);
                              pinMode(LED_YEL_12, OUTPUT);
                            
                              startTime = millis();
                            
                            }
                             
                            void loop() {
                            
                              /* Hold the exact time delay */
                              if (abs(millis() - startTime) < SEND_INTERVAL_MS) {
                                delay(5);  // delay 5ms
                                return;    // end function
                              }
                            
                              /* Switch on/off led9 = function */
                              if (led_red_9_state == 0)
                              {
                                //knx.groupWriteBool("0/0/1", 1);
                              }
                              else{
                                //knx.groupWriteBool("0/0/1", 0);
                              }
                            
                              // Save last time stamp
                              startTime = millis();
                              
                              //Rest is wait for an Serial Event
                              
                            }
                            
                             void serialEvent() {
                              
                              //Get Serial Event
                              KnxTpUartSerialEventType eType = knx.serialEvent();
                              
                              //Check Serial Event
                              if (eType == KNX_TELEGRAM)
                              {
                                led_gre_11_state=1;
                                digitalWrite(LED_GRE_11, HIGH);
                                delay(500);
                                led_gre_11_state=0;
                                digitalWrite(LED_GRE_11, LOW);
                                
                                // Get Data to Telegram structure
                                KnxTelegram* telegram = knx.getReceivedTelegram();
                                
                                // Now we have the telegram and can do whatever we want
                                
                                // Get TargetMainGroup
                                int main = telegram->getTargetMainGroup();
                                // Get TargetMiddleGroup                          
                                int middle = telegram->getTargetMiddleGroup();
                                // Get TargetSubGroup                      
                                int sub = telegram->getTargetSubGroup();
                            
                                // Create TargetGroupAddress                            
                                int TargetGroupAddress(main*2048 + middle*256 + sub);                
                                
                                //Turn on/off the doorbell "3/2/7"
                              }
                              else if ( eType == IRRELEVANT_KNX_TELEGRAM )
                              {
                                led_yel_12_state=1;
                                digitalWrite(LED_YEL_12, HIGH);
                                delay(500);
                                led_yel_12_state=0;
                                digitalWrite(LED_YEL_12, LOW);
                              }
                              else if ( eType == TPUART_RESET_INDICATION )
                              {
                                led_red_10_state=1;
                                digitalWrite(LED_RED_10, HIGH);
                                delay(100);
                                led_red_10_state=0;
                                digitalWrite(LED_RED_10, LOW);
                              }
                              else if ( eType == UNKNOWN )
                              {
                                led_red_9_state=1;
                                digitalWrite(LED_RED_9, HIGH);
                                delay(100);
                                led_red_9_state=0;
                                digitalWrite(LED_RED_9, LOW);
                              }
                              else
                              {
                                ;
                              }
                            }
                            Gruß
                            Heiko
                            Zuletzt geändert von kettheik; 09.09.2015, 09:52.

                            Kommentar


                              Oje , da ging was beim Hochladen schief, sorry...
                              ​Hatte ständig ne Fehlermeldung ohne, das ich gemerkt habe, das er im Hintergrund den Eintrag erstellt hat...
                              Zuletzt geändert von kettheik; 08.09.2015, 20:39.

                              Kommentar


                                Also ich habe jetzt nochmal alles hier im Forum durchsucht...
                                Ich bin der Meinung alles richtig verdrahtet und auch programmiert zu haben.
                                Leider ist es mit dem Uno sehr schwer zu "debuggen".
                                Habe dafür mal die LEDs genutzt... aber bei UNKNOWN Telegramtype wirds dann doch schwer.
                                Dachte es liegt an der Debugangabe des UART Treibers, aber die ist nicht aktiv.

                                Bin grad ziemlich gefrustet, da ich mir schon meine eigene KWL "ausgemalt habe" ...
                                Aber ohne lesende KNX Kommunikation wirds schwer...
                                ;-(

                                Grüße Heiko

                                Zuletzt geändert von kettheik; 09.09.2015, 09:59.

                                Kommentar

                                Lädt...
                                X