Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

  • emax
    antwortet
    Es könnte sein (lange kein Arduino mehr gemacht), dass der "float" in Wirklichkeit ein "double" ist. Ob das Auswirkungen auf die Verarbeitung im "knx" Objekt hat, weiß ich natürlich nicht. Aber danach würde ich zuerst schauen.

    Einen Kommentar schreiben:


  • boardman
    antwortet
    So, erste Erfolge zeichen sich ab, mein "Wetterstation-Prototyp" läuft und sendet Daten auf den Bus...
    Echt schade dass ich das Thema so lange nicht bemerkt habe ...

    Eine Frage habe ich doch, es scheint Rundungsfehler zu geben wenn ich Float Werte sende ... wo ist mein Fehler?

    Die Variable im Arduino ist definiert als

    Code:
    float adjustedpressData;
    auf dem Webserver ergibt
    client.print(F("Luftdruck "));
    client.print(adjustedpressData);
    client.print(" Pa");
    client.println("<br />");​
    die Ausgabe

    Luftdruck 997.08 Pa

    ich sende so:

    Code:
    knx.groupWrite2ByteFloat("0/0/22", adjustedpressData); // Luftdruck
    in der ETS kommt

    997,12 Pa

    an... nicht tragisch aber verwunderlich...

    Uwe

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Schau mal bei Openknx

    Einen Kommentar schreiben:


  • boardman
    antwortet
    Moin, hier ist es still geworden, geht es hier weiter oder woanderst?
    Erst mal Danke an alle die das ermöglicht haben, geile Projekte...
    Ich bin seit ein paar Wochen neu im Arduino Umfeld und will ne Wetterstation aufbauen...
    Melde mich wenn es Fortschritte gibt...

    Einen Kommentar schreiben:


  • dreamy1
    antwortet
    Die Leistung des Busankopplers könnte zudem auch knapp sein, um den Uno zu versorgen. Leuchten denn am Uno die LEDs, wenn er über den Busankoppler versorgt wird? Falls nein: die 5V des Busankopplers nicht verwenden und den Arduino extern versorgen (aber nur zum Testen aufm Testbrett, später muss da eine galvanische Trennung hin).

    Einen Kommentar schreiben:


  • dreamy1
    antwortet
    Warum das Rad neu erfinden?

    https://github.com/thorsten-gehrig/a...GroupWrite.ino

    Einen Kommentar schreiben:


  • marko
    antwortet
    Hallo,
    ich habe Probleme mit dem einfachen schreiben auf dem Bus.
    Es passiert nichts.
    Hardware: Arduino Uno Siemens 5WG1 117-2ab12
    Software: Arduino DIE 1.8.16, KnxTpUart : arduino-tpuart-knx-user-forum-main.zip aktuell ruter geladen
    Beschaltung:
    BCU Arduino
    1. GND
    2. TX
    3. RX
    4. 5V
    Zum Programmieren des Arduino sind alle Kabel ab.
    Danach trenne ich den Arduino von USB und verbinde Ihn mit dem BCA.

    Code:
    #include <Arduino.h>
    #include <KnxTpUart.h>
    
    KnxTpUart knx(&Serial, "1,1,5");
    bool richtig;
    void setup()
    {
    Serial.begin(19200);
    delay(1000);
    knx.uartReset();
    delay(1000);
    pinMode(13,OUTPUT);
    }
    void loop()
    {
    digitalWrite(13,1);
    knx.groupWriteBool("4/0/45",true);
    delay(5000);
    digitalWrite(13,0);
    knx.groupWriteBool("4/0/45",false);
    delay(5000);
    }[FONT=Calibri][/FONT]


    Was ist da falsch?

    Einen Kommentar schreiben:


  • Charls
    antwortet
    So, ich hab mich mal etwas durch 85 Seiten gelesen, wobei es mehr ein Querlesen war. Ein paar Fragen sind es nun doch noch, auch wenn das Prinzip langsam klarer wird.
    Was sagt eigentlich das "(UCSR0C, BIN)" oder "UCSR0C = UCSR0C | B00100000;"? Damit kann ich nichts anfangen. Wenn ich "Serial1.begin(19200, SERIAL_8E1);" schreibe, ist das das gleiche in Hex?
    Eugenius Du schreibst in #1116 auf Seite 75 "ihr müsst langsam von SerialEvent weg. SerialEvent wird eh über Loop ausgeführt..." Was genau ist damit gemeint?

    Wenn ich viel in die Loop schreibe, bremmst es die Abfrage aus - ist das richtig? Ich rede hier von delay 10s. Außerdem kommt nur beim Senden des anderen Teilnehmers auf den Bus etwas im Arduino an.
    Mein funktionierender Code sieht gerade so aus:
    void setup() {
    //Initialize Serial port
    Serial.begin(19200);
    Serial1.begin(19200, SERIAL_8E1);

    knx.uartReset();
    knx.addListenGroupAddress("7/1/12");
    knx.addListenGroupAddress("7/1/13");
    }

    void loop() {
    }

    void serialEvent1() {
    KnxTpUartSerialEventType eType = knx.serialEvent();
    if (eType == TPUART_RESET_INDICATION);
    else if (eType == UNKNOWN);
    else if (eType == KNX_TELEGRAM) {
    KnxTelegram* telegram = knx.getReceivedTelegram();

    // Telegrammauswertung auf KNX (bei Empfang immer notwendig)
    String target =
    String(0 + telegram->getTargetMainGroup()) + "/" +
    String(0 + telegram->getTargetMiddleGroup()) + "/" +
    String(0 + telegram->getTargetSubGroup());

    if (target == "7/1/12") {
    int received_7_1_12 = telegram->get2ByteFloatValue();
    Serial.print("Empfangener Wert: 7/1/12 =>");
    Serial.println(received_7_1_12);
    }

    if (target == "7/1/13") {
    int received_7_1_13 = telegram->get2ByteFloatValue();
    Serial.print("Empfangener Wert: 7/1/13 =>");
    Serial.println(received_7_1_13);
    }
    }
    }
    Was bringt mir aber die "eType If-Abfrage" für UNKNOWN und TPUART_RESET_INDICATION? Kann man die nicht weglassen?

    Fragen über Fragen...
    Vielleicht kann mir jemand auf die Sprünge helfen.

    Einen Kommentar schreiben:


  • Charls
    antwortet
    Hallo
    Kann mir jemand nochmal kurz erklären, wie ich vom Bus lesen kann? Ich will jetzt nicht alle 85 Seiten hier durchlesen und aus der Readme Datei werde ich nicht ganz schlau.
    Der Befehl : knx.groupRead("1/2/3"); ist schon klar und gibt die GA an, die ich lesen will. Aber wie setze ich value = telegram->get2ByteFloatValue(); richtigt ein? Was ist telegram und wie muss ich den Wert "value" deklarieren. Sind die Namen fest (telegram) und ich lese immer wieder was von einer If-Abfrage danach?
    Kann mir vielleicht mal einer ein Beispiel afschreiben, wie ich den Temperaturwert also DPT9 von der GA 1/2/3 auslese, damit ich mir selbst ein Bild machen kann, wie es funktioniert?

    Und was ist "answer"? Kann damit ein Gerät einen Wert vom Arduino abfragen? Wie benutzt man sowas? Gibt man da einfach den Wert auf knx.groupAnswer2ByteFloat("1/2/3", float); oder muss man da auch noch was beachten?
    Hab festgestellt das ich bis jetzt nur erfolgreich an den Bus gesendet hab.

    vielen Dank

    Einen Kommentar schreiben:


  • Funki
    antwortet
    Hallo Leute,
    falls jemand Interesse an meiner Platine ivm. dem allseits bekannten Siemens BTU hat, einfach melden.
    Das KiCad Projekt kann ich natürlich auch zur Verfügung stellen.
    🖖
    You do not have permission to view this gallery.
    This gallery has 1 photos.
    Zuletzt geändert von Funki; 09.08.2021, 12:28.

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Hello Leopard,


    the reception also works, on the ARDUINO UNO R3

    THE GND TP-UART to connect to the GND of the Arduino (exception -> optocoupler)

    For the ARDUINO UNO R3 "void serialEvent()", the following should be done:

    (Not with initial programming, there is no bridge to remove) Remove the bridge on (ICSP1 pin 5 with ICSP1 pin 6)
    (Not at initial programming, not necessary the ATmega 16u2 is not in programming mode) Unplug the USB plug and plug it back in (allow a bit of time to pass between plugging in and out)
    Programming the ARDUINO UNO R3 without infected TP-UART (RxD,TxD).
    After programming establish a bridge between ICSP1 pin 5 and ICSP1 pin 6
    Connect the TP-UART (RxD,TxD) (re)connect
    Briefly press reset button on the ARDUINO UNO R3


    Einen Kommentar schreiben:


  • Leopard
    antwortet
    (from translator

    Ich bin dir wirklich dankbar für deine Hilfe
    Ich war ungeduldig, auf diese arduino-basierten Maschinen zu warten, also kaufte ich einen Chip-Writer und grundlegende Atmega-Chips.

    Hier ist sie, KNX gesteuerte LED!

    danke an alle für dieses schöne forum

    atmega328p.jpg

    Einen Kommentar schreiben:


  • Leopard
    antwortet
    Zitat von Charls Beitrag anzeigen
    https://www.amazon.de/gp/product/B01...0?ie=UTF8&th=1

    This is a good Arduino based on Leonardo...
    Ich habe zwei bestellt, ich hoffe sie funktionieren ^^
    Während ich warte, probiere ich Nano mit entferntem Chip aus:
    (übersetzt mit google, sorry für den Rechtschreibfehler

    nano_without_chip.jpg

    Einen Kommentar schreiben:


  • Charls
    antwortet
    https://www.amazon.de/gp/product/B01...0?ie=UTF8&th=1

    This is a good Arduino based on Leonardo...

    Einen Kommentar schreiben:


  • Leopard
    antwortet
    Zitat von Sonnengruesser Beitrag anzeigen
    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.
    Yes, that's exactly same serial converter, I had to get USB drivers from some chinese page.

    Now I need to check why uno R3 (legit, but old) didnt work

    Thank you, Ill try to get some other arduinos (pro mini)
    Zuletzt geändert von Leopard; 12.06.2021, 15:59.

    Einen Kommentar schreiben:

Lädt...
X