Categories
Arduino Garden Hardware IoT

Autarker Blumenkasten II – Feuchtigkeit messen

Teil I: Arduino Basteleien – Mein Plan

Nachdem ich ein paar Stunden alle möglichen Schaltungen nachgebaut habe, geht es nun an den autarken Blumenkasten.

Das ist der Beispielcode

/*
  # Example code for the moisture sensor
  # Editor     : Lauren
  # Date       : 13.01.2012
  # Version    : 1.0
  # Connect the sensor to the A0(Analog 0) pin on the Arduino board  
  # the sensor value description
  # 0  ~300     dry soil
  # 300~700     humid soil 
  # 700~950     in water
*/
void setup(){
  Serial.begin(57600);   
}
void loop(){ 
  Serial.print("Moisture Sensor Value:");
  Serial.println(analogRead(A0));  
  delay(100);
}

Nun will ich ja bei einem bestimmten Wert etwas tun. Also beispielsweise die Pumpe einschalten, die meinen trockenen Blumenkasten mit Wasser versorgt. Da ich noch keine Pumpe (und keine Ahnung) habe, will ich mal eine (rote) LED anschalten, wenn der Wert < als 100 ist (also wirklich “trocken”). Ich verändere den Code folgendermassen:

/*
  # Autarker Blumenkasten
  # Editor     : hagen@cocoate.com
  # Date       : 03.01.2016
  # Version    : 1.0
  # Connect the moisture sensor to the A0 (Analog 0) pin - Arduino
  # Connect the LED to the 10 (Digital 10) pin - Arduino
   
  # the moisture sensor value description
  # 0  ~300     dry soil
  # 300~700     humid soil
  # 700~950     in water
*/

int ledPin = 10; // red LED
int msv = 0;     // Moisture Sensor Value
 
void setup(){
  pinMode(ledPin, OUTPUT);
  Serial.begin(57600); 
}
 
void loop(){
  msv = analogRead(A0);
  Serial.print("Moisture Sensor Value:");
  Serial.println(msv);  
  if(msv<100){        // If the value is less than 100 the LED switches on = soil is dry  
    digitalWrite(ledPin,HIGH);   
  } else {
    digitalWrite(ledPin,LOW);
  }
  delay(100);  
}

Wenn ich den Sensor anfasse, ist die LED aus (Strom fliesst, “Erde trocken”). Lasse ich den Sensor los sinkt der Wert unter 100 und die LED leuchtet #freu. Im Video sieht das dann so aus.

Moisture Sensor

Todo

  • Anstelle der LED müsste sich natürlich eine Pumpe einschalten und Wasser pumpen, so lange bis der Feuchtigkeitswert wieder passt. Vielleicht brauche ich auch gar keine Pumpe und baue den Wasserbehälter einfach nach oben. Dann reicht die Schwerkraft zum tröpfeln und ich brauche nur Magnetventile – mal sehen.
  • Der Blumenkasten muss per WiFi um Hilfe rufen können, wenn kein Wasser mehr da ist (E-Mail oder Twitter). WiFi scheint ein Riesenthema und teuer zu sein. Habe diese beiden Shields gefunden Adafruit HUZZAH CC3000 WiFi Shield with Onboard Antenna (39,95 US$) oder die Original Variante von Arduino.cc Arduino WiFi Shield (Amazon ca. 90 €).
    Gerade habe ich noch ein preisgünstiges WiFi Modul gefunden –SparkFun WiFi Shield – ESP8266 (Amazon ca. 15 US$)

Falls jemand Erfahrung mit so etwas hat, bitte kommentieren. Ich freue mich über jede Hilfe.

Categories
Arduino

Arduino Basteleien – Mein Plan

Beim 30c3 vor zwei Jahren habe ich das erste Mal etwas gelötet (MaxiLamps) und ein Arduino Starterkit ausprobiert. Zu meinem Geburtstag 2014 habe ich dann ein paar Sensoren erhalten, da ich den Plan geäussert hatte, unsere Gartenbewässerung mit Arduino zu organisieren (Danke nochmal dafür :) ). MaxiLamps habe ich ganz putzig weiterentwickelt aber der Arduino ist mit Zubehör wegen Zeitmangel im Schrank geblieben.

Der Garten hat in der Zwischenzeit einen Wasseranschluss erhalten …

Tube

… und so war die Realisierung der Bewässerung erstmal erheblich einfacher. Anstelle einer Arduino Steuerung mit Regenwasser habe ich in 2015 eine Tröpfchenbewässerung von Gardena mit einem Bewässerungscomputer installiert. So sahen die Ergebnisse aus.

Tomatoes & Cucumbers

Vermutlich war es ganz gut, die Bewässerung zunächst mal mit herkömmlichem “Zeug” zu realisieren um ein Gefühl dafür zu bekommen, wie Bewässerung überhaupt funktioniert. Nach einem Jahr kann ich erstmal sagen:

Das Zeug von Gardena ist wirklich stabil und gut (Gardena 1874-20 Bewässerungscomputer MultiControl duo und zweimal Gardena 1399-20 Micro-Drip-System Start-Set).

Glücklicherweise ist das Drip-System sehr modular aufgebaut und ich kann es bestimmt für die Arduino Basteleien weiterverwenden.

Da das mit der Bewässerung im Garten nun gut läuft, will ich etwas anderes bauen

Plan

Ich möchte einen “autarken” Blumenkasten bauen, mit folgenden Features:

  • Wassertank
  • Pumpe/Arduino und Drip System Schläuche
  • Anbindung an WiFi
  • Stromversorgung per Solarzelle und Batterie
  • Wenn Erde trocken ist, soll gegossen werden und wenn der Tank fast leer ist, soll er einen Nachricht verschicken, damit jemand kommt und den Tank wieder füllt.

Erste Schritte

Ich habe einen Arduino Uno Rev3 (Original – Made in Italy) und ein Verbindungskabel zum PC. Auf dem PC (in meinem Fall ein Mac) braucht man die Arduino Software (IDE – Entwicklungsumgebung – kostenlos).

Arduino IDE

Der Arduino braucht Strom. Den bekommt er, wenn man ihn mit dem Verbindungkabel an den USB Port steckt. Um ein bischen warm mit dem System zu werden, habe ich heute ein kleines Programm geschrieben, dass den hello, art Morsecode auf einer blauen Leuchtdiode anzeigt.

hello, art - Morse Code

Es geht bestimmt eleganter aber dieser Code funktionierte auch :)

const unsigned int LED_PIN = 13;
const unsigned int LONG = 1000; 
const unsigned int SHORT = 200; 

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() { 
  // H ....
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  // E .
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG); 
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  // L .-..
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG); 
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  // L .-..
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG);   
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  // O ---
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  // Komma gibt es nicht beim Morsen
  // Leerzeichen -...- 
  // A .-
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT); 
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG);   
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  // R .-.
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG);   
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
  digitalWrite(LED_PIN, HIGH); 
  delay(SHORT);   
  digitalWrite(LED_PIN, LOW); 
  delay(SHORT); 
  // T -
  digitalWrite(LED_PIN, HIGH); 
  delay(LONG); 
  digitalWrite(LED_PIN, LOW); 
  delay(LONG);
}