Ankündigung
Einklappen
Keine Ankündigung bisher.
ARDUINO am KNX
Einklappen
X
-
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:
-
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:
-
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:
-
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:
-
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:
-
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]:
Das müssen wir nun umdrehen...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;
Zuerst natürlich immer der "außenrum-code" für das Lesen von Telegrammen:
So - nun gehts an´s Telegram auswertenCode: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 ... ... ...
Ich habe den code BLIND geschrieben (nicht vergessen: ich kann nicht wirklich Programmieren!).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 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:
-
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:
-
Oh - hört sich interessant an - vor allem mit dem iaq.Zitat von kblankenheim Beitrag anzeigenKlar. Als Raumsensoren im Berker Sensoreinsatz:
Luftfeuchete/Temperatur SHT11 I2C
Helligkeit TSL2561D I2C
VCO iaq-core I2C
Kannst du die Schaltung und die Beschaffungsquellen (und Erfahrungen) hier veröffentlichen?
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"Zitat von Mag Gyver Beitrag anzeigenwäre es möglich auch die Zeit vom EIB/KNX zu bekommen?
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:
-
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:
-
Klar. Als Raumsensoren im Berker Sensoreinsatz:wofür Du es Einsetzt
Luftfeuchete/Temperatur SHT11 I2C
Helligkeit TSL2561D I2C
VCO iaq-core I2C
Einen Kommentar schreiben:
-
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:
-
Änderungen in der bitbucket library
Richtig, dann hast Du das Problem nicht. Nur wenn man mit mehr als einem Arduino auch Telegramme empfängt.aber ich lese auch keine Telegramme vom Bus (ich sende nur).
Die kleine Anpassung an der Library findest Du hier Pull Request #1. Habe Issue #1 auf "Resolved" gesetzt.Hast du die Änderung schon entwickelt?
Damit läuft es bei mir jetzt auch mit vier lesenden Arduinos seid mehreren Tagen stabil.
Einen Kommentar schreiben:
-
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:
-
Heyho, tausend dank fuer die Analyse!!Zitat von kblankenheim Beitrag anzeigenHier mal eine kurze Fehleranalyse. Arduino mit physikalischer Adresse 1.1.31 und dem folgendem Sketch...
Kannst du entsprechende Aenderungen in der Lib einchecken?
gruesse :: Michael
Einen Kommentar schreiben:


Einen Kommentar schreiben: