Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-gesteuerter Indoor-Garten: Intelligente, automatisierte Pflanzenpflege

Komponenten und Zubehör

Projektbeschreibung

Ein kompakter, automatisierter Indoor-Garten, der Licht, Bewässerung und Belüftung basierend auf Sensorwerten regelt. Eine Android-App (Bluetooth) ermöglicht manuelle Steuerung und Live-Datenanzeige. Die Custom-PCB (JLCPCB, ~2 $) vereint alle Anschlüsse und führt die Verkabelung sauber zusammen.

Sensoren & Aktoren

Sensor / AktorFunktionAnschluss
BH1750Umgebungslicht (Lux)I2C (A4/A5)
DHT11Temperatur & LuftfeuchteDigital Pin 7
BodenfeuchteSubstratfeuchte (analog)Analog Pin A0
Weiße LEDsPflanzenbeleuchtung (PWM)Pin 6 (PWM)
WasserpumpeBewässerung (ein/aus)Pin 4 (via MOSFET)
12 V LüfterLuftzirkulation (PWM)Pin 5 (PWM)

PCB & Fertigung

Die platinenförmige PCB (Blatt-Design) wurde bei JLCPCB geordert: Gerber hochladen, Parameter wählen (1,6 mm, grün, 5 Stk.), 2 $ + Versand, Lieferung in 3 Tagen. Alle Bauteile sind beschriftet, Lötfehler nahezu ausgeschlossen. Beide Seiten bestückbar.

Arduino-gesteuerter Indoor-Garten: Intelligente, automatisierte Pflanzenpflege
Gefertigte Custom-PCB (Blattform)

Montage

  1. Arduino Nano & Header auf PCB löten → Testsketch für Spannung & I2C.
  2. Sensoren & Aktoren gemäß Aufdruck bestücken.
  3. ESP-01 / HC-05 in Steckplatz einsetzen.
  4. 12 V Netzteil anschließen (Pumpe, Lüfter), 5 V Regler versorgt Arduino & Logik.
  5. Lasergeschnittene MDF-Platte (DXF-Datei) als Halterung für PCB & Pflanze.

Android-App (Bluetooth)

Die App verbindet sich per Bluetooth (HC-05/06) mit dem Arduino. Manuell: Lüfter, Licht, Pumpe ein/aus. Automatisch: Lichtnachführung per BH1750, Bewässerung bei Trockenheit, Lüfter bei >30 °C. Sensorwerte per „Get Data“ abrufbar.

Arduino-gesteuerter Indoor-Garten: Intelligente, automatisierte Pflanzenpflege
Android-App: Manuell / Auto Modus, Sensorwerte

Arduino-Code (Hauptlogik)

/***********************************************************************************************************
 * Autor: BELKHIR Mohamed | MEGA DAS | BSD 2-Clause License | 20/11/2017
 ***********************************************************************************************************/
#include "DHT.h"
#include 
#include 

// Pins
const int Pump = 4;
const int Fan  = 5;      // PWM
const int Light = 6;     // PWM
const int TempHum = 7;   // DHT11
const int Moisture = 8;  // Digital (nicht verwendet, analog über A0)
const int TestLED = 9;
const int Brightness = 12; // BH1750 Interrupt? (hier ungenutzt)
const int analogMoisture = A0;

#define DHTTYPE DHT11
DHT dht(TempHum, DHTTYPE);
BH1750 lightMeter;

char Data = 'x';
String cmd = "";
int flagModeAuto = 0;
int sprayCMD = 300;   // Schwellwert Bodenfeuchte (analog 0-1023)
int LightCMD = 500;   // Schwellwert Licht (Lux)
int lightLevelPlus = 0;
float temperature = 0, humidity = 0;
uint16_t lux = 0;

void setup() {
  Wire.begin();
  dht.begin();
  lightMeter.begin();
  Serial.begin(9600);
  Serial.setTimeout(100);
  pinMode(Pump, OUTPUT);
  pinMode(Fan, OUTPUT);
  pinMode(Light, OUTPUT);
  pinMode(Moisture, INPUT);
  pinMode(TestLED, INPUT);
  delay(1000);
  digitalWrite(Pump, LOW);
  digitalWrite(Fan, LOW);
  digitalWrite(Light, LOW);
}

void loop() {
  // Bluetooth-Befehle lesen
  while (Serial.available()) {
    delay(10);
    Data = Serial.read();
    cmd += Data;
  }

  // Befehle verarbeiten
  if (cmd == "dt") Serial.print(humidity);       // Feuchte senden
  if (cmd == "dh") Serial.print(lux);            // Licht senden
  if (cmd == "db") Serial.print(temperature);    // Temp senden
  if (cmd == "o")  flagModeAuto = 1;             // Auto an
  if (cmd == "m")  flagModeAuto = 0;             // Auto aus

  if (flagModeAuto) {
    autoPump();
    lightBrightness();
    autoFan();
  } else {
    // Manuelle Steuerung
    if (cmd == "f") analogWrite(Fan, 255);   // Lüfter an
    if (cmd == "x") analogWrite(Fan, 0);     // Lüfter aus
    if (cmd == "l") analogWrite(Light, 255); // Licht an
    if (cmd == "k") analogWrite(Light, 0);   // Licht aus
    if (cmd == "w") analogWrite(Pump, 255);  // Pumpe an
    if (cmd == "y") analogWrite(Pump, 0);    // Pumpe aus
  }
  cmd = "";

  // Sensoren zyklisch lesen
  lux = lightMeter.readLightLevel();
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();
}

// Automatische Bewässerung
void autoPump() {
  if (analogRead(analogMoisture) < sprayCMD) {
    digitalWrite(Pump, HIGH);
    delay(1000);
    digitalWrite(Pump, LOW);
    delay(1000);
  }
}

// Automatische Lichtnachführung
void lightBrightness() {
  while (lux < LightCMD) {
    analogWrite(Light, lightLevelPlus);
    delay(100);
    lightLevelPlus++;
    lux = lightMeter.readLightLevel();
  }
}

// Automatische Lüftung
void autoFan() {
  if (temperature > 30) analogWrite(Fan, 255);
  else analogWrite(Fan, 0);
}

Wichtige Hinweise

Herstellungsprozess

  1. Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
  2. Klassisches Pong-Spiel auf Arduino UNO mit OLED-Display bauen – Schritt-für-Schritt-Tutorial
  3. Arduino Audio-Frequenz-Detektor – Lauteste Schallpeaks mit hochsensiblem Modul messen
  4. Selbstbau-Tamagotchi: Digitales Haustier mit Arduino
  5. Intelligenter kabelloser Lichtschalter-Controller: Arduino-basierter Fernschalter-Manipulator
  6. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  7. Intelligente, bewegungsaktivierte Wasserpistole mit Arduino Nano
  8. Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
  9. Arduino-Sonnenblume: Elektronischer Sonnen-Tracker selbst bauen
  10. Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte