Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Ja... ich hab mir auch mal einen bestellt.... Zwar für 10 Euro... dafür aber mit sofort Versand hier aus Deutschland.....

    So ganz schlau bin ich noch nicht hier.

    SerialEvent() sollte doch wenigstens ausgerufen verden wenn da an pin was passiert oder?

    Erst mal egal was da kommt. Das auswerten macht man ja dann erst.... aber in meinem Code wird das nie aufgerufen....

    Komisch.

    Kommentar


      Hmm. Schon seltsam. Kontrolliere sichereitshalber nochmal die Verkabelung bzw. die Pin-Belegung am Siemens BCU.

      Hast du mal die Beispielsketches (ohne KNX) probiert?

      Kommentar


        Hmmmm ja sehr komisch alles. Zumal ich ja nich der erste bin der GENAU das so festgestellt hat.

        Die Beispiele benötigen doch sicher irgend etwas was per UART was sendet damit man serialEvent() testen kann.

        Leider habe ich nicht viel hier dafür... keinen anderen Arduino oder so.

        wie könnte ich das den testen?

        Kommentar


          Wie wär's mit deinem PC mit dem Arduino IDE Serialmonitor?

          Kommentar


            Ach so.... ja das klappt... ich kann im Arduino Code ohne Probleme Serial.Println("Hallo") und so weiter benutzen....

            Das hat ja aber noch nix mit den PINs des Arduino zu tun um zu gucken ober er an Rx was empfangen kann.

            Oder meinstest du was aderes?

            EDIT:

            Eigentlich beweist das ja schon das Rx und Tx funktionieren.... sonnst für das ja grundsetzlich nicht gehen.
            Das geht zwar alles über den USB - Seriel Wandler zum PC aber am ende kommt das an den beiden PINs Rx und Tx vorbei.
            Hmmmmmm sehr komisch alles.

            Mir gehen da die Ideen aus.
            Zuletzt geändert von division; 10.07.2015, 09:31.

            Kommentar


              Die Arduino IDE hat einen eingebauten Serialmonitor ... Damit kannst du sehen was der Arduino auf die serielle Schnittstelle schreibt und kannst umgekehrt dem Arduino auch einen String an die Schnittstelle senden.
              Setzt allerdings voraus, dass der Arduino entsprechend am Rechner hängt.

              Beim Leonardo geht das über die selbe Schnittstelle wie man programmiert. Beim Uno sollte das laut Boardbeschreibung genau so gehen:

              • Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip.
              Communication

              The Arduino Uno has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. TheATmega328 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). An ATmega16U2 on the board channels this serial communication over USB and appears as a virtual com port to software on the computer. The '16U2 firmware uses the standard USB COM drivers, and no external driver is needed. However, on Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB-to-serial chip and USB connection to the computer (but not for serial communication on pins 0 and 1).

              Kommentar


                Ja.. ich hatte den oben beitrag editiert.... und empfangen kann ich auch. Das mit dem senden weiiß ich aber nicht. Ich werde mal versuchen nacher vom PC per serial Monitor senden die LED am PIN 13 zu schalten. Wenn das geht würde das ja beweisen das der empfang funktioniert.

                Leider teilen sich ja beim UNO der USB Anschluss und alles andere was an den UART angeschlossen wird diesen einen Port. Da kann leider schnell schrott passieren.

                Na mal sehen.

                Viele Grüße

                Jan

                Kommentar


                  Naja, ohne KNX wird das erstmal keine Probleme machen. Denn entweder der USB-Port ist im Programmier-Modus, ODER im UART-Modus. Ist beim Leonardo und Co. auch nicht anders. Nur hat der noch einen zweiten Port der nur den den IO-Pins herausgeführt ist, und wo mein BCU dran hängt.

                  In deinem Fall: Erstmal sicherstellen dass der Arduino-Code über den UART senden und empfangen kann. Wenn das geht, KNX wieder dazu bauen und weitere UART lese/schreibaktionen unterlassen. Mit einem RS232-TTL-Pegelwandler-USB-Adapter kannst du dann den SoftSerial auf beliebigen anderen IO-Pins fürs debuggen benutzen.
                  Würde da aber eher den Leonardo benutzen...

                  Kommentar


                    Ich habe jetzt genau das gleiche zu berichten wie der angesprochene User vor mir.

                    Ich hab heute meinen MEGA 2560 bekommen und angeschlossen.

                    Einfach den ganzen Serial Krams auf den Serial1 vom Mega umgestellt und fertig wars.

                    Funktioniert einwandfrei.

                    Ich würde aber trotdem gerne wissen, warum das mit dem UNO nicht klappt.

                    Viele Grüße

                    Kommentar


                      Hallo Division,

                      es geht auch mit dem Arduino Uno.
                      Hierzu müssen natürlich ein paar Änderungen vorgenommen werden.

                      Bei USB-Speisung (Verbindung zum PC) musste ich den Pin 5 mit Pin 6 der ICSP1 mit einander verbinden (Serielle Kommunikation über 16u2).
                      Der Vorgang des Verbinden hält den Baustein (IC) für die Kommunikation über USB im Reset, bis zum erneuten Abstecken und Anstecken der USB-PC-Verbindung.

                      Anbei ein Sketch der auf dem Arduino Uno funktioniert (nur Empfangen), der hilft vielleicht weiter.

                      Code:
                      #include <KnxTpUart.h>
                      
                      KnxTpUart knx(&Serial, "1.0.15");
                      
                      boolean test;
                      
                      void setup() {
                        Serial.begin(19200);
                        UCSR0C = UCSR0C | B00100000;
                        knx.uartReset();
                        knx.addListenGroupAddress("9/2/1");
                      }
                      
                      void loop() {
                      }
                      
                      void serialEvent() {
                        KnxTpUartSerialEventType eType = knx.serialEvent();
                        if (eType == KNX_TELEGRAM) {
                          KnxTelegram* telegram = knx.getReceivedTelegram();
                          String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup());
                          if (telegram->getCommand() == KNX_COMMAND_WRITE) {
                            if (target == "9/2/1") {
                              test = telegram->getBool();
                            }
                          }
                        }
                      }
                      Mit freundlichen Grüßen

                      Mag Gyver

                      Kommentar


                        Hallo,

                        das ist ja spannend. Ich hatte mir schon gedacht das es irgendwie an der gemeinsamen Nutzung der Schnittstelle liegt.

                        Kannst du noch mal genauer erklären welche PINs du da verbunden hast? Die Arduino PINs 5 und 6 oder die Beinchens des Atmel 5 und 6?

                        Viele Grüße

                        Jan

                        Kommentar


                          Hat er doch geschrieben: ICSP1 ...

                          Kommentar


                            Hallo,

                            spannend ist das nicht.
                            Die ICSP1 ist die 2x3 pol. Pfostenleiste zwischen Resettaster und Anschluss AREF des Arduino Uno (links oben unter der 10pol. Steckerleiste).

                            Wenn man die Speisung über den USB-Port durchführt, sollte man natürlich den 16u2 schlafen schicken. Ansonsten kann es durchaus vorkommen, das dieser ein Eigenleben entwickelt und das Senden oder Empfangen der Daten vom Siemens 5WG1 117-2AB12 blockiert.

                            Da ich dieses Verhalten bei mehreren, nicht allen Arduino Uno Boards (es gibt ja verschiedene Ausführungen) beobachtet habe, ist diese Vorgehensweise um ein ungestörte Kommunikation zwischen dem ATmega 328P und dem Siemens 5WG1 117-2AB12 herzustellen. Natürlich die drei Anschlüsse verbinden.

                            GND Arduino Pin GND --> GND Siemens 5WG1 117-2AB12
                            RX Arduino Pin 0 --> TX Siemens 5WG1 117-2AB12
                            TX Arduino Pin 1 --> RX Siemens 5WG1 117-2AB12

                            Dann sollte dies auch mit dem Arduino Uno funktionieren.

                            Mit freundlichen Grüßen

                            Mag Gyver

                            Kommentar


                              Liebe Freunde der Arduino KNX Bastelecke,

                              als Team sind wir gerade in unserer Freizeit dran, ein KNX Shield für den Arduino zu entwickeln.
                              Ziel sollte es hier sein, direkt eine Koppelung zwischen Arduino und KNX herzustellen und diesen über ETS programmieren zu können.
                              Natürlich würde es dann eine beschriebene Library geben, um auch Anfängern auf dieser Sparte in nur wenigen Schritten den Einstieg zu ermöglichen.
                              Um uns ein Bild über die Nachfragen machen zu können, bitte ich auf Daniel´s Blog sich zu nennen:
                              Einigen dürfte die Internetseite bereits bekannt sein...

                              http://dka.web-republic.de/2015/07/arduino-knx-shield/

                              Wir bedanken uns schon heute für eure Mitteilung. Nur wenn genügend Subscriber mitmachen werden wir das Projekt zu Ende realisieren.

                              Viele Grüße

                              Mario


                              Kommentar


                                Omegacontrol
                                Jumi2006 hat da schon etwas in der Pipeline und wohl auch erste Prototypen. Wie wär's mit bündelung der Ressourcen statt parallel noch ein Shield zu basteln?

                                Die ursprüngliche dka KnxTpUart Lib ist mittlerweile auch aufgebohrt und mit einem ersten Grundgerüst versehen damit man den Arduino über den Bus parametrisieren kann.

                                Du schreibst aber was von "über ETS programmieren"? Kannst du das näher erläutern? Dazu braucht es doch eine entsprechend signierte Produktdatenbank?
                                Unser bisheriger Ansatz war eine extra Anwendung zum programmieren des Arduinos über den Bus (physikalische Adresse, Gruppenadressen und Parameter). Wenn du hier ein wenig zurück blätterst dann findest du auch Screenshots des Prototypen.

                                Kommentar

                                Lädt...
                                X