Arduino SmartGarden

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

    • Arduino SmartGarden

      Arduino SmartGarden

      Teile:
      • Arduino
      • DHT22
      • LCD-Display 1602A
      • 4-Channel Relay
      • 2x Moisture Sensor
      • 9V Netzteil


      Als Erstes ladet Ihr denn Code auf den Arduino!
      Hier könnt Ihr meine libraries.rar herunter.
      Diese fügt Ihr in den C:\Users\Lehrling\Documents\Arduino Ordner ein.

      Quellcode: garden.ino

      1. #include <Servo.h>
      2. #include "DHT.h"
      3. #include <LiquidCrystal.h>
      4. #define DHTPIN 7 // what pin we're connected to
      5. #define DHTTYPE DHT22 // DHT 22 (AM2302)
      6. #define fan 8
      7. #define heat 6
      8. #define pumpe A2
      9. #define feucht A3 //10 pinmode vorher (digital)
      10. #define feucht2 A4
      11. #define servo 13
      12. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
      13. int maxHum = 60;
      14. int maxTemp = 32;
      15. int minHum = 40;
      16. int minTemp = 30;
      17. byte Celsius[8] = {B00100,B01010,B00100,B0000,B00000,B00000,B00000,B00000}; //° Pixel festgelegt!!
      18. long laenge;
      19. long cm;
      20. int z = 0;
      21. int Pflanze1 = 0; //Deklarierung als Integer für Pfalnze 1
      22. int Pflanze2 = 0; //Deklarierung als Integer für Pflanze 2
      23. int Pflanzemax = 700; //Maximaler Feuchtigkeitswert für Berechnung
      24. int maxfeuchtigkeitslvl = 400;
      25. int minfeuchtigkeitslvl = 250;
      26. float sensorPin = A3; //Sensor Pflanze 1 auf Pin Analog 0
      27. float sensorPin2 = A4; //Sensor Pflanze 2 auf Pin Analog 1
      28. DHT dht(DHTPIN, DHTTYPE);
      29. Servo myservo;
      30. void setup() {
      31. lcd.begin(16, 2);
      32. pinMode(13,OUTPUT);
      33. pinMode(fan, OUTPUT);
      34. pinMode(heat, OUTPUT);
      35. pinMode(feucht,OUTPUT);
      36. pinMode(feucht2,OUTPUT);
      37. pinMode(pumpe, OUTPUT);
      38. myservo.attach(13); //servo
      39. Serial.begin(9600);
      40. delay(500);
      41. dht.begin();
      42. }
      43. void loop() {
      44. String DisplayWords;
      45. float sensorValue;
      46. float sensorValue2; // Pflanze 2
      47. sensorValue = analogRead(sensorPin);
      48. sensorValue2 = analogRead(sensorPin2); //Sensor, als analogwert lesen
      49. Serial.print("Water Level: ");
      50. Serial.print(String(sensorValue));
      51. Serial.print(" Prozent:");
      52. Serial.print(Pflanze1);
      53. Serial.print("%");
      54. Serial.print(" Water Level: ");
      55. Serial.print(String(sensorValue));
      56. Serial.print(" Prozent:");
      57. Serial.print(Pflanze2);
      58. Serial.print("%");
      59. Serial.print("\n");
      60. Pflanze1 = 0;
      61. Pflanze1 = ((sensorValue*100)/Pflanzemax); //Prozent Berechnung
      62. Pflanze2 = ((sensorValue2*100)/Pflanzemax); //Prozent Berechnung
      63. pinMode(9,OUTPUT);
      64. pinMode(A1,INPUT); //10 pinmode vorher
      65. digitalWrite(9,LOW);
      66. delayMicroseconds(2);
      67. digitalWrite(9,HIGH);
      68. delayMicroseconds(5);
      69. digitalWrite(9,LOW);
      70. delay(2000);
      71. float h = dht.readHumidity();// Liest die Luftfeuchtigkeit in % aus
      72. float t = dht.readTemperature();// Liest die Temperatur in Celsius aus
      73. // Prüfen auf Fehler
      74. if (isnan(h) || isnan(t)) {
      75. Serial.println("Failed to read from DHT sensor!");
      76. return;
      77. }
      78. if(h > maxHum || t > maxTemp) {
      79. digitalWrite(fan, HIGH);
      80. } else {
      81. digitalWrite(fan, LOW);
      82. }
      83. //Temperaturregelung
      84. if(t < minTemp) {
      85. digitalWrite(heat, HIGH);
      86. }if (t >=28 ) {
      87. digitalWrite(heat,LOW);
      88. if(h < minHum) {
      89. digitalWrite(feucht, HIGH);
      90. } else {
      91. digitalWrite(feucht, LOW);
      92. }
      93. }
      94. if (t >= maxTemp or h >= maxHum)
      95. myservo.write(115);
      96. else{
      97. myservo.write(10);
      98. }
      99. if ( z <= 2 ){
      100. lcd.createChar(0, Celsius);
      101. lcd.clear();
      102. lcd.setCursor(0,0);
      103. lcd.print("Temp:"); // String mit Temperatur+ 9 Leerzeilen und Grad
      104. lcd.setCursor(14,0);
      105. lcd.write((uint8_t)0);// ° zeichen eingefügt
      106. lcd.setCursor(15,0);
      107. lcd.print("C");
      108. lcd.setCursor(10,0); // 2 Zeilen-Display
      109. lcd.print(t, 1); // gibt die Temperatur aus
      110. lcd.setCursor(0,1);
      111. lcd.print("Humidity:");
      112. lcd.setCursor(13,1);
      113. lcd.print(h);
      114. lcd.setCursor(15,1);
      115. lcd.print("%");
      116. z = z + 1;
      117. }
      118. delay(2000);
      119. if ( z >= 3 ){
      120. lcd.clear();
      121. //lcd.begin(16,2);
      122. lcd.setCursor(0,0);
      123. lcd.print("Pflanze 1:");
      124. lcd.setCursor(0,1);
      125. lcd.print("Pflanze 2:");
      126. lcd.setCursor(12,0); //Wert wird nach rechts ausgegeben
      127. lcd.print(Pflanze1); //Feuchtigkeitssensor 1
      128. lcd.setCursor(12,1);
      129. lcd.print(Pflanze2); //Feuchtigkeitssensor 2
      130. lcd.setCursor(15,0);
      131. lcd.print("%");
      132. lcd.setCursor(15,1);
      133. lcd.print("%");
      134. z = z + 1;
      135. }
      136. if ( z >= 6){
      137. z = 0;
      138. }
      139. }
      Alles anzeigen
      Als nächstes verbindet Ihr das LCD panel wie im Bild gezeigt wird.




      Nun verbindet den DHT 22 wie auf dem Bild.



      Nun schließen Ihr die Feuchtigkeitssensoren an die folgenden Pins.



      Im nächsten schritt werden die 230V Module an dem Arduino angeschlossen.




      Nun wird der Serveo (Nur für unser Projekt relevant) angeschlossen.






      Wenn Ihr alles richtig verkabelt habt sollte das Gewächshaus vollautomatisch die Pflanzen versorgen.



      Unser fertiger Testaufbau:

      Grüße

      MrYoshii

      My Steam Profile (from SteamDB)

      • Worth: $2099 ($814 with sales)
      • Games owned: 130
      • Games not played: 18 (14%)
      • Hours on record: 3,786.8h