Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

  • Sonnengruesser
    antwortet
    Zitat von Leopard Beitrag anzeigen
    Leonardo works 100%, but nano ignores "void serialEvent()" function totally
    There are some Arduino Nano clones which use CH340G as serial-USB converter. With those the serial communication doesn't work. Please check if this is the case for you as well. If you search for CH340G in this forum you can get more info.
    Best solution: use a different Arduino.

    Einen Kommentar schreiben:


  • Leopard
    antwortet
    Thanks for the reply.

    no, nano was only in USB when I flashed it.

    when in use, I just added it to "SIEMENS 5WG1117-2AB12" TP UART ". Serial port and took arduinos power directly from UART.


    After your message I had to test with extra power also (galvanic isolated), just a tought if its current problem. Next I'll try with UNO, I know its original one (that nano might be cheap china copy, not sure.)


    Edit: Tested with another siemens module and UNO, act like same. :/


    Edit 2, could it have something to do with this?:
    https://forum.arduino.cc/t/nano-ever...alled/690025/2



    Pic of it:
    nano_small.jpg
    Zuletzt geändert von Leopard; 12.06.2021, 01:55.

    Einen Kommentar schreiben:


  • Charls
    antwortet
    Sorry for my bad English!
    Have you on the NANO a PC on the USB-Port?
    I think the NANO has one Serial Port and the Leonardo has two Serial Ports. I guess that's the problem: https://www.arduino.cc/reference/en/...cation/serial/

    So weiter auf Deutsch
    Ich behaupte mal der Nano ist dafür keine gute Wahl. Und da der Leonardo zu 100% funktioniert, vermute ich es liegt an dem 2. serielle Port, den der Nanon laut dem Link oben nicht hat.
    Zitat von Leopard Beitrag anzeigen
    Serial1.begin
    ...wird der Nano nicht kennen.
    Der ProMicro den ich immer gern verwende ist ja auch ein Leonardo und auch so klein wie ein Nano.

    Einen Kommentar schreiben:


  • Leopard
    antwortet
    Es tut mir leid, dass ich Englisch verwenden musste (ich habe dies mit einem Übersetzer gemacht)

    Sorry for english, I have been battling with this a week now and im out of ideas

    Leonardo works 100%, but nano ignores "void serialEvent()" function totally

    Grounding button(pin2) sends command to bus and it works, I get msg at raspberry pi:
    L_Busmon: BC 11 C7 09 09 E1 00 81 F5 :L_Data low from 1.1.199 to 1/1/9 hops: 06 T_Data_Group A_GroupValue_Write (small) 01

    But when I give command in raspberry, that function doesn't activate at all (it should turn led on):

    code, sorry I pasted full thing, just in case:

    Code:
    // File: GroupRead.ino
    // Author: Mag Gyver (Since 2015)
    // Modified: Thorsten Gehrig (Since 2015)
    // Test constellation = ARDUINO UNO <-> 5WG1 117-2AB12
    #include "KnxTpUart.h"
    
    KnxTpUart knx(&Serial, "1.1.199");
    int LED = 13;
    bool button_last_state = 0;
    
    void setup() {
    
    pinMode(13, OUTPUT); // PIN 13 as output
    digitalWrite(13, LOW); //Doesnt do anything
    
    pinMode(2, INPUT_PULLUP); // PIN 2 as input, grounding it should send message
    
    Serial.begin(19200, SERIAL_8E1);
    knx.uartReset();
    knx.addListenGroupAddress("1/1/10");
    delay(1000);
    knx.groupRead("1/1/10");
    }
    
    void loop() {
    bool pin_state = !digitalRead(2); //because its pulled up and we want inverse logig
    if (button_last_state == false && pin_state == true) {
    button_last_state = true;
    knx.groupWriteBool("1/1/9", 1);
    }
    if (pin_state == false)button_last_state = false; //if user releases button, reset last value also
    }
    
    void serialEvent() {
    digitalWrite(13, HIGH); //Doesnt do anything on nano
    KnxTpUartSerialEventType eType = knx.serialEvent();
    if (eType == KNX_TELEGRAM) {
    KnxTelegram* telegram = knx.getReceivedTelegram();
    if (telegram->getCommand() == KNX_COMMAND_ANSWER) {
    }
    if (telegram->getCommand() == KNX_COMMAND_WRITE) {
    
    }
    }
    }
    when installing it to leonardo, I changed these and everything works:
    Code:
    KnxTpUart knx(&Serial, "1.1.199");     -> KnxTpUart knx(&Serial1, "1.1.199");
    Serial.begin(19200, SERIAL_8E1);    -> Serial1.begin(19200, SERIAL_8E1);
    void serialEvent()                                -> void serialEvent1() {
    Im totally out of ideas.
    Zuletzt geändert von Leopard; 11.06.2021, 16:46.

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Hallo,

    Frequenz in der IDE ist richtig ausgewählt. Hab ich auch mit Stoppuhr und Blink-Sketch grob verifiziert. Ich muss zugeben, dass ich das anfangs falsch hatte und da hat überhaupt nichts funktioniert. Ich hab leider kein anderes KNX-Zeug hier. Werde mir zur weiteren Diagnose ein Gateway zulegen müssen. Hat da jemand ne günstige Empfehlung?

    Gruss,
    Casim

    Einen Kommentar schreiben:


  • Charls
    antwortet
    Ich denke auch, dass es mit der Frequenz zu tun hat und irgendwas dem anderen davon läuft.
    Allerdings ist die Fehlersuche bei einem KNX-Bus aus zwei Geräten aus dem DIY-Bereich recht schwierig, weil wir uns hier vernab der Norm bewegen und auch Fehler in der KNX Library nicht ausgeschlossen werden können. Es kann also der Sender als auch der Empfänger sein, der Schwierigkeiten macht. Die Frage wäre ja wie ein Taster vom Bus programmiert, sich verhält.
    Vielleicht hast ja schon mal einen Originaltaster und bespielst den mal mit einer ETS-Demo-Version.

    Einen Kommentar schreiben:


  • dreamy1
    antwortet
    Ist in der IDE auch das richtige Board mit der richtigen Frequenz gewählt? Ansonsten kommt die ganze Kommunikation durcheinander, weil die Taktfrequenzen nicht passen.

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Hallo Stefan,

    kannst du vielleicht erkennen wo das Problem liegt?
    Schon mal Danke.

    Gruss,
    Casim

    Einen Kommentar schreiben:


  • dreamy1
    antwortet
    Ein 8 Mhz Arduino funktioniert ganz wunderbar am KNX. Inklusive Leseanfrage.
    Zuletzt geändert von dreamy1; 06.06.2021, 18:22.

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Mit dem 8Mhz Arduino als Sender ändert sich nichts.

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Hallo,

    Kann es sein, dass dein KNX Bus nur aus zwei BCU's und zwei Arduinos besteht und keine ETS-Programmierung vorhanden ist?
    Genau so ist es.

    Das halte ich dann aber für bedenklich.
    Darf ich fragen wieso?

    Was hat der zweite Arduino denn für einen Quarz drauf?
    Der "Sender-Arduino" ist ein Pro Micro mit 16Mhz. Ich verstehe worauf du hinaus willst. Ich werde mal ein 8Mhz-Arduino als Sender probieren und schauen was passiert.

    Gruss,
    Casim

    Einen Kommentar schreiben:


  • Charls
    antwortet
    Kann es sein, dass dein KNX Bus nur aus zwei BCU's und zwei Arduinos besteht und keine ETS-Programmierung vorhanden ist?
    Das halte ich dann aber für bedenklich. Was hat der zweite Arduino denn für einen Quarz drauf?

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Hallo,

    Ich habe einen zweiten Arduino an einer zweiten BCU an dem Bus. damit kann ich per Knopfdruck eine Gruppenadresse senden. Wie gesagt, ist ein reiner, sehr überschaubarer Versuchsaufbau. Keine anderen Geräte, keine ETS, keine Schnittstelle. Es ging mir erstmal darum die Funktion des MP3-Gongs zu testen.

    Von den damaligen Programmierern der Bibliothek scheint hier keiner mehr aktiv zu sein, oder?

    Gruss,
    Casim

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    Zitat von Fody Beitrag anzeigen
    Ist das so, dass die Bibliothek automatisch eine ACK sendet, wenn ein Telegramm reinkommt?
    ich weiß nicht, wie diese Bibliothek funktioniert. Normalerweise ist das so, dass beim Telegrammeingang geschaut wird, ob die GA für das Gerät gedacht ist, und wenn ja, dann wird ein ACK gesendet. Der Lookup für die GA ist zeitkritisch, da im KNX alle Geräte gleichzeitig ein ACK senden. Deswegen kann es sein, dass ein langsamer Prozessor es nicht schafft, rechtzeitig ein ACK zu senden.

    Ist eine reine Vermutung...

    Zitat von Fody Beitrag anzeigen
    Ich habe im Moment nur einen losen Schreibtischaufbau und noch kein KNX/USB-Gateway.
    Und wie gehst Du derzeit an den Bus ran? Irgendwie musst Du ja was auf den Bus senden können und Geräte programmieren können, um was zu testen... Eine IP-Schnittstelle kann man z.B. als Busmonitor verwenden.

    Zitat von Fody Beitrag anzeigen
    Später soll mal der Loxone-Miniserver dafür herhalten.
    Hmmm, den kenne ich auch nicht, würde mich aber wundern, wenn der einen KNX-Busmonitor-Modus könnte...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Fody
    antwortet
    Hallo,

    ich habe mich auch schon gefragt ob die Telegramme mehrfach gesendet werden. Ist das so, dass die Bibliothek automatisch eine ACK sendet, wenn ein Telegramm reinkommt? Ich habe leider noch kein Busmonitor. Unser Haus befindet sich noch im Rohbau und die Elektroinstallation ist noch nicht fertig. Ich habe im Moment nur einen losen Schreibtischaufbau und noch kein KNX/USB-Gateway. Kann jemand hier was günstiges Empfehlen, damit ich mal schauen kann, was auf dem Bus los ist?
    Später soll mal der Loxone-Miniserver dafür herhalten.

    Gruss,
    Casim

    Einen Kommentar schreiben:

Lädt...
X