Interface für 1wire, Analog- und Digitalsignale mit Arduino

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

sambasamba
Beiträge: 1600
Registriert: 16.08.2009, 23:18
Wohnort: Landau/Südpfalz
Hat sich bedankt: 20 Mal
Danksagung erhalten: 4 Mal

Re: Interface für 1wire, Analog- und Digitalsignale mit Ardu

Beitrag von sambasamba » 30.01.2014, 19:14

Das verstehe ich nicht.
Die Temp.sensoren hängen an Digital IN 2 und das steht im code:
const int ONE_WIRE_BUS=2;
paßt also?

Der Analogeingang hat damit doch garnix zu tun.
??

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Re: Interface für 1wire, Analog- und Digitalsignale mit Ardu

Beitrag von Danneknilch » 01.02.2014, 01:05

So. Es ist geschafft.

Ich habe mal drei verschiedene Sketch kreiert, die mal so grob das abdecken, was ich so alles mit dem Arduino über USB regeln und messen kann. Ich denke, ich werde sie demnächst hier oder in einem eigenen Thread einstellen für all die Laien unter uns (wie mich).

Hintergrund war, dass nie richtig zusammenhängend erklärt ist, wie ich alle Funktionen oder alle PIN nutzen kann beim Arduino, also Temperaturen erfassen, Schaltzustände überwachen und Aktoren schalten. Überall sind nur Schnipsel erklärt, die für einen Arduino-Laien schwer umzusetzen sind in einem Sketch.

Auch die Suche in Foren brachte nie ein zufriedenstellendes Ergebnis. Bei Frage nach Aktoren wurde auf die LAN-Lösung mit den billigen Baumarktsteckdosen verwiesen, bei allem was Zustandsüberwachung anging auf diesen Thread hier. PNs an User brachten nur die Antwort, ich solle mich doch ans Forum wenden...

Also hab ich selber herum programmiert und folgende Sketche erschaffen:

Sketch 1: Aktoren schalten

- 12 Aktoren über digitale PIN schalten pro Arduino Uno (über 50 Aktoren mit einem Arduino Mega)

Sketch 2: I/O + 1-wire

- 16 Schaltzustände abfragen an digitalen + analogen PIN (über 65 mit einem Arduino Mega)
- 20 digitale 1-wire-Temperaturen auslesen (auch mehr machbar)

Sketch 3: I/O + 1-wire + analoge Temperaturen

- 10 Schaltzustände über digitale PIN abfragen (über 50 mit einem Arduino Mega)
- 20 digitale 1-wire Temperaturen auslesen (auch mehr machbar)
- 6 analoge Temperatursensoren auslesen (15 mit einem Arduino Mega)


--> Will man alles zusammen nutzen, muss man mehrere Arduino über USB-Switch an der CCU anschließen und die jeweilige Adresse im Gerät bei "DEVICE" eingeben.

--> An weiteren Sketch bin ich bereits dran...

Honeybaer
Beiträge: 67
Registriert: 08.05.2012, 13:07

Re: Interface für 1wire, Analog- und Digitalsignale mit Ardu

Beitrag von Honeybaer » 02.02.2014, 14:40

Hallo, ich würde gerne 9 Sensoren auslesen, bekomme die Sketchs nicht bearbeitet, bzw. Immer Fehler angezeigt.
Könnte vielleicht jemand die passenden Sketsch für 9oder10 Sensoren zur Verfügung stellen?
Raspermatic auf RPI3

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Re: Interface für 1wire, Analog- und Digitalsignale mit Ardu

Beitrag von Danneknilch » 03.02.2014, 19:01

Ab hier stelle ich in den folgenden Beiträgen meine fertigen Arduino Sketche zum Download bereit.

Ein Dank nochmal an sambasamba, für die super Vorarbeit! Der Großteil beruht quasi einzig auf seiner super Arbeit. Einen Dank auch an JBecker32 für seine schnelle Hilfestellungen und seinen "Anstupser", wie ich den INPUT und den OUTPUT Sketch kombinieren kann!

In den Sketchen selbst befinden sich massig Hinweise und Anmerkungen zur richtigen Installation. Siehe aber auch meine Hinweise hier im Forum.

Wer die Funktionen der einzelnen Arduinos kombinieren will, hängt sie einfach mittels USB-Switch zusammen. Siehe hierzu meine Bemerkungen hier im Forum und ganz unten in jedem Sketch. Weitere Sketch folgen. Ich werde einfach diese Beiträge hier immer wieder ergänzen.

Edit (10.03.2014): Die Input-Sketche sind alle neu jetzt mit eingeschaltetem internem Pullup für die I/O Schaltzustandsüberwachung.
Edit (12.03.2014): Die Output-Sketche sind neu mit besseren Codes (dank JBecker32) die jetzt auch bei einmaligem Senden gehen. Zudem wurden sie auf die analogen Pin erweitert. Daher nun 18 Aktoren beim Uno und 69 beim Mega schaltbar. Wer die alten Sketche schon hatte und sie wieder will, mir einfach eine PN schicken!

Edit (12.03.2014): Jetzt sind meine Kombi-Sketche online - siehe unten. Schalten und einlesen nun mit einem Gerät möglich!


Zuletzt geändert von Danneknilch am 12.03.2014, 23:42, insgesamt 5-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Arduino Input mit digitalen und analogen Temperaturen

Beitrag von Danneknilch » 04.02.2014, 15:10

Hier meine fertigen Sketche um:

--> Digitale + analoge Temperaturen, sowie Schalterkontakte / Zustände zu überwachen

--> 20 1-wire + 6 analoge/lineare Temperatursensoren + 16 Kontakte mit dem UNO oder
--> 20 1-wire + 16 analoge/lineare Temperatursensoren + 66 Kontakte mit dem MEGA
Arduino Input Temp Analog.jpg
--> Auf dem Bild ist der Freaduino UNO abgebildet, ist aber quasi das selbe Produkt (Kopie).
--> Beim Mega geht's einfach noch weiter bis PIN 52, ansonsten passt das Bild bis PIN 13



Installation:
--> Als erstes nach Anleitung von sambasamba vorgehen --> CUxD installieren, die 2 Bibliotheken runter laden, Adressen der Sensoren ermitteln usw.
--> Danach diesen Sketch hier runter laden, entpacken, auf den Arduino laden und auf die eigenen Bedürfnisse anpassen
--> Im Sketch selbst ist auch nochmal eine detaillierte Anleitung wie man alles installiert und einstellt

Hier dann nurnoch:
--> Temperatursensor (Gerät 13 - HMS100T) in CUxD erstellen - für die digitalen und die analogen Temperatursensoren
--> Tür- und Fensterkontaktsensor (Gerät 16 - HMS100TFK) in CUxD erstellen - zur Überwachung der I/O PIN als Schalterkontaktschnittstelle
--> In der CCU bei den Kanälen beider Sensoren ein paar Codes und Adressen eingetragen (siehe Sketch!)
--> Sensoren noch den Gewerken und Räumen zuteilen und Sichtbarkeit einstellen wie gewohnt

Bemerkung zur Schalterkontaktüberwachung:
--> Schalter/Relais/Kontakte, die überwacht werden sollen, über GND mit der entsprechenden PIN verbinden!!! nicht mit +5V wie man es erwarten würde
--> Hintergrund ist der eingeschaltete interne Pullup - Erklärung siehe Sketch und hier im Forum weiter unten in getrenntem Beitrag hierzu!
Dateianhänge
CCU_UNO_INPUT_TEMPERATUR_ANALOG.zip
(33.41 KiB) 220-mal heruntergeladen
CCU_MEGA_INPUT_TEMPERATUR_ANALOG.zip
(55.89 KiB) 165-mal heruntergeladen
Zuletzt geändert von Danneknilch am 14.03.2014, 09:01, insgesamt 19-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Arduino Input mit digitalen Temperaturen

Beitrag von Danneknilch » 04.02.2014, 15:16

Hier meine Sketche um:

--> Digitale Temperaturen und Schalterkontakte / Zustände zu überwachen

--> 20 1-wire-Temperatursensoren + 16 Kontakte mit dem UNO oder
--> 20 1-wire-Temperatursensoren + 66 Kontakte mit dem MEGA
Arduino Input Temp.jpg
--> Auf dem Bild ist der Freaduino UNO abgebildet, ist aber quasi das selbe Produkt (Kopie).
--> Beim Mega geht's einfach noch weiter bis PIN 53 (analoge bis PIN A15), ansonsten passt das Bild



Installation:
--> Als erstes nach Anleitung von sambasamba vorgehen --> CUxD installieren, die 2 Bibliotheken runter laden, Adressen der Sensoren ermitteln usw.
--> Danach richtigen Sketch hier runter laden, entpacken, auf den Arduino laden (richtiges Board einstellen!) und auf die eigenen Bedürfnisse anpassen

Hier dann nurnoch:
--> Temperatursensor (Gerät 13 - HMS100T) in CUxD erstellen - für die digitalen Temperatursensoren
--> Tür- und Fensterkontaktsensor (Gerät 16 - HMS100TFK) in CUxD erstellen - zur Überwachung der I/O PIN als Schalterkontaktschnittstelle
--> In der CCU bei den Kanälen beider Sensoren ein paar Codes und Adressen eingetragen (siehe Sketch!)
--> Sensoren noch den Gewerken und Räumen zuteilen und Sichtbarkeit einstellen wie gewohnt

Bemerkung zur Schalterkontaktüberwachung:
--> Schalter/Relais/Kontakte, die überwacht werden sollen, über GND mit der entsprechenden PIN verbinden!!! nicht mit +5V wie man es erwarten würde
--> Hintergrund ist der eingeschaltete interne Pullup - Erklärung siehe Sketch und hier im Forum weiter unten in getrenntem Beitrag hierzu!
Dateianhänge
CCU_UNO_INPUT_TEMPERATUR.zip
(34.4 KiB) 177-mal heruntergeladen
CCU_MEGA_INPUT_TEMPERATUR.zip
(59.44 KiB) 158-mal heruntergeladen
Zuletzt geändert von Danneknilch am 14.03.2014, 08:59, insgesamt 18-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Arduino Input

Beitrag von Danneknilch » 04.02.2014, 16:24

Hier meine Sketche um:

--> Schalterkontakte / Zustände zu überwachen

--> 17 Kontakte mit dem Arduino UNO oder
--> 67 Kontakte mit dem Arduino MEGA
Arduino Input.jpg
--> Auf dem Bild ist der Freaduino UNO abgebildet, ist aber quasi das selbe Produkt (Kopie).
--> Beim Mega geht's einfach noch weiter bis PIN 53 (analoge bis PIN A15), ansonsten passt das Bild



Installation:
--> Abweichend von sambasambas Anleitung müssen hier keine Bibliotheken runter geladen oder Adressen gesucht werden!
--> Also nur CUxD auf die CCU
--> Danach richtigen Sketch hier runter laden, entpacken, auf den Arduino laden (richtiges Board einstellen!) und auf die eigenen Bedürfnisse anpassen

Hier dann nurnoch:
--> Tür- und Fensterkontaktsensor (Gerät 16 - HMS100TFK) in CUxD erstellen - zur Überwachung der I/O PIN als Schalterkontaktschnittstelle
--> In der CCU bei den Kanälen des Sensors ein paar Codes und Adressen eingetragen (siehe Sketch!)
--> Sensoren noch den Gewerken und Räumen zuteilen und Sichtbarkeit einstellen wie gewohnt

Bemerkung zur Schalterkontaktüberwachung:
--> Schalter/Relais/Kontakte, die überwacht werden sollen, über GND mit der entsprechenden PIN verbinden!!! nicht mit +5V wie man es erwarten würde
--> Hintergrund ist der eingeschaltete interne Pullup - Erklärung siehe Sketch und hier im Forum weiter unten in getrenntem Beitrag hierzu!
Dateianhänge
CCU_UNO_INPUT.zip
(21.99 KiB) 171-mal heruntergeladen
CCU_MEGA_INPUT.zip
(46.97 KiB) 155-mal heruntergeladen
Zuletzt geändert von Danneknilch am 14.03.2014, 08:56, insgesamt 21-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Arduino Output

Beitrag von Danneknilch » 04.02.2014, 16:54

Hier meine Sketche um:

--> Aktoren zu schalten


--> 18 Aktoren mit dem Arduino UNO oder
--> 69 Aktoren mit dem Arduino MEGA
Arduino Übersicht Output.jpg
--> Auf dem Bild ist der Freaduino UNO abgebildet, ist aber quasi das selbe Produkt (Kopie).
--> Beim Mega geht's einfach noch weiter bis PIN 52+ die analogen PIN, ansonsten passt das Bild



Installation (längere Anleitung wie immer im Sketch selbst!):
--> Abweichend von sambasambas Anleitung müssen hier keine Bibliotheken runter geladen oder Adressen gesucht werden!
--> Also nur CUxD auf die CCU
--> Danach richtigen Sketch hier runter laden, entpacken, auf den Arduino laden (richtiges Board einstellen!) und auf die eigenen Bedürfnisse anpassen

Hier dann nurnoch:
--> 16-fach Fernbedienung (Gerät 40) in CUxD erstellen (mehrere) und entsprechend der Anleitung im Sketch einstellen
--> In der CCU bei den Kanälen der Fernbedienung ein paar Codes eingetragen (siehe Sketch!)
--> Fernbedienungskanäle noch den Gewerken und Räumen zuteilen und Sichtbarkeit einstellen wie gewohnt (inaktive Kanäle zB ausblenden)
--> Im Sketch selbst ist eine detaillierte Anleitung wie man alles installiert und einstellt

Bemerkungen:
--> Ggf. entsprechende 230V-Relais verwenden - siehe zB http://www.komputer.de
Dateianhänge
CCU_UNO_OUTPUT.zip
(11.37 KiB) 241-mal heruntergeladen
CCU_MEGA_OUTPUT.zip
(12.66 KiB) 161-mal heruntergeladen
Zuletzt geändert von Danneknilch am 14.03.2014, 08:56, insgesamt 23-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Kombi-Sketche (INPUT + OUTPUT)

Beitrag von Danneknilch » 04.02.2014, 17:48

Hier mein fertigen Kombi-Sketche, die die bisherigen Funktionen meiner Input- und Output-Sketche kombinieren!
--> Also schalten und überwachen mit einem Gerät!


--> Die Funktionen sind im Prinzip wie oben beschrieben. Alles weitere ist ausführlich in den Sketchen beschrieben.
--> Wer Sonderlösungen braucht (zB mehr I/Os oder keine und alles als Aktoren), einfach PN an mich


Sketch "Input_Output_Temperatur_Analog" (momentan nur für den MEGA):
- 20 1-wire-Temperatursensoren (Pin 2) einlesen,
- 16 analoge Temperatursensoren (Pin A0 - A15) einlesen,
- 25 Aktoren (Pin 3 - 27) ein/aus schalten,
- 26 Schaltzustände/Kontakte (Pin 28 - 53) überwachen
Arduino Input Output.jpg
Sketch "Input_Output_Temperatur": --> Keine analogen Temperaturen, dafür mehr I/O und mehr Aktoren schalten
- 20 1-wire-Temperatursensoren (Pin 2) einlesen,
- beim Mega: 33 Aktoren (Pin 3 - 35) ein/aus schalten + 34 Schaltzustände/Kontakte (Pin 36 - 53 und Pin A0 - A15) überwachen
- beim UNO: 11 Aktoren (Pin 3 - 13) ein/aus schalten + 6 Schaltzustände/Kontakte (Pin A0 - A5) überwachen
Arduino Input Output ohne analog Temp.jpg
--> Das Bild zeigt den Mega, aber man kann sich sein Teil für den UNO ja denken

--> Ich hoffe es klappt alles. Hab selbst noch nicht alles ganz genau getestet. Bei Fehlern bitte PN!
Dateianhänge
CCU_MEGA_INPUT_OUTPUT_TEMPERATUR_ANALOG.zip
(51.21 KiB) 242-mal heruntergeladen
CCU_MEGA_INPUT_OUTPUT_TEMPERATUR.zip
(49.99 KiB) 184-mal heruntergeladen
CCU_UNO_INPUT_OUTPUT_TEMPERATUR.zip
(35.08 KiB) 219-mal heruntergeladen
Zuletzt geändert von Danneknilch am 14.03.2014, 09:11, insgesamt 14-mal geändert.

Danneknilch
Beiträge: 77
Registriert: 13.12.2013, 10:28

Re: Interface für 1wire, Analog- und Digitalsignale mit Ardu

Beitrag von Danneknilch » 04.02.2014, 19:00

.
Mehrere Arduinos verwenden an der CCU:
.
Wer mehrere Arduinos kombinieren will, um zB mit einem die Temperaturen auszulesen, mit einem Altoren zu schalten, hängt einfach beide an einen Switch oder falls zwei reichen, an die beiden USB-Anschlüsse der CCU.
arduino.jpg
Installation:

1. In CUxD unter "Status" schauen, ob er sie erkennt. Da sollte stehen:
--> USB 1-1 - {ARDU} Arduino Uno [COMM] - /dev/ttyACM0 {:...s} - connected - ...
--> USB 1-2 - {ARDU} Arduino Uno [COMM] - /dev/ttyACM1 {:...s} - connected - ...
CUxD 2. USB2.jpg
2. Wir schreiben die durch sambasamba bereits beschriebenen Zeile im CUxD bei "Setup" rein und speichern ab:
--> TTYASSIGN=ttyACM0:CUX (0 = Adresse des 1. Arduino)
--> TTYASSIGN=ttyACM1:CUX (1 = Adresse des 2. Arduino) usw.
--> Wenn der erste bereits nach sambasambas Anleitung installiert war, steht da natürlich die erste Zeie schon drinnen
CUxD 2. USB1.jpg
3. Die unter 1. bereits beschriebenen Zeilen sollten sich nun verändert haben. Da sollte nun {CUX} in der Klammer stehen
--> Hatte man bereits einen angeschlossen nach der Anleitung von sambasamba, stand da beim ersten natürlich vorher schon {CUX} drin
CUxD 2. USB.jpg
4. Jetzt in der CCU beim jeweiligen Gerät unter "DEVICE" die Adresse des jeweiligen Arduinos eintragen (siehe Hinweise auf dem Bild unten)
--> bei den Geräten und Sensoren am 1. Arduino = ttyACM0
--> bei den Geräten und Sensoren am 2. Arduino = ttyACM1 usw.
Einstellen von Device.jpg
Hinweis: Die unter DEVICE angegebenen Adressen stellen nicht die Adressen der Arduinos selbst, sondern die Adressen der USB-Anschlüsse an der CCU oder am angeschlossenen Switch dar! Steckt man die Arduinos um oder wechselt man sie aus, sollte man das beachten! Er sendet die Befehle weiterhin an den angegeben USB-Anschluss 1-1, obwohl der dortige Arduino ggf. nun an USB 1-2 hängt.
Zuletzt geändert von Danneknilch am 11.03.2014, 02:59, insgesamt 5-mal geändert.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“