Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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.
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. :/
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.
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:
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?
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.
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.
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.
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?
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?
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.
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.
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.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: