Aquarium WLAN Lichtsteuerung selber bauen

In meinem Beitrag Aquarium LED Beleuchtung selber bauen habe ich bereits angekündigt, eine passende Lichtsteuerung (Tageslichsimulation) bauen zu wollen. Und was soll ich sagen: Lange hat es gedauert, aber es ist vollbracht! Herausgekommen ist eine Steuerung, die man über WLAN mit dem Webbrowser konfigurieren kann und die seit neuestem auch noch die Wassertemperatur misst und im Browser anzeigt. In diesem Beitrag möchte ich den Bau und die Funktionsweise der Steuerung erklären. Der komplette Quellcode kann von Github herunterladen werden.

Updates

10.12.2017 – Version 0.5.001 – Testmodus integriert

Kein Display, dafür WLAN und Speicherkarte

Bevor ich mit dem Bau der Steuerung begonnen habe, habe ich natürlich erstmal meinen Freund google gefragt, was andere Leute bisher so gebaut haben. In den meisten Fällen stößt man da auf Arduinos mit kleinen TFT-Displays. Der Verlauf der Lichtkurve ist meistens fest einprogrammiert. Es gibt aber auch Projekte, die haben Touchdisplays oder Bedienelemente integriert, um die Helligkeiten und die Lichtverläufe einstellen zu können. Das fand ich schon eher interessant und meine ersten Versuche gingen auch in diese Richtung. Aber nach kurzer Zeit verwarf ich die Idee wieder. Das Handling mit den Displays hat mir nicht gefallen. Zusätzlich musste man noch die Eingabemöglichkeiten und das ganze UI programmieren. Das macht auf Dauer irgendwie keinen Spass und kleine Änderungen bedeuteten schnell größeren Aufwand. Also nochmal zurück ans Reisbrett und überlegen.

Was sind die Grundanforderungen?

  1. Ansteuern mehrerer LED Kanäle per PWM (bei mir sind es 5 Kanäle)
  2. Simulation von Sonnenauf- und Sonnenuntergang + Mondlicht bzw. Festlegen von Lichtverläufen
  3. Ggf. Wolkensimulation
  4. Einfaches Konfigurieren und Speichern der Einstellungen
  5. Leicht anpassbare Bedienoberfläche / GUI
  6. Erweiterbar bzw. Luft nach oben aus Anschluss- und Performance-Sicht
  7. Kostengünstig
  8. Modularer Aufbau, die Komponenten sollen leicht ausgetauscht werden können

Das sind zusammengenommen gar nicht mal so einfache Anforderungen und ich erspare uns jetzt mal die genau Analyse und Auflistung der Möglichkeiten, denn da gibt es hunderte. Hier also die Komponenten meiner Lösung.

Die Komponenten der Steuerung

  • WeMos D1 Mini – Microcontroller auf Basis des ESP8266 WLAN Chips
  • Micro SD Kartenleser – Angebunden über SPI
  • PCA9685 16 Kanal PWM Modul – Angebunden über i2c und 12 Bit PWM Auflösung
  • Echtzeituhr DS3231 – Zum genauen Messen und Speichern der Uhrzeit, auch im Falle eines Stromausfalls
  • Spannungsregeler LM2596S – Zum Bereitstellen der 5V für den Microcontroller und allen anderen Komponenten
  • Temperaturfühler DS18B20 – diesen gibt es als Wasserdichte Variante mit 3m Leitung.

Grundprinzip der WLAN Lichtsteuerung

Ich denke das Grundprinzip ist klar. Der WeMos D1 Mini ist ein ESP8266 WLAN Chip. Ihn kann man mit dem heimischen Netzwerk verbinden und quasi von überall darauf zugreifen. Die Bedienung erfolgt über den Brwoser des PCs,  Smartphones oder über das Tablet.

Mit dem Micro SD Karten Modul werden alle Einstellungen auf einer Micro SD Karte abgespeichert. Gleichzeitig liegen dort auch alle Dateien für das Webinterface. In Summe liegen folgende Daten darauf:

  • HTML Webseiten und Templates für die Weboberfläche
  • WLAN Einstellungen
  • LED Einstellungen für die einzelnen LED Kanäle

Sollte der Controller mal kaputt gehen (was mir bisher noch nicht passiert ist), so bleiben alle Einstellungen gespeichert und man muss nur einen neuen Microcontroller einsetzen. Außerdem kann man die Einstellungen auf diese Weise ohne Probleme kopieren, sichern und wieder einspielen.

Die RTC DS3231 ist nötig, um zum einen die Uhrzeit zu speichern, wenn der Strom mal komplett weggenommen wird und zum anderen dient sie der genauen Messung der Uhrzeit für den Microcontroller. Dessen interne Quarze sind leider nicht so genau und die Zeit würde innerhalb eines Tages schon um einige Sekunden vor- oder nachgehen. Nach ein paar Wochen macht sich das schon deutlich bemerkbar und das verhindern wir mit der Echtzeituhr.

Zu guter Letzt haben wir noch das PCA9685 PWM Modul. Das ist mit seinen 16 ansteuerbaren Kanälen zwar etwas überdimensioniert, aber hat dafür eine 12Bit Auflösung. D.h. man kann pro Kanal 2 hoch 12 also 4096 Helligkeitsstufen einstellen. Das mag ebenfalls etwas übertrieben klingen. Aber bei niedrigen Lichtstufen merkt man deutlich, wenn die Auflösung zu gering ist. Das Licht bzw. die Helligkeit springt dann von Stufe zu Stufe merklich sichtbar und das wollen wir ja nicht. Die Sonne soll ja schön langsam aufgehen, wie in der Natur.

Nicht unerwähnt sollte der Spannungsregler LM2596S bleiben. Ihm kann man zwischen 6V und 24V Eingangsspannung geben und die Ausgangsspannung per Potentiometer einstellen z.B. auf 5V. So kann ich die Steuerung direkt an die LED Stromversorgung hängen und benötige keine extra Steckdose oder ähnliches.

Das Funktionsprinzip

Das Funktionsprinzip sollte somit einigermaßen schlüssig sein. Der WeMos ist unser Controller. Beim Start initialisiert er das SD Karten Modul und ließt die WLAN und Lichteinstellungen von der SD Karte. Anschließend verbindet er sich mit dem WLAN und initialisiert alle anderen angeschlossenen Geräte. Danach erfolgt eine permanente Abfrage der genauen Uhrzeit. Anhand der Uhrzeit und der gespeicherten Lichteinstellungen ermittelt der Controller die Helligkeitswerte der einzelnen LED Kanäle und gibt diese zum PWM Modul aus. Die Ausgänge des PWM Moduls sind mit den Steuereingängen der Konstantstromquellen verbunden. Ich verwende die LDD700-L von Meanwell. Diese lassen sich mit einem PWM Signal zwischen 100Hz und 1kHz steuern. Die Frequenz kann man beim PMW Modul im übrigen einstellen. Auf dem WeMos D1 Mini Controller läuft außerdem ein kleiner Webserver. Gibt man die IP-Adresse des Controllers in den Browser ein, so lädt der WeMos die entsprechende HTML-Seite von der SD-Karte und gibt diese aus. Die HTML Seiten sind mit Paltzhaltern gespickt. Der WeMos erkennt diese beim Einlesen und ersetzt die Platzhalter mit den entsprechenden Werten. Beispielsweise enthält die Startseite den Platzhalter ##TEMP##. Wenn man einen Temperaturfühler angeschlossen hat, wird dieser Platzhalter mit der entsprchenden Temperatur in C° ersetzt.

Der WeMos hat im Gegensatz zum Arduino leider nicht sehr viele Pins. Allerdings ist seine Performance sehr gut und durch die WLAN Fähigkeit quasi die einzig mögliche Wahl. Der Mangel an Pins stört allerdings nicht unbedingt, da viele Module über SPI, i2c oder OneWire angebunden werden können. Vor allem mit i2c lässt sich die Anzahl der angeschlossenen Geräte quasi ohne Probleme erweitern. Aktuell habe ich alle drei Gerätetypen, also SPI, i2c und OnwWire angeschlossen und habe noch einen Digitalpin übrig.

Aufbau und Verdrahtung

Das folgende Bild zeigt die elektrische Verdrahtung der Komponenten.

Verdrahtung Schullebernd Aqua Control v1.0
Verdrahtung Schullebernd Aqua Control v1.0

Ich empfehle allerdings dringlichst, das System zunächst auf einem Steckbrett zusammenzubauen und zu testen bevor man mit dem Löten auf eine Platine anfängt. Das spart Kosten und Zeit, vor allem für die etwas Unerfahreneren und für die Fehlersuche.

Testaufbau Steckbrett Schullebernd Aqua Control ohne PWM Modul.
Testaufbau Steckbrett Schullebernd Aqua Control ohne PWM Modul.

Mein Aufbau auf einem Steckbrett sieht dann so aus.

Foto des Testaufbaus Schullebernd Aqua Control v1.ohne PWM Modul
Foto des Testaufbaus Schullebernd Aqua Control v1.0 ohne PWM Modul. Am Pin D0 hängt eine LED, die gedimmt wird.

Bitte nicht wundern, ich habe hier kein PWM Modul gesteckt, sondern steuere eine LED mit dem Ausgang D0 direkt an. Dies lässt sich sehr einfach in den Konfiguration anpassen, aber dazu später mehr.

Die gelötete Platine samt Schraubklemmen und verbauten Chips sieht dann wie folgt aus.

Fertige Platine der Lichtsteuerung
Fertige Platine der Lichtsteuerung

Wie man sehen kann, sind meine Konstantstromquellen (KSQs) unten in der Beleuchtung verbaut. Ich habe einfach ein Loch nach oben gebohrt und die Kabel für die Stromversorgung des Controllers sowie die PWM Steuerleitungen dort durchgeführt (Im Bild sieht man links, wie die Kabel hochkommen). Zur besseren Montage und Demontage habe ich kleine Schraubklemmen auf die Platine gelötet. Diese sind über Steckbrücken mit den PWM-Pins des PCA8596 Boards verbunden. Man muss nur die PWM Pins vom PCA8596 Modul verbinden. Diese müssen mit dem Dimm-Eingang der KSQs (Meanwell LDD-700L) verbunden werden. Damit das Dimmen sauber funktioniert, muss außerdem die Masse-Leitung der Steuerung mit der Masseleitung der KSQs verbunden sein. Am besten man versorgt die Steuerung mit demselben Netzteil, dass auch die LEDs versorgt bzw. an die KSQs angeschlossen ist. In meinem Fall ist das ein 24V (90W) Netzteil. Mit dem Potenziometer am Spannungsregler können die 24V auf 5V heruntergeregelt werden. So versorgen wir die Steuerung ordentlich mit 5V Spannung.

Sollte jemand neu anfangen, die Beleuchtung samt Controller zu bauen, wäre es auch möglich, die KSQs mit auf die Controller Platine zu packen.

Was ich persönlich noch sehr wichtig finde ist, dass die einzelnen Module nicht fest verlötet sind, sondern nur ihre jeweiligen Fassungen. Das lässt ein schnelles Austauschen der Komponenten zu. Vor allem beim Hauptcontroller, dem WeMos, ist das sinnvoll. Ihn kann man zwar auch im verbauten Zustand neu flashen, es ist aber einfacher, ihn abzuziehen, an den PC zuhängen und zu flashen und dann wieder einzustecken. Natürlich nur im Falle eines Firmwareupdates, denn die Einstellungen liegen ja alle auf der SD Karte.

Kostenübersicht

Eine Anforderung war ja, die Kosten so gering wie möglich zu halten. Deshalb habe ich mich auch gegen einen RaspberryPi entschieden. Außerdem ist der Konfigurationsaufwand beim Pi relativ hoch und er wäre eher überdimensioniert. Aber was kostet die gesamte Steuerung nun? Ich habe hier teilweise die billigsten Komponenten verbaut. Soll heißen, wer Zeit hat, der kauft sich die Komponenten in der Bucht aus China. Da dauert zwar die Lieferung lange, aber die Preise sind unschlagbar. Schauen wir mal auf die Einzelpreise:

  • WeMos D1 Mini 4,-€
  • PWM Modul PCA9685 2,-€
  • SD Karten Modul 3,50€
  • RTC DS3231 2,-€
  • SD Karte 5,-€
  • Spannungsregler LM2596S 1,50€
  • Temperatursensor DS18B20 3,50€

Das sind dann insgesamt 21,50€. Das ganze habe ich mir allerdings gleich zwei mal bestellt. Einmal für den Produktivbetrieb und einmal für den Testaufbau. Also selbst für 43,-€ bekomme ich noch keinen lauffähigen nackten RaspberryPi.

Was wird noch benötig?

Für den Aufbau benötigt man natürlich noch eine Lochplatine, die Pinleisten bzw. die Fassungen ( Beim WeMos waren die allerdings mit dabei), die drei Widerstände sowie genug Draht und Lötzinn. Natürlich sollte die typische Lötausrüstung und eine ruhige Hand nicht fehlen. Für den einfachen Anschluss der Steuerdrähte und der Spannung habe ich mir kleine Schraubklemmen für Lochrasterplatinen beschafft. Und am Ende wäre natürlich ein passendes Gehäuse nicht schlecht. Suma sumarum kommen nochmal ca. 10€ bis 15€ dazu.

Inbetriebnahme der Steuerung

Nachdem alle Komponenten verkabelt oder verlötet sind, kann es losgehen mit der Einrichtung. Hierfür müssen nun alle Sourcen von Github heruntergeladen werden.

Als Voraussetzung zum Kompilieren werden einige Bibliotheken benötigt. Das sind folgende:

RTC DS3231
http://github.com/JChristensen/DS3232RTC
Zum Ansteuern der Echtzeituhr.

Temperatursensor DS18B20
http://www.pjrc.com/teensy/td_libs_OneWire.html
Dies ist eine angepasste Version, die auch mit dem WeMos/ESB8266 zusammenarbeitet. Lässt sich auch über die Bibliotheksverwaltung der Arduino IDE installieren.

PWM Modul PCA9685
https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library
Treiber zum Ansteuern des PWM Servo Boards.

Datum und Zeit Funktionen
https://github.com/Schullebernd/Time
Dies ist eine von mir angepasste Bibliothek und steht nicht in der Bibliotheksverwaltung zur Verfügung.

SBAquaControl
https://github.com/Schullebernd/SBAquaControl

Das ist die eigentliche Bibliothek für die Lichtsteuerung.

Ladet euch alle herunter und legt sie im libraries Ordner der Arduino-Umgebung ab (In der Regel ist das C:\Users\Benutzername\Documents\Arduino\libraries\). Wer will kann auch den Bibliotheksmanager in der Arduino Umgebung (auch IDE genannt) verwenden.

Arduino Bibliothekmanager öffnen
Arduino Bibliothekmanager öffnen

Allerdings muss die Bibliothek für OneWire ( für den Temperaturfühler) gesondert heruntergeladen werden, da die in der Bibliotheksverwaltung Verfügbare nicht für den ESP8266 geeignet ist. Wer zum ersten Mal mit dem WeMos bzw. dem ESP8266 arbeitet, muss zusätzlich noch die Board-Pakete für den ESP8266 installieren. Dazu geht man oben in der Arduino-IDE auf den Boardmanager und installiert die ESP8266 Pakete.
ACHTUNG: Beim Verwenden der Arduino IDE bitte die ESP Version 2.2.0 verwenden. Wenn man die 2.3.0 verwendet, hängt sich der Wemos bei Start permanent auf. Sollte jemand die Umgebung Visual Micro nutzen, so ist zwingend die 2.3.0 Version nötigt. Anscheinend gibt es Unterschiede beim Compilieren zwischen Arduino IDE und Visual Micro. Leider konnte mir bisher niemand sagen, welche das sind.

Arduino Boardverwalter öffnen
Arduino Boardverwalter öffnen
ESP8266 Pakete installieren
ESP8266 Pakete installieren

Ist alles soweit heruntergeladen, kann es losgehen. Man muss nur die Arduino IDE öffnen und unter Datei > Beispiele > SQAquaControl > AquaControlSketch öffnen.
Zum Projekt gehört die Datei aquacontrol_config.h (Die liegt im libraries Ordner SBAquaControl/src/). In dieser Headerdatei wird festgelegt, welche Komponenten verwendet werden sollen und welche nicht. Die Standardeinstellung verwendet genau die Komponenten, die ich weiter oben aufgelistet habe. In diesem Fall braucht man nichts weiter anzupassen. Hat man beispielsweise kein PWM Modul, kann man die Zeile entsprechend auskommentieren. Es wird dann der freie Pin D0 vom WeMos als PWM Pin verwendet. Dort kann man direkt eine kleine LED mit einem kleinen 330Ohm Vorwiderstand anschließen. So lässt sich die Steuerung testen, ohne dass man sie an die Konstantstromquelle mit Hochleistungs-LED anschließen muss. Hier der Inhalt der Datei:

Jetzt wird der WeMos bzw. der Testaufbau per USB mit dem PC verbunden. In der Arduino-IDE muss man noch das richtige Zielsystem einstellen. Unter Werkzeuge > Board wählt man, wie oben im Bild zu sehen, den den Eintrag “WeMos D1 R2 & mini” aus. Dann klicken wir auf den “Hochladen” Button unterhalb der Menüleiste. Hat man alles richtig gemacht, wird das Projekt fehlerfrei kompiliert und auf den WeMos gespielt. Damit wäre Schritt 1 erledigt.

Speicherkarte vorbereiten

Zum Einrichten der Speicherkarte wird ein Micro SD-Kartenleser für den PC benötigt. Ich gehe jetzt mal davon aus, das soetwas so gut wie jeder in seinem Bastelzimmer hat.

Einfach den SD-Kartenleser an den PC stecken und die MicroSD Karte neu formatieren. Wichtig ist hierbei, dass FAT32 als Dateisystem verwendet wird. Der Micro SD-Kartenleser am Controller kann nur FAT32 lesen und schreiben.

In der SQAquaControl Bibliothek ist ein Ordner namens ./extras/SDCard zu finden. Dessen Inhalt muss man auf die MicroSD Karte kopieren. Und wieder wichtig. Es muss der Inhalt und nicht der Ordner selbst kopiert werden.

Nach dem erfolgreichen Kopieren der Daten fehlt nur noch die WLAN Konfiguration. Dazu suchen wir die Datei WLAN.CFG im unterordner ./config  (auf der SD-Karte) und öffnen diese mit einem Text-Editor. Ich verwende hierfür immer Notepad++. In den entsprechenden Zeilen für die SSID und dem Passwort geben wir die Daten ein und speichern die Datei wieder ab.

Nun kommt der große Augenblick.

Starten der Steuerung

Zunächst wird die MicroSD Karte in das Modul gesteckt. Dann bitte nochmal überprüfen, ob alles ordnungsgemäß verdrahtet oder verlötet ist. Ich teste das immer so, dass ich die Module alle entferne und die Spannungsversorgung anschließe. Mit einem Messgerät prüfe ich dann mehrere Stellen ab, wo Spannung sein muss und wo nicht. Ist alles in Ordnung, trennen wir den Strom wieder und stecken die Module alle in Ihre Sockel.

Na dann Strom an! Oder wer das System erstmal auf einem Steckbrett zusammengebaut hat – USB ran und den Play Button in der Arduino-Umgebung drücken. Der WeMos wird nun mit dem Programm geflasht und startet. In der Arduino Umgebung sollte man den Seriellen Monitor aktivieren. Die Software gibt beim Start Statusmeldungen aus, die essentiel für die Fehlersuche sind. Außerdem wird die vom WLAN Router zugewiesene IP-Adresse ausgegeben ( wenn nicht in der wlan config eine feste IP vergeben wurde).

Die IP-Adresse nehmen wir jetzt, öffnen einen Browser und geben sie wie folgt in die Adresszeile des Browsers ein

http://ipadresse

Wenn alles funktioniert sollte nun die Startseite der Steuerung erscheinen.

SBAQC Startseite
SBAQC Startseite

Der Name der Steuerung heißt SBAQC, was soviel heißt wie Schullebernds Aqua Controller. Ein besserer Name ist mir nicht eingefallen, aber naja ein bißchen Branding kann man schon mal betreiben. Und Jaaaa – die Optik könnte schöner sein. Aber erstmal die Funktionen ausbauen und dann hübsch machen.

Soo, damit wäre es geschafft. Der Controller läuft und wartet nun auf seine Konfiguration.

SBAQC – Schullebernds Aqua Controller einrichten

Von der Startseite ausgehend kann man die Steuerung relativ leicht Parametrieren.

LED Lichtkanäle einstellen

Mit dem Klick auf einen Lichtkanal öffnet sich die Konfigurationsseite des entsprechenden Lichtkanals.

SBAQC LED Kanal bearbeiten
SBAQC LED Kanal bearbeiten

Zu Beginn sind alle Felder leer. Man kann bis zu 10 Zeitpunkte mit Prozentwerten eingeben. Ein Datensatz könnte beispielsweise lauten:
06:00 | 00
08:00 | 80
18:00 | 80
20:00 | 00

Damit würde die Steuerung zwischen 20:00 und 06:00 Uhr die Beleuchtung ausschalten (auf 0% dimmen). Zwischen 06:00 und 08:00 Uhr bzw. 18:00 und 20:00 Uhr geht die Lichtintensität kontinuierlich hoch bzw. runter (Sonnenauf- bzw. Sonnenuntergang). Zwischen 08:00 und 18:00 bliebe die Lichtstärke konstant bei 80%. Die Steuerung errechnet anhand des aktuellen Zeitpunktes den interpolierten Lichtwert und gibt das entsprechende PWM Signal aus. Das macht sie mehrmals pro Sekunde sodass auch relativ große Lichtsprünge in kurzer schön sanft vonstatten gehen.

Mit den 10 Zeitpunkten lässt sich ein schöner Lichtverlauf für den Tag einprogrammieren. Das lässt sich für jeden der 8 Lichtkanäle tun. So entsteht, wenn man möchte, ein schöner Mix aus Lichtstärken und Farben. Es lässt sich so beispielsweise ein schöner rötlicher Sonnenauf- und Sonnenuntergang, eine helle und weiße Mittagssonne und sogar die blaue Stunde abends einprogrammieren. Sicherlich muss man mit den Einstellungen etwas herumspielen, aber schon nach kurzer Zeit hat man seine Vorliebe gefunden.

Die Steuerung schreibt die LED Konfiguration auf die Micro SD Karte. Für jeden LED Kanal wird eine .CFG Datei im Unterordner ./config angelegt. Diese lässt sich auch mit einem Texteditor bearbeiten. Die Syntax ist sehr simpel. Mit einem Semikolon ; getrennt kommt erst die Zeit und dann der Prozentwert.

WLAN Einstellungen

Von der Hauptseite ausgehend, kann man die WLAN Einstellungen öffnen. Dort kann eine feste IP-Adresse und der Stanardgateway definiert werden. Wer davon keine Ahnung hat, lässt einfach die Felder leer. Die Steuerung versuch dann beim Start, über DHCP eine IP-Adresse zu beziehen, so wie es bei den meisten WLAN Geräten heute der Fall ist.

Wichtiger sind aber die Einstellungen für die SSID und das WLAN-Passwort. In der Regel hat man hier schon beim Vorbereiten der SD-Karte alles korrekt eingegeben (sonst könnte man ja nicht auf die Steuerung per Browser zugreifen). Wenn man hier die Einstellung ändert, werden diese erst nach einem Neustart der Steuerung aktiv. Das Passwort wird grundsätzlich nicht angezeigt (da keine Sichere Datenverbindung verwendet wird).

SBAQC WLAN-Einstellungen
SBAQC WLAN-Einstellungen

Zeit einstellen

Zum Schluss sollte man noch die Zeit einstellen, damit die Steuerung auch zum richtigen Zeitpunkt die richtigen Lichtwerte setzt. Aktuell (Stand Juli 2017) muss man die Zeit noch manuell einstellen. Es ist aber eine Funktion geplant, dass sich die Zeit automatisch mit einem NTP Server synchronisiert.

In den zwei Felder auf der Zeit-Einstellungen Seite gibt man das Datum und die Zeit im Format TT.MM.YYYY und hh:mm:ss ein. Also zum Beispiel 17.07.2017 und 18:39:20. Mit dem Klick auf Speichern wird die Zeit sofort übernommen und die Steuerung regelt die Lichtstärke entsprechend der aktuellen Zeit und LED-Kanaleinstellungen.

Fertig!

Damit haben wir es geschafft. Die Steuerung ist fertig und kann am Aquarium betrieben werden. Bei mir läuft Sie seit über einem halben Jahr stabil und regelt mein Licht im Aquarium zuverlässig Tag für Tag.

Natürlich werde ich die Funktionen von Zeit zu Zeit erweitern und/oder anpassen. Daher habe ich die Quellen auch auf github veröffentlicht. Jeder, der Verbesserungen oder Erweiterungen hat, kann sie gerne mit einem Pull-Request bei mir einreichen. Aber bitte erwartet keinen 24/7 Support von mir.

Letzter Hinweis

Alle Arbeiten an der Steuerung und an der Aquarium-Beleuchtung finden auf eigene Gefahr statt. Ich übernehme keinerlei Haftung für die korrekte Funktionsweise oder etwaige Schäden die durch den Nachbau entstehen. Und natürlich auch hier nochmal der Hinweis, dass Arbeiten mit elektrischem Strom nur von geschulten Personen durchgeführt werden sollen.

Update 10.12.2017

Seit der Version 0.5.001 gibt es den Testmodus. Hierzu muss man in der Weboberfläche einfach auf Testmodus klicken und kann dann für jeden Kanal einen Wert eingeben. Beim Klick auf “Testmodus aktivieren” wird der Wert für alle Kanäle übernommen. Der Testmodus bleibt maximal 60 Sekunden lang aktiv, danach beendet die Steuerung den Modus automatisch. Man kann den Modus über den Button “Testmodus deaktivieren” auch manuell verlassen.

Ausblick

Da die Steuerung durch die Nutzung einer SD-Karte und WLAN sehr flexibel ist, habe ich vor, in der nächsten Zeit noch weitere Funktionen zu integrieren:

  • Anbindung an MQTT. Ansteuerung des Controllers über MQTT und Übertragen von Messwerten vom Controller an einen MQTT-Server – Perfekt zur Integration in eine Heimautomatisierungsumgebung wie FHEM.
  • Wetter und Wolkensimulation. Wolkenflug und unterschiedliche Lichtstärken abhängig vom aktuellen Wetter oder eines simulierten Wetterverlaufs. Vielleicht mit Anbindung an Wetterdienste oder die eigene Wetterstation.
  • Zeitsynchronisation mit einem NTP-Server
  • Testmodus zum besseren Aufeinanderabstimmen der LED-Kanäle. Aktuell kann man jeden Kanal nur separat einstellen. Das kann etwas umständlich sein, wenn man den richtige Mix der unterschiedlichen LED-Kanäle finden möchte. Der Testmodus erlaubt eine live Einstellung der LED Kanäle.
    Ab Version 0.5.001 verfügbar. 
  • Mehrere Lichtprofile. Vielleicht will man im Winter einen anderen Lichtverlauf als im Sommer haben. Mehrere Profile würden das Umkonfigurieren vereinfachen.
  • Verschönerung der Weboberfläche. Zugegeben, diese ist mehr funktional als ansehnlich. Daher werde ich die Oberfläche (gerne auch mit eurer Hilfe) noch verschönern.
  • Vielleicht habt ihr ja auch noch Ideen, also zögert nicht sie mir per Kommentar oder E-Mail mitzuteilen

 

47 Gedanken zu „Aquarium WLAN Lichtsteuerung selber bauen“

  1. Hallo Bernd,

    habe doch noch ein kleines Problem mit DS18b20 in deinem sketch
    funktioniert er leider nicht. In einem Test sketch (DS18B20 Temperatur Webserver) mit der gleicher Schaltung funktioniert alles.

    Was über sehe ich denn ?

    1. Hallo Wolfgang,
      das ist sehr schwer zu sagen. Ich merke allerdings, das es hin und wieder mal Probleme mit dem Sensor gibt (nicht bei mir, mehr von den anderen Rückmeldungen).
      Ich werde nochmal überprüfen, ob vielleicht was an den Timings nicht ganz stimmt. Denn der Sensor wird über zwei Zyklen ausgelesen und da kann es unter umständen zu Problemen führen!
      Gruß Bernd

  2. Hallo Bernd,

    danke für die Hilfe es hat funktioniert. jetzt ist nur noch die SD-Card
    das Problem.
    Fehler ist :
    (Version 0.5.001)
    Now starting up
    Initializing SD card… Failed

    hast du da auch noch eine Idee ? Dateien liegen wie Beschrieben auf der SD-Card

    nochmals vielen vielen Dank

    1. Hallo Wolfgang,
      das kann jetzt verschiedene Ursachen haben. Prüfe hier bitte zunächst mal die verdrahtung. Das ist meistens die Lösung. Dann schau bitte nochmal, ob du die SD Karte auch mit FAT formatiert hast und nicht versehentlich mit NTFS.
      Und dann gab es hier noch einen guten Hinweis. Wenn die Karte vorher in einem Radpberry Pi war, dann muss man Sie nochmal komplett z.B. mit SD-formatter, platt machen und neu formatieren.
      Gruß Bernd

  3. Hallo Bernd,

    super tolles Projekt. Leider will es bei mir einfach nicht laufen, hatte
    unterschiedliche Fehler, jetzt ist es soweit das ich nur noch einen Fehler habe.
    Hier der Fehler :

    C:\Users\wolf\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp: In member function ‘void AquaControl::initTimeKeeper()’:

    C:\Users\wolf\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:398:19: error: ‘RTC’ was not declared in this scope

    setSyncProvider(RTC.get); // the function to get the time from the RTC

    ^

    exit status 1
    Fehler beim Kompilieren für das Board WeMos D1 R2 & mini.

    wo liegt das Problem ? wenn du mir helfen könntest wäre es echt toll.
    Das Betriebssystem ist Windows 10 und Arduino sagt 1.8.5(Windows Store 1.8.10.0)
    wer kann helfe oder hat eine Idee.

  4. Hallo Bernd
    ich habe alles zusammengebaut wie Du beschrieben hast aber es lassen sich die LEDs nicht dimmen und ich kann im SBAQC in den Lichtkanälen die Zeit einschreiben und es tut sich nichts gar nichts.Wer kann mir helfen bin Anfänger , was muß ich beachten oder einstellen.Danke für Deine Bemühungen.

    Grüße Reinwald

    1. Reinwald, ich habe das Ding jetzt ohne Probleme seit gut zwei Monaten im Dauertest. Von daher würde ich auf einen Verdrahtungsfehler oder Kontaktprobleme tippen. Insbesondere bei Testaufbauten auf Steckbrettern sind Kontaktfehler häufig und bringen insbesondere Anfänger gern in Schwitzen.

      Martin

  5. Ich bin am Verzweifeln. 🙁
    Nach dem Start bekomme ich “Initializing SD card… Done.” und dann in der nächsten Zeile “Reading wlan config from SD card…error opening wlan.cfg failed”.

    Die SD card ist korrekt mit den angegebenen Dateien beschrieben. WLAN.CFG ist also da. Was mache ich falsch? Hat jemand einen Tipp für mich?

    1. Hi Martin,
      könntest du mir zeigen, wie die Ordner auf der SD liegen? Die meisten Probleme gibt es, wenn die Ordnerstruktur nicht passt oder wenn die SD Karte nicht mit FAT sondern mit NTFS formatiert wurde.
      Gruß

      1. Gern, die SD-Karte ist FAT32 formatiert. Die Dateien liegen so, wie ich das aus deiner Beschreibung verstanden habe. D.h. die htm-Dateien im Rootverzeichnis. Dazu gibt es in Root zwei Verzeichnisse sd und css. Darin liegen die entsprechenden Dateien d.h. die WLAN.CFG im sd-Verzeichnis. Ich habe WLAN.CFG zusätzlich in Root kopiert. Das ändert aber nichts.

        1. Ich habe meinen Fehler gefunden. Eigentlich ganz simpel, aber damit andere nicht auch darauf hereinfallen hier eine kurze Beschreibung.

          Ich hatte die SD-Karte früher mal in einem Raspberry PI benutzt. Dadurch existierte außer dem Hauptvolume noch zusätzlich ein kleines mit nur 45MB. Darauf griff die Steuerung zu und fand natürlich nichts. Also die Karte vor der Formatierung neu Low-Level formatiert und alles läuft so wie es soll. 😉

  6. Hallo

    Leider bekomme ich den Sketch nicht auf mein LolinNodeMCU.
    Ich habe auch versucht es mit einem Wemos d1 mini wie in der Anleitung zu Kompilieren , leider bekomme ich dort auch unter Arduino 1.8.5 eine Fehlermeldung.

    Arduino: 1.8.5 (Windows 10), Board: “WeMos D1 R2 & mini, 80 MHz, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 921600”

    WARNUNG: Bibliothek DS3232RTC-master behauptet auf (avr) Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf (esp8266) Architektur(en) ausgeführt wird.
    D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp: In member function ‘void AquaControl::initTimeKeeper()’:

    D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:398:19: error: ‘RTC’ was not declared in this scope

    setSyncProvider(RTC.get); // the function to get the time from the RTC

    ^

    D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp: In member function ‘void AquaControl::init()’:

    D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:497:10: error: use of deleted function ‘ESP8266WebServer& ESP8266WebServer::operator=(const ESP8266WebServer&)’

    _Server = ESP8266WebServer(80);

    ^

    In file included from D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.h:25:0,

    from D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:12:

    C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WebServer\src/ESP8266WebServer.h:69:7: note: ‘ESP8266WebServer& ESP8266WebServer::operator=(const ESP8266WebServer&)’ is implicitly deleted because the default definition would be ill-formed:

    class ESP8266WebServer

    ^

    C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WebServer\src/ESP8266WebServer.h:69:7: error: use of deleted function ‘std::unique_ptr& std::unique_ptr::operator=(const std::unique_ptr&) [with _Tp = HTTPUpload; _Dp = std::default_delete]’

    In file included from c:\users\andre\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:81:0,

    from C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiGeneric.h:28,

    from C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFiSTA.h:28,

    from C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\ESP8266WiFi\src/ESP8266WiFi.h:34,

    from D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.h:23,

    from D:\Wichtige Daten\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:12:

    c:\users\andre\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\unique_ptr.h:274:19: error: declared here

    unique_ptr& operator=(const unique_ptr&) = delete;

    ^

    Mehrere Bibliotheken wurden für “SD.h” gefunden
    Benutzt: C:\Users\Andre\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\SD
    Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\SD
    exit status 1
    Fehler beim Kompilieren für das Board WeMos D1 R2 & mini.

    Dieser Bericht wäre detaillierter, wenn die Option
    “Ausführliche Ausgabe während der Kompilierung”
    in Datei -> Voreinstellungen aktiviert wäre.

    Vielleicht kann mir jemand helfen.

    Mit freundlichen Grüßen

    Andre

    1. “WARNUNG: Bibliothek DS3232RTC-master behauptet auf (avr) Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf (esp8266) Architektur(en) ausgeführt wird.”
      Habe ich weiter unten schon mal beantwortet!
      Bitte die richtige Lib verwenden. Doppelte Libs bitte vermeiden lösche die entsprechende Lib die vom Arduino mitgebracht wurde (C:\Program Files (x86)\Arduino\libraries\SD)!
      Dann nochmal probieren und schauen was geht!

  7. Hallo Bernd,
    finde dein Projekt super würde die Lichtsteuerung gerne benutzen.
    Habe alle Komponenten mir besorgt alle Sketche runter geladen und nach deiner Beschreibung alles installiert das Hochladen war erfolgreich, serieller Monitor zeigt
    ##Now starting up
    Initializing SD card… Done.
    Reading wlan config from SD card… Done.
    Connecting to WLAN-90FF55……. Done.
    IP address: 192.168.1.110
    Initializing RTC DS3231…. Done.
    Initializing PWM channels… Done.
    Initializing Webserver… Done.
    Reading LED config from SD card…
    Warning: Couldn’t find config file for LED channel 1
    Warning: Couldn’t find config file for LED channel 2
    Initializing DS18B20 Temerature Sensor…Done.
    AQC booting completed.##

    das an.
    Habe noch kein PWM Modul angeschlossen, habe die Zeile entsprechend auskommentieren.

    IP-Adresse wie beschrieben im Browser eingegeben Seite öffnet aber nicht, “Seiten-Ladefehler”.

    Habe ein anderes Programm ausprobiert, wo die HTML Seite im Sketch geschrieben ist, da wird die Seite im Browser geöffnet.

    Möchte gleich anmerken, dass ich ein Neuling in Sache Arduino bin….jetztn die frage, wo liegt der Fehler?
    Im Voraus vielen Dank für deine Hilfe!
    Gruß Klaus

  8. Hallo,
    erst mal besten Dank für dieses erstklassige Projekt.
    Aber wies halt immer so ist, kommt der Appetit beim Essen. Und ich hab noch ein paar Fragen.
    Ich verwende mit meiner jetzigen Arduinosteuerung LED Steifen und Power LEDs parallel. Die Streifen hängen an Mosfets mit normalem PWM Signal und die KSQs für die Power LEDs bekommen ein invertiertes PWM Signal vom Arduino. Ich hab schon mal ein wenig im Code geschmökert, aber das sieht doch ganz anders aus als mein bisheriges Strickwerk.
    Wo genau bekommen denn die PWM Kanäle ihr Kommando? Sollte doch möglich sein bestimmten Kanälen ein invertiertes Signal zukommen zu lassen.
    Außerdem hab ich da noch Schwierigkeiten mit dem db18b20. Ich würd gern zwei davon verwenden, bekomme am Wemos aber keinen zum laufen.
    Mit dem Arduino klappt’s, aber mit dem Wemos noch nicht. Ich hab auch schon mal den Pullup auf 4,7k reduziert (so läuft’s am Arduino), aber ohne Erfolg. Das Beispiel spuckt nur “No more addresses.” aus. Hast du da evtl. noch mal nen Tipp für mich. Über den zweiten Sensor soll dann noch ein Lüfter in der Abdeckung gesteuert werden.
    Und wenn ich dann noch die Leitfähigkeitsmessung inkl. Aufzeichnung hin bekomm, wär das ein Bomben Upgrade der jetzigen etwas wackligen Steuerung.
    Vielen Dank schon mal
    Robert

    1. Hallo Robert,
      wenn du das Ausgabesignal eines PWM-Kanals ändern möchtest, dann schau mal die Methode

      void AquaControl::writePwmToDevice(uint8_t channel){
      #if defined(USE_PCA9685)
      pwm.setPWM(_PwmChannels[channel].ChannelAddress, 0, _PwmChannels[channel].CurrentWriteValue);
      #else
      analogWrite(_PwmChannels[channel].ChannelAddress, _PwmChannels[channel].CurrentWriteValue);
      #endif
      }

      Zeile 660 in der AquaControl.cpp.
      “CurrentWriteValue” enthält den PMW Wert, der ausgegeben wird. Ein XOR mit lauter 1er (16Bit) sollte den gewünschten Invertereffekt erzielen.

      Was den Temperatursensor angeht, so sollte er eigentlich funktionieren. Die sehr dünnen Drähte sind manchmal etwas fummelig und man bekommt nicht immer sauber Kontakt. Es gibt aber viele Beispiele im Netz. Bin mir sicher, dass du das zum Laufen bekommst.
      Beim Auslesen der Temperatur musste ich etwas, sagen wir mal, tricksen. Das Auslesen inkl. Initialisierung dauert immer 2 Sekunden. Der Sensor braucht immer etwas Zeit zwischen Init und Auslesevorgang. Da hier aber das Programm hängen würde, habe ich das Initialisieren und das Auslesen so aufgeteilt, dass bei einem Schleifendurchlauf das Initialisieren erfolgt und beim neuen Schleifendurchlauf das Auslesen erfolgt. Etwas kompliziert, aber die Steuerung läuft ja permanent in einer Dauerschleife und berechnet die aktuellen PWM-Werte für alle Kanäle und ließt eben die Temp. aus.
      Ich hoffe in komme in der nächsten Zeit mal dazu, sie noch etwas auszubauen. Die Ideen sind ja schon da. Das mit dem invertierten Signal merke ich mir aber auf jeden Fall gleich sodass man das direkt in der Weboberfläche einstellen kann.
      Gruß Bernd

      1. Hallo Bernd,
        danke für den Tipp. So sollten KSQs und Streifen jeweils das passende PWM Signal bekommen.

        #if defined(USE_PCA9685)
        uint16_t maxPWM = 4095;
        if(channel < 4)
        pwm.setPWM(_PwmChannels[channel].ChannelAddress, 0, maxPWM – _PwmChannels[channel].CurrentWriteValue);
        else
        pwm.setPWM(_PwmChannels[channel].ChannelAddress, 0, _PwmChannels[channel].CurrentWriteValue);
        #else

        Die Weboberfläche hab ich auch ein wenig überarbeitet, aber wie man den Server dazu bringt ein jpg anzuzeigen hab ich noch nicht verstanden. Evtl. hast du ja da noch nen Tipp auf Lager.
        Ich hoffe ich bin nicht zu lästig, aber das Bastelfieber hat mich grad voll im Griff.
        Gruß Robert

    2. Hallo,
      das DS18B20 Problem ist gelöst. Habe auch das Beispiel aus der OneWire Lib mit dem Wemos zum laufen bekommen. Allerdings stimmt der Pin aus dem Beispiel nicht. Bei Sensor an Pin 3 hats mit Angabe einer 0 funktioniert.
      Danach noch mal alles sauber installiert und nun gibts auch eine Temperatur.

  9. Hallo,
    habe gerade festgestellt das bei einen Stromausfall die RTC sich die Uhrzeit zwar merkt aber die Uhrzeit stehen bleibt an dem Zeitpunkt wann der Stromausfall war. Strom wieder da Uhr läuft wieder weiter, aber es besteht eine Differenz von der Dauer des Stromausfalls.

    1. Hallo Heiko,
      das Problem hatte ich auch schon und es tritt meiner Erfahrung nach auf, wenn die Batterie leer wird und die Spannung absinkt. Anscheinend kann das Modul zwar noch die aktuelle Zeit halten aber der Timer läuft nicht mehr sauber.
      Mess mal bitte die Batteriespannung. Sie sollte bei >=3V liegen. Wenn sie geringer ist, dann wird sie leer.
      Ich empfehle außerdem keine CR2032 sondern eine LIR2032 zu nehmen. Die CR2032 ist nur eine Batterie und kann nicht wieder aufgeladen werden. Die LIR2032 ist ein Li-Io Akku und kann wieder geladen werden. Und normalerweise laden die DS3231 Module die eingesteckte Batterie(Akku) wieder auf.
      Gruß Bernd

  10. Hallo Bernd,
    Super Seite, habe ein Problem mit der Datei DS3232RTC.
    Folgender Fehler tritt auf. Bin ein Neueinsteiger und komm nicht mehr weiter. ??????

    WARNUNG: Bibliothek DS3232RTC-master behauptet auf (avr) Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf (esp8266) Architektur(en) ausgeführt wird.
    C:\Users\Netbook\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp: In member function ‘void AquaControl::initTimeKeeper()’:

    C:\Users\Netbook\Documents\Arduino\libraries\SBAquaControl-master\src\AquaControl.cpp:398:19: error: ‘RTC’ was not declared in this scope

    setSyncProvider(RTC.get); // the function to get the time from the RTC

    ^

    exit status 1
    Fehler beim Kompilieren für das Board WeMos D1 R2 & mini.

  11. Hallo Bernd,
    habe gerade mal Dein Projekt auf “PlatformIO” umgesetzt.
    Dabei ist mir ein Fehler in Deiner “Time.Lib” aufgefallen, in der “library.json” bitte das Komma hinter Deiner E-Mail Adresse entfernen dann stimmt da auch wieder der Syntax! 😉

    Grüße, Daumen hoch und weiter so,
    Jens

  12. Hallo Bernd,
    habe es auf dem Steckbrett nach gebaut und es funtzt vom Feinsten.
    Werde alles jetzt auf eine Platine bringen und mit den High-Power LEDs verdrahten.

    Danke für das coole Projekt und Gruß, Wolfgang

  13. Hallo Bernd,

    heute habe ich mich endlich ans Zusammenbauen geben können.

    Leider aber bekomme ich die nachfolgende Fehlermeldung über den Seriellen Monitor:

    ets Jan 8 2013,rst cause:2, boot mode:(3,7)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    v3de0c112
    ~ld

    Manchmal ist es auch der boot Mode (3,6) falls das etwas ändert.

    Hast du eine Idee woran das liegen könnte?
    Ein einfaches LED Beispiel aus dem Internet hat auf meinem Wemos funktioniert.

    Vielen Dank
    Andreas

    1. Hallo Andreas,
      welche Version vom ESP8266 Bordmanager Paket nutzt du denn? Die Version 2.3.0 funktioniert seltsamerweise nicht. Man muss Version 2.2.0 nutzen.
      Kommen denn vor der Fehlermeldung irgendwelche anderen Ausgaben wie „Initialisiere SD Karte…“ oder so?
      Der Fehler den du hast, tritt in der Regel auf, wenn eine Endlosschleife läuft oder eine Funktion zu viel Zeit benötigt. Dann schlägt der Watchdog zu und resetet den ESP8266.

      1. Hallo Bernd,

        vielen Dank für die so zeitnahe Rückmeldung.
        Und ja, es hat tatsächlich an der Version 2.3.0 gelegen.
        Ich wurde etwas aufs Glatteis geführt, da zuerst die Version 2.2.0 bei mir NICHT funktioniert hat. Einfache Programme ließen sich mit der Version 2.3.0. aber erfolgreich flashen und testen.
        Daher konnte ich erstmal nicht glauben, dass es so direkt an der Version 2.3.0 liegen kann.
        Teilweise musste ich etwas mit der Uploadspeed spielen, damit es geklappt hat. Inzwischen scheint das aber keinen Einfluss mehr zu haben.

        Abschließend aber, es läuft mit Version 2.2.0 🙂

        VIELEN DANK!!!

        1. Hallo Andreas,
          sehr gut. Ich habe auf github auch einen entsprechenden Hinweis verfasst. Habe das jetzt mal intensiv getestet.
          Mit der Arduino IDE läuft die Steuerung nur mit der ESP Version 2.2.0.
          Wenn man mit Visual Micro arbeitet, läuft die Steuerung ausschließlich nur mit der 2.3.0.
          Ich habe dazu auch schon mehrere Anfragen laufen, aber bisher ohne Rückmeldung.
          Gruß Bernd

  14. Hallo Bernd,

    genau so was habe ich gesucht. Tolles Projekt, man kann die komplette Elektronik in der Leuchte verschwinden lassen und muss das Setup nicht an viel zu kleinen Displays und fummeligen Tastern durchführen.
    Meine Teile sind auch schon bestellt. Ich selber befinde mich beim programmieren erst in der “Hello World” Phase und warte deshalb schon ungeduldig auf neue Features.
    Gruß Wolfgang

  15. Hallo,

    Danke für deine super Anleitung und den tollen Job.
    Keine kurze Frage habe ich, welche LED Stripes (Aquarium Breite 80cm) kannst du für deinen Controller incl. Mondphase empfehlen?

    1. Hallo Nils,
      danke für dein Lob.
      Ich habe bei mir keine Stripes verbaut sondern ausschließlich einzelne HighPower LEDs verwendet. Für das Nachtlicht/Mondlicht habe ich 5 Königsblaue Highpower LEDs genommen. Da diese fast immer sehr stark gedimmt betrieben werden, habe ich sehr günstige bei eBay gekauft. Mit Stripes habe ich bisher fast keine Erfahrung und kann dir daher nichts bestimmtes empfehlen, tut mir leid.
      Gruß Bernd

      1. Kannst du mir denn diese Power LED empfehlen, eventuell einen Link? Wieviele benötige ich denn für ein ca. 80cm breites Becken?
        Und welche benötige ich genau für Mondlicht, Morgendämmerung, tägliche und Sonnenuntergang.

        Grüße
        Nils

  16. Hallo Bernd,

    auf diesem Wege wollte ich mich einfach mal für diese super Beschreibung bedanken.

    Ich habe mir die benötigten Teile bereits bestellt und werde, sobald diese da sind (hoffentlich max 6 Wochen) auch gleich mit dem Nachbau anfangen.

    Danke und Gruß
    Andy

  17. Hallo Bernd,
    erstmal: sehr schönes Projekt. Nach einem Umzug und nun der Möglichkeit endlich ein 200cm Becken stellen zu können, möchte ich ebenfalls gleich die Technik mit umstellen und meine bisherige Lösung, Lichtsteuerung über TC420 + LED Balken von LEDaquaristik einmotten. Lediglich die Leuchtbalken will ich weiter verwenden (und auch deren Anzahl aufstocken).
    Dazu brauche ich allerdings – analog zum TC420 – 4 Ampere an den Ausgängen. Die von dir verwendeten LDD’s gibt’s aber nur bis 1500mA.
    Hättest Du eine Idee, welche Bauteile da gehen würden?

    1. Hallo Rolf,
      welche LED Leisten hast du denn genau? 4A erscheint mir ein wenig viel. Das klingt fast danach, als hätten die Leisten bereits KSQs integriert!

  18. Hallo!

    Erstmal Vielen Dank für das tolle Projekt.
    Funktioniert bei mir einwandfrei. Habe einen kleinen Hinweis der mir beim Hochladen auf das Board aufgefallen ist. Man sollte unbedingt beim Boardverwalter die ESP8266 Version 2.2.0 nehmen und nicht die 2.3.0 ansonsten sorgt das nur für Fehler und für abstrakte Zeichen beim seriellen Monitor.

    1. Noch eine Antowrt der Vollständigkeit halber. Das war ein sehr guter Hinweis. Man muss ganz schön aufpassen mit der ESP Version. Das ist schade und seltsam zugleich, aber ich habe dazu jetzt einen Vermerkt in der Doku und auf Github gemacht.
      Gruß Bernd

  19. Hallo Bernd,

    tolles Projekt, habe es nachgebaut. Jedoch habe ich ein Problem dabei.
    Beim hochspielen auf den WeMos bekomme ich folgende Fehlermeldung:

    sketch\AquaControl.cpp: In member function ‘void AquaControl::init()’:
    AquaControl.cpp:471: error: ‘nowMs’ was not declared in this scope
    CurrentMilli = nowMs();
    ^
    sketch\AquaControl.cpp: In member function ‘void AquaControl::proceedCycle()’:
    AquaControl.cpp:542: error: ‘nowMs’ was not declared in this scope
    CurrentMilli = nowMs();
    ^
    exit status 1
    ‘nowMs’ was not declared in this scope

    1. Hallo Mario,
      ich habe das Problem behoben. Ich hatte in der Time-Bibliothek eine Erweiterung gemacht, die in den Sourcen auf github fehlten.
      Habe jetzt einen Fork der Time-Bibliothek von PaulStoffregen erstellt. Bitte nutze diese Bibliothek
      https://github.com/Schullebernd/Time
      anstelle der Ursprünglichen. Dann müsste alles funktionieren (Habe meine Doku auch schon angepasst).
      Gruß Bernd

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.