Moin zusammen,
Also, ich suche für meine Terrariensteuerung eine schicke und ausbaufähig Steuerung und bin bei der Suche auf die Arduino-Boards gestoßen. Scheint ja für alles Die beste Lösung zu sein wie ich die letzten Tage so gelesen habe. Nun wollte ich mir dann mal nen Bausatz besorgen und habe noch was verrücktes neues gelesen. Jedes Terra mit einer einzelnen Nano Regeln und als Master ne Mega irgendwohin packen. Klingt ja sehr interessant. Also, meine Idee ist erstmal, mit ner Nano für das einfachste Becken anzufangen, dann jedes Becken nach und nach umrüsten bzw vllt parallel die Mega auch aufzubauen und nach und nach einbinden. Die wichtigste Frage nun, müssen die alle dann per Kabel direkt verbunden werden oder geht das auch via Wifi oder Bluetooth oder so? Also quasi per Funk einfach? Sie stehen nämlich an mehreren Stellen im Haus und da wäre eine weiterverdrahtung dann etwas umständlich.
Die Idee ist halt, in jedem terrarium auch eine Display Anzeige einzubauen und generell nachher irgendwo eine Hauptsteuerung mit Nextion Display und am liebsten auch per Android Apple das ich unterwegs ggf Alarme und Werte ablesen kann und Kleinigkeiten ändern umstellen kann etc.
Naja, wenn ich das so lese und drüber denke das ich noch null Erfahrungen damit habe.... Huiuiui, Megabaustelle würde ich sagen... aber ok, klein anfangen und dann Stück für Stück reinarbeiten habe ich mir gedacht. Hab keinen Stress damit wenn es etwas länger dauert
Das Arduino DIE Lösung ist glaub ich nicht. Da fallen mir auf Anhieb auch noch ein paar andere ein Für einen Anfänger aber durchaus eine gute Wahl.
WiFi geht. Bluetooth eher nicht, da die Reichweite doch stark begrenzt ist. Wenn sich die Becken in unterschiedlichen Zimmern befinden, ist es vorbei mit BT
Für WiFi gibt's extra Shields.
Grundsätzlich ist Diene Herangehensweise aber richtig. Erst mal mit einem Becken anfangen. Die Steuerung sollte vollkommen autonom arbeiten und nicht vom Mega abhängig sein. Später kannst Du das dann alles miteinander vernetzen.
Mit dem Arduino alleine ist es aber auch noch nicht getan. Du brauchst noch was, um Deine Verbraucher zu schalten und ein paar Sensoren + ggf. notwendiger externer Beschaltung ist auch noch nötig. Durchsuch aber mal das Forum hier nach Terrariensteuerung. Da gab es schon mehr als ein Projekt dazu.
Ja ok, das ich noch Relaiskarte, Wifi shield, temp sensoren und so brauche, hab ich schon gelesen, mir geht es hauptsächlich darum zu wissen, ob ich mit der Nano hinkomme, das ich das bestellen kann oder besser direkt die UNO wg. Dem plug&play der shields... habe mich durch die diversen Themen bereits gut durchgelesen, nur zwecks Verbindung der Arduinos jetzt so noch nichts gefunden. Naja, ich denke ich guck nachher nochmal was nun hier empfohlen wird und bestelle dann heute abend mal nen Schwung Teile das Ich mal anfangen kann zu probieren.
Hallo,
ich bin aktuell an etwas ähnlichen dran. Habe mir für meine Pflanzen eine Lampe aus Highpower LEDs gebaut welche ich mit dem Nano schalte und dimmen kann. Zusätzlich Temperatur-, Luftfeuchtigkeits und Bodenfeuchtigkeitssensoren welche einen Ventilator und eine Dosierpumpe steuern, alles zeitgesteuert über eine RTC. Die Werte werden auf einem LCD Display ausgegeben.
Für einzelne Tests habe ich noch einen Uno mit Steckbrett hier liegen, mit dem ich die Schaltungen aufbaue, bevor ich diese auf einer Platine verlöte.
Für den Feldeinsatz ist aber der Nano aufgrund der Größe hervorragend, ich habe diesen auf eine Platine gesteckt und mit Buchsen und Stecker die Sensoren, Display und co angeschlossen.
Wenn man dann wie du, mehrere gleiche Ausführungen aufbauen will, kann es auch durchaus sinnvoll sein, sich eigene Platinen ätzen zu lassen. Ich habe die mal ein Bild angehangen, wie es Prototyp aussehen kann.
Ok, auch sehr interessant. Ich habe schon überlegt wie ich das nachher alles gescheit verpacken, aber die Platinenlösung is mir nich eingefallen. Ja, so ist es eine nette erste Lösung. Na, erstmal gucken ob meine Nano heute endlich ankommt, dann geht's los... verrückt wieviel ausbauideen man direkt bekommt
Hallo zusammen,
kleine bescheidene Frage, ich fuchse mich jetzt hier seit Tagen durch das Forum und habe mein LCD Display endlich richtig ans Laufen bekommen.... Juhuuu, auch mein DHT21 funzt und gibt die richtigen Werte raus. Yeah
Nun meine Frage, im Display zeigt er mir die Werte korrekt an, nun möchte ich dahinter eine Statusabfrage haben, also, wert zu hoch, tief oder im OK Bereich, entsprechend soll dann noch etwas geschaltet etc. werden. Aber das alles kommt erst nach und nach dazu, jetzt erstmal die Frage, ob das nicht auch irgendwie einfacher geht als das mit den IF und Else, Ich hab das mit den Cases gesehen, aber mir raucht als blutiger Anfänger gerade so ein bisschen der Kopf und irgendwie versteh ich das nicht so ganz. Bin erstmal stolz wie Eule das das alles soweit funktioniert Nur ist es wahrscheinlich wenig sinnvoll, darauf weiter das Programm aufzubauen und am besten jetzt auf ein andere Variante zu wechseln, oder? Hat da jemand eine Idee, weil der jetzige Sketch ist ja noch einfach, wenn aber erstmal die anderen Sachen drin sind, wird es wohl etwas schwieriger das alles zu verstehen...
Hier mal mein aktueller Stand der Dinge
[code]
/* SunFounder I2C 20x4 LCD Module mit DHT21 am Arduino Uno
geplante Erweiterungen zur Terrariensteuerung
- RTC Modul 3231 zur Zeitschaltung für Beleuchtung / Heizung
- 2. Temp Fühler (DS18B20) für den Sonnenbereich
- Steuerung der Heizung / Beleuchtung über DHT21 / DS18B20 incl Tag/Nacht und Sommer/Winterschaltung
- WiFi Modul
*/
#include <Wire.h> //eingebundene Librarys
#include <LiquidCrystal_I2C.h>
#include <dht.h>
dht DHT;
#define DHT21_PIN 5 // Pin 5 als DHT21 festlegen
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Display Adressse und connections setzen
void setup() //void setup läuft einmal durch
{
lcd.begin(20, 4); //Display für 20 Zeichen und 4 Zeilen initialisieren
{
lcd.setCursor(3, 0); // Warteschleife für den DHT21
lcd.print("Initialisiere");
lcd.setCursor(4, 2);
lcd.print("-> DHT21 <-");
delay(3000);
lcd.clear();
Serial.begin(115200); //Testausgabe im Seriellen Monitor
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
lcd.backlight(); // LCD Backlight starten?!?!
// Text auf dem Display anzeigen lassen
lcd.setCursor(5, 0); //Zeilen und Spalten starten mit 0 -> Spalte 1 Zeile 1
lcd.print("Test DHT21"); //Text ausgeben
lcd.setCursor(0, 1); //Spalte 1 Zeile 2
lcd.print("====================");
delay(1000); // 1000ms = 1s Pause
lcd.setCursor(1, 2); //Spalte 4, Zeile 3
lcd.print("Temp :");
lcd.setCursor(2, 3); //Spalte 1, Zeile 4
lcd.print("rLF :");
// Ende setup()
}
void loop() //void loop() läuft immer extrem schnell durch (Endlosschleife)
{
Serial.print("DHT21, \t"); //Testprogramm im seriellen Monitor incl. Fehler
int chk = DHT.read21(DHT21_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error,\t");
break;
case DHTLIB_ERROR_ACK_L:
Serial.print("Ack Low error,\t");
break;
case DHTLIB_ERROR_ACK_H:
Serial.print("Ack High error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
Serial.print( DHT.humidity, 1); //Serielle Ausgabe der Messwerte DHT21
Serial.print("\t");
Serial.print("\t");
Serial.println(DHT.temperature, 1);
{
lcd.setCursor(8, 2); //Display Anzeige Temp. (Spalte 11, Zeile 2)
lcd.print(DHT.temperature, 1);
lcd.setCursor(13, 2);
lcd.print("C");
lcd.setCursor(8, 3); //Display ANzeige rLF. (Spalte 11, Zeile 3)
lcd.print(DHT.humidity, 1);
lcd.setCursor(13, 3);
lcd.print("%");
delay(1500); //Warteschleife zur Datenaktualisierung alle 3Sek
}
{
lcd.setCursor(16, 2);
// Temperatur Check
if (DHT.temperature > 26) //Wenn Temperatur über 26
{
lcd.print(" Hot"); //Dann Meldung das zu Warm
}
else //Und wenn das nicht so ist…
{
if (DHT.temperature < 23) //Wenn Temperatur unter 23
{
lcd.print("Cold"); //dann Meldung das zu Kalt
}
else //Wenn das auch nicht so ist
{
lcd.print(" OK "); //Dann Meldung das OK ist
}
}
}
{
lcd.setCursor(16, 3); // rLF Check
if (DHT.humidity > 85) //Wenn rLF über 85
{
lcd.print("Wet "); //Dann Meldung das zu feucht
}
else //Und wenn das nicht so ist…
{
if (DHT.humidity < 65) //Wenn rLF unter 65
{
lcd.print("Dry "); //dann Meldung das zu trocken
}
else //Wenn das auch nicht so ist
{
lcd.print(" OK "); //Dann Meldung das OK ist
}
}
}
}
[/code]
Ich hoffe ich habe das jetzt so richtig reinkopiert und es kann mir jemand in leicht verständlich sagen, welchen weg ich einschlagen sollte.
Achja, ich bau das gerade alles auf einem UNO R3 auf, evtl. soll es dann aber auf einem Nano laufen, aber erstmal der Einfachheithalber mit dem UNO anfangen
Besten Dank schonmal für eure Bemühungen
Ich habe die Loop mal ein wenig aufgeräumt, so sieht deine if-Abfrage auch besser aus.
Ich kann es leider nicht testen, sollte aber funktionieren.
void loop() //void loop() läuft immer extrem schnell durch (Endlosschleife)
{
Serial.print("DHT21, \t"); //Testprogramm im seriellen Monitor incl. Fehler
int chk = DHT.read21(DHT21_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error,\t");
break;
case DHTLIB_ERROR_ACK_L:
Serial.print("Ack Low error,\t");
break;
case DHTLIB_ERROR_ACK_H:
Serial.print("Ack High error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
Serial.print( DHT.humidity, 1); //Serielle Ausgabe der Messwerte DHT21
Serial.print("\t");
Serial.print("\t");
Serial.println(DHT.temperature, 1);
lcd.setCursor(8, 2); //Display Anzeige Temp. (Spalte 11, Zeile 2)
lcd.print(DHT.temperature, 1);
lcd.setCursor(13, 2);
lcd.print("C");
lcd.setCursor(8, 3); //Display ANzeige rLF. (Spalte 11, Zeile 3)
lcd.print(DHT.humidity, 1);
lcd.setCursor(13, 3);
lcd.print("%");
delay(1500); //Warteschleife zur Datenaktualisierung alle 3Sek
lcd.setCursor(16, 2);
// Temperatur Check
if (DHT.temperature > 26) //Wenn Temperatur über 26
{
lcd.print(" Hot"); //Dann Meldung das zu Warm
}
else if (DHT.temperature < 23) //Wenn Temperatur unter 23
{
lcd.print("Cold"); //dann Meldung das zu Kalt
}
else //Wenn das auch nicht so ist
{
lcd.print(" OK "); //Dann Meldung das OK ist
}
lcd.setCursor(16, 3); // rLF Check
if (DHT.humidity > 85) //Wenn rLF über 85
{
lcd.print("Wet "); //Dann Meldung das zu feucht
}
//Und wenn das nicht so ist…
else if (DHT.humidity < 65) //Wenn rLF unter 65
{
lcd.print("Dry "); //dann Meldung das zu trocken
}
else //Wenn das auch nicht so ist
{
lcd.print(" OK "); //Dann Meldung das OK ist
}
}
Eine Alternative mit Switch/Case macht es nicht einfacher.
Wenn schon mit WiFi, warum nicht gleich den ESP8266?
Da gibt es den Wemos D1 und Wemos D1 Mini.
Da sparst du dir das WiFi Shield.
Lcd hast ja schon mit I2C, für den rest sollten die Pins doch reichen.
@hotsystems, cool, danke, sieht wirklich besser aus , ich teste später mal und guck nach den genauen unterschieden... jetzt gleich ruft erst die Arbeit...
@skorpi, naja, ein shield hab ich eh nicht bestellt, es wird erstmal das ESP8266 ESP-01. Wobei eh das reinkommt, fehle erst noch eine Menge andere Sachen, und dieses Wochenende bin ich ziemlich voll gestopft mit Terminen und arbeit. Na mal gucken...
Werde mich nachher nochmal n bisschen weiter "schlau" suchen und lesen in der Hoffnung noch was nettes brauchbares zu finden
Snakefriend:
@hotsystems, cool, danke, sieht wirklich besser aus , ich teste später mal und guck nach den genauen unterschieden... jetzt gleich ruft erst die Arbeit...
@skorpi, naja, ein shield hab ich eh nicht bestellt, es wird erstmal das ESP8266 ESP-01. Wobei eh das reinkommt, fehle erst noch eine Menge andere Sachen, und dieses Wochenende bin ich ziemlich voll gestopft mit Terminen und arbeit. Na mal gucken...Werde mich nachher nochmal n bisschen weiter "schlau" suchen und lesen in der Hoffnung noch was nettes brauchbares zu finden
Auch das mit dem "ESP8266 ESP-01" würde ich mir heute überlegen.
Der "Wemos D1 mini" ist schon ziemlich cool. Hat reichlich Pins und ist direkt über die IDE zu flashen.
Bin damit kürzlich angefangen und habe mir gleich noch welche in der Bucht dazu bestellt. "Geile Teile"
Hmmm... Na toll, hätte ich man erst hier gefragt
Snakefriend:
Hmmm... Na toll, hätte ich man erst hier gefragt
Sorry, wollte dich nicht verärgern.
Hehe, ne, keine Sorge, ich habe ja eh noch mehrere Projekte im Kopf und da brauch ich ja sowieso noch mehrere Teile auf Dauer. Also werden beide Teile sicherlich ne Verwendung finden. Ich werde mich aber erstmal nachher wegen dem WeMos mal schlau lesen, über den weiß ich ja so rein gar nichts, hab da auch kein Auge die letzten Tage dafür gehabt. Seh ich das denn richtig jetzt so auf die schnelle, das das n eigener Prozessesor ist? Also quasi das der auch eigenständig ohne Arduino laufen kann?
ja die Boards haben auch eine eigene cpu die du mit der ArduinoIDE programmieren kannst.
gib mal bei youtube "esp8266 getting started" da findest du diverse Videos wie du die IDE für den esp8266 fit machst.
Dann sieh dir ein paar Beispiele in der IDE an zum ESP.
Wenn das Board auch etwas größer sein darf ist NodeMCU auch eine gute Alternative.
Für den Steckbretttestaufbau besser die version v1.0 nehmen, oder für v0.9 zwei Steckbretter nebeneinander legen wegen des breiteren Pin-Abstandes.
vermutlich wirst du dann für dein Masterdevice auch einen ESP8266 nehmen
Snakefriend:
Hehe, ne, keine Sorge, ich habe ja eh noch mehrere Projekte im Kopf und da brauch ich ja sowieso noch mehrere Teile auf Dauer. Also werden beide Teile sicherlich ne Verwendung finden. Ich werde mich aber erstmal nachher wegen dem WeMos mal schlau lesen, über den weiß ich ja so rein gar nichts, hab da auch kein Auge die letzten Tage dafür gehabt. Seh ich das denn richtig jetzt so auf die schnelle, das das n eigener Prozessesor ist? Also quasi das der auch eigenständig ohne Arduino laufen kann?
War ein Joke...
Ja, der Wemos hat, so wie alle ESP8266 einen sehr leistungsfähigen Controller drauf, der Wemos hat noch zusätzlich zum einfachen ESP mehr IOs. Daher kann man für viele Projekte auf einen Arduino verzichten.
Und auch preislich ist der eine absolute Alternative.
Hui, hab mal n bisschen nach dem WeMos geguckt... scheint echt n interessantes ding zu sein, aber erstmal bastel ich auf dem UNO weiter denk ich, die Teile dafür hab ich ja erstmal da und der Anfang ist gemacht