Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfängerprobleme Temp/Hum Sensor

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

    #16
    Achso, hab es nat. auch hochgeladen, aber mir wird dann in der Konsole nur folgendes angezeigt.
    LED Blinkt bei Strom vom Bus 1x und dann passiert nichts mehr, bei Strom vom USB ca. 5-10 mal in ungleichem Abstand, dann nichts mehr.
    Mit und ohne Debug Mode kommt die Ausgabe unten.



    konnekting.PNG



    vielleicht klappt ja auch irgendwas mit meiner Schaltung nicht, daher mal ein Foto
    Ich bitte die uneinheitliche Farbgebung zu entschuldigen... hab leider keine guten Farben in allen längen und mit Kabeln wärs sehr unübersichtlich geworden.

    IMG_4719.JPG

    Kommentar


      #17
      Wenn ich das Foto richtig interpretiere, so hast du auf der oberen Stromversorgungsschiene den KNX-Bus. Hier muss eine Spannung von ca. 24V anliegen, sonst arbeitet die BCU nicht. Da die BCU dann nicht auf die Initialisierung antwortet, funktioniert die Lib auch nicht (mehrfacher Reset).
      Die BCU hängt parallel zum USB. Der Monitor kann hier also nicht funktionieren. Dafür ist SoftwareSerial gedacht. Hier muss ein USB->TTL-Wandler an D10 und D11 angeschlossen werden.

      Kommentar


        #18
        ok, ich verstehe langsam mehr

        Also ist das 1x Blinken am Bus ok?

        nehme an du meinst so einen:
        https://www.amazon.de/dp/B01N9RZK6I?...01_03_t_img_lh

        Heisst aber, wenn ich das ganze direkt an den Bus hänge müsste es funktionieren?
        Wie bekomme ich denn den Prog Button ans laufen? Oder wenn es einfacher ist, sehe ich dann das Gerät in der Suite?

        Kommentar


          #19
          Das Teil sieht gut aus. Sollte auch auf den Programmieranschluß des ProMini passen. Wenn man den Adapter abstöpselt ist man sicher, dass er nicht in die Datenübertragung zur MicroBCU hineinpfuscht. Nach dem Programmieren kann er dann an D10/11 monitoren.
          Ich weiß gar nicht, wie sich die Prog-LED normalerweise verhält. Ich aktiviere den Prog-Modus per Programm.
          if (!Konnekting.isFactorySetting()) {
          //Hier Parameter einlesen

          }

          else{
          Konnekting.toggleProgState();
          }
          Allerdings sollte die Prog-LED nach Drücken der Prog-Taste an gehen. Die Beschaltung der Taste sieht im ersten Moment gut aus. Die Konfigurationsdaten kann man nur im Prog-Modus zum Gerät schicken (Fehlermeldung: Kein Gerät im Programmier-Modus). Hat man bereits eine physikalische Adresse konfiguriert, geht eine KO- oder Parameter-Änderung auch ohne Drücken der Prog-Taste.

          Kommentar


            #20
            gut, dann bestell ich das ding mal. aber eigentlich sollte es ja dann klappen. es sei denn die warnungen blockieren das irgendwie

            hast du den code im loop oder setup?

            habs jetzt mal in beidem getestet. wenn ich die bcu an den bus hänge, dann blinkt die led kurz, danach ist schluss. weder reaktion auf prog button noch leuchten oder blinken.

            muss ich das eeprom noch beschreiben? oder mach ich das dann über die suite?

            Kommentar


              #21
              Im DemoSketch findes du das IF-Statement. Es wird dort der Parameter "Blinkdelay" eingelesen. Du musst also nur das ELSE hinzu fügen. Die Parameter können natürlich erst eingelesen werden, wenn sie durch die Suite (ins EEPROM) übertragen wurden.

              Hab mir noch einmal das Foto angesehen. Kann es sein, dass der Prog-Taster am falschen Pin hängt? Ich kann die Beschriftung nicht lesen, aber auf meinem Nano ist an der Stelle RST. D3 ist drei Pins weiter links.

              Wenn du etwas bestellst, dann solltest du über einen ProMicro nachdenken. Der 32U4 hat einen separaten USB-Eingang zum Programmieren und Monitoren. Der UART ist dann ohne weiteren Schnick-Schnack an die Pins geführt. Ein Zero ist natürlich noch besser.
              Zuletzt geändert von Albatros62; 05.01.2020, 17:55.

              Kommentar


                #22
                Das Statement hab ich gefunden, steht im setup(), da hatte ichs ja zuerst probiert, aber die LED hat nur beim Start einmal geblinkt.


                Ja der Button hängt am RST... mich nervt diese unterschiedliche beschrifterei
                Mal PIN3, mal D3 ... vom Raspberry Pi kenne ichs, dass in der SW die laufende Nr. des GPIO angesprochen wird.
                Was adressiert man dann wenn man Pin A3 ansprechen will?
                und welcher ist dann die Pin Nr für die LED? bei mir auf D13... habe die Nr. 16 eingegeben, blinkt auch.
                Auch auf D3 klappt der Button nicht.



                Jetzt ist der Adapter bestellt.
                Aber hast du mal nen Link für nen Zero?
                Ich find bei Amazon nix und bei ebay nur teure, 20-50€ pro Stück

                Kommentar


                  #23
                  Die Digitalpins werden von 0-xx durchnummeriert. Das ist aber arduino-spezifisch. Die Prozessoren haben 8-Bit Ports, die je nach Board durchnumeriert werden. In der Arduino-IDE rechnet dann eine Funktion die Pin-Nummern auf Port und Portpin um. Der Port C des Mega 328 kann nicht nur als digitaler Ein/Ausgang genutzt werden, sondern auch als Analogeingang. Deshalb die Bezeichnung A0-A5. Sollen sie als Digitalpin angesprochen werden, ist auch z.B. A3 zu schreiben. D2 und D3 sind zwei Eingänge, die auch einen Interrupt auslösen können. Diese können deshalb als Prog-Pin definiert werden. Die Prog-LED ist für D11 vorgesehen. Die eingebaute LED hängt beim Nano an D13 und wird als Test-LED genutzt. Sie sollte eigentlich im 5sec-Rhythmus blinken, es sei denn, das Gerät ist im Programmiermodus. Ich hoffe, ich habe die Funktion des DemoSketches korrekt beschrieben (habe den Sketch selbst noch nicht ausprobiert).

                  Der Nano hat übrigens keine Pullup-Widerstände für den I2C-Bus. Sollten dann später bei Abfrage des Sensors hinzu gefügt werden.

                  Es gibt bei Ebay SAMD21-Boards schon ab etwa 7€. Vielleicht könnten die SAMD-Nutzer im Forum da einen Tipp geben, da ich selbst auch nur Mega 328 benutze.

                  Kommentar


                    #24
                    Für die ersten Experimente nehme ich IMMER ein "großes" Arduino-Board. Bei einem "Mini" ist der Versuchsaufbau immer etwas wackeliger und fummliger. Das birgt nur unnötige Fehlerquellen.
                    Deshalb meine absolute Empfehlung: Für Versuchsaufbauten und Sketch-Entwicklung/Prototyping: Ein Board dieser Machart: https://wiki.konnekting.de/index.php...rowduino_M0_SD

                    Für die spätere Miniaturisierung kann man dann auf diverse Mini-Boards ausweichen oder sich selbst eine Platine entwerfen.

                    Eine weitere Möglichkeit:

                    https://wiki.konnekting.de/index.php/M0dularis%2B

                    Der Controller ist zwar für 4TE REG Hutschiene gedacht, passt aber auch perfekt in eine AP-Abzweigdose und lässt sich auch prima für Versuchsaufbauten nutzen. Die notwendigen Pins kann man mit einem Flachbandkabel prima auf ein Steckbrett bringen und dort den Versuchsaufbau fahren. Großer Vorteil: Mehrere Versuchsaufbauten mit nur einem Controller: Du kannst den Controller einfach an das Steckbrett mit einem Kabel anschließen an dem du gerade arbeitest.

                    Alles in allem: Ich kann nur jedem anraten sich mit dem SAMD anzufreuden. "ARM Cortex" klingt kompliziert, ist aber exakt gleich in der Verwendung wie ein 328, nur eben mehr Speicher, mehr RAM, mehr Pin-Features ... Das einzige auf das man achten muss ich 3.3V vs. 5V... der SAMD ist eine 3.3V Controller und mag keine 5V. Aber ein "Spannungsteiler" als einfacher Pegelwandler reicht oftmals schon.

                    Ach ja... der Preis: Der von mir verwendete Crowduino M0 SD kostet bei Aliexpress rund 10EUR: https://de.aliexpress.com/item/32712839065.html

                    Und der Wemos D1 mit SAMD liegt ähnlich:
                    https://www.ebay.de/itm/Samd21-M0-32...7ff83c4f653131



                    Davon aber mal abgesehen: Ich kann Albatros soweit nur zustimmen und auch ein Lob für die gute Erklärung aussprechen. Finde es toll dass sich die Community mittlerweile selbst helfen kann.
                    Zuletzt geändert von tuxedo; 06.01.2020, 13:14.

                    Kommentar


                      #25
                      Zitat von Albatros62 Beitrag anzeigen
                      Die MicroBCU arbeitet doch mit 3V3-Pegeln. Ist sie denn 5V-Tolerant? Wäre doch schade um das schöne Teil.
                      Nein! MicroBCU kann nur mit 3V3 Pegel umgehen! 5V Ausgang ist nur für Relais und co. Somit dürfen direkt nur 3V3 Arduinos verwendet werden! Oder man braucht einen Pegelwandler.
                      Also darf man Arduino Nano nicht direkt mit MicroBCU betreiben.
                      Nano aus China ist eh eine Katastrophe wegen CH340G. Dieser Chip macht nur Probleme... :/

                      Kommentar


                        #26
                        Zitat von Albatros62 Beitrag anzeigen
                        Es gibt bei Ebay SAMD21-Boards schon ab etwa 7€. Vielleicht könnten die SAMD-Nutzer im Forum da einen Tipp geben
                        Hier sind die ein paar empfohlne Boards:

                        https://wiki.konnekting.de/index.php...Arduino_Boards

                        Hier kann man kaufen:
                        https://www.ebay.de/sch/i.html?_nkw=...acat=0&_sop=15

                        Kommentar


                          #27
                          danke dir, dann hab ich jetzt mal 2 davon bestellt

                          https://www.ebay.de/itm/401720951417

                          Kommentar


                            #28
                            so... hab jetzt nen funktionierenden FTDI Adapter. Hab das Projekt mal wieder angeschlossen.
                            Bekomme leider auf COM5 (FTDI) nichts auf den Monitor, aber: wenn ich im Gruppenmonitor schaue, dann blinkt die RX LED des Arduino immer dann, wenn ein Telegramm ankommt. Ist schon mal positiv.

                            Dauert wahrscheinlich noch etwas bis die Zeros ankommen.
                            Habt ihr ne Idee woran es jetzt noch liegen könnte?

                            Hab den Code mal etwas gekürzt um die Zeilen, die eh für andere Boards sind.

                            Breadboard-Setup ist nur erweitert durch D10 -> RX am FTDI, D11 -> TX am FTDI



                            Code:
                            #include <KonnektingDevice.h>
                            
                            // include device related configuration code, created by "KONNEKTING CodeGenerator"
                            #include "kdevice_DemoSketch.h"
                            
                            // ################################################
                            // ### BOARD CONFIGURATION
                            // ################################################
                            
                            #ifdef __AVR_ATmega328P__
                            // Uno/Nano/ProMini
                            #define KNX_SERIAL Serial // D0=RX/D1=TX
                            #define PROG_LED_PIN 12 // External LED
                            #define TEST_LED LED_BUILTIN // On board LED on pin D13
                            #define PROG_BUTTON_PIN 3 // pin with interrupt
                            // ATmega328P has only one UART, lets use virtual one
                            #include <SoftwareSerial.h>
                            SoftwareSerial softserial(11, 10); // D11=RX/D10=TX
                            #define DEBUGSERIAL softserial
                            
                            #endif
                            
                            // ################################################
                            // ### DEBUG CONFIGURATION
                            // ################################################
                            //#define KDEBUG // comment this line to disable DEBUG mode
                            #ifdef KDEBUG
                            #include <DebugUtil.h>
                            #endif
                            
                            // ################################################
                            // ### Global variables, sketch related
                            // ################################################
                            unsigned long blinkDelay = 2500; // default value
                            unsigned long lastmillis = millis();
                            int laststate = false;
                            
                            // ################################################
                            // ### SETUP
                            // ################################################
                            
                            void setup()
                            {
                            
                            // debug related stuff
                            #ifdef KDEBUG
                            
                            // Start debug serial with 115200 bauds
                            DEBUGSERIAL.begin(115200);
                            
                            
                            // make debug serial port known to debug class
                            // Means: KONNEKTING will sue the same serial port for console debugging
                            Debug.setPrintStream(&DEBUGSERIAL);
                            #endif
                            
                            Debug.print(F("KONNEKTING DemoSketch\n"));
                            
                            pinMode(TEST_LED, OUTPUT);
                            
                            /*
                            * Only required when using external eeprom (or similar) storage.
                            * function pointers should match the methods you have implemented above.
                            * If no external eeprom required, please remove all three Konnekting.setMemory* lines below
                            */
                            
                            
                            // Initialize KNX enabled Arduino Board
                            Konnekting.init(KNX_SERIAL,
                            PROG_BUTTON_PIN,
                            PROG_LED_PIN,
                            MANUFACTURER_ID,
                            DEVICE_ID,
                            REVISION);
                            
                            // If device has been parametrized with KONNEKTING Suite, read params from EEPROM
                            // Otherwise continue with global default values from sketch
                            if (!Konnekting.isFactorySetting())
                            {
                            blinkDelay = (int)Konnekting.getUINT16Param(PARAM_blinkDelay); //blink every xxxx ms
                            } else {
                            Konnekting.toggleProgState();
                            }
                            
                            lastmillis = millis();
                            
                            Debug.println(F("Toggle LED every %d ms."), blinkDelay);
                            Debug.println(F("Setup is ready. go to loop..."));
                            }
                            
                            // ################################################
                            // ### LOOP
                            // ################################################
                            
                            void loop()
                            {
                            
                            // Do KNX related stuff (like sending/receiving KNX telegrams)
                            // This is required in every KONNEKTING aplication sketch
                            Knx.task();
                            
                            unsigned long currentmillis = millis();
                            
                            if (!Konnekting.isFactorySetting())
                            {
                            //blinkDelay = (int)Konnekting.getUINT16Param(PARAM_blinkDelay); //blink every xxxx ms
                            } else {
                            Konnekting.toggleProgState();
                            }
                            
                            /*
                            * only do measurements and other sketch related stuff if not in programming mode
                            * means: only when konnekting is ready for appliction
                            */
                            if (Konnekting.isReadyForApplication())
                            {
                            
                            if (currentmillis - lastmillis >= blinkDelay)
                            {
                            
                            Debug.println(F("Actual state: %d"), laststate);
                            Knx.write(COMOBJ_trigger, laststate);
                            laststate = !laststate;
                            lastmillis = currentmillis;
                            
                            digitalWrite(TEST_LED, HIGH);
                            Debug.println(F("DONE"));
                            }
                            }
                            }
                            
                            // ################################################
                            // ### KNX EVENT CALLBACK
                            // ################################################
                            
                            void knxEvents(byte index)
                            {
                            switch (index)
                            {
                            
                            case COMOBJ_ledOnOff: // object index has been updated
                            
                            if (Knx.read(COMOBJ_ledOnOff))
                            {
                            digitalWrite(TEST_LED, HIGH);
                            Debug.println(F("Toggle LED: on"));
                            }
                            else
                            {
                            digitalWrite(TEST_LED, LOW);
                            Debug.println(F("Toggle LED: off"));
                            }
                            break;
                            
                            default:
                            break;
                            }
                            };

                            Kommentar


                              #29
                              Beim groben drüberschauen ist mir dieses aufgefallen:
                              Zitat von Freeman Beitrag anzeigen
                              if (!Konnekting.isFactorySetting())
                              Dieser Teil gehört ins Setup (ist dort vorhanden) und nicht in die Loop (ist hier zum zweiten Mal enthalten).

                              Kommentar


                                #30
                                hab jetzt auch noch mal reingeschaut.
                                #define KDebug war auskommentiert, hab ich aktiviert -> geht trotzdem nicht
                                Programmier LED geht jetzt, hatte sie falsch rum angeschlossen

                                Kommentar

                                Lädt...
                                X