Ich muss das morgen mal testen ... heute ist es zu spät.
Ich spreche aber vom Mini und nicht vom Micro. Das mit dem Speicher ist natürlich ein Argument, aber vielleicht kann man da trotzdem was machen, so viele Varianten gibt es ja auch wieder nicht.
Ich schau mir das morgen mal an, mein Testcode ist schon etwas länger da er auf Mega und Leonardo (Pro Micro) ohne Anpassungen läuft. Heute war ich schonmal froh dass das Shield mir 3.3V rausgeworfen hat wie es per solder-jumper konfiguriert war.
Gruß Mirko
Ankündigung
Einklappen
Keine Ankündigung bisher.
ARDUINO am KNX
Einklappen
X
-
Hi JuMi,Zitat von JuMi2006 Beitrag anzeigenIch hab das jetzt noch nicht getestet aber wenn ich mir die Diffs anschaue ist das auch noch nicht so schlau geregelt. Vorher wurde geschaut ob TPUART_DEBUG true ist (if (TPUART_DEBUG)) damit sollte es möglich sein die Debug-Funktion im Code freizuschalten.
Jetzt wurde das in sofern geändert dass Du schaust ob TPUART_DEBUG definiert wurde ... wenn ich das richtig verstehe dann müsste man immer die Library anfassen. Wäre es nicht besser das so zu gestalten dass die Library nicht vom User angefasst werden muss?
danke fuer die Rueckmeldung!
Der Gedanke mit dem define war dadurch begruendet, dass mir beim testen mit einem Leonardo schlicht der Speicher ausgegangen ist. Durch das define wird der betreffende Debug-Code bereits vom Pre rausgenommen was etwa 1.5kB Groesse im Endresultat gespart hat und fuer meinen konkreten Fall einfach ueberlebenswichtig war
Ich halte das eigentlich generell fuer sinnvoll, da bei "Endprodukten" vermutlich nirgendwo ein Debug mitlaeuft und viele Testaufbauten (zumindest war das bei mir so) dann auch auf anderen Boards laufen. Und wenn sich da die Schnittstellen aendern (Serial zu Serial1 oder so) muss man eh in die Lib reinfassen...
Man(n) kann aber einfach ne Kopie der Lib lokal anlegen und dann bei Bedarf KnxTpUart oder aber (zB) KnxTpUartDebug inkludieren... das waere zB eine Moeglichkeit.
Leider nicht vollstaendig, da eine meiner Katzen meinen Testaufbau "gegessen" hatZitat von JuMi2006 Beitrag anzeigenKannst Du mal den "Pro Mini 3.3V Atmega328" mit dem Pre testen? Hier wollte es nicht so richtig.
Aber das reine Kompilieren in der Arduino-IDE tuts bei mir, zumindest mit meinem "KNX-Beacon Code" mit dem ich grundsaetzliche Konnektivitaet teste, im wesentlichen ist das der hier:
In der KnxTpUart.h muss TPUART_DEBUG_PORT auf Serial stehen (nen anderen gibts beim Micro ja nicht), sonst wird nix geaendert (obwohl es unabhaengig davon kompiliert ob TPUART_DEBUG nun definiert ist oder nicht).Code:#include <KnxTpUart.h> KnxTpUart knx(&Serial,15,15,20); void setup() { Serial.begin(19200); knx.uartReset(); knx.addListenGroupAddress(0,0,100); } void loop() { knx.groupWriteBool(0,0,100,true); delay(1000); knx.groupWriteBool(0,0,100,false); delay(1000); }
Was genau hast du denn fuer einen Fehler bekommen? Vielleicht irgendwo im Code nen flaschen UART angesprochen?
gruesse :: Michael
Einen Kommentar schreiben:
-
Ich hab das jetzt noch nicht getestet aber wenn ich mir die Diffs anschaue ist das auch noch nicht so schlau geregelt. Vorher wurde geschaut ob TPUART_DEBUG true ist (if (TPUART_DEBUG)) damit sollte es möglich sein die Debug-Funktion im Code freizuschalten.
Jetzt wurde das in sofern geändert dass Du schaust ob TPUART_DEBUG definiert wurde ... wenn ich das richtig verstehe dann müsste man immer die Library anfassen. Wäre es nicht besser das so zu gestalten dass die Library nicht vom User angefasst werden muss?
Ich werde das morgen mal testen weil ich heute Abend noch die alte Version auf dem Rechner hatte und meine v0.2 vom Arduino-Shield fertig ist.
Kannst Du mal den "Pro Mini 3.3V Atmega328" mit dem Pre testen? Hier wollte es nicht so richtig.
Grüße
Einen Kommentar schreiben:
-
Nein, alle die dieses Problem haben - bitte das machen, was ich hier geschrieben habe und nicht dem obigen Ratschlag folgen:Zitat von Catter Beitrag anzeigenAlso an alle die ebenfalls dieses problem haben:
Lib aus dem Arduino Ordner löschen und eine cleane Version hineinkopieren.
Dann in der KnxTpUart.h bei den defines SerialUSB zu Serial machen und USARTSerial zu HardwareSerial.
Im Arduinoprogramm immer Serial1 verwenden.
https://knx-user-forum.de/388322-post313.html
Aber nochmal: neue Version ausm Repository runterladen, nix mit SerialUSB, USARTSerial oder wie auch immer anfassen, sondern alles so lassen wie es ist. Einzig den Debug-Port definieren (Serial fuer den Leonardo) und es sollte laufen.
gruesse :: Michael
Einen Kommentar schreiben:
-
leonardo
ich weiß, dass solche infos wichtig sind...
leider weiß ich aber selbst nicht genau woran es gelegen hat :0
Habe die lib nochmal gelöscht um nochmal von 0 anfangen zu können, hab dann die nötigen Änderungen für Serial1 vorgenommen und plötzlich hats geklappt!
Warum es die ganzen male zuvor nicht geklappt hat, kann ich nicht sagen, denn das ganze habe ich vorher sicher schon 3 bis 4 mal gemacht und es hat nie funktioniert. :/
Das war auch der Grund warum ich es überhaupt mit SoftwareSerial versucht hatte.
Also an alle die ebenfalls dieses problem haben:
Lib aus dem Arduino Ordner löschen und eine cleane Version hineinkopieren.
Dann in der KnxTpUart.h bei den defines SerialUSB zu Serial machen und USARTSerial zu HardwareSerial.
Im Arduinoprogramm immer Serial1 verwenden.
So funktionierts bei mir jetzt
Einen Kommentar schreiben:
-
Woran hats denn gelegen? Solche Infos koennen uns vermutlich dabei helfen, das Ganze noch etwas runder zu kloppenZitat von Catter Beitrag anzeigenHabs endlich hinbekommen

gruesse
Einen Kommentar schreiben:
-
funktioniert
Habs endlich hinbekommen
Jetzt können die Spielerein beginnen
Vielen dank für eure Hilfe
Einen Kommentar schreiben:
-
Nae, lad dir mal lieber eine aktuelle Version der Lib runter - ich habe einige Aenderungen vor allem in Bezug auf den Leonardo und seine "spezielle" USB-Schnittstelle gemacht. Habe ich auch einige Posts zuvor mal erlaeutert...Zitat von intelligente Haustechnik Beitrag anzeigenTue mal die Softwareserial raus und nehme Serial1, das sollte dann gehen
gruesse :: Michael
Einen Kommentar schreiben:
-
Hallo,
das hatten wir schon mal so um Seite 18 herum gehabt.
Tue mal die Softwareserial raus und nehme Serial1, das sollte dann gehen
Jens
Einen Kommentar schreiben:
-
Arduino Leonardo
Hey Leute,
habe mir jetzt auch die BCU geholt
leider habe ich auch gewisse schwierigkeiten..
Habe einen Arduino Leonardo aber schaffe es nicht irgendwelche Signale auf den Bus zu bekommen
Meine KnxTpUart.h:
Und mein Arduino Programm:Code:#ifndef KnxTpUart_h #define KnxTpUart_h #include "HardwareSerial.h" #include "SoftwareSerial.h" #include "Arduino.h" #include "KnxTelegram.h" // Services from TPUART #define TPUART_RESET_INDICATION_BYTE B11 // Services to TPUART #define TPUART_DATA_START_CONTINUE B10000000 #define TPUART_DATA_END B01000000 // Debugging #define TPUART_DEBUG false #define TPUART_DEBUG_PORT Serial #define TPUART_SERIAL_CLASS SoftwareSerial // Timeout for reading a byte from TPUART #define SERIAL_READ_TIMEOUT_MS 10 // Maximum number of group addresses that can be listened on #define MAX_LISTEN_GROUP_ADDRESSES 5 enum KnxTpUartSerialEventType { TPUART_RESET_INDICATION, KNX_TELEGRAM, IRRELEVANT_KNX_TELEGRAM, UNKNOWN }; class KnxTpUart { public: KnxTpUart(TPUART_SERIAL_CLASS*, int, int, int); void uartReset(); void uartStateRequest(); KnxTpUartSerialEventType serialEvent(); KnxTelegram* getReceivedTelegram(); void setIndividualAddress(int, int, int); void sendAck(); void sendNotAddressed(); bool groupWriteBool(int, int, int, bool); bool groupWrite2ByteFloat(int, int, int, float); bool groupAnswerBool(int, int, int, bool); bool groupAnswer2ByteFloat(int, int, int, float); void addListenGroupAddress(int, int, int); bool isListeningToGroupAddress(int, int, int); bool individualAnswerAddress(); bool individualAnswerMaskVersion(int, int, int); bool individualAnswerAuth(int, int, int, int, int); void setListenToBroadcasts(bool); private: SoftwareSerial* _serialport; KnxTelegram* _tg; // for normal communication KnxTelegram* _tg_ptp; // for PTP sequence confirmation int _source_area; int _source_line; int _source_member; int _listen_group_addresses[MAX_LISTEN_GROUP_ADDRESSES][3]; int _listen_group_address_count; bool _listen_to_broadcasts; bool isKNXControlByte(int); void checkErrors(); void printByte(int); bool readKNXTelegram(); void createKNXMessageFrame(int, KnxCommandType, int, int, int, int); void createKNXMessageFrameIndividual(int, KnxCommandType, int, int, int, int); bool sendMessage(); bool sendNCDPosConfirm(int, int, int, int); int serialRead(); }; #endif
Bitte helft mir, bin schon am verzweifelnCode:#include <KnxTpUart.h> #include <SoftwareSerial.h> SoftwareSerial Serial2(10, 11); // RX, TX KnxTpUart knx(&Serial2, 1, 1, 55); void setup() { Serial2.begin(19200); UCSR1C = UCSR1C | B00100000; knx.uartReset(); } void loop() { knx.groupWriteBool(0,0,1, true); delay (1000); knx.groupWriteBool(0,0,1, false); delay (1000); }
Einen Kommentar schreiben:
-
Also wenn man jetzt mal ganz bewusst den Sicherheitsaspekt aussen vor lassen will: ja, klar ist das moeglich, ohne Probleme sogar.Zitat von keldan2 Beitrag anzeigenich würde gerne eine Türöffnung (derzeit per Fingerprint) durch eine Codetastatur + RFID ablösen. Ein Traum wäre auch noch zusätzlich ein Funktransponder wie beim Auto - wenn man zu Hause einfährt eben Taste am Schlüsselbund drücken (Abhörsicherheit bitte aussen vorlassen).
Du brauchst nur ein Matrix-Keypad aussen und einen Arduino innen, google mal nach "arduino keypad", da sollte sich recht schnell was dazu finden lassen - inkl. Beispielcodes.
Funksteuerung koennte man zB ueber X10 oder Homelink machen, letzteres hat der eine oder andere vllt sogar schon im Auto verbaut. Einen fertigen Empfaenger fuers passende System kaufen der ein Relais schaltet (wichtig: Relais, keine Halbleiter!) und per DI an den Arduino haengen.
Ist alles in allem nur eine kleinere Uebung, die Hardware auszusuchen ist vermutlich mit dem meisten Aufwand verbunden.
gruesse
Einen Kommentar schreiben:
-
Hallo Arduino Experten,
ich würde gerne eine Türöffnung (derzeit per Fingerprint) durch eine Codetastatur + RFID ablösen. Ein Traum wäre auch noch zusätzlich ein Funktransponder wie beim Auto - wenn man zu Hause einfährt eben Taste am Schlüsselbund drücken (Abhörsicherheit bitte aussen vorlassen).
Denkt ihr, das wäre mit dem Arduino möglich ?? Only RFID - hat Thorsten ja schon gelöst !!!
LG und Danke
Daniel
Einen Kommentar schreiben:
-
Kannst Du dazu mehr sagen?Zitat von JuMi2006 Beitrag anzeigenNein hab ich nicht, aber dafür hab ich noch ganz andere Phänomene entdeckt ...
Einen Kommentar schreiben:
-
Wenn schon zitieren, dann bitte auch richtigZitat von greentux Beitrag anzeigenNur sind die S0 meistens verplombt... Also entweder denkt man dran oder zahlt fürs entplomben/plomben 50€. Da kann man auch gleich D0 machen und hat ein paar Daten mehr...
Ich schrieb:
Da steht eigentlich explizit "eigene Einbauten" im Zusammenhang mit S0 - also zB Photovoltaik, Wärmepumpe oder andere spezielle Verbraucher - oder einfach ein zusaetzlicher Zaehler hinter dem der Stadtwerke.Zitat von wintermute Beitrag anzeigen
Aber wenn Du dir dafuer einen verplombten Zaehler kaufst und dann noch irgendwen fuers Entplomben bezahlst kann ich auch nicht helfen
gruesse :: Michael
Einen Kommentar schreiben:
-
Nur sind die S0 meistens verplombt... Also entweder denkt man dran oder zahlt fürs entplomben/plomben 50€. Da kann man auch gleich D0 machen und hat ein paar Daten mehr...Am einfachsten einzubinden sind Zaehler mit S0 Schnittstelle - einfach per PullUp (entweder per Hardware oder ueber den internen PullUp des Arduino) an einen DI haengen, dann brauchts auch keine Lesekoepfe mehr - und S0 haben eigentlich alle Zaehler die auch optische Ausgaenge haben.
Ich habe einige davon (sowohl 3- als auch 1-phasig) an einer Wago haengen, das wird aber am Arduino aehnlich schmerzfrei funktionieren.
Einen Kommentar schreiben:


Einen Kommentar schreiben: