Projekt: Bewässerung Hochbeet mit thingspeak aufzeichnung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Projekt: Bewässerung Hochbeet mit thingspeak aufzeichnung

      Hallo Leute,

      habe mir ein Hochbeet aus Paletten zusammen gebaut und danach noch mit Schindeln versehen.
      Da ich das ganze vor habe zu automatisieren mit einer Bewässerung möchte ich euch hier über dieses Projekt einen kompletten Baubericht zum Projekt nach und nach zeigen.

      Ziel:

      - Dachrinnenwasser über Ventil abzweigen
      - Faß unter dem Hochbeet versteckt befüllen
      - Regenwasser nutzen zum bewässern

      Meine verwendetetn Komponenten bisher:

      - Ventil ansteuerung mittels DC Motor und einer Stromabschaltung wenn das Ventil am anschlag ist
      - 2x Pumpe
      - Bewässerungssystem und DIverses Zubehör Schlauch / Festo Kupplung
      - 2 fach Relaise

      - DC Motortreiber ( war erst gedacht für das Ventil... jetzt dient es nur noch als Spannungsquelle 5Volt, werde ich aber noch tauschen auf so eins, da ich 5Volt und 3,3 Volt brauche )

      - Arduino Nano v3 ( 5er Pack )

      - Terminaladapter für Nano

      - ESP8266 WLAN Modul ( um Werte an www.thingspeak.com zu senden - Mein Projekt Channel dafür LINK )

      - Fühler für die Wassertemperatur ( Wenn das Wasser kälter wird zum auspumpen - Winter! )

      - Bodenfühler habe ich im Moment einen selbst gebauten, wenn dieser keine guten Ergebnisse leifert werde ich wohl oder übel einen Guten teuren bestellen müssen
      - RealTime Clock Modul - Für die Uhrzeit zum bewässern
      - Ultraschall Sensor einer würde reichen aber kann man ja wieder mal für was brauchen ^^ ( um die Distanz zum Wasser zu messen )


      - Solarpanel und Laderegler aber dies kommt später in einem Eigenen Projekt ( Solar Tracker )






      Bisher läuft, die Steuerung des Dachrinnen Ventils.


      - Ultraschallsensor sagt abstand zu groß, Ventil öffnen. Es wird gewartet bis die Tonne voll ist.

      - Ultraschallsensor sagt abstand zu klein Ventil schließen. Tank ist voll und Ventil wird geschlossen.


      Habe hier noch als Zusatz einen Schwimmer verbaut der noch eingebunden gehört.

      Dieser soll quasi als NOT Stop dienen falls der Ultraschallsensor versagen sollte


      Quellcode

      1. // VENTIL Programm /////////////////////////
      2. void Ventil()
      3. {
      4. if ((mm <= abstandstop) and (ventil == HIGH)) // Wenn Abstand (mm) kleiner oder gleich UND Ventil offen
      5. {
      6. digitalWrite(in1, HIGH); // Ventil schließen
      7. digitalWrite(in2, LOW); // Ventil schließen
      8. //analogWrite(enA, 255); // Motor Geschwindigkeit 0-255
      9. delay(dzeit); // Zeit bis Ventil geschlossen
      10. ventil = LOW; // Ventil Status auf geschlossen setzen
      11. }
      12. if ((mm >= abstandstop) and (ventil == LOW)) // Wenn Abstand (mm) größer oder gleich UND Ventil geschlossen
      13. {
      14. digitalWrite(in1, LOW); // Ventil öffnen
      15. digitalWrite(in2, HIGH); // Ventil öffnen
      16. //analogWrite(enA, 255); // Motor Geschwindigkeit 0-255
      17. delay(dzeit); // Zeit bis Ventil geöffnet
      18. ventil = HIGH; // Ventil Status auf offen setzen
      19. }
      20. if ((mm >= abstandstop) and (ventil == HIGH)) // Wenn Abstand (mm) größer oder gleich UND Ventil geöffnet
      21. {
      22. digitalWrite(in1, LOW); // Ventil Stop
      23. digitalWrite(in2, LOW); // Ventil Stop
      24. //analogWrite(enA, 255); // Motor Geschwindigkeit 0-255
      25. }
      26. // Sicherheitsabschaltung durch Schwimmer im TANK!!!!
      27. if ((schwimmer == LOW) and (ventil == LOW)) // Wenn Schwimmer nicht im Wasser und Ventil geschlossen
      28. {
      29. digitalWrite(in1, LOW); // Ventil Stop
      30. digitalWrite(in2, LOW); // Ventil Stop
      31. }
      32. if ((schwimmer == HIGH) and (ventil == LOW))
      33. {
      34. digitalWrite(in1, HIGH); // Ventil schließen
      35. digitalWrite(in2, LOW); // Ventil schließen
      36. }
      37. }
      Alles anzeigen







      Die Distanzmessung sieht so aus:

      Quellcode

      1. // Ultraschallsensor Programm //////////////
      2. void distanzmessung ()
      3. {
      4. long duration, inches, mm; // Ultraschall Distanzsensor
      5. digitalWrite(triggerPin, LOW); // Ultraschall Distanzsensor
      6. delayMicroseconds(2); // Ultraschall Distanzsensor verzögerer
      7. digitalWrite(triggerPin, HIGH); // Ultraschall Distanzsensor
      8. delayMicroseconds(5); // Ultraschall Distanzsensor verzögerer
      9. digitalWrite(triggerPin, LOW); // Ultraschall Distanzsensor
      10. duration = pulseIn(echoPin, HIGH); // Ultraschall Distanzsensor
      11. mm = microsecondsToMillis(duration); // Ultraschall Distanzsensor
      12. /*
      13. Serial.print(mm); // Seriell Ultraschall Sensor - Millimeter
      14. Serial.println(" mm"); // Serieller Text - mm
      15. Serial.print(duration); // Seriell Ultraschall Sensor - Zeit
      16. Serial.println(" Sekunden"); // Serieller Text - Sekunden
      17. delay(1000); // Zeit abwarten um Daten besser lesen zu können
      18. */
      19. }
      20. long microsecondsToMillis(long microseconds)
      21. {
      22. return microseconds / 3 / 2;
      23. }
      Alles anzeigen



      Im Setup noch die Werte zum einstellen ab wann der Distanz Sensor was machen soll:

      Brainfuck-Quellcode

      1. // Einstellbare Werte ------------------------------------------------------------------#
      2. // #
      3. int abstandstop = 100; // Abstand zum Wasser fuer Stop #
      4. int abstandstart = 150; // Abstand zum Wasser fuer fuellen #



      Das nächste Thema ist die Bewässerung:
      Hier gibt es zahllose Möglichkeiten die einem den Kopf zerbrechen :rolleyes: .
      Gerade mit dem Thema Bodentemperatur, Sonneneinstrahlung, Feuchte, etc... ?(
      Für mich kommt es eig. nur simpelst in Frage, da ich noch immer damit beschäftigt bin den Bodenfühler ordentlich ein zu programmieren...

      - täglich bewässern zu einer gewissen Uhrzeit
      - Checken ob die Erde noch feucht ist ( falls es regnete, dann braucht es nicht zu bewässern )

      Momentan sieht der Code so aus: ( Noch ganz ohne den Bodenfühler, rein nur das Relaise schalten zu einer gewissen Uhrzeit)

      Quellcode

      1. // Bewaesserung der Pflanzen
      2. void giessen()
      3. {
      4. DateTime now = rtc.now();
      5. // Pumpe1 Pflanzen die die normale Menge Wasser benötigen
      6. if (now.hour() == stunde & now.minute() == minp12an & now.second() >= sek ) // Einschalten um // Uhrzeit ist im Setup
      7. {
      8. digitalWrite(Pumpe1,LOW); // Pumpe1 AN
      9. statusPumpe1 = HIGH;
      10. display.setTextSize(2);
      11. display.setTextColor(WHITE);
      12. display.setCursor(20,0);
      13. display.print("Pumpe 1 = ");
      14. display.println(statusPumpe1);
      15. Serial.print("Pumpe 1 = ");
      16. Serial.println(statusPumpe1);
      17. }
      18. else if (now.hour() == stunde & now.minute() == minp1aus & now.second() >= sek) // Auschschalten um // Uhrzeit ist im Setup
      19. {
      20. digitalWrite(Pumpe1, HIGH); // Pumpe1 AUS
      21. statusPumpe1 = LOW;
      22. Serial.print("Pumpe 1 = ");
      23. Serial.println(statusPumpe1);
      24. }
      25. // Pumpe 2 Pflanzen die wo etwas mehr Wasser brauchen
      26. if (now.hour() == stunde & now.minute() == minp12an & now.second() >= sek ) // Einschalten um // Uhrzeit ist im Setup
      27. {
      28. digitalWrite(Pumpe2,LOW); // Pumpe2 AN
      29. statusPumpe2 = HIGH;
      30. Serial.print("Pumpe 2 = ");
      31. Serial.println(statusPumpe2);
      32. }
      33. else if (now.hour() == stunde & now.minute() == minp2aus & now.second() >= sek) // Auschschalten um // Uhrzeit ist im Setup
      34. {
      35. digitalWrite(Pumpe2, HIGH); // Pumpe2 AUS
      36. statusPumpe2 = LOW;
      37. Serial.print("Pumpe 2 = ");
      38. Serial.println(statusPumpe2);
      39. }
      Alles anzeigen

      Im Setup die einstellbaren Zeiten
      für Pumpen AN und Pumpe 1 aus oder Pumpe 2 aus.
      Da es ja Pflanzen gibt die mehr Wasser brauchen habe ich zwei Pumpen :)

      Im Code steht:
      Um 4 Uhr morgens Pumpe 1 und 2 einschalten
      Um 4:04 Uhr Pumpe 1 AUS
      um 4:05 Pumpe 2 AUS

      Quellcode

      1. // Uhrzeiten fuer Bewaesserung
      2. int stunde = 4; // Stunde - da ident nur eine Variable
      3. int minp12an = 00; // Minute - Pumpe 1 und 2 AN
      4. int minp1aus = 4; // Minute - Pumpe 1 AUS
      5. int minp2aus = 5; // Minute - Pumpe 2 AUS


      Bodenfeuchte Sensor:

      Hier bin ich noch am tüfteln wie ich es einbinde in das Programm bewässern



      Der reine Code für den Bodensensor sieht momentan so aus:

      Quellcode

      1. //Bodenfeuchte Sensor SETUP
      2. void setSensorPolarity(boolean wechsel){
      3. if(wechsel){
      4. digitalWrite(voltwechselPin1, HIGH);
      5. digitalWrite(voltwechselPin2, LOW);
      6. }else{
      7. digitalWrite(voltwechselPin1, LOW);
      8. digitalWrite(voltwechselPin2, HIGH);
      9. }
      10. }
      11. // LOOP Bodenfeuchte
      12. void bodenfeuchte ()
      13. {
      14. // Bodenfeuchte Sensor
      15. setSensorPolarity(true);
      16. delay(wechseltimer);
      17. int val1 = analogRead(bodensensor);
      18. analogRead(bodensensor);
      19. delay(wechseltimer);
      20. setSensorPolarity(false);
      21. delay(wechseltimer);
      22. // invert the reading
      23. int val2 = 1023 - analogRead(bodensensor);
      24. analogRead(bodensensor);
      25. //
      26. reportLevels(val1,val2);
      27. }
      28. // Bodenfeuchte Ausgabe
      29. void reportLevels(int val1,int val2){
      30. int avg = (val1 + val2) / 2;
      31. //avg = (val1 + val2) / 2;
      32. String msg = "avg: ";
      33. msg += avg;
      34. Serial.println(msg);
      35. display.setTextSize(2);
      36. display.setTextColor(WHITE);
      37. display.setCursor(10,0);
      38. display.clearDisplay();
      39. display.println(msg);
      40. display.display();
      41. // delay(2000);
      42. }
      Alles anzeigen

      Das Hochladen von Daten auf Thingspeak:

      Hier muss eure SSID vom WLAN rein, das Passwort und der Thingspeak API Key.
      Habe den Channel auf Public stehen so das jeder rein schauen kann.
      Momentan ist nur Feld 1 aktiv und ein Helligkeitssensor angeschlossen zum testen ob es klappt.

      Quellcode

      1. int licht = A1;
      2. int lichtval = 0;
      3. String apiKey = "U1lOö4lFBo1G2öP56öT"; // replace with your channel's thingspeak WRITE API key
      4. String ssid="WLAN_SSID"; // Wifi network SSID
      5. String password ="PASSWORT"; // Wifi network password
      6. boolean DEBUG=true;
      7. //======================================================================== showResponce
      8. void showResponse(int waitTime){
      9. long t=millis();
      10. char c;
      11. while (t+waitTime>millis()){
      12. if (espSerial.available()){
      13. c=espSerial.read();
      14. if (DEBUG) Serial.print(c);
      15. }
      16. }
      17. }
      18. //========================================================================
      19. boolean thingSpeakWrite(float value1){
      20. String cmd = "AT+CIPSTART=\"TCP\",\""; // TCP connection
      21. cmd += "184.106.153.149"; // api.thingspeak.com
      22. cmd += "\",80";
      23. espSerial.println(cmd);
      24. if (DEBUG) Serial.println(cmd);
      25. if(espSerial.find("Error")){
      26. if (DEBUG) Serial.println("AT+CIPSTART error");
      27. return false;
      28. }
      29. String getStr = "GET /update?api_key="; // prepare GET string
      30. getStr += apiKey;
      31. getStr +="&field1=";
      32. getStr += String(value1);
      33. // getStr +="&field2=";
      34. // getStr += String(value2);
      35. // getStr +="&field3=";
      36. // getStr += String(value3);
      37. // ...
      38. getStr += "\r\n\r\n";
      39. // send data length
      40. cmd = "AT+CIPSEND=";
      41. cmd += String(getStr.length());
      42. espSerial.println(cmd);
      43. if (DEBUG) Serial.println(cmd);
      44. delay(100);
      45. if(espSerial.find(">")){
      46. espSerial.print(getStr);
      47. if (DEBUG) Serial.print(getStr);
      48. }
      49. else{
      50. espSerial.println("AT+CIPCLOSE");
      51. // alert user
      52. if (DEBUG) Serial.println("AT+CIPCLOSE");
      53. return false;
      54. }
      55. return true;
      56. }
      57. //================================================================================ setup
      58. void setup() {
      59. DEBUG=true; // enable debug serial
      60. Serial.begin(9600);
      61. licht = INPUT;
      62. espSerial.begin(9600); // enable software serial
      63. // Your esp8266 module's speed is probably at 115200.
      64. // For this reason the first time set the speed to 115200 or to your esp8266 configured speed
      65. // and upload. Then change to 9600 and upload again
      66. //espSerial.println("AT+RST"); // Enable this line to reset the module;
      67. //showResponse(1000);
      68. //espSerial.println("AT+UART_CUR=9600,8,1,0,0"); // Enable this line to set esp8266 serial speed to 9600 bps
      69. //showResponse(1000);
      70. espSerial.println("AT+CWMODE=1"); // set esp8266 as client
      71. showResponse(1000);
      72. espSerial.println("AT+CWJAP=\""+ssid+"\",\""+password+"\""); // set your home router SSID and password
      73. showResponse(5000);
      74. if (DEBUG) Serial.println("Setup completed");
      75. }
      76. // ====================================================================== loop
      77. void loop() {
      78. // Read sensor values
      79. int lichtval = analogRead(A0);
      80. float t = analogRead(A0);
      81. //float h = dht.readHumidity();
      82. if (isnan(t) ) {
      83. if (DEBUG) Serial.println("Failed to read from DHT");
      84. }
      85. else {
      86. if (DEBUG) Serial.println("Helligkeit="+String(t)+" LUX");
      87. //if (DEBUG) Serial.println("Humidity="+String(h)+" %");
      88. thingSpeakWrite(t); // Write values to thingspeak
      89. }
      90. // thingspeak needs 15 sec delay between updates,
      91. delay(20000);
      92. }
      Alles anzeigen


      Die ganzen Setup Geschichten habe ich jetzt nicht gepostet, bei interesse stelle ich aber dann das fertige komplette Projekt dann zur verfügung.
      Weiteres wird hier folgen zum einbau am Hochbeet, aber dies wird noch einiges an Zeit in anspruch nehmen da ich wirklich blutiger anfänger bin.

      Hier noch ein paar Bild inspirationen.
      Ja und erschlagt mich nicht für meinen Aufbau (elektronik), bin gelernter Elektriker und da wird bei Kundschaft ordentlich installiert und zuhause sieht es halt so aus.
      Ganz ohne Schaltplan und alles im Kopf :D . Der Draht da, dieser hier und der muss hier hin 8o .
      Werde mich aber halbwegs zusammen reißen wenn ich es in ein Gehäuse im freien dann einbaue 8)

      Wie ihr auf den Bilder vielleicht :P , erkennen könnt sind noch drei Schalter angeschlossen.
      Diese sollten dazu dienen die Pumpen einzeln einzuschalten oder gemeinsam, um manuell zu bewässern oder auspumpen zu können. Dieser Code teil fehlt aber auch noch.

      Ja und es wächst und gedeit 8o * lecker*
      Bilder
      • 20170424_181348.jpg

        508,04 kB, 1.024×768, 14 mal angesehen
      • 20170506_173359.jpg

        424,93 kB, 1.024×768, 14 mal angesehen
      • 20170518_201859.jpg

        369,39 kB, 1.024×768, 16 mal angesehen
      • 20170529_211827.jpg

        333,14 kB, 1.024×768, 16 mal angesehen
      • 20170611_154006.jpg

        399,4 kB, 1.024×768, 17 mal angesehen
      • 20170514_112414.jpg

        66,76 kB, 576×768, 13 mal angesehen
      • 20170611_152437.jpg

        148,17 kB, 576×768, 14 mal angesehen
      • 20170611_152454.jpg

        163,59 kB, 576×768, 14 mal angesehen
      • 20170611_152501.jpg

        166,51 kB, 576×768, 15 mal angesehen
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hi Fritz,

      Ja macht ordentlich Spaß zu hirnen auch wenn es ewig dauert und es Tage gibt an denen ( überhaupt) nichts vorwärts geht weil ein Knopf im Hirn ist.

      Ich zerplücke dann immer mit einem neuen Sketch und mache nur diesen einzelnen Ansatz und spiele diesen ein um zu testen. Was passiert und ob es das macht was ich gerne hätte.

      Im Moment steht die Sache mit millis im Raum. Habe das Problem das mein Sketch schon 7 Sekunden braucht und mit thingiverse nochmal 16 Sekunden bis der Sketch durchlaufen ist. Mit millis macht er das im Hintergrund und der Sketch läuft aber weiter. Brauche das damit ich nicht ewig warte bis er den Status der Schalter wo ich manuell drücken will abfrägt. :saint:
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hi,
      klasse Hochbeet. Ich hab das Thema auch noch auf der Uhr.
      Allerdings wird bei mir die gesamte Intelligenz in Openhab drin sein, so dass ich im Grunde nur einen Sensor für die Bodenfeuchte und ein Magnetventil brauche. Letzteres liegt schon zuhause bereit. Aber einen dauerhaft funktionierenden Bodenfeuchtesensor, der sich nicht selbst wegoxidiert oder auf Dauer erheblich driftet hab ich noch nicht gefunden :(. Die Billig-Dinger für den Arduino taugen leider nix für dauerhaften Einsatz....

      Also: Weitermachen und berichten bitte:)

      Grüße

      Andreas
      Gruß

      Andreas
    • Hallo Leute,

      @ Andreas: Eben taugen die nichts, hab da auch einen versucht. Die sind nach einer Woche schon ziemlich im eimer durch die Elektrolyse.... Werde auf jedenfall weiter machen und auch berichten :!:

      @Fritz: Ja über den bin ich auch schon gestolpert, netter Thread! Danke nochmal fürs posten. Wurde dort auch schon verlinkt wo mein erster Beitrag steht.

      Bin aber im allgemeinen doch eher unzufrieden mit dem Forum :( , teilweise sind sehr sehr Gute Beiträge in dem Forum und teilweise wird alles zerpflückt und es geht viel am Thema vorbei...
      Hatte hier einen Versuch gestartet... Bin mir aber zum Schluß eher verarscht vor gekommen ?( Projekt Wassersammler. Bis zum Post 8 war ja alles ok, aber dann... bei 13 hab ich es nochmal versucht.
      Ja und bei Post Nummer 19 hab ich dann überhaupt keine Antwort mehr bekommen und es war für mich klar ich muss ohne diese Hilfsmöglichkeit aus kommen :cursing: .

      Echt schade, wenn die Leute auf so etwas beharren oder nicht akzeptieren wie meine Nagel Variante von dieser Seite ( gardenbot ).

      Schade um die Energie || .
      Schlussstrich---------------------------------------------------------- :P

      Bin im Moment durch das schöne Wetter verhindert, werde aber bald weiter basteln am Code.
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • KampfHund schrieb:

      Bin aber im allgemeinen doch eher unzufrieden mit dem Forum , teilweise sind sehr sehr Gute Beiträge in dem Forum und teilweise wird alles zerpflückt und es geht viel am Thema vorbei...
      Hatte hier einen Versuch gestartet... Bin mir aber zum Schluß eher verarscht vor gekommen
      Das kenne ich, daher stelle ich da auch keine Anfrage mehr, es gibt einzelne die wirklich Kompetent und Sachlich sind dort und gerne mit Geduld weiterhelfen sofern der TO mitarbeitet (was du ja auch gemacht hast), die anderen schauen von oben herab; aber wie du schreibst

      KampfHund schrieb:

      Schlussstrich----------------------------------------------------------
      Im Netz findet ja man doch meistens mit allerdings mehr Suchaufwand und Code-Bastelein eine für sich passende Lösung (dauert halt meist läääänger 8| )
      Die "millis" Geschichte ist eine Supersache, aber ich habe auch ewig gebraucht bis ich sie im laufen hatte bei der Carrera-Bahn
      Ich hänge mal meinen Sketch an, vielleicht kannst du da noch was mit anfangen, habe auch einige Kommentare drin.
      Ist jetzt allerdings etwas schwierig Fragen dazu zu beantworten da das Projekt schon 2 Jahre alt ist und ich schon lange nichts mehr mit Ardu gemacht habe... :/
      Dateien
      Gruß Fritz
      "...Trial & Error, wenn was nicht klappt, probier was anderes, vielleicht klappt das ja auch nicht :-)"
    • Hi Fritz,

      Ja leider, aber wie du schon sagst man findet meist ähnliches und durch trial amd error kommt man auch irgendwie zu einem erfolgserlebnis.

      Ja hier tu ich mir noch ein wenig schwer aber das Tutorial mit dem Nachtwächter ist nicht schlecht. Muss aber noch schauen wie sich das verhält mit dem Buffer Overflow ( der sei ja nach ca.50 Tagen) voll und es geht nicht mehr weiter. Irgendwie kann man das aber verhindern in dem man ihn zurück setzt.

      Werde mir deinen mal genauer anschauen Danke fürs hochladen.
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • KampfHund schrieb:

      Muss aber noch schauen wie sich das verhält mit dem Buffer Overflow ( der sei ja nach ca.50 Tagen) voll und es geht nicht mehr weiter. Irgendwie kann man das aber verhindern in dem man ihn zurück setzt.
      So als Quick&Dirty Lösung: eine RTC mit Timer und Reset Befehl einbauen ?(
      Gruß Fritz
      "...Trial & Error, wenn was nicht klappt, probier was anderes, vielleicht klappt das ja auch nicht :-)"
    • Hi zusammen,

      @ Fritz: nee das muss ich schon in der Software raus bekommen :P ... irgendwann :D .

      Andere Frage:
      Stehe gerade vor dem Problem das ich D13 auch noch brauche :rolleyes: (Der Nano v3 ist jetzt echt voll belegt 8) )
      D13 geht ja angeblich auf die LED auf dem Arduino und deshalb kann man den nicht nutzen als reinen Digitalen Eingang... Ich brauch den aber für meinen Bodentemperatur Fühler!

      Jemand eine Ahnung wie ich den dazu bekomme dass er funzt ?
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Huhu´s,

      ja hab eh einen 18B20 dran hängen über OneWire.
      Keine Ahnung was ich dem erklären muss damit er will :S , mir jetzt "wurscht", bis evtl. zum nächsten Projekt...

      Habe kurz geschaut ob ich einen Analogen her nehmen kann 8) .
      Siehe da! Die Pins Analog 0/1/2/3/4/5 können als Digitale verwendet werden auf dem Arduino Nano :thumbup:

      https://store.arduino.cc/arduino-nano schrieb:

      The Nano has 8 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts, though is it possible to change the upper end of their range using the analogReference() function. Analog pins 6 and 7 cannot be used as digital pins. Additionally, some pins have specialized functionality:
      Klasse.
      Jetzt kommt auch ein Wert auf #define ONE_WIRE_BUS 14
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Optional: Wetterstation

      Habe noch einen 18B20 Fühler gekauft um die Bodentemperatur zu erfassen. Hat keinerlei Funktion! Könnte aber auch zum bewässern oder zum checken ob bewässert wurde her genommen werden.
      Einen DHT22 um die Luftfeuchte und die Lufttemperatur zu messen. Hat keinerlei Funktion! Dient mir lediglich als Wetterstation am Arduino weil noch Reserven waren :rolleyes: .
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Michael,

      Danke für den Link, dies ist aber sehr kompliziert. da musst du erst den Sketch zum scannen aufspielen und die Adressen auslesen und dann noch komplex im Code.

      Das geht so einfacher.
      Mit der OneWire und der DallasTemperature Libary

      Zahlen einsetzen:
      sensors.getTempCByIndex(0)); // Fühler 1
      sensors.getTempCByIndex(1)); // Fühler 2

      Siehe hier an meinem Beispiel für 2 Fühler

      C-Quellcode

      1. void Bodentemperatur ()
      2. {
      3. //Serial.print(" Angeforderte Temperatur...");
      4. sensors.requestTemperatures(); // Send the command to get temperature readings
      5. //Serial.println("ERLEDIGT");
      6. /********************************************************************/
      7. Serial.print("Boden Temperatur ist: ");
      8. Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"?
      9. // You can have more than one DS18B20 on the same bus.
      10. // 0 refers to the first IC on the wire
      11. }
      12. void Wassertemperatur ()
      13. {
      14. //Serial.print(" Angeforderte Temperatur...");
      15. sensors.requestTemperatures(); // Send the command to get temperature readings
      16. //Serial.println("ERLEDIGT");
      17. /********************************************************************/
      18. Serial.print("Wassertemperatur ist: ");
      19. Serial.println(sensors.getTempCByIndex(1)); // Why "byIndex"?
      20. // You can have more than one DS18B20 on the same bus.
      21. // 0 refers to the first IC on the wire
      22. }
      Alles anzeigen
      Viele Wege führen nach Rom :)
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Alex

      schau mal ob du auch die Seriennummern der Fühler bekommst da ist jeden eine eindeutige einprogrammiert Dafür müsste es ach einen eigenen Befehl geben.

      der Index kann sich bei mehren Fühlern ändern mit der seriennummer kannst du jeden Fühler genau zuordnen. das ist wichtig wenn du Fühler am Bus entfernst und hinzufügst.

      lg
      Fadi
      lG
      Fadi

      Baubericht der 107XL, Idee und Planung der Querfräse