Bauteile · 16 Min. Lesezeit

Arduino Wasserpumpe: Mini-Tauchpumpe anschließen und steuern

Arduino Wasserpumpe: 3–6-V-Mini-Tauchpumpe mit MOSFET oder Relais ansteuern, Freilaufdiode, eigene Versorgung, Förderrate, Bewässerung und ESP32-Code.

Fast jedes Projekt mit einer Arduino Wasserpumpe nutzt dasselbe Bauteil: eine fingergroße Mini-Tauchpumpe, die mit 3–6 V läuft und komplett unter Wasser liegt. Sie ist das Herz von Schaltungen, die Blumentöpfe gießen, ein Aquarium nachfüllen, wie eine Kaffeemaschine eine feste Menge Flüssigkeit abgeben oder einen kleinen Zimmerbrunnen betreiben. Sie ist billig, leise und hat nur zwei Drähte; weil aber ein Bürsten-Gleichstrommotor in ihr steckt, darfst du sie nicht direkt an einen Arduino-Pin hängen.

In dieser Anleitung lernst du Schritt für Schritt, was in der Pumpe steckt, warum sie nicht direkt an einen Pin gehört und wie du sie sicher mit einem MOSFET, Transistor oder Relais ansteuerst. Wir klären die Aufgabe der Freilaufdiode, warum die Pumpe eine eigene Stromversorgung braucht, wie Förderrate und Förderhöhe zusammenhängen und warum Trockenlauf die Pumpe zerstört. Danach schreiben wir Code für die Drehzahlregelung per PWM, einen milliliter-genauen Flüssigkeitsspender, automatisches Gießen nach Bodenfeuchte, Steuerung per Handy mit dem ESP32 und zeitgesteuertes Gießen mit dem Raspberry Pi Pico.

6-V-Mini-Tauchpumpe für Wasser
Mini-Tauchpumpe: 3–6 V DC, zwei Drähte, Schlauchanschluss etwa 7,5 mm. Im Betrieb muss sie komplett unter Wasser sein.

Was ist eine Mini-Tauchpumpe und wie funktioniert sie?

Eine Mini-Tauchpumpe ist eine Kreiselpumpe. Im Kunststoffgehäuse sitzen ein kleiner Bürsten-Gleichstrommotor und ein Laufrad mit Schaufeln auf seiner Welle. Dreht der Motor, schleudert das Laufrad das Wasser, das es unten ansaugt, durch die Fliehkraft nach außen und drückt es aus dem seitlichen oder oberen Schlauchanschluss. Der Motorraum ist wasserdicht verschlossen, die Laufradkammer dagegen voller Wasser. Das hat zwei wichtige Folgen: Die Pumpe ist nicht selbstansaugend (sie kann keine Luft fördern und muss deshalb unter Wasser liegen), und genau das geförderte Wasser kühlt das Laufrad und schmiert seine Lagerung.

EigenschaftTypischer Wert (3–6-V-Mini-Tauchpumpe)
Betriebsspannung2,5–6 V DC (am effizientesten bei 3–5 V)
Betriebsstrom130–220 mA (bei 6 V bis 300 mA)
AnlaufstromFür einige Millisekunden das 2- bis 3-Fache des Betriebsstroms
Leistung0,4–1,5 W
Förderrate (offener Auslass)80–120 l/h, also etwa 1,3–2 l/min
Maximale Förderhöhe40–110 cm (dort sinkt die Förderrate auf null)
SchlauchSilikonschlauch, 5 mm innen, 7–8 mm außen
Lebensdauer im DauerbetriebEtwa 500 Stunden (Bürstenmotor)

Die Werte in der Tabelle unterscheiden sich je nach Modell; schau immer auf das Etikett deiner Pumpe oder in die Angaben des Händlers. Wirklich wichtig sind zwei Zeilen: Strom und Anlaufstrom. Eine 200-mA-Pumpe kann beim Einschalten kurzzeitig 400–600 mA ziehen, weil der Motor noch nicht auf Drehzahl ist. Legst du deine Schaltung nicht für diesen Stromstoß aus, startet dein Arduino bei jedem Einschalten der Pumpe neu.

Warum darf die Pumpe nicht direkt an einen Arduino-Pin?

Der häufigste Anfängerfehler: das rote Kabel der Pumpe an einen Digitalpin, das schwarze an GND stecken und sie mit digitalWrite(HIGH) starten wollen. Das hat drei Probleme. Erstens der Strom: Ein Pin des Arduino Uno verträgt höchstens 40 mA, sicher sind 20 mA, die Pumpe will aber das Zehnfache. Zweitens Spannungsspitzen: Die Motorwicklung ist eine Spule und kann beim Abschalten einen kurzen Gegenimpuls von Hunderten Volt erzeugen. Drittens elektrische Störungen: Die Bürsten eines Bürstenmotors funken bei jeder Umdrehung und streuen Störungen auf die Versorgung. Das Ergebnis ist entweder eine Pumpe, die sich nicht dreht, oder ein dauerhaft beschädigter Pin.

BoardSicherer Strom pro PinAbsolute Grenze pro PinIm Vergleich zur Pumpe
Arduino Uno / Nano (5 V)20 mA40 mADie Pumpe will 5- bis 10-mal mehr
ESP32 (3,3 V)≈ 20 mA40 mAZu wenig Strom und zu niedrige Spannung
Raspberry Pi Pico (3,3 V)4 mA (Standard)12 mA (höchste Einstellung)Die Pumpe will über 20-mal mehr

Die Lösung: Der Pin steuert nicht die Pumpe, sondern einen Schalter. Der Pin liefert nur ein Signal von wenigen Milliampere; der eigentliche Pumpenstrom fließt aus einer eigenen Stromquelle über diesen Schalter. Dafür hast du vier Möglichkeiten: einen Logic-Level-MOSFET, einen NPN-Transistor, ein fertiges MOSFET-Modul oder ein Relaismodul. Die Tabelle unten zeigt, wann welche sinnvoll ist.

AnsteuerungDrehzahl per PWMMit 3,3-V-BoardsHinweis
Logic-Level-MOSFET (IRLZ44N, AO3400A)JaAO3400A sehr gut, IRLZ44N ausreichendBeste Wahl; wird kaum warm
NPN-Transistor (2N2222A, BC337)JaJa, kleineren Basiswiderstand nehmenBis 300 mA; ≈ 0,2–0,3 V Spannungsabfall
IRF520-MOSFET-ModulJaNein, schaltet nur halb durchBei 5 V bis etwa 1 A brauchbar
RelaismodulNein, nur Ein/AusModul mit 3,3-V-Ansteuerung nötigKlickt, Kontakte verschleißen; für 12-V- oder 230-V-Pumpen
Motortreiber L298N / L9110SJaJaDrehrichtungswechsel unnötig; L298N schluckt bis 2 V
Mehr zu MOSFET-Auswahl, Gate-Widerstand und Logic-Level findest du im Beitrag MOSFET am Arduino, zu Bipolartransistoren und der Berechnung des Basiswiderstands unter Was ist ein Transistor?. Pinbelegung und Verstärkung deines Transistors stehen im Transistor-Katalog.

Arduino Wasserpumpe anschließen: MOSFET, Diode und gemeinsame Masse

Die robusteste und flexibelste Schaltung ist ein N-Kanal-Logic-Level-MOSFET, der die Pumpe auf der Low-Side schaltet. Der Pluspol der Pumpe geht direkt an den Plus der externen Versorgung, ihr Minuskabel an den Drain des MOSFETs. Source kommt an GND, das Gate über einen Widerstand an den Arduino-Pin. Ist der Pin HIGH, leitet der MOSFET, verbindet den Minuspol der Pumpe mit GND und die Pumpe läuft. Beim IRLZ44N lautet die Reihenfolge, mit der beschrifteten Seite zu dir, von links nach rechts Gate, Drain, Source.

VerbindungArduino UnoESP32Raspberry Pi Pico
Steuerpin → Gate-Widerstand → GateD9 (PWM), 220 ΩGPIO 25, 100 ΩGP15, 100 Ω
Pull-down zwischen Gate und GND10 kΩ10 kΩ10 kΩ
MOSFET-SourceGNDGNDGND
MOSFET-DrainMinuskabel (schwarz) der PumpeMinuskabel (schwarz) der PumpeMinuskabel (schwarz) der Pumpe
Pluskabel (rot) der PumpePlus der externen 5-V-VersorgungPlus der externen 5-V-VersorgungPlus der externen 5-V-Versorgung
Minus der externen VersorgungArduino-GND (gemeinsame Masse)ESP32-GND (gemeinsame Masse)Pico-GND (gemeinsame Masse)
Diode 1N5819, antiparallel zur PumpeKathode (Ring) an Pumpen-PlusKathode an Pumpen-PlusKathode an Pumpen-Plus

Der Gate-Widerstand begrenzt den Stromstoß aus dem Pin, während die Gate-Kapazität geladen wird; der 10-kΩ-Pull-down hält das Gate auf GND, solange der Arduino startet oder Code hochgeladen wird und der Pin noch undefiniert ist. Fehlt dieser Widerstand, läuft die Pumpe bei jedem Reset ein paar Sekunden von selbst; neben einem Blumentopf bedeutet das ein Glas Wasser auf dem Schreibtisch. Diode und gemeinsame Masse sind so wichtig, dass sie eigene Abschnitte bekommen.

Freilaufdiode: die Spannungsspitze beim Abschalten der Pumpe

Eine Motorwicklung verhält sich wie eine Spule, und eine Spule lässt nicht zu, dass ihr Strom plötzlich abreißt. Sobald der MOSFET sperrt, sucht die gespeicherte Energie einen Weg und erzeugt am Drain eine kurze Spannungsspitze weit über der Versorgungsspannung. Mit der Zeit schlägt dieser Impuls den MOSFET oder Transistor durch und setzt jeden Arduino an derselben Leitung zurück. Die Lösung ist eine Diode, die in Sperrrichtung parallel zur Pumpe liegt: Kathode (Ring) an Plus, Anode an Minus. Im normalen Betrieb fließt durch sie gar kein Strom; sperrt der MOSFET, kreist der Spulenstrom über die Diode zurück in die Pumpe und die Energie klingt harmlos ab.

Schaltest du die Pumpe per PWM schnell ein und aus, leitet die Diode in jeder Periode; eine schnelle Schottky-Diode wie die 1N5819 ist dann die beste Wahl. Für reines Ein und Aus genügt auch eine 1N4007 aus der Bastelkiste. Gegen die Störungen der Bürsten kannst du zusätzlich einen 100-nF-Keramikkondensator direkt an die Pumpenanschlüsse löten. Diodentypen und ihre Polung erklären wir in Was ist eine Diode?.

Eigene Stromversorgung und gemeinsame Masse: Warum startet der Arduino neu?

Die Pumpe aus dem 5V-Pin des Arduino Uno zu versorgen, scheint beim ersten Versuch zu klappen, ist aber nicht zuverlässig. Ein per USB versorgter Uno hängt komplett hinter einer 500-mA-Sicherung (Polyfuse), und der USB-Port des Computers liefert meist auch nur 500 mA. Läuft die Pumpe an, zieht ihr Stromstoß von 400–600 mA die Spannung kurz unter 4 V; der Mikrocontroller startet neu, der serielle Monitor bricht ab oder der Code spinnt. Steckst du stattdessen ein Netzteil in die Hohlbuchse, wird der 5-V-Regler auf dem Board heiß: Bei 9 V Eingang und einer 250-mA-Pumpe verheizt er (9 − 5) × 0,25 = 1 W.

  • 5-V-Netzteil (1–2 A): Die praktischste Lösung. Pumpe und bei Bedarf der Arduino hängen am selben Netzteil, aber über getrennte Leitungen.
  • 4 × AA-Batterien (6 V): Ideal für 6-V-Pumpen; frische Zellen liefern 6,4 V, das ist für die Pumpe unbedenklich.
  • 18650-Li-Ion-Akku (3,7–4,2 V): Passt zu 3–5-V-Pumpen; geladen wird er mit einem TP4056-Modul.
  • Breadboard-Netzteilmodul: Module wie das MB102 liefern 5 V und 3,3 V aufs Breadboard; für eine kleine Pumpe reicht das, mehr dazu unter Breadboard-Netzteil.
  • Bei einem 12-V-System: Mit einem LM2596-Abwärtswandler auf 5 V herunterregeln; 12 V nie direkt an eine 6-V-Pumpe legen.
Vergiss nicht, den Minus der externen Versorgung mit dem GND des Arduino zu verbinden. Ohne gemeinsame Masse fehlt dem Gate-Signal der Bezug, der MOSFET schaltet nicht und die Pumpe läuft gar nicht; schlimmer noch, sie kann zufällig halb durchschalten und warm werden. Warum das so ist, steht in GND und gemeinsame Masse. Und denk bei der Akkulaufzeit an den Arduino, nicht an die Pumpe: Eine 200-mA-Pumpe, die 30 Sekunden am Tag läuft, braucht etwa 1,7 mAh pro Tag, ein dauernd eingeschalteter Uno etwa 1200 mAh; der Akkulaufzeit-Rechner zeigt das sofort.

Förderrate und Förderhöhe: Wie hoch pumpt die Pumpe das Wasser?

Die 100–120 l/h, die Händler angeben, gelten für eine Pumpe ohne Schlauch, deren Auslass auf Höhe der Wasseroberfläche liegt. In der Praxis arbeitet die Pumpe gegen die Schwerkraft, sobald das Wasser im Schlauch steigt, und die Förderrate sinkt. Die Höhe, bei der sie das Wasser gar nicht mehr anheben kann, heißt maximale Förderhöhe; dort dreht sich das Laufrad, aber aus dem Schlauch kommt nichts. Ein langer, dünner oder geknickter Schlauch wirkt durch Reibung genauso. Die Tabelle zeigt, wie sich eine typische Pumpe mit etwa 100 l/h bei 5 V und offenem Auslass in verschiedenen Höhen verhält.

Höhe von der Wasseroberfläche bis zum SchlauchendeUngefähre FörderratePro Sekunde
0 cm100 l/h≈ 28 ml
25 cm75 l/h≈ 21 ml
50 cm50 l/h≈ 14 ml
75 cm25 l/h≈ 7 ml
100 cmFast nullTropfenweise

Berechne die Gießzeit deshalb nicht aus dem Katalogwert, sondern miss sie an deinem eigenen Aufbau. Halte den Schlauch in der tatsächlichen Höhe über einen Messbecher, lass die Pumpe genau 10 Sekunden laufen und lies die Wassermenge ab. Hast du zum Beispiel 185 ml gemessen, beträgt deine Förderrate 18,5 ml/s; für 250 ml muss die Pumpe 250 / 18,5 ≈ 13,5 Sekunden laufen. Wiederhole die Messung dreimal und bilde den Mittelwert, das verringert Abweichungen durch Akkuspannung und Schlauch. Ändert sich die Pumpenspannung (wenn Batterien schwächer werden), ändert sich auch die Förderrate; für genaues Dosieren nimm eine stabile 5-V-Quelle.

Trockenlauf und Saugheber-Effekt: die zwei versteckten Feinde der Pumpe

Wasser schmiert die Lagerung der Pumpe und kühlt ihren Motor. Ist der Tank leer, dreht die Pumpe in Luft, das Lager des Laufrads wird durch Reibung heiß, Kunststoffteile werden weich und der Motor dreht höher als normal. Ein paar Sekunden Trockenlauf überleben die meisten Pumpen, aber minutenlanger Trockenlauf lässt sie festgehen oder sie klingt danach anders und fördert weniger. In automatischen Systemen verhinderst du das auf zwei Arten: mit einem Wasserstandssensor oder Schwimmerschalter im Tank und mit einer Höchstlaufzeit pro Durchgang im Code. Der Bewässerungscode weiter unten macht beides.

Vorsicht, Saugheber-Effekt: Liegt das Schlauchende tiefer als der Wasserspiegel im Tank, fließt das Wasser auch nach dem Abschalten der Pumpe durch die Schwerkraft weiter und der Tank läuft in den Blumentopf leer. Halte den höchsten Punkt des Schlauchs immer über dem Wasser im Tank oder stich oben in den Schlauch mit einer Nadel ein kleines Belüftungsloch; stoppt die Pumpe, kommt Luft hinein und der Fluss reißt ab.

Schritt für Schritt: der erste Pumpentest

  1. Tauche die Pumpe vollständig in ein Gefäß mit Wasser und stecke 30–50 cm Silikonschlauch auf den Auslass; richte das Schlauchende in ein zweites Gefäß.
  2. Setze den IRLZ44N aufs Breadboard. Verbinde das Gate über 220 Ω mit D9 und zusätzlich über 10 kΩ mit GND; Source kommt an GND.
  3. Schließe das schwarze Pumpenkabel an Drain und das rote an den Plus der externen 5-V-Versorgung an. Setze die 1N5819 an die Pumpenanschlüsse, mit dem Ring auf der Plusseite.
  4. Verbinde den Minus der externen Versorgung mit dem GND des Arduino; prüfe die Verdrahtung noch einmal und schalte dann die Versorgung ein.
  5. Lade den Code unten hoch und öffne den seriellen Monitor mit 9600 Baud. Die Pumpe sollte 3 Sekunden laufen und 10 Sekunden pausieren.
C++ (Arduino IDE)
1const byte PUMP_PIN = 9;            // MOSFET gate (220 Ω üzerinden) / MOSFET gate (through 220 Ω)
2
3void setup() {
4  pinMode(PUMP_PIN, OUTPUT);
5  digitalWrite(PUMP_PIN, LOW);      // açılışta pompa kapalı / pump off at start-up
6  Serial.begin(9600);
7}
8
9void loop() {
10  Serial.println(F("Pompa calisiyor / pump on"));
11  digitalWrite(PUMP_PIN, HIGH);     // MOSFET iletimde, pompa döner / MOSFET on, pump runs
12  delay(3000);                      // 3 saniye su bas / pump for 3 seconds
13  Serial.println(F("Pompa durdu / pump off"));
14  digitalWrite(PUMP_PIN, LOW);
15  delay(10000);                     // 10 saniye bekle / wait 10 seconds
16}

Läuft die Pumpe nicht, prüfe zuerst die gemeinsame Masse, dann die Pinfolge des MOSFETs; hört sie nicht auf, sind Drain und Source vielleicht vertauscht. Für die Messung der Förderrate änderst du im selben Code delay(3000) in delay(10000) und hältst den Schlauch über einen Messbecher. Weil dieser Code delay() nutzt, kann der Arduino währenddessen nichts anderes tun; in den nächsten Beispielen messen wir die Zeit mit millis(). Den Unterschied erklärt der Beitrag millis und delay.

Pumpendrehzahl per PWM einstellen

Der größte Vorteil eines MOSFETs: Du kannst die Pumpendrehzahl per PWM einstellen. Ein langsamer Strahl wirkt in einem Brunnen natürlicher, wirbelt im Aquarienfilter weniger Schmutz auf und erlaubt feineres Dosieren. Es gibt zwei praktische Probleme. Erstens laufen kleine Pumpen bei niedrigem Tastgrad (meist unter 30–40 %) nicht an und brummen nur; deshalb gibt der Code zuerst einen kurzen Impuls mit voller Leistung und geht dann auf die gewünschte Drehzahl. Zweitens lässt die 490-Hz-PWM an Pin D9 des Uno die Pumpe hörbar pfeifen; der Code hebt die Frequenz auf 3,9 kHz an.

C++ (Arduino IDE)
1const byte PUMP_PIN = 9;            // MOSFET gate, Timer1 PWM pini / Timer1 PWM pin
2const byte POT_PIN = A0;            // hız potansiyometresi / speed potentiometer
3const byte MIN_DUTY = 90;           // bunun altında pompa dönmez (≈ %35) / pump stalls below this (≈ 35 %)
4
5byte duty = 0;
6
7void setup() {
8  // D9-D10 PWM frekansı 490 Hz yerine 3,9 kHz (daha az vızıltı) / D9-D10 PWM at 3.9 kHz instead of 490 Hz (less whine)
9  TCCR1B = (TCCR1B & 0b11111000) | 0x02;
10  pinMode(PUMP_PIN, OUTPUT);
11  Serial.begin(9600);
12}
13
14void loop() {
15  int raw = analogRead(POT_PIN);                    // 0-1023
16  byte target = map(raw, 0, 1023, 0, 255);
17  if (target < MIN_DUTY) target = 0;                // çok yavaşsa tamamen durdur / stop completely if too slow
18
19  if (duty == 0 && target > 0) {                    // pompa duruyordu, şimdi kalkacak / pump was stopped, now starting
20    analogWrite(PUMP_PIN, 255);                     // kısa tam güç darbesi / short full-power kick
21    delay(150);
22  }
23  duty = target;
24  analogWrite(PUMP_PIN, duty);
25
26  Serial.print(F("PWM: "));
27  Serial.print(duty);
28  Serial.print(F("  (%"));
29  Serial.print(duty * 100 / 255);
30  Serial.println(F(")"));
31  delay(100);
32}

Verbinde den Schleifer des Potentiometers mit A0 und die äußeren Anschlüsse mit 5V und GND. Die Zeile mit TCCR1B betrifft nur Timer1, also die Pins D9 und D10; millis() und delay() nutzen Timer0 und funktionieren weiter. Allerdings verwendet auch die Servo-Bibliothek Timer1, entferne die Zeile also, wenn ein Servo im Projekt steckt. MIN_DUTY ermittelst du mit deiner Pumpe: Dreh das Poti langsam, lies im seriellen Monitor den niedrigsten Wert ab, bei dem sie von selbst anläuft, und gib etwas Reserve dazu. Weniger Spannung bedeutet auch weniger Förderhöhe; bei halber Drehzahl schafft die Pumpe nur etwa ein Viertel der Höhe, weil der Druck einer Kreiselpumpe mit dem Quadrat der Drehzahl wächst.

Flüssigkeitsspender: genau 50 ml auf Knopfdruck

Kennst du die Förderrate, wird aus der Pumpe leicht ein Dosierautomat: Teile die gewünschte Menge durch die Förderrate und du erhältst die Laufzeit. Der Code unten gibt bei jedem Druck auf einen Taster zwischen D2 und GND 50 ml ab; ein erneuter Druck während des Pumpens bricht die Dosis ab. Weil die Zeit mit millis() gemessen wird, wartet die Schleife nie und kann den Taster ständig abfragen. Das ist die Grundlage für Seifenspender, Düngerdosierer oder Cocktailmaschinen.

C++ (Arduino IDE)
1const byte PUMP_PIN = 9;                 // MOSFET gate / MOSFET gate
2const byte BUTTON_PIN = 2;               // buton: D2 ile GND arası / button between D2 and GND
3const float ML_PER_SECOND = 18.5;        // kendi ölçtüğün debi / the flow rate you measured
4const float DOSE_ML = 50.0;              // bir basışta verilecek miktar / amount per press
5
6unsigned long doseTime = 0;              // ms cinsinden doz süresi / dose time in ms
7unsigned long startTime = 0;
8unsigned long lastPress = 0;
9bool pumping = false;
10bool lastButton = HIGH;
11
12void setPump(bool on) {
13  pumping = on;
14  digitalWrite(PUMP_PIN, on ? HIGH : LOW);
15  if (on) startTime = millis();
16}
17
18void setup() {
19  pinMode(PUMP_PIN, OUTPUT);
20  digitalWrite(PUMP_PIN, LOW);
21  pinMode(BUTTON_PIN, INPUT_PULLUP);     // basılıyken LOW / LOW while pressed
22  Serial.begin(9600);
23  doseTime = (unsigned long)(DOSE_ML / ML_PER_SECOND * 1000.0);
24  Serial.print(F("Doz suresi / dose time (ms): "));
25  Serial.println(doseTime);              // 50 / 18,5 = 2703 ms
26}
27
28void loop() {
29  bool button = digitalRead(BUTTON_PIN);
30  if (button == LOW && lastButton == HIGH && millis() - lastPress > 200) {   // yeni basış, 200 ms debounce / new press, 200 ms debounce
31    lastPress = millis();
32    setPump(!pumping);                   // ilk basış başlatır, ikincisi iptal eder / first press starts, second cancels
33    Serial.println(pumping ? F("Doz basladi / dose started") : F("Iptal / cancelled"));
34  }
35  lastButton = button;
36
37  if (pumping && millis() - startTime >= doseTime) {   // süre doldu / time is up
38    setPump(false);
39    Serial.println(F("Doz tamam / dose done"));
40  }
41}

Fällt die erste Dosis kleiner aus als die anderen, ist meist ein leerer Schlauch schuld: Die Pumpe füllt erst den Schlauch und gibt dann Flüssigkeit ab. Liegt das Schlauchende etwas über dem Wasserspiegel im Tank, bleibt der Schlauch gefüllt und jede Dosis ist gleich. Bei dicken Flüssigkeiten wie Öl, Sirup oder Seife ist die Förderrate viel geringer als bei Wasser; kalibriere also immer mit genau dieser Flüssigkeit. Bei Projekten mit Lebensmitteln nimmst du lebensmittelechten Silikonschlauch und spülst die Pumpe nach jedem Einsatz mit klarem Wasser.

Automatisch gießen nach Bodenfeuchte

Das beliebteste Projekt mit einer Arduino Wasserpumpe ist ein Blumentopf, der sich selbst gießt, wenn die Erde trocken wird. Die Anfängerfalle: die Pumpe so lange laufen lassen, bis die Bodenfeuchte den Zielwert erreicht. Bis das Wasser beim Sensor ankommt, vergehen Minuten, und bis dahin ist der Topf übergelaufen. Richtig ist Gießen in kurzen Stößen: Die Pumpe läuft 4 Sekunden, dann wartet das Programm 1 Minute, bis sich das Wasser in der Erde verteilt hat, und misst erneut. Außerdem startet der Code die Pumpe nie bei leerem Tank, und steigt die Feuchte nach 6 Stößen immer noch nicht (der Sensor steckt vielleicht nicht mehr in der Erde oder der Schlauch hat sich gelöst), sperrt er das System und schaltet die LED ein. Die Kalibrierung des Sensors erklären wir ausführlich im Beitrag Bodenfeuchtesensor.

C++ (Arduino IDE)
1const byte PUMP_PIN = 9;                 // MOSFET gate / MOSFET gate
2const byte SOIL_PIN = A0;                // kapasitif toprak nem sensörü AOUT / capacitive soil sensor AOUT
3const byte FLOAT_PIN = 3;                // şamandıra: D3 ile GND arası / float switch between D3 and GND
4const byte LED_PIN = 13;                 // uyarı LED'i / warning LED
5
6const int DRY_VALUE = 600;               // sensör kuru havadayken / sensor in dry air
7const int WET_VALUE = 280;               // sensör bardak sudayken / sensor in a glass of water
8const int START_PERCENT = 35;            // bunun altında sulamaya başla / start watering below this
9const int STOP_PERCENT = 55;             // buna ulaşınca dur / stop once this is reached
10const unsigned long PULSE_MS = 4000;     // bir darbede pompa süresi / pump time per pulse
11const unsigned long SOAK_MS = 60000;     // suyun toprağa yayılma süresi / time for the water to soak in
12const byte MAX_PULSES = 6;               // bir sulamada en fazla darbe / max pulses per watering
13
14byte pulses = 0;
15bool locked = false;
16unsigned long lastCheck = 0;
17
18bool waterAvailable() {
19  return digitalRead(FLOAT_PIN) == LOW;  // şamandıra yukarıda: kontak kapalı / float up: contact closed
20}
21
22int readMoisture() {
23  long sum = 0;
24  for (byte i = 0; i < 10; i++) {        // 10 ölçümün ortalaması / average of 10 readings
25    sum += analogRead(SOIL_PIN);
26    delay(5);
27  }
28  int percent = map(sum / 10, DRY_VALUE, WET_VALUE, 0, 100);
29  return constrain(percent, 0, 100);
30}
31
32void runPump(unsigned long ms) {
33  unsigned long t0 = millis();
34  digitalWrite(PUMP_PIN, HIGH);
35  while (millis() - t0 < ms) {
36    if (!waterAvailable()) break;        // su biterse hemen dur / stop at once if the water runs out
37  }
38  digitalWrite(PUMP_PIN, LOW);
39}
40
41void setup() {
42  pinMode(PUMP_PIN, OUTPUT);
43  digitalWrite(PUMP_PIN, LOW);
44  pinMode(FLOAT_PIN, INPUT_PULLUP);
45  pinMode(LED_PIN, OUTPUT);
46  Serial.begin(9600);
47  lastCheck = millis() - SOAK_MS;        // ilk ölçüm hemen yapılsın / take the first reading right away
48}
49
50void loop() {
51  if (!waterAvailable()) {               // depo boş: yavaş yanıp sön / tank empty: slow blink
52    digitalWrite(LED_PIN, (millis() / 500) % 2);
53    return;
54  }
55  if (locked) {                          // arıza: LED sürekli yanar / fault: LED stays on
56    digitalWrite(LED_PIN, HIGH);
57    return;
58  }
59  digitalWrite(LED_PIN, LOW);
60  if (millis() - lastCheck < SOAK_MS) return;
61  lastCheck = millis();
62
63  int moisture = readMoisture();
64  Serial.print(F("Nem / moisture: %"));
65  Serial.println(moisture);
66
67  if (pulses == 0 && moisture >= START_PERCENT) return;   // sulama gerekmiyor / no watering needed
68  if (moisture >= STOP_PERCENT) {                        // hedefe ulaşıldı / target reached
69    pulses = 0;
70    return;
71  }
72  if (pulses >= MAX_PULSES) {                            // nem yükselmiyor: sensör ya da hortum sorunu / moisture not rising: sensor or hose problem
73    locked = true;
74    Serial.println(F("Kilitlendi, kontrol et / locked, check the setup"));
75    return;
76  }
77  runPump(PULSE_MS);
78  pulses++;
79}

Die zwei getrennten Schwellen im Code sind Absicht: Gegossen wird, wenn die Feuchte unter 35 % fällt, und zwar so lange, bis sie 55 % erreicht. Dank dieser Hysterese schaltet die Pumpe nicht ständig ein und aus, nur weil ein Messwert genau an der Schwelle schwankt. Miss DRY_VALUE und WET_VALUE mit deinem eigenen Sensor; bei kapazitiven Sensoren hängen sie von Versorgungsspannung und Kabellänge ab. Reißt das Kabel des Schwimmerschalters, liest der Pin HIGH und der Code wertet das als leeren Tank; fällt also etwas aus, bleibt das System auf der sicheren Seite und stoppt die Pumpe. Soll nur zu bestimmten Uhrzeiten gegossen werden, ergänze ein RTC-Uhrmodul und prüfe die Uhrzeit in der Bedingung.

Wann ist ein Relais für die Pumpensteuerung sinnvoll?

Hast du nur ein Relaismodul, kannst du die Minipumpe auch damit betreiben: Das Pluskabel geht von der externen Versorgung an COM des Relais und von NO zur Pumpe, das Minuskabel an den Minus der Versorgung. Das Relais trennt die Pumpe vollständig von der Schaltung des Boards, und mit demselben Modul kannst du auch große 12-V-Pumpen oder netzbetriebene Aquarienpumpen schalten. Dafür kann ein Relais keine Drehzahl per PWM regeln, klickt bei jedem Schalten, seine Kontakte verschleißen und schon die Spule zieht rund 70 mA. Schaltest du die Pumpe ein paar Mal am Tag, genügt ein Relais; für Dosieren oder Drehzahlregelung ist ein MOSFET immer besser. Auch mit Relais verringert eine Diode an der Pumpe den Kontaktabbrand.

Wasserpumpe per ESP32 vom Handy aus steuern

Dank WLAN kannst du die Pumpe über den Browser deines Handys starten. Der Code unten startet auf dem ESP32 einen kleinen Webserver; rufst du auf einem Handy im selben Netz die IP-Adresse aus dem seriellen Monitor auf, siehst du Tasten für 5 und 15 Sekunden Gießen und eine Stopptaste. Eine zusätzliche Bibliothek brauchst du nicht, WebServer gehört zum ESP32-Core. Aus Sicherheitsgründen läuft die Pumpe nie länger als 30 Sekunden; selbst wenn die Verbindung abreißt, stoppt sie nach Ablauf der Zeit von selbst. Weil der ESP32 mit 3,3 V arbeitet, nimm einen MOSFET, der bei 3,3 V voll durchschaltet: Der AO3400A ist ideal, der IRLZ44N reicht für die 300 mA einer Minipumpe aber locker.

C++ (Arduino IDE)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* WIFI_SSID = "AgAdi";             // Wi-Fi adın (2,4 GHz) / your Wi-Fi name (2.4 GHz)
5const char* WIFI_PASS = "Sifre123";          // Wi-Fi şifren / your Wi-Fi password
6const int PUMP_PIN = 25;                     // MOSFET gate, 100 Ω üzerinden / through 100 Ω
7const unsigned long MAX_RUN_MS = 30000;      // güvenlik: en uzun çalışma / safety: longest run
8
9WebServer server(80);
10bool pumpOn = false;
11unsigned long pumpStart = 0;
12unsigned long pumpDuration = 0;
13
14void startPump(unsigned long ms) {
15  if (ms > MAX_RUN_MS) ms = MAX_RUN_MS;
16  pumpDuration = ms;
17  pumpStart = millis();
18  pumpOn = true;
19  digitalWrite(PUMP_PIN, HIGH);
20}
21
22void stopPump() {
23  pumpOn = false;
24  digitalWrite(PUMP_PIN, LOW);
25}
26
27void handleRoot() {
28  String html = F("<!DOCTYPE html><html><head><meta charset='utf-8'>"
29                  "<meta name='viewport' content='width=device-width,initial-scale=1'>"
30                  "<title>Pompa</title></head><body style='font-family:sans-serif;text-align:center'>"
31                  "<h2>BlueGrays Pompa</h2><p>");
32  html += pumpOn ? "Pompa çalışıyor / pump is on" : "Pompa kapalı / pump is off";
33  html += F("</p><p><a href='/run?s=5'><button>5 sn</button></a> "
34            "<a href='/run?s=15'><button>15 sn</button></a> "
35            "<a href='/stop'><button>Durdur / Stop</button></a></p></body></html>");
36  server.send(200, "text/html", html);
37}
38
39void goHome() {                              // ana sayfaya geri dön / go back to the main page
40  server.sendHeader("Location", "/");
41  server.send(303);
42}
43
44void handleRun() {
45  long seconds = server.arg("s").toInt();     // /run?s=5 → 5 saniye / 5 seconds
46  if (seconds > 0) startPump(seconds * 1000UL);
47  goHome();
48}
49
50void handleStop() {
51  stopPump();
52  goHome();
53}
54
55void setup() {
56  pinMode(PUMP_PIN, OUTPUT);
57  digitalWrite(PUMP_PIN, LOW);
58  Serial.begin(115200);
59  WiFi.mode(WIFI_STA);
60  WiFi.begin(WIFI_SSID, WIFI_PASS);
61  while (WiFi.status() != WL_CONNECTED) {
62    delay(500);
63    Serial.print(".");
64  }
65  Serial.println();
66  Serial.print(F("Tarayicida ac / open in the browser: http://"));
67  Serial.println(WiFi.localIP());
68
69  server.on("/", handleRoot);
70  server.on("/run", handleRun);
71  server.on("/stop", handleStop);
72  server.begin();
73}
74
75void loop() {
76  server.handleClient();
77  if (pumpOn && millis() - pumpStart >= pumpDuration) {   // süre doldu / time is up
78    stopPump();
79  }
80}

Diese Seite ist nur im heimischen WLAN erreichbar. Willst du die Pumpe auch von unterwegs steuern oder bei leerem Tank benachrichtigt werden, ergänze den Code mit den Methoden aus den Beiträgen ESP32-Telegram-Bot oder Blynk. Für ein Dashboard, das sich per WebSocket sofort aktualisiert, sieh dir ESP32 Async Webserver an. Weil die ESP32-Pins nur 3,3 V ausgeben, funktioniert ein IRF520-Modul hier nicht; nimm ein Modul mit Logic-Level-MOSFET.

Zeitgesteuertes Gießen mit dem Raspberry Pi Pico (MicroPython)

Am Pico steuerst du die Pumpe über einen MOSFET an GP15 und kannst sie per PWM sanft anlaufen lassen. Der Sanftanlauf verteilt den Anlaufstrom über einige hundert Millisekunden und verhindert einen plötzlichen Spannungseinbruch; hängen Pico und Pumpe an derselben Quelle, vermeidet das zufällige Neustarts. Der Code unten gießt alle 12 Stunden 8 Sekunden lang und gibt per Taster an GP14 zusätzlich 3 Sekunden. Weil die Pico-Pins nur 3,3 V liefern, nimm auch hier einen MOSFET, der bei 3,3 V garantiert durchschaltet, etwa den AO3400A. Bist du neu bei MicroPython, lies zuerst Was ist der Raspberry Pi Pico?.

MicroPython
1from machine import Pin, PWM
2import time
3
4pump = PWM(Pin(15))                       # MOSFET gate, 100 Ω üzerinden / through 100 Ω
5pump.freq(1000)                           # 1 kHz PWM
6pump.duty_u16(0)                          # açılışta kapalı / off at start-up
7button = Pin(14, Pin.IN, Pin.PULL_UP)     # buton: GP14 ile GND arası / button between GP14 and GND
8
9INTERVAL_MS = 12 * 60 * 60 * 1000         # 12 saatte bir / every 12 hours
10WATER_MS = 8000                           # her seferde 8 saniye / 8 seconds each time
11SPEED = 0.8                               # %80 hız / 80 % speed
12
13def water(ms):
14    top = int(65535 * SPEED)
15    for d in range(0, top, 2000):         # yumuşak kalkış (≈ 0,3 s) / soft start (≈ 0.3 s)
16        pump.duty_u16(d)
17        time.sleep_ms(10)
18    pump.duty_u16(top)
19    time.sleep_ms(ms)
20    pump.duty_u16(0)                      # pompayı durdur / stop the pump
21    print("Sulandi / watered:", ms, "ms")
22
23last = time.ticks_ms()
24while True:
25    if time.ticks_diff(time.ticks_ms(), last) >= INTERVAL_MS:
26        last = time.ticks_ms()
27        water(WATER_MS)
28    if button.value() == 0:               # elle sulama / manual watering
29        water(3000)
30        while button.value() == 0:        # bırakılmasını bekle / wait for release
31            time.sleep_ms(10)
32    time.sleep_ms(50)

Der Code misst die Zeit mit time.ticks_diff(), das auch beim Überlauf des Zählers die richtige Differenz liefert. Da die eigene Uhr des Pico beim Ausschalten zurückgesetzt wird und pro Tag einige Sekunden abweichen kann, brauchst du für einen Plan nach echter Uhrzeit, etwa „jeden Morgen um 7 Uhr gießen“, ein RTC-Modul oder einen Pico W, der die Zeit aus dem Internet (NTP) holt. Nach einem Stromausfall beginnt der 12-Stunden-Zähler wieder bei null; für die meisten Pflanzen ist das egal, bei Projekten für einen langen Urlaub solltest du es aber bedenken.

Projektideen mit einer Mini-Wasserpumpe

  • Urlaubsbewässerung: Mit einem Eimer Wasser, ein paar Töpfen und dünnen Schläuchen zu jedem Topf gießt du zwei Wochen lang; den kompletten Aufbau zeigt das Smart-Gewächshaus-Projekt.
  • Automatischer Wassernapf für Haustiere: Sinkt der Wasserstand im Napf, füllt die Pumpe aus einem Tank nach; für den Füllstand eignet sich ein berührungsloser Füllstandssensor.
  • Berührungsloser Seifen- oder Desinfektionsspender: Erkennt ein HC-SR04 oder Infrarotsensor eine Hand, läuft die Pumpe eine halbe Sekunde.
  • Cocktail- und Getränkemaschine: 3–4 Pumpen in eigenen Flaschen, jede einzeln auf ihre Förderrate kalibriert, mischen nach Rezept.
  • Tischbrunnen und Zierteich: Ein Brunnen, dessen Strahl nachts per PWM langsamer wird und der ausgeht, wenn ein LDR Dunkelheit erkennt.
  • Aquarium-Nachfüllautomatik: Ein System, das verdunstetes Wasser aus einem separaten Tank ergänzt, sobald ein Schwimmerschalter den gesunkenen Pegel meldet.
  • Smart-Home-Anbindung: Verknüpfe die Pumpe per ESP32 über MQTT und Home Assistant mit deinen anderen Geräten.

Häufige Fehler und ihre Lösungen

SymptomMögliche UrsacheLösung
Die Pumpe brummt, fördert aber kein WasserLuft im Gehäuse oder die Pumpe liegt über dem WasserspiegelPumpe ganz eintauchen und leicht schütteln, damit die Luft entweicht; Schlauch knickfrei verlegen
Der Arduino startet neu, wenn die Pumpe anläuftDie Pumpe hängt am 5V-Pin des Arduino oder die Diode fehltPumpe aus eigener 5-V-Quelle versorgen, antiparallele 1N5819 und 100 nF ergänzen
Die Pumpe läuft gar nichtKeine gemeinsame Masse oder falsche Pinfolge am MOSFETMinus der externen Versorgung mit Arduino-GND verbinden, G-D-S-Reihenfolge prüfen
Die Pumpe läuft beim Start des Arduino kurz anGate hängt in der Luft, kein Pull-down10 kΩ zwischen Gate und GND setzen
Nach dem Abschalten fließt weiter WasserSaugheber-Effekt: Schlauchende liegt unter dem TankpegelSchlauch höher legen oder oben ein kleines Belüftungsloch stechen
Die Förderrate lässt mit der Zeit nachAnsaugsieb verstopft, Batterien schwach oder Verschleiß durch TrockenlaufAnsaugung reinigen, Versorgung messen, Wasserstandssensor einbauen
Bei niedriger PWM dreht die Pumpe nichtTastgrad unter der Anlaufschwelle des MotorsBeim Start kurz mit voller Leistung anstoßen und MIN_DUTY erhöhen
Bevor du die Schaltung neben die Pflanze stellst, teste alle Fälle mit einem Testgefäß auf dem Tisch: Was passiert bei leerem Tank, was, wenn sich das Sensorkabel löst, und läuft die Pumpe von selbst an, wenn der Strom aus- und wieder angeht? Die Elektronik gehört neben oder über den Wasserbehälter, nie direkt darüber, und die Kabel sollten vor dem Board eine nach unten hängende Schlaufe (Tropfschlaufe) haben, damit am Kabel entlanglaufendes Wasser das Board nie erreicht.

Richtig angesteuert ist eine Mini-Tauchpumpe ein billiges, leises Bauteil, das jahrelang problemlos läuft: Mit einem Logic-Level-MOSFET, einer Freilaufdiode, einer eigenen 5-V-Versorgung und gemeinsamer Masse bleibt dein Arduino völlig sicher. Der Rest liegt bei deiner Fantasie; mit der gemessenen Förderrate dosierst du milliliter-genau, gießt nach Bodenfeuchte oder steuerst die Pumpe per ESP32 vom Handy aus. In der BlueGrays-App findest du das Projekt Intelligente Bewässerungsstation sowie Projekte zu ESP32-Webserver und RTC-Uhr mit Schritt-für-Schritt-Schaltplänen und Code.

Häufige Fragen

Wie schließt man eine Wasserpumpe an den Arduino an?

Eine Mini-Wasserpumpe kommt nicht direkt an einen Arduino-Pin, denn ein Pin liefert 20–40 mA, die Pumpe braucht aber 150–300 mA. Verbinde den Pluspol der Pumpe mit einer externen 5-V-Versorgung und den Minuspol mit dem Drain eines Logic-Level-MOSFETs wie dem IRLZ44N; das Gate kommt über 220 Ω an einen Pin, Source an GND. Setze eine 1N5819 antiparallel zur Pumpe und verbinde die Massen beider Quellen.

Wie viel Strom zieht eine Mini-Wasserpumpe?

3–6-V-Mini-Tauchpumpen ziehen im Betrieb meist 130–220 mA, bei 6 V bis zu 300 mA. Beim Anlaufen kann der Strom für einige Millisekunden auf das 2- bis 3-Fache steigen. Deshalb sollte die Versorgung mindestens 1 A liefern und die Pumpe nicht am 5V-Pin des Arduino hängen.

Wasserpumpe mit Relais oder MOSFET ansteuern?

Für 3–6-V-Minipumpen ist ein Logic-Level-MOSFET besser: Er ist lautlos, verschleißt nicht und erlaubt Drehzahlregelung per PWM. Ein Relais kann nur ein- und ausschalten, klickt und seine Spule zieht zusätzlich etwa 70 mA. Sinnvoll ist ein Relais bei großen 12-V-Pumpen oder Netzpumpen und wenn die Pumpe nur ein paar Mal am Tag läuft.

Was passiert, wenn eine Mini-Wasserpumpe trocken läuft?

Diese Pumpen werden vom Wasser gekühlt und ihre Lagerung wird von ihm geschmiert. Ein paar Sekunden Trockenlauf schaden meist nicht, aber nach Minuten wird das Lager heiß, die Kunststoffteile verschleißen und die Pumpe kann festgehen. In automatischen Systemen gehört ein Wasserstandssensor oder Schwimmerschalter in den Tank und eine Höchstlaufzeit in den Code.

Wie hoch pumpt eine Mini-Wasserpumpe das Wasser?

Die maximale Förderhöhe von 3–6-V-Mini-Tauchpumpen liegt meist zwischen 40 und 110 cm. Je näher du dieser Höhe kommst, desto stärker sinkt die Förderrate, und an der Grenze kommt fast kein Wasser mehr aus dem Schlauch. Musst du höher pumpen, nimm eine stärkere 12-V-Pumpe oder eine Membranpumpe.

Kann man die Drehzahl einer Wasserpumpe mit dem Arduino regeln?

Ja. Steuerst du die Pumpe über einen Logic-Level-MOSFET, regelst du die Drehzahl mit analogWrite() an einem PWM-Pin. Kleine Pumpen laufen unter etwa 30–40 % Tastgrad nicht an; gib deshalb zuerst einen kurzen Impuls mit voller Leistung und senke dann die Drehzahl. Mit einem Relais ist keine Drehzahlregelung möglich.

Alle Projekte ansehen
Intelligente Bewässerungsstation
#83Fortgeschritten
Premium

Intelligente Bewässerungsstation

Ein Gärtner, der deine Pflanzen von selbst gießt, damit sie im Urlaub nicht vertrocknen. Ein Bodenfeuchtesensor misst, wie nass die Erde ist; wird sie trocken, lässt der Arduino die Wasserpumpe ein pa

5.0(42)
57
ESP32 Async-Webserver (mit IP-Anzeige auf dem LCD)
#129Fortgeschritten

ESP32 Async-Webserver (mit IP-Anzeige auf dem LCD)

In diesem Projekt verwandeln wir den ESP32 in einen asynchronen Webserver, den Sie über Ihr Smartphone oder Ihren Computer im selben WLAN-Netzwerk steuern können. Dank der ESPAsyncWebServer-Bibliothek kann der Server mehrere Anfragen gleichzeitig bearbeiten (im Gegensatz zum klassischen WebServer.h, der bei einer einzigen Anfrage blockiert). Sie können über den Browser die IP-Adresse des ESP32 öffnen und durch Drücken der ON/OFF-Schaltflächen (Routen /on und /off) die an GPIO 5 anges

4.8(16)
26
ESP32-WLAN-STA-Verbindung (mit LCD-Display)
#127Fortgeschritten

ESP32-WLAN-STA-Verbindung (mit LCD-Display)

In diesem Projekt verbinden wir den ESP32 im Station-Modus (STA) sicher und fehlertolerant mit dem heimischen WLAN. Wir lagern SSID und Passwort in eine separate secrets.h-Datei aus, um Leaks zu Git zu verhindern, richten einen Auto-Reconnect-Mechanismus ein und zeigen RSSI-Signalpegel und IP-Adresse auf einem I2C-LCD-Display an. Die interne LED dient als Statusanzeige. Ein Verbindungsmanager auf Produktionsniveau.

4.4(21)
34
Digitale Uhr mit ESP32 und RTC DS1307 (I2C + LCD)
#120Mittel
Premium

Digitale Uhr mit ESP32 und RTC DS1307 (I2C + LCD)

In diesem Projekt zeigen wir Uhrzeit und Datum auf einem 16x2-I2C-LCD-Display mithilfe des DS1307-Echtzeituhrmoduls (RTC) an. Das DS1307 ist ein batteriegestütztes RTC, das die Uhrzeit auch dann beibehält, wenn das ESP32 ausgeschaltet ist. Beide Module teilen sich denselben I2C-Bus (SDA/SCL), sodass wir mit nur zwei Signalkabeln die Steuerung mehrerer Geräte erlernen. So lernen Sie das I2C-Protokoll und die Funktionsweise von RTC-Modulen in der Praxis kennen.

4.6(26)
40
DS1302-RTC-Uhrenmodul einrichten
#45Anfänger

DS1302-RTC-Uhrenmodul einrichten

Du bringst ein kleines Uhrmodul zum Laufen, das die Zeit nicht vergisst, selbst wenn der Arduino ausgeschaltet ist. Das Modul hat seine eigene winzige Batterie, und sobald die Uhr einmal gestellt ist,

4.5(23)
31
LED per Bluetooth mit dem Handy steuern
#34Anfänger
Premium

LED per Bluetooth mit dem Handy steuern

Eine kleine Probe dafür, das Licht in deinem Zimmer vom Handy aus ein- und auszuschalten. Das Bluetooth-Modul leitet die Buchstaben, die du vom Handy schickst, an den Arduino weiter; ein Buchstabe sch

4.8(68)
89
ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)
#141Fortgeschritten
Premium

ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)

Verwandle deinen Flur, dein Badezimmer oder deine Speisekammer mit dem ESP32 in intelligente Beleuchtung! Mit einem PIR-Bewegungssensor, einem LDR-Lichtsensor und einem Relaismodul realisieren wir das klassische Szenario "Licht geht an, wenn im Dunkeln Bewegung erkannt wird" — bei Tageslicht bleibt das Licht trotz Bewegung aus, was tagsüber Energie spart. Das Licht bleibt 30 Sekunden lang an; bei anhaltender Bewegung wird der Timer zurückgesetzt und das Licht bleibt länger an. Das SSD1306 OLED-D

4.3(6)
11