Homeduino 4.0 … das universelle Sensor- und Aktormodul für die Hausautomation

Print Friendly, PDF & Email

[google-translator]

Update 13.11.2020:  angepasste 8181-Requests für neue CCU2/3 -Firmware

Was ist der Homeduino?

Der Homeduino ist ein Selbstbauprojekt , mit dem der interessierte Hausautomatisierer mit einfachen Mitteln preiswerte und sehr leistungsfähige Module für die Automatisierung im Haus selbst zusammenstellen kann. Mittlerweile nutzen einige Hundert Nachbauer die Vorteile des Homeduino, indem viele Funktionen, die meist mit Homematic-Komponenten nicht darstellbar sind, mit dem Homeduino relativ einfach realisiert werden können. Neben Standardfunktionen wie einfache analoge oder digitale Ein- und Ausgabe von Signalen werden  mit dem Homeduino auch komplexe Module wie beispielsweise Ultraschall-Entfernungssensoren, Onewire-Temperatursensoren, Infrarot-Fernbedienung, Impulsgeber, RFID-Module, Displays und vieles mehr  unterstützt. Und da die zugehörige Software  hier veröffentlicht ist, kann jeder für seine individuellen Aufgabenstellungen relativ leicht Anpassungen vornehmen. Entsprechende Anregungen sind dafür im Internet reichlich vorhanden, weil die Basis des Homeduino  der bekannte Arduino ist, welcher weltweit eine riesige sehr aktive Entwicklergemeinde hat .

Es macht einfach Spaß, mit dem Homeduino das Haus zu automatisieren ! :D

Mit sehr preiswerten  Arduino-Shields und den hier im Shop verfügbaren IO-Shields läßt sich ein leistungsfähiges IO-Modul für die Ergänzung der Homematic aber auch für andere Automatisierungslösungen im Haus aufbauen. Man muß dafür kein Arduino-Freak sein und auch keinerlei Kenntnisse mit der Homematic-Skriptsprache haben. Lediglich ein paar Komponenten kaufen, zusammenbauen  und die hier verfügbare kostenlose Software auf seine persönlichen Belange anpassen, in den Arduino laden und fertig.

Ergebnis ist ein universell konfigurierbarer Homeduino für die einfache (skriptfreie :D ) Verwendung mit der Homematic, mit dem man nahezu alle Mess- und Steueraufgaben für die Hausautomation erledigen kann.

Was kann der Homeduino?

Mit dem hier beschriebenen Homeduino 4.0  sind nun im Vergleich zu den vorherigen Versionen viele neue  Funktionalitäten hinzu gekommen:  Ein LCD-Display, mit dem man die Eingangssignale einfach ansehen kann,  Impulszähler, um Gas- Wasser und Stromzähler auszuwerten und vieles mehr, was bereits in den Vorgängerversionen beschrieben wurde. Mehr dazu auf meiner Webseite in diesen Artikeln:

https://www.stall.biz/project/homeduino-der-universelle-lanwlan-arduino-fur-die-hausautomation-mit-io-shield-2-0-2

https://www.stall.biz/project/der-homeduino-2-0-als-vielseitiges-lanwlan-sensormodul-fur-die-homematic

https://www.stall.biz/project/io-shield-plus-neue-version-mehr-inputs-und-integriertes-wlan

https://www.stall.biz/project/homeduino-3-0-das-ultimative-io-modul-fuer-die-hausautomation

Darüberhinaus sind auf dieser Webseite noch weitere Beschreibungen zum  Homeduino und zur Hausautomation vorhanden. Herumstöbern in den verschiedenen Artikeln beantwortet viele offene Fragen.

Die technischen Daten des Homeduino hängen davon ab, welche Shields und Module kombiniert werden. Mehr dazu weiter unten. Für eine Kombination mit meinem IO-Shield-Plus ergeben sich beispielsweise folgende Möglichkeiten:

Insgesamt 24  digital und analog nutzbare Funktionsports  werden nach außen auf Schraubklemmen geführt  . Diese Inputs sind individuell aufgeteilt nutzbar als…

  •  24   digitale Inputs
  •     4   Impulszähler direkt oder über Optokoppler (S0-Schnittstellen) ,
    (in Verbindung mit dem CC3000 sind nur 3 Impulseingänge verfügbar)
  •    8   analoge Inputs  mit Eingangsspannung alle von 0 bis 5V oder 0 bis 1V (wenn Uref umgeschaltet wird )
  •    8   NTC-Temperatursensoren 10kOhm  mit über Jumper zuschaltbarem 10kOhm-Widerstand
  •  24   1Wire-Temperatursensoren  DS18B20
  •  24   DHT-22 digitale Temperatur- und Feuchtesensoren
  •  24   Ultraschallsensoren
  • 2      RFID-Module RM6300
  •  LAN-Verbindung zur CCU mit optionalem Ethernet W5100 Shield
  • WLAN-Verbindung zur CCU mit optionalem WIFI-Modul CC3000  oder ESP8266-01
  • LCD Keypad Shield als 2-zeilige LCD-Anzeige mit Tastereingabe
  • TFT Touch Display zur mehrzeiligen Signalanzeige und Touch-Bedienung

Wenn zusätzlich noch das IO-Shield20 verwendet wird, (was natürlich möglich ist), dann ergeben sich noch weitere IOs, die aber hier im Detail nicht beschrieben werden. Ich verweise auf die o.a. Links.

Die aktuelle Homeduino 4.0-Software unterstützt sowohl das IO-Shield20 für das standardmäßige UNO-Pinout als auch das Erweiterungsboard IO-Shield-Plus nur für das MEGA2560 Pinout.

Wie baut man den Homeduino?

Die meisten Komponenten für den Homeduino werden fertig gekauft, lediglich die IO-Shields sind als Bausatz hier im Shop verfügbar. Dieser Bausatz ist größtenteils fertig und kann auch von einem weniger versierten Elektroniker zusammengebaut werden.

Hier die Einkaufsliste der notwendigen oder optionalen Module:

– Arduino MEGA 2560 R3

– Ethernet Shield W5100 , nicht das Ethernet- Shield mit dem ENC28J60-Chip verwenden !!

– LCD-Keypad-Shield z.B. von DFrobot  https://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_%28SKU:_DFR0009%29

2.4“ TFT LCD Shield  z.B. bei  ebay weltweit  suchen mit 2.4“ TFT arduino  oder hier anschauen https://www.youtube.com/watch?v=ipvepLgWo6Q

– Homeduino-I/O-Shield-plus   käuflich als Bausatz hier:  https://www.stall.biz/produkt/io-shield-plus-neue-version

– Homeduino IO-Shield20    käuflich als Bausatz hier:  https://www.stall.biz/?product=io-shield-2-0

– CC3000-Modul  käuflich im Internet bei verschiedenen Anbietern.   http://www.adafruit.com/products/1469
Mehr dazu in meinem Artikel:   https://www.stall.biz/project/io-shield-plus-mehr-inputs-und-integriertes-wlan

Netzteil entweder als USB-Netzteil 5V/1A oder als 7.5V/1A-Netzteil für die Stromversorgungsbuchse des MEGA2560

Welche Module wie zusammengestellt werden, das hängt von den individuellen Zielsetzungen ab. Der nächste Abschnitt gibt dazu die Hilfestellung beim Zusammenstecken der „Legosteine“.

Wie baut man den Homeduino?

Als erstes muß man sich überlegen, was man mit dem Gerät steuern und messen möchte und  wie man mit der Homematic bzw. der CCU  datentechnisch kommunizieren möchte. Mit „Draht“ über das LAN oder drahtlos über WLAN oder oft auch Wifi  genannt. Für den Anfang ist die LAN-Kommunikation sicher günstiger, weil einfacher und robuster!

Das nachfolgende Bild zeigt die möglichen Kombinationen der einzelnen Module:

Folie15

Der MEGA2560 ist das „Herz“ des Homeduino. Im Gegensatz zu anderen Arduinos ist er sehr leistungsfähig und äußerst preisgünstig .Beispielsweise kann man ihn über ebay weltweit in Asien bereits mit USB-Kabel schon unter 9€ kaufen.

Die Kommunikation erfolgt entweder über LAN oder WLAN.  Als LAN Schnittstelle wird ein Ethernet Shield W5100 verwendet:  in China  für unter 6€ erhältlich. Dieses Shield verwendet  unglücklicherweise zur Steuerung der SD-Karte auf der Platine den Pin D4,  der beim Homeduino mit dem TFT-Display und LCD-Display benötigt wird. Diesen Pin einfach nach außen biegen geht nicht, weil dann das D4-Signal nicht an die oben liegende Display-Platine weiter geleitet wird. Deshalb muß mit dem Dremel o.ä. Werkzeug vorsichtig die D4- Signalleitung auf dem W5100-Shield unterbrochen werden. Das folgende Bild zeigt  die Unterseite des Shields mit der Unterbrechungsstelle.

Anmerkung: Die Unterbrechung kann einfacher an der Stelle der Pfeilspitze durchgeführt werden. Die von mir gewählte Stelle ist nicht günstig!

Folie14_1

Als alternative WLAN Schnittstelle kann man zusätzlich einen WLAN-Repeater  nehmen ( so wie hier : https://www.stall.biz/project/homeduino-der-universelle-lanwlan-arduino-fur-die-hausautomation-mit-io-shield-2-0-2  ) oder gleich ein Wifi-Modul mit dem CC3000-Chip einsetzen.  Käuflich über beispielsweise ebay weltweit mit Suchbegriff CC3000 WiFi Breakout module . Kostet etwa 20€. Aber Achtung, es gibt Module mit unterschiedlichem Pinout. Genau das Modul wie in diesem Artikel bestellen:   https://www.stall.biz/project/io-shield-plus-mehr-inputs-und-integriertes-wlan

Zum Anschluss der Sensoren, Aktoren und Module ist ein geeignetes Anschluss-Board notwendig. Dies kann man in meinem Shop erwerben. Entweder man verwendet dafür nur das IO-Shield-plus (Preis 24€ plus Versand)  oder man verwendet bei noch mehr „Anschlussbedarf“ zusätzlich das IO-Shield20 (Preis 26€ plus Versand).

Auf die Anzeige der Messwerte könnte man grundsätzlich verzichten, da ja die Messwerte in der Homematic verfügbar sind. Aber die Möglichkeit einer  Anzeige der Meßwerte bereits im Homeduino ist doch von großem Nutzen. Deshalb sollte man eine Anzeige „spendieren“. Möglich sind aktuell entweder eine 2-zeilige Anzeige (2×16) mit 6 Steuertasten für unter 4€ (Suchbegriff LCD Keypad Shield    oder ein kleines 240×320 Grafik-Display  mit Touch-Panel. Bei ebay weltweit mit 2.4″ TFT LCD suchen. Diese Module kosten unter 5€ sind aber trotz gleichen Aussehens mit unterschiedlichem Grafikchip im Markt  und müssen ggf. softwaremäßig angepasst werden. Also genau das Bild der Display-Platine vor dem Kauf mit meinem verwendeten Display vergleichen!

Für die weiteren Erläuterungen wurde nun folgende Modul-Konstellation entsprechend nachfolgendem Bild zusammengestellt:

Folie16

Die Boards steckt man einfach zusammen und erhält einen robusten Aufbau, den man in ein geeignetes Gehäuse einbauen kann. Versorgt wird das Gerät beispielsweise mit einem preisgünstigen 5V/1A  USB Netzteil über die USB-Buchse oder über die Stromversorgungsbuchse mit 7,5/1A . Die Sensorsignale werden dabei einfach an den auf dem Homeduino I/O-Shields verfügbaren Schraubklemmen angeschlossen. Die Funktion der einzelnen Eingänge wird einerseits mit den Jumpern auf dem Homeduino I/O-Shield festgelegt und andererseits kann man in dem verwendeten  Homeduino-Sketch bestimmte Port-Eigenschaften programmieren, die individell jeder Anwender festlegen kann. Oder man nimmt einfach die im Sketch voreingestellten Eigenschaften und muß dann eigentlich gar nichts mehr anpassen!

Folie6

Unten ist immer der MEGA2560. Darauf wird auf die hinteren Pins das IO-Shield-Plus gesteckt.  Auf die vorden Pins kommt das IO-Shield20 und/oder  das Ethernet-Shield W5100. Die Modifikation ist weiter unten beschrieben. Ganz oben steckt man das LCD-Keypad-Shield oder das TFT-Touch-Display.  Dabei ist beim LCD Keypad Shield besonders zu beachten, daß Pin D10  nicht eingesteckt bzw. nach außen gebogen ist. Das folgende Bild zeigt die Unterseite des LCD-Keypad Shields:

Folie17

Die verschiedenen Sensoren werden an die Schraubklemmen der Homeduino I/O-Shields angeschlossen. Dabei sind die speziellen Eigenschaften der Sensoren zu beachten und entsprechende Jumper zu setzen. Dies wird weiter unten erklärt bzw. dies ist in den Beiträgen der IO-Shields genauer erläutert.

Wichtig ist auch noch, daß man mit Isolierband o.ä. die metallischen Stecker auf den Shields (z.B. LAN-Buchse) so isiolieren muß, daß Kurzschlüsse zwischen den Shields ausgeschlossen sind. Manchmal kann beim „Turmbau“ der Shields auch das Einfügen von Stiftleisten zur Verlängerung der Pins notwendig sein, insbesondere wenn bei manchen Shields die Pins zu kurze Beine haben. Wie beispielsweise sehr oft bei den Display-Shields!

Bei der Lösung mit dem WLAN-Modul CC300 kann man das LAN Shield W5100 weglassen und steckt stattdessen das CC300-Modul in die dafür vorgesehene Fassung des IO-Shield-Plus. Also ganz einfach, wie man auf folgendem Bild erkennen kann.

 

 Wie kommt die Software in den Homeduino?

1. Installation der Arduino 1.8.1 Entwicklungsumgebung (IDE) für Windows

– die verwendete  Arduino-Version als zip-File runterladen: Arduino-Webseite und in ein neu erstellte Verzeichnis arduino-.1.8.1 entpacken.

– Folgende zusätzliche libraries runterladen oder diese Zip-Datei entpacken und in den vorhandenen Unterordner arduino-.1.8.1/libraries  die zusätzlichen Libraries als Unterverzeichnisse reinkopieren.

– Wenn noch nicht vorhanden ein Unterverzeichnis arduino-1.8.1/sketchbook anlegen und die Arduino Entwicklungsumgebung mit Öffnen der Datei arduino.exe aufrufen. über den  Reiter Datei/Voreinstellungen den Speicherort des Unterordners sketchbook eingeben.  In diesem Verzeichnis wird u.a. das Homeduino 4.0 Programm gespeichert.

– Die Kopplung des Arduino mit dem PC erfolgt über die USB-Schnittstelle, die nach Treiberinstallation  als serielle Schnittstelle  COM x  in der Arduino IDE erkannt wird. Dafür muß ggf. der richtige Treiber installiert sein. Hier gibt´s die aktuellen sog FTDI-Treiber : Treiber für die FTDI Schnittstelle des Arduino

2. Installation der Homeduino 4.0 Software

In der Arduino IDE wird eine neue Datei aufgerufen und per copy&paste das folgende Homeduino4.0-Sketch geladen und unter dem aktuellen Programmnamen im Sketchordner abgespeichert :

Damit weniger Probleme beim Installieren der jeweiligen Hardware-Konfiguration auftreten, sind nachfolgend verschiedene Versionen als Download verfügbar:

Hier ist die LAN-Version mit 2.4“ TFT Touch Display oder 2-zeiligem LCD-Display,  voreingestellt ist das 2.4“-TFT-Display:

Download alt:  hduino412_LAN

Download alt: hduino414_LAN  >> geänderte 8181-Requests für neue CCU2_Firmware 2.17.7

Update 14.11.2020: hduino415_LAN  >> geänderte 8181-Requests für aktuelle  CCU2 /3 Firmware

und hier als WLAN-Version:

Download alt:  hduino412_WLAN

Download_alt: hduino414_WLAN  >> geänderte 8181-Requests für neue CCU2_Firmware 2.17.7

Ggf. die aktuelle Ergänzung der libraries in den library-Ordner reinkopieren.
Danach kann die Software compiliert  und über die USB-Schnittstelle auf den Homeduino übertragen werden.

Wegen der vielseitigen Verwendbarkeit des Homeduinos muß die Software auf die individuellen Bedürfnisse angepasst werden.

Dazu muß man im Listing alle Zeilen, die eine sog. user-Eingabe erfordern, sich genau ansehen und entsprechende Eintragungen machen.

Dies müßte mit den Kommentaren eigentlich gut möglich sein. Weiter unten werden bei den Erklärungen zum Anschluß von Sensoren und Modulen weitere Informationen zur speziellen Anpassung und Parametrisierung der Homeduino-Software gegeben.  Hier der betreffende Textblock im Listing:

tab1

Tab2

Für den hier konfigurierten Homeduino mit W5100-Ethernet-Shield, einem IO-Shield-Plus und einem TFT-Touch-Display müssen schon eine ganze Reihe von Pins für die Steuerung dieser Shields reserviert werden. Das macht man in der Tabelle oben mit Kennzahlen. Abhängig von der Kennzahl bekommt jeder Pin mit dieser Tabelle seine Funktion zugeteilt. Dabei haben wir Pins von D0 bis D73 in der Tabelle. Pins mit analogen Funktione wie beispielsweise A0 bis A15  haben auch einen korrespondierenden digitalen Namen D54 bis D69. Pins , die an Anschlussklemmen nicht verfügbar sind oder für interne Funktionen benötigt werden sind mit der Zahl 0 gekennzeichnet. Für die Steuerung des W5100-Shields werden die Pins D10 und D20 bis D22 mit der Kennzahl 20 reserviert. Das TFT-Display belegt eine Vielzahl von Pins: Dazu werden D2 bis D9  und D54 bis D58 mit der Kennzahl 31 für die Verwendung dieses Displays reserviert. Alle anderen restlichen 28 Pins, hier im Beispiel mit Kennzahl 1 als digitalen Input gekennzeichnet, sind für viele Aufgaben der Hausautomation frei verfügbar !

3.Anlernen an die Homematic-CCU

Das Anlernen an die CCU ist eigentlich schon gemacht mit dem Eintrag der IP-Adresse der CCU im Homeduino-Sketch.  Umgekehrt muß in der CCU eine Systemvariable homeduino_xyz_IP  vom Typ Zeichenkette angelegt werden, in die der Homeduino dann automatisch seine aktuelle IP-Adresse speichert. Damit weiß dann auch später die CCU , an welche IP-Adresse  sie z.B.Ausgabebefehle zum setzen der Ports schicken muß.

Um die verschiedenen Sensordaten in die CCU zu bekommen sind keinerlei Abfragen oder Skripts notwendig. Für jeden für die Hausautomation verwendeten Eingangskanal wird einfach eine entsprechende Systemvariable mit einem bestimmten Namen angelegt. Der Name ist beispielsweise homeduino_xyz_D62 . Dabei ist xyz eine individuelle Kennung dieses Homeduinos und D62 der verwendete Port, von dem die Systemvariable aktualisiert wird. Ggf. können mehr oder weniger Systemvariablen definiert werden, je nach Art und Anzahl der wirklich verwendeten Anschlüsse.

Beispiel: Verwendung D62 als digitalen Eingang:
Will man diesen Port als digitalen Eingang nutzen, dann muß erst oben in der Tabelle bei D62 eine 1 eingetragen sein. In der CCU wird dazu eine Systemvariable homeduino_xyz_D62 als Logikwert erstellt. Das ist schon alles, damit der Homeduino automatisch die Systemvariable aktualisiert, sobald sich am Homeduino der Logikwert am Eingang D62 ändert.

Beispiel: Verwendung D62 als analogen Eingang:
Will man diesen Port als analogen Eingang nutzen, dann muß erst oben in der Tabelle bei D62 eine 10 eingetragen sein. In der CCU wird dazu eine Systemvariable homeduino_xyz_D62 als Zahl erstellt. Dann wird automatisch der Wert dieser Systemvariablen aktualisiert, sobald sich am Homeduino der Analogwert am Eingang D62 ändert.

Beispiel: Verwendung D62 als Eingang für einen NTC-Temperatursensor:
Kennziffer 11 wird eingestellt und eine Systemvariable homeduino_xyz_D62 vom Typ Zahl und der Maßeinheit °C  enthält den aktuellen Temperaturwert.

Die so definierte Systemvariable wird automatisch entsprechend dem zugehörigen Eingangssignal aktualisiert. Damit aber nicht dauernd „Traffic“ entsteht, wird nur bei einer softwareseitig vorgegeben Veränderung des Eingangssignals die Systemvariable aktualisiert. Bei oftmals nur langsam veränderlichen Temperatursignalen reduziert sich dadurch das Datenaufkommen dramatisch. Trotzdem reagiert das System sofort, wenn Änderungen der Eingangssignale vorhanden sind! Damit sind auch schnellere Steuer und Regelvorgänge mit der Homematic möglich, wie z.B. die temperaturabhängige Steuerung der Zirkulationspumpe, Erkennung von Lichtschranken und Bewegungsmeldern etc.

Die Systemvariablen lassen sich auf der CCU jetzt  einfach in WebUI-Programmen nutzen. Werden mehrere Homeduinos verwendet , dann erhält jeder Homeduino eine andere Kennung xyz.

4. Programmieren der Display-Anzeige

Im Homeduino-Sketch müssen auch noch die Anzeigetexte entweder für die 2×16 LCD-Anzeige oder für die 6×16 TFT_Anzeige programmiert werden. Jede Anzeigezeile besteht immer aus 16 Zeichen, von denen die ersten 11 Zeichen für den Text und die restlichen 5 Zeichen für die Daten verwendet werden. Mit einer Tabelle im Listing erfolgt die Programmierung der Texte:

Tab3

Tab4

Angezeigt werden immer nur Ports, die auch mit einer Messaufgabehaben  . D.h. in der Tabelle ganz oben (iomodus)  sind dies die Ports mit Kennziffern ungleich 0 ! Die Portds, die aktuell nicht benutzt sind, werden in der Anzeige übersprungen.  Also angezeigt werden nur die Kanäle, die auch in Benutzung sind.

Bei Verwendung des 2-zeiligen LCD-Displays ist das Rollieren der Zeileninhalte mit den im  Bild erkennbaren Tastern einfach möglich:

lcd_mitAnzeige

Im nächsten Bild sieht man die links die 2.4“-TFT-Anzeige mit den 6 Zeilen.  Unten wird in einer kleinen Statusanzeige die aktuelle IP-Adresse des Homeduinos angezeigt. Mit Fingerdruck auf die gwünschte Zeile, kann der angezeigte Zeileninhalt verändert werden. Druck auf den Zeilenanfang zeigt einen Port vorher an, Druck auf das Zeilenende  zeigt einen Port höher an. So kann man das angzeigte Zeilenmenue mit den Messwerten individuell an seine persönlichen Wünsche anpassen.

tft_mittouch

Leider gibt es bei den 2.4“-Displays verschiedene Versionen im Markt, die unterschiedliche Controller haben.  Anzeige und  Touchscreen haben verschiedene Orientierungen, so daß entweder das Bild auf dem Kopf steht oder der Touchscreen nicht zum Displaybild passt. Man kann dazu die Orientierung des Displays mit Kennziffern von 0 bis 3 jeweils um 90° verdrehen im Sketch in Zeile 287: #define tft_rotation 3  bis das Bild so orientiert ist, wie auf folgendem Bild:

Wenn der Touchscreen nicht paßt bzw. die Kontaktpunkte nicht stimmen, dann das Terminalfenster öffnen und mit einem nicht zu spitzen Stift die Eichpunkte A, B, C antasten. Die entsprechenden Koordinaten px und py werden dann angezeigt sollten etwa wie die Werte in meinem Bild sein. Bei größeren Abweichungen sind in den Sketch-Zeilen 298 bis 300 die Werte zu korrigieren.

Ich selbst verwende u.a. ein großes 3.95“-Display mit 480×320 Pixel und dem Controller ILI9488, welches mittlerweile sehr preiswert angeboten wird.
Stichworte  bei ebay und Co: 3.95 tft display. Hier die Rückseiten der beiden Displays im Vergleich:

DSCF4747

Allerdings paßt die aktuelle Library nicht. Dazu die beiden Adafruit-Verzeichnisse löschen und durch diese neuen Verzeichnisse ersetzen:   tft395_lib

Wie werden Sensoren und Aktoren am Homeduino IO-Shield-Plus angeschlossen ?

Im Folgenden wird mit Anschlußplänen erläutert , wie die verschiedenen Sensoren und Aktoren über das Anschlußboard IO-Shield-Plus  angeschlossen werden. Falls zusätzlich das IO-Shield20 (für das Standard UNO-Pinout) verwendet wird, dann sind die ähnlichen Erläuterungen in diesem Artikel zu berücksichtigen: https://www.stall.biz/project/der-homeduino-2-0-als-vielseitiges-lanwlan-sensormodul-fur-die-homematic

So gibt man digitale Signale aus   

Die Ausgabe von digitalen Signalen kann an den gleichen Pins D14…D29 und D62 … D69 erfolgen, vorausgesetzt die Ports wurden in der Homeduino-Software mit der Kennzahl ‚2‘ als Outputs deklariert. Jumper für die Pullups und die Schutzwiderstände können nach Bedarf für jeden Output einzeln gesetzt werden. Der Schutzwiderstand kann gleichzeitig als Vorwiderstand für eine LED zur Statusanzeige des Outputpins verwendet werden. Im Bild ist das für den Port D69 dargestellt:

Folie23

Die Ansteuerung kann aus der Homematic mit einem einfachen Skript erfolgen:

[codesyntax lang=“text“ title=“HM-Skript sum Setzen/Rücksetzen eines Portpins“]

!hiermit wird der Pin D29 auf 0 oder 1 gesetzt.                                
!Wichtig voher muß im Homeduino Sketch der Pin 29 die Kennzahl '2' haben 
string setpin = "D29:0";    !D29:0 setzt D29 auf 0,     D29:1 setzt auf 1
string IP = dom.GetObject("homeduino_xyz_IP").Value();  !Holt IP_adresse des Homeduino
!WriteLine(IP);
var send_data = "http://" + IP + "/?" + setpin; !Befehl zusammensetzen
!WriteLine(send_data);
string stdout;     !und Befehl ausgeben
string stderr;
!verwendung CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#send_data#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
 
!fehler behandlung fehlt noch
!boolean fehler = 1;
!if (stdout.Length() >0) {fehler =0;} 
!dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("eine Statusmeldung");

[/codesyntax]

Das folgende WebUI-Testprogramm zeigt beispielhaft, wie man mit einem virtuellen Taster test:1 den digitalen Output zwischen o/1 umschaltet:

testprogramm_output

Zum  Testen kann man auch mit dem Browser sehr einfach die digitalen Outputs setzen oder rücksetzen: In die Adressleiste des Browsers einfach den Befehl eingeben:

<IP>/?D69:1    setzt den Port D69 auf 1 oder mit   <IP>/?D69:0   wird Port auf 0 gesetzt.  Die IP-Adresse des Homeduino ist im TFT-Display unten angezeigt oder man schaut sich den Inhalt der Systemvariablen homeduino_xyz_IP an.

So schließt man digitale Sensoren an

Digitale Sensoren kann man an insgesamt 24 Ports des IO-Shield-Plus anschließen, siehe folgendes Bild:

Folie22

Dabei können die analogen Ports auch als digitale Inputs gleichermaßen verwendet werden, wenn natürlich in der Homeduino-Software diese Ports auch als digitaler Input mit der Kennzahl ‚1‘ deklariert sind. Jeder Port hat einen Schutzwiderstand von 470 Ohm zwischen Prozessorpin und Schraubklemme. Damit wird der Ausgang einerseits kurzschlußfest, man kann ihn aber, falls notwendig, mit einem Jumper (schwarzer Jumper)  überbrücken. Zudem hat jeder Port noch einen Pullup-Widerstand, damit beispielsweise einfache Schaltersensoren ohne Zusatzbauteile  angeklemmt werden können. Auch den Pullup-Widerstand von 10KOhm kann man individuell für jeden Portpin per Jumper (schwarzer Jumper ) zuschalten. Schaltsignale müssen 5V-Pegel haben, aber u.U. können  auch 3,3V-Signale sauber erkannt werden.

In der CCU wird für jeden verwendeten digitalen Eingang eine logische Systemvariable angelegt. Entsprechend dem Eingangssignal am korrespondierenden Input  wird automatisch die Systemvariable aktualisiert, wenn eine Statusveränderung erfolgt ist. Für den digitalen Eingang D69 muß beispielsweise  in der CCU die Systemvariable homeduino_xyz_D69 angelegt sein. Das ist schon die ganze Programmierung.

Oftmals ist es sinnvoll Geräte und Sensoren über potentialfreie Eingänge anzuschließen. Hierfür können  4 Inputs alternativ über Optokoppler potentialfrei angesteuert werden. Insbesondere Impulsgeber von Strom- Gas- und Wasserzähler sind oft mit einer sog. S0-Schnittstelle ausgerüstet, die an die Optokoppler potrentialfrei angeschlossen werden können. Schalter- und Tastersensoren können an alle verfügbaren Ports angeschlossen werden. Die zugehörigen 10kOhm-Pullup-Widerstände sind dann mit den entsprechenden Jumpern (im Bild grün)  zu aktivieren. Die 470Ohm-Schutzwiderstände können eingeschaltet bleiben; deshalb müssen keine Überbrückungsjumper (schwarz) gesetzt werden.

 

Folie23

So schließt man analoge Sensoren an

Für die analogen Signale sind 8 Ports vorhanden. Der Signalbereich ist 0… +5V; die Eingänge sind hochohmig, so daß der Schutzwiderstand eingeschaltet werden kann (schwarzer Jumper). Größere Analogspannung können durch einfache Spannungsteilung realisiert werden.

Folie24

 

So schließt man NTC-Temperatursensoren an

NTC-Widerstände sind zur Temperaturmessung sehr preisgünstig und einfach in der Handhabung. Für „normale“ Anwendungen eignen  sich 10kOhm-NTCs besonders, weil sie verbreitet sind und kostengünstig auch im Gehäuse konfektioniert zu kaufen sind. Die 10kOhm-Sensoren können direkt an die analogen Ports angeschlossen werden, wenn die 10kOhm-Pullups mit den Jumpern zugeschaltet sind. Das folkgende Bild zeigt die entsprechende Konfiguration:

So schließt man 1Wire Temperatursensoren an

Sog. 1Wire-Sensoren sind für die Temperaturmessung besoinders vorteilhaft, weil sie bereits geeicht sind und der Temperaturwert vom integrierten Chip direkt als Digitalsignal ausgegeben wird. Einzelheiten zur Verwendung sollen hier nicht weiter erklärt werden, dazu gibt es im Internet unter beispielsweise dem Stichwort DS18B20 viele Informationen. Beim Homeduino wird je Port nur ein Sensor angeschlossen und nicht mehrere parallel. Das hat den Vorteil , daß softwaremäßig auf eine Identifizierung verzichtet werden kann und der Sensor „einfach nur angeschlossen“ wird. Den Rest erledigt die Homeduino-Software!

Angeschlossen werden kann ein typischer 1Wire Temperatursensor DS18B20 über zwei oder 3 Drähte entsprechend dem folgenden Anschlussbild. Empfohlen wird der m.E. zuverlässigere 3.Draht-Anschluss. Insgesamt sind 24 Sensoren anschließbar, allerdings geht bei einer großen Sensorzahl die Zeit für einen gesamten Programmdurchluf deutlich hoch, so daß jeder einzelne Kanal seltener abgefragt werden kann. Genaue Erfahrungen mit so vielen 1Wire-Sensoren liegen mir nicht vor, aber mit bis zu 6 Sensoren ist eine Abtastung im 10-Sekundenbereich möglich. Aber meistens ändern sich Temperatruren doch recht langsam. Im Vergleich zu den Abtastraten der Homematic-Temperatursensoren mit etwa 3min Abtastzeit ist die Abtastfrequenz hier sehr hoch.

Folie28

So schließt man DHT22 Temperatur- und Feuchtesensoren an

Die weit verbreiteten digitalen Temperatusensoren DHT22 oder auch SHT22 können mit dem Homeduino auch sehr einfach abgefragt werden. Zwar können auch bis zu 24 Sensoren angeschlossen werden, allerdfings sollte man die relativ langsame Datenübertragung bei diesen Sensoren berücksichtigen. Der Anschluss erfolgt einfach nach folgendem Schema:

Folie28

Auf dem Display wird nur die Temperatur angezeigt. Aber der Sensor mißt ja zusätzlich auch die Luftfeuchte. Dieser Wert wird automatisch an die CCU mit übertragen. Wenn der Sensor beispielsweise an D29 angeschlossen ist, dann heißt die zugehörige Systemvariable der CCU  homeduino_xyz_D29  vom Typ Zahl . Diese Systemvariable empfängt dann die Temperatur. Die Feuchte wird an eine ebenfalls zu definierende Systemvariable  homeduino_xyz_D29_1  gesendet. Also einfach eine weitere Systemvariable mit dem Anhängsel  _1  auf der CCU festlegen.

Mehr Infos zu den verschiedenen Sensoren findet man auch hier: https://www.stall.biz/project/der-homeduino-2-0-als-vielseitiges-lanwlan-sensormodul-fur-die-homematic

 So schließt man Ultraschall-Entfernungssensoren an

Die Ultraschallsensoren vom Typ SR04 gibt es im Internet als fertiges Modul bereits für 1€. Sie sind ideal, um Entfernungen von schallreflektiven  Gegenständen zwischen 0 und  450cm zu messen. Im Homeduino wurde die maximale Entfernung auf 200cm begrenzt, weil mit zunehmender Entfernung das Signal „sehr variabel“ wird, was wegen der Änderungen des Messignals dann auch zu einem (zu ) regen Telegrammverkehr mit der CCU führt. Man kann die Meßhäufigkeit reduzieren, indem man die Änderungsschwelle von standardmäßig 2cm vergrößert. Die entsprechende  Variable im Homeduino Sketch heißt float delta_us = 2 .

Man kann an den Homeduino bis zu 8 SR04-Sensoren direkt (ohne die 150Ohm Schutzwiderstände, Jumper 4-5) an die Pins D2 bis D9 anschliessen. Die Software ist so ausgelegt, daß neben der Spannungsversorgung nur eine Datenleitung zum Sensor notwendig ist. Dazu sind aber die zwei mittleren Anschlusspins zu verbinden. (siehe nächstes Bild)

 So schließt man  I2C-Sensoren an:

Die serielle Kommunikation nach dem sog. I2C-Standard wird sehr gern zum universellen Anschluss von verschiedensten meist sehr intelligenten Sensoren verwendet. Benötigt werden dafür nur zwei Leitungen SDA und SCL, die am IO-Shield-Plus an den Anschlüssen D20 (SDA)  und D21 (SCL)  direkt verfügbar ist. Normalerweise  wird der I2C-Bus mit 3,3V-Signalpegeln betrieben, aber der 5V- MEGA „versteht“ auch die kleineren Signalspannungen. Problematisch ist das aber für einige I2C-Sensoren, die dann die 5V-Signale vom Arduino nicht vertragen. Deshalb immer vorher vergewissern, ob die I2C-Sensoren mit nur 3,3 oder oder auch mit 5V betreibbar sind. Eventuell sind Pegelwandler notwendig, die man für wenig Geld kaufen kann. Die hier verwendeten I2C-Sensoren können ohne Zusatzelemente direkt an 5V betrieben werden. Notwendig sind dann noch für die Spannungsversorgung der I2C-Module die entsprechenden zusätzlichen zwei Leitungen.

Der I2C-Bus ist ein Datenbus für kurze möglichst kapazitätsarme Leitungen. Solange man bei den Leitungslängen unter 2m bleibt, dürfte das kein Problem sein. Längere Leitungen muß man einfach probieren oder den Takt runtersetzen. (Wie das geht , müßte man googeln)
Normalerweise benötigt der I2C-Bus auch sog. Pullup-Widerstände. Diese sind aber in den hier verwendeten Sensoren bereits eingebaut.

Anschluss Barometersensor BMP180:
Der verwendete Sensor BMP180 ist der Nachfolgesensor des BMP085. Der Sensor selbst hat normalerweise eine Versorgungsspannung von 3,3V . Aber auf dem hier verwendeten Modul ist ein Spannungsregler integriert, so dass ein Betrieb mit 5V möglich ist. Also unbedingt auf den folgenden Bildern den Modultyp vergleichen. Ansonsten kauft man die 3V-Version und beschädigt so das Modul sofort bei Inbetriebnahme! Mehr zu diesem tollen Sensor hier :  http://www.bosch-presse.de/presseforum/details.htm?txtID=5192
Den genauen Anschluss des Sensors zeigt das nachfolgende Bild:

Anschluss Lichtsensor BH1750:
Die Messung der Helligkeit kann in einfacher Form mit einem  lichtabhängigen Widerstand (LDR), erfolgen. Diese Bauelemente sind in vielen Dämmerungsschaltern und Bewegungsmeldern verbaut und verrichten für „normale“ Verhältnisse ihre Funktion recht gut. Sie sind einfach anzuwenden und sehr preiswert.
Leider hat aber die Umgebungshelligkeit eine riesige Dynamik zwischen „rabenschwarzer“ Nacht und Helligkeit in der prallen Sonne!
Diese Webseite zeigt das recht anschaulich: http://s6z.de/cms/index.php/arduino/sensoren/15-umgebungslichtsensor-bh1750
Für höhere  Ansprüche an die Lichtintensitätsmessung ist deshalb die Verwendung des I2C-Sensors BH1750 anzuraten. Auch dieses Modul ist mit 5V betreibbar und kann genauso einfach wie der Barometersensor an den I2C-Bus angeschlossen werden. Dabei kann der Sensor BH1750  alleine oder zusammen mit  dem BMP180 am I2C-Bus betrieben werden. (wie im Bild oben gezeigt)

So schließt man einen oder zwei RFID Reader an

Mittlerweile gibt es für den Arduino eine Vielzahl von sehr preiswerten RFID-Readermodulen, die meistens mit einer Frequenz von 125Khz oder 13Mhz laufen. Sie verwenden oft den SPI-Bus und blockieren damit mehrere Pins. Beim Homeduino  wurde deshalb  die serielle Datenübertagung gewählt, für die nur ein serieller Port notwendig ist. Insgesamt belegt man dann mit einem Reader nur einen seriellen Port mit RX und TX-Leitung (auch wenn die TX-Leitung nicht verwendet wird).

Als RFID-Reader kommt ein Modul RDM6300 zur Anwendung. Die Suche bei Ebay mit dem Suchbegriff RDM6300 führt schnell zu sehr günstigen Angeboten unter 4€ !
Das RDM6300 Modul arbeitet mit 125Khz und hat eine Sende/Empfangsspule mit dabei.

Folie21

Ausgelöst wird der RFID-Reader mit dem sog. FOB oder TAG , welcher eine unverwechselbare Codierung enthält. Dieser Code ist ist eine 10-stellige Dezimalzahl, die man im Bild auf dem FOB erkennen kann. Relevant sind nur die letzten 7 Stellen, weshalb diese auch nur im Homeduino angezeigt und verarbeitet werden.

Die Hard- und Software des Homeduinos ermöglicht den Anschluss von zwei RFID-Readern (RFID2 am seriellen Port 2  und RFID3 am seriellen Port 3), die man beispielsweise für die Haustür und die Garage einsetzen kann. Beide Reader nutzen die gleiche Datenbasis der freigegebenen Benutzer.

Die Hardware:
Der Anschluß an den Homeduino erfogt über das IO-Shield-Plus. Die verwendeten Anschlussklemmen und die Verschaltung ist im folgenden Bild dargestellt:

Folie20

Der Reader RFID2 wird mit seiner Datenleitung(TX) an D17 (RX2) angeschlossen. Ein weiterer RFId3-Reader kann entsprechend mit D15 verbunden werden. Falls ein elektrischer Türöffner verwendet werden soll, dann ist ein Relais mit einem Transistortreiber an die Datenleitungen D23 und D22 anzuschließen. Man kann in der Homeduino Software konfigurieren, welcher RFID-Reader welchen Türöffner öffnen soll.

Die Software im Homeduino:
Dioe Konfiguration der RFID-Reader erfolgt in der Homeduino-Software einfach nur mit Kennzahlen in den bekannten Variablentabellen.  Zuerst muß den verwendeten Pins die RFID-Funktion zugeordnet werden. Hier der relevante Auszug aus dem Listing:

rfid_liste

Bei Verwendung von zwei Readern bekommen die Ports D14 bis D17 die Kennzahl 12 ; wenn Öffner verwendet werden dann muß zusätzlich D22 und /oder  D23 auf 12 gesetzt werden.

Die Programmierung der Zugangsliste ist sehr einfach, indem man den FOB-Nummern die entsprechenden Namen zuordnet. Die folgende Liste ist eigentlich selbsterklärend:

rfid_userliste

Insgesamt können 20 FOBs verwendet werden, was für die meisten heimischen Anwendungen sicher ausreicht. Eingegeben wird nur die 7-stellige Nummer ohne die Nullen vorneweg. Als Namen nicht mehr als 8 Zeichen verwenden, weil sonst das Display „überläuft“. Zusätzlich zum Namen kann man mit einer Kennzahl nocch festlegen, ob die betreffende Person über den/die Türöffner Zugang bekommen soll oder nicht. Wenn man die Nummer des FOBs nicht kennt, dann einfach kurz auf den Reader legen, um die Kennzahl dann anzuzeigen. Im Versuchsaufbau sieht das dann so aus:

rfid_mitFob

Die LED rechts im Bild zeigt den Türöffnerstatus an. Sie kann ohne Vorwiderstand an die entsprechenden Ausgänge D22 oder D23 wngeschlossen werden, wenn die zughörigen beiden Jumper nicht gesteckt sind.  In diesem Fall fungiert der 470Ohm Schutzwiderstand als Vorwiderstand für die LED.

Die Software in der CCU
Die Programmierung in der CCU ist ganz einfach, weil der Name der eintretenden Person einfach an eine zugehörige Systemvariable vom Typ Zeichenkette übermittelt wird. Dabei wird der richtige Name übertragen; nur wenn ein unbekannter FOB zugang haben will, dann wird die Nummer des FOB übermittelt.

Man legt folgende Systemvariablen an …

rfid_variablen

… und kann dann immer den letzten FOB bzw. den Namen der zugehörigen Person.

Eine Dekodierung der Namen auf der CCU macht wenig Sinn, weil die Antwortzeiten der CCU bis zum Türöffnen viel zu groß sind. Zudem sollte ich die Zugangssteuerung unabhängig von der CCU sein, weil die sehr wichtige Funktion des Türöffnens mit der CCU zu unzuverlässig scheint.  Aktuell ist das parallele Öffnen mit der CCU noch nicht enthalten, aber das ist geplant!

Viel Erfolg und Spaß mit dem Homduino 4.0 !

Haftungs- und Sicherheitshinweise

Beim Nachbau müssen natürlich alle wichtigen einschlägigen Sicherheitsvorschriften für den Umgang mit gefährlichen Spannungen  eingehalten werden. Fundierte theoretische und praktische Fachkenntnisse der Elektrotechnik und für den Umgang mit gefährlichen Spannungen sind unverzichtbar!!

Durch eine unsachgemäße Installation gefährden Sie ihr Leben und das Leben ihrer Mitmenschen! Darüberhinaus riskieren Sie erhebliche Sachschäden , welche durch Brand etc. hervorgerufen werden können ! Für alle Personen- und Sachschäden durch falsche Installation etc. ist nicht der Hersteller sondern nur der Betreiber verantwortlich.

Ich verweise hier unbedingt auf  die  „Sicherheitshinweise und Haftungsausschluss„-Seite dieses Blogs.

Skills

Posted on

25. Juli 2015