Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

  • mode
    antwortet
    Poste doch bitte mal die Ali Links von deinen bestellten Artikeln

    Einen Kommentar schreiben:


  • tuxedo
    antwortet
    So, meine erste Arduino Bestellung und gleichzeitig meine erste AliExpress Bestellung:

    * Arduino Leonardo
    * Ein passendes Netzteil
    * Ein Prototype-Shield mit Breakout-Board
    * 4x30 Experimentier-Käbelchen
    * 10 MOSFETs ala Sparkfun
    * 200x 10kOhm Widerstand (brauche nur 10 für die Mosfets)
    * 20x 2-pol Schraubenterminal (zum Anschluss der 12V Netzteile und der LEDs)

    Alles in allem keine 30EUR und alles mit "Free Shipping". Bin gespannt wie lange das nun dauert (15-34 Tage sind angegeben), und ob das was taugt.

    Wenn das mit dem LED Dimmen mit allein dem Arduino sauber klappt (sind bei mir bis knapp über 4A pro Kanal), dann kommt der Busankoppler und ein Gehäuse dazu.

    Werde versuchen das ganze wieder für den Nachbau zu dokumentieren (wie meine Türsprechanlage mit Kamera auch).

    Ich werde berichten (irgendwann in 15-34 Tagen...)

    Gruß
    Alex

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Hallo Thorsten,

    ja nur die Zeit wird benötigt.

    Programmieren ist bei mir auch schon etwas länger (gefühlte 10000 Jahre) her.
    Ja natürlich hilft mir jeder Denkanstoß.
    Sieht nicht schlecht aus, werde mir das bei einer Tasse Kaffee durch den Kopf gehen lassen.

    Mal sehen ob jetzt die Denkblockade sich lösen lässt.

    Danke für deine Mühe und mach weiter so!
    Du legst ein extremes Tempo vor.

    Grüße

    Mag Gyver

    Einen Kommentar schreiben:


  • tuxedo
    antwortet
    Zum Pi:

    Nun. Hab einen IP-Router im Verteiler hängen. D.h. anbinden des Pi ohne zusätzliche Hardware wäre möglich (eibd kann hoffentlich auch über's Netzwerk telegramme empfangen).

    Allerdings ist die Frage der langlebigkeit des Pi... Die SD-Karte lebt nicht ewig. Müsste das Linux zum read-only System umbauen. Machbar, aber mit Aufwand verbunden. UND ich würde nur indirekt am Bus hängen.

    Also zurück zum Arduino.... Also ein Leonardo. Wie sieht's mit der Geschwindigkeit aus? Hat der genug Dampf um 6-8 PWM Ausgänge mit bis zu 600Hz (das haben zumindest meine Bilton-Dimmer) zu betreiben?

    Gruß
    Alex

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    beim Rasperi brauchst du auch eine BCU oder irgendeine andere art wie du auf den Bus kommst - außerdem spielt noch ne rolle ob du ein komplettes OS betreiben&Supporten willst... oder eben nicht. Der Rasperi kann sicherlich mehr - aber zu einem anderen (support/betriebs) preis.

    Einen Arduino UNO würde ich dir NICHT empfehlen - da er nur eine Serielle hat. Ein Leonardo dürfte besser passen.

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • tuxedo
    antwortet
    So langsam wird's bei mir konkret mit dem Selbstbau.

    Hintergrund:

    Ich brauche 6 PWM Kanäle mit 12V und max. 4A pro Kanal um meine LED Beleuchtung im Dachgeschoss anzusteuern.
    Das ganze muss nicht super klein werden. Wird im Dachboden montiert. Da ist ausreichend Platz für ein "großes" Gehäuse.

    Mittels MDT LED Dimmer kostet mich der Spaß (ohne Netzteil) rund 340EUR.

    Hier ist der Arduino-Ansatz wohl ideal. Aber langsam wir der Thread hier unübersichtlich und ich weiß bald nicht mehr was an Einzelteilen von nöten ist.

    Ich versuch's mal zusammen zu fassen:

    1) Einen Arduino. Da bei mir die Größe keine Rolle spielt, denke ich mal ist der Arduino Uno kein Fehler. Oder wäre ein anderer hinsichtlich Geschwindigkeit für 6-8 PWM Kanäle besser?

    2) Einen "Busankoppler": BCU 5WG1117-2AB12 von Siemens für 26,50€ bei EIBMarkt.com

    3) ein paar Käbelchen (bietet meine Bastelkiste)

    4) Den KNX Stack: https://bitbucket.org/thorstengehrig...knx-user-forum

    Ist das soweit noch korrekt?

    Wenn ja: Hat schon einer das hier ausprobiert: https://www.sparkfun.com/products/10618 ??

    Hat 6 PWM Kanäle und kann irgendwas um die 20A pro Kanal bei 12V steuern. Werd' nur noch nicht ganz schlau draus ob nun alle 6 Kanäle mit 12V laufen, oder ob ich wählen kann ob 12V oder 5V oder ob fix drei Kanäle mit 5V und drei Kanäle mit 12V sind ...?!
    Ich vermute fast letzteres ...

    [update]
    Ok, das Ding ist auf einen ATX-Power-Anschluss gemünzt. Drei Kanäle mit 5V, drei mit 12V.
    Die Ansteuerung ist aber sooo simpel, dass ich das auch auf Lochraster nachbauen kann.
    Fehlt nur noch die Bestätigung dass das oben genannte Setup soweit korrekt ist.

    [update2]
    Hmm, ist hier ein wenig fehl am Platz, aber:
    Da die größe ja egal ist: Ein RaspberryPi + EIBD dürfte doch genauso reichen, oder? Wäre sogar ein bisschen günstige rund hätte auf jeden fall ausreichend Performance.

    Gruß
    Alex

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    ich vermute mal du brauchst nur die Zeit und nicht das datum?

    Vorweg - mal wieder als Warnhinweiß: ich kann nicht Programmieren! (zumindest ist es 1000 jahre her).

    So - also bisher sind in der KNX ja keine "groupRead..." funktionen implementiert - daher muss die Auswertung hier "händisch" erfolgen.

    Beim "groupWriteTime" habe ich das Telegram so zusammengebaut (buffer ist das Tellegram, Nutzdaten ab byte[5]:
    Code:
       // Day um 5 byte nach links verschieben
        day = day << 5;
        // Buffer[8] füllen: die ersten 3 Bits day, die nächsten 5 hour
        buffer[8] = (day & B11100000) + (hours & B00011111);
    
        // buffer[9] füllen: 2 bits leer dann 6 bits für minuten
        buffer[9] =  minutes & B00111111;
        
        // buffer[10] füllen: 2 bits leer dann 6 bits für sekunden
        buffer[10] = seconds & B00111111;
    Das müssen wir nun umdrehen...
    Zuerst natürlich immer der "außenrum-code" für das Lesen von Telegrammen:
    Code:
    knx.addListenGroupAddress("0/1/2");
      
    
    void serialEvent() {  
        //Get Serial Event
        KnxTpUartSerialEventType eType = knx.serialEvent();
        //Check Serial Event
        if (eType == KNX_TELEGRAM) {
            KnxTelegram* telegram = knx.getReceivedTelegram();
            // Here you have the telegram and can do whatever you want
            ...
            ...
            ...
    So - nun gehts an´s Telegram auswerten
    Code:
    	// Day is in the 3 first bits - so we have to extract (&B11100000) and move 5 bits to right
    	day = (telegram[0] & B11100000) >> 5;
    	
    	// Hours is in the 5 next bits (B00011111)
    	hour = (telegram[0] & B00011111);
    	
    	// Minutes is in the next byte (B00111111)
    	minutes = (telegram[1] & B00111111);
    	
    	// Seconds are in the next byte (B00111111)
    	seconds = (telegram[2] & B00111111);
    Ich habe den code BLIND geschrieben (nicht vergessen: ich kann nicht wirklich Programmieren!).
    Ich gehe mal davon aus das das "telegram" nur die Nutzlast enthält (daher [0][1] und [2], und nicht [8][9] und [10].
    Ich gehe davon aus das der Code so nicht funktioniert...
    Die Variablen (day,hour, minutes, seconds) müssen auch noch initialisiert werden...
    Ich hoffe das dieser Ansatz dich zumindest auf den Lösungsweg schiebt.

    Kommentare & Hilfe von "richtigen" Programmierern sind erwünscht - außerdem vielleicht auch Hilfestellung bei der implementierung von "groupRead..." Befehlen.

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Jawohl sende ich die Zeit vom Zeitgeber (Theben) auf den Bus.

    Würde die Zeit an ein weiteres System weitergeben, da es für dieses System keine direkte Schnittstelle zum EIB/KNX gibt.

    Deshalb würde mir die Implementierung sehr weiterhelfen, nur leider stehe ich auf dem Schlau.

    Grüße

    Mag Gyver

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Zitat von kblankenheim Beitrag anzeigen
    Klar. Als Raumsensoren im Berker Sensoreinsatz:

    Luftfeuchete/Temperatur SHT11 I2C
    Helligkeit TSL2561D I2C
    VCO iaq-core I2C
    Oh - hört sich interessant an - vor allem mit dem iaq.
    Kannst du die Schaltung und die Beschaffungsquellen (und Erfahrungen) hier veröffentlichen?

    Zitat von Mag Gyver Beitrag anzeigen
    wäre es möglich auch die Zeit vom EIB/KNX zu bekommen?
    Klar - wenn Du sie auf den Bus auch sendest. Ich habe gerade nicht die komplette Lib im Kopf - aber laut readme habe ich wohl "nur"
    groupWriteTime("1/2/3", Day, Hours, Minutes, Seconds);
    implementiert.
    Ein einlesen der Uhrzeit sollte aber kein Hexenwerk sein. Wozu brauchst du die Zeit im Arduino?

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • Mag Gyver
    antwortet
    Hallo Thorsten,

    wäre es möglich auch die Zeit vom EIB/KNX zu bekommen?

    Leider komme ich nicht dahinter, wie ich das anstellen sollte.
    Meine Kenntnisse hierzu sind nicht ausreichend.




    Grüße

    Mag Gyver

    Einen Kommentar schreiben:


  • kblankenheim
    antwortet
    wofür Du es Einsetzt
    Klar. Als Raumsensoren im Berker Sensoreinsatz:

    Luftfeuchete/Temperatur SHT11 I2C
    Helligkeit TSL2561D I2C
    VCO iaq-core I2C

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Perfekt.
    Danke nochmals!

    Die Library ist bereits aktualisiert...

    Darf ich noch Fragen wofür die es Einsetzt? Ich bin immer Interessiert an referenprojekten :-)

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • kblankenheim
    antwortet
    Änderungen in der bitbucket library

    aber ich lese auch keine Telegramme vom Bus (ich sende nur).
    Richtig, dann hast Du das Problem nicht. Nur wenn man mit mehr als einem Arduino auch Telegramme empfängt.

    Hast du die Änderung schon entwickelt?
    Die kleine Anpassung an der Library findest Du hier Pull Request #1. Habe Issue #1 auf "Resolved" gesetzt.
    Damit läuft es bei mir jetzt auch mit vier lesenden Arduinos seid mehreren Tagen stabil.

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Ja - hut ab und danke.
    Der Fehler kommt schon aus der Ursprünglichen Lib - bisher wahrscheinlich nie aufgefallen da die meisten nur einen Arduino im Programm haben.
    Ich habe 2 permanent im Einsatz - und bisher keine Buslast-Steigerung gesehen... aber ich lese auch keine Telegramme vom Bus (ich sende nur).

    Hast du die Änderung schon entwickelt?

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von kblankenheim Beitrag anzeigen
    Hier mal eine kurze Fehleranalyse. Arduino mit physikalischer Adresse 1.1.31 und dem folgendem Sketch...
    Heyho, tausend dank fuer die Analyse!!

    Kannst du entsprechende Aenderungen in der Lib einchecken?


    gruesse :: Michael

    Einen Kommentar schreiben:

Lädt...
X