DIY Steuerung für Licht, CO2, Düngemittel
Ein Aquarium regelmäßig zu Düngen ist für mich schon immer eine große Aufgabe gewesen. Dies liegt nicht nur daran, dass ich recht faul bin, sondern leider auch oft unterwegs und das Aquarium daher tagelang alleine laufen sollte.
Einen Futterautomat habe ich seit Jahren, auch einen CO2 Computer verwende ich schon seit Jahren.
Eine Düngeanlage für meine inzwischen 3 verwendeten Dünger wollte ich schon lange kaufen, mich hielt jedoch der hohe Preis vom Kauf ab.
Inzwischen sind ein-Platinen-Computer und Mikrocontroller zum Eigenbau von solchen Anlagen sehr günstig, es gibt viele Beispiele im Internet. So habe ich mich dazu entschlossen einen eigenen Düngecomputer zu bauen, der noch ein wenig mehr machen soll.
Meine Anforderungen waren:
Ansteuerung von 4 Düngepumpen
Zeitschaltuhr für Licht (mit extra Programm fürs Wochenende)
Steuerung der CO2 Zufuhr
Überwachung von Werten
Protokollierung im Internet
Da es ein größeres Thema ist habe ich den Bericht in verschiedene Teile aufgebaut.
Teil 1: Wahl der Plattform und der Komponenten
Teil 2: Verkabelung und Stromverbrauch der einzelnen Module
Teil 3: Software
Teil 4: Protokollierung im Internet mit Alarm Funktion
Teil 5: Fazit im laufenden Betrieb
Teil 1: Wahl der Plattform und der Komponenten
Die erste große Hürde war die Entscheidung über die verwendete Plattform. Generell gibt es eigentlich nur 2 in Frage kommende Systeme. Arduino oder ein ein-Platinen-Computer wie Raspberry mit Linux.
Vor- und Nachteile von Arduino:
+ Geringer Stromverbrauch
+ Viele Analoge und Digitale Ports
– Neue Programmiersprache (zumindest für mich neu)
– Braucht viele Module
Vor- und Nachteile von Raspberry:
+ Linux als Betriebssystem
+ Programmiersprache welche ich schon beherrsche (Python)
+ Netzwerkkarte on Board
– Linux als Betriebssystem
– Installation von Treibern
– Geringe Anzahl von Ports
Ich habe mir zuerst einen Raspberry PI 2 bestellt, bin dann aber zum Ergebnis gekommen, das der Vorteil „Linux als Betriebssystem“ auch nach hinten losgehen kann. Jeder kennt das, der schon mal über längere Zeit einen Linux Server hatte, irgendwann kommt ein Update, ein Fehler, eine volle Festplatte ect., dann geht erst mal nichts, die Kiste steht. Die Chance das so etwas passiert ist zwar gering, aber wenn das passiert während die CO2 Zufuhr an ist und die Düngepumpen laufen kann das schlecht ausgehen. Also habe ich kurzerhand den Raspberry als Video Wiedergabe hinter den Fernseher gebaut.
Neustart mit dem Arduino. Als ich den ersten Arduino (Mega) auf dem Tisch liegen hatte und die ersten Gehversuche hinter mir hatte musste ich mir eingestehen, dass ich erst noch weitere Module benötige, welche der Raspberry schon „on Board“ hat.
Meine bisher verwendeten Module / Boards:
1x Arduino Mega (kein Original, günstiger 10€ Nachbau)
1x RTC DS1307
1x ESP8266 ESP07
1x USB zu TTL
3x Level Shifter
1x 8-Fach Relais Modul auf 5V Basis
1x AMS1117 Stepdown Wandler
1x LM2596S Spannungswandler
1x 1.8 Zoll TFT zur Ausgabe am Aquarium
2x L298 Motortreiber
4x Dosierpumpen, Schlauchpumpen mit 12V
Hier eine Kleine Übersicht der Module und Funktionen:
RTC DS1307: Real Time Clock. Das ist eine Uhr für den Arduino. Der Arduino besitzt selbst keine Uhr oder Uhrzeit-Funktion. Man kann nur die Sekunden vom Start zählen. Da dies aber sehr unzuverlässig ist und bei eigenem Stromausfall nichts mehr stimmt ist es Sinnvoll eine Uhr zu verwenden, die auch einen Akku hat. Die Uhr benötigt nur 2 Pins, bei dem Mega sind es SCK und SLA, bei einem kleineren Arduino 2 Digitale Pins. Die RTC wird mit 5V Betrieben und muss nur einmal eingestellt werden.
ESP8266 ist ein WiFi Modul. Sie kann frei programmiert werden und hat eigentlich mehr Leistung und Speicher wie der verwendete Arduino. Jedoch hat sie recht wenige verfügbare Pins und ist damit ungeeignet als Basis. Deswegen wird sie nur als WLAN verwendet. Sie wird mittels 3.3V betrieben, das heißt auch die Steuersignale (RX & TX) müssen von 5V auf 3.3V gesenkt werden. Dies passiert mit einem Level Shifter. Ein zusätzliches Problem was das Modul bringt ist, dass die Pins weder in ein Breadboard passen noch in eine normale Lochraster-Platine – der Abstand ist (warum auch immer) anders.
USB zu TTL: Ist im Prinzip nichts anderes wie ein USB zu Seriell Adapter. Dieses wird benötigt um den ESP8266 zu flashen. Man kann dies zwar auch über den Arduino machen, habe ich aber erst gesehen als es zu spät war. Der USB zu TTL hat einen 5V und einen 3V Anschluss, jedoch sind die Steuersignale (RX & TX) in 5V. Es wird also ein Level Shifter benötigt.
Level Shifter: Ein Level Shifter wandelt Steuersignale um. Er benötigt zwei Stromquellen. In meinem Fall 5V und 3.3V. Er wandelt dann die Signale zwischen den zwei Spannungen um. Ich habe 4 Stück benötigt, da ich nur kleine Shifter bestellt habe, welche jeweils nur 4 Signale wandeln können.
8-Fach Relais Modul: Hier kann man Spannungen bis 220V/10A schalten. Dies wird für die Steuerung vom Licht und dem Nadelventil von der CO2 Anlage benötigt. Im Nachhinein hätte ich ein Modul mit 12V Spannung nehmen sollen. Ich habe zwar 5V zur Verfügung, jedoch verbraucht das Modul bei voller Funktion 350mA. Auf der 12V Seite habe ich viel mehr Reserven als auf der 5V Seite. Je Relais wird ein Digitaler Port vom Arduino benötigt. Ich habe extra ein 8-Fach Modul verwendet das ich noch Reserven habe falls ich z.B. den Futterautomat “hacken” will, da dieser nur 3 Programme an einem Tag machen kann.
AMS1117: Wandelt 5V auf 3.3V um zur Spannungsversorgung für die 3.3V Geräte.
LM2596S: Wandelt 1-16V auf 5V. Durch einen Regelbaren Wiederstand kann die Ausgangsspannung verändert werden.
1.8 Zoll TFT: Dient zum Ausgeben der aktuellen Werte am Aquarium. Zwar steht auf den Displays, dass sie mit 5V betrieben werden können, jedoch gilt dies nur für die Stromversorgung. Das Display und die Steuersignale benötigen 3.3V.
L298: Der Motortreiber kann zwei DC Motoren ansteuern. Es kann die Drehrichtung geändert werden und auch die Geschwindigkeit mittels einem PWM Signal. Dadurch dass man die Drehrichtung beeinflussen kann hat man die Möglichkeit mittels Dioden an einem Anschluss zwei Motoren unabhängig zu steuern. Man kann sie jedoch nicht gleichzeitig laufen lassen. Es würde also theoretisch ein L298 Modul reichen.
Dosierpumpen: Auf 12V basierende Schlauchpumpen. Ich habe sie aus Druckerpatronen Auffüll-Automaten ausgebaut. So waren sie viel günstiger.