ESP32 Tutorial 16/55 - Mini-waterpomp met ESP32 en L293D | SunFounder's ESP32 IoT-leerkit
In deze tutorial leren we hoe we een 5V waterpomp kunnen aansturen met behulp van de ESP32-microcontroller en de L293D-motorstuurmodule. Dit project is een uitstekende kennismaking met het gebruik van motorstuurmodules met microcontrollers, waardoor je apparaten kunt aansturen die meer stroom nodig hebben dan een microcontroller direct kan leveren. Aan het einde van deze tutorial heb je een werkende waterpomp die programmatisch kan worden in- en uitgeschakeld.

De ESP32 is een krachtige microcontroller met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor deze geschikt is voor IoT-toepassingen. De L293D-motorstuurmodule wordt gebruikt om de waterpomp aan te sturen door de hogere stroom te beheren die nodig is om de motor te laten werken. Deze opstelling stelt ons in staat om de pomp te starten en te stoppen, terwijl de ESP32 beschermd blijft tegen overmatige stroomafname.
Hardware uitgelegd
In dit project gebruiken we de ESP32-microcontroller, die bekend staat om zijn veelzijdigheid en connectiviteitsopties. Hij kan functioneren als een Arduino, maar biedt extra functies zoals Wi-Fi en Bluetooth. De L293D-motorstuurmodule fungeert als interface tussen de ESP32 en de waterpomp, waardoor de werking van de pomp kan worden aangestuurd zonder de microcontroller te overbelasten.
De L293D beschikt over twee H-bruggen, waarmee de richting en snelheid van de motor kunnen worden aangestuurd. Elke H-brug kan een motor in beide richtingen aandrijven, waardoor deze geschikt is voor toepassingen waar motorsturing nodig is. In dit geval hoeven we de pomp slechts in één richting te laten draaien.
Datasheet-details
| Fabrikant | Texas Instruments |
|---|---|
| Onderdeelnummer | L293D |
| Logica/IO-spanning | 4,5 - 36 V |
| Voedingsspanning | 4,5 - 36 V |
| Uitgangsstroom (per kanaal) | 600 mA |
| Piekstroom (per kanaal) | 1,2 A |
| PWM-frequentierichtlijn | 1 kHz - 10 kHz |
| Ingangslogische drempels | 2 V (hoog), 0,8 V (laag) |
| Spanningsval / RDS(on) / verzadiging | 1,5 V (max) |
| Thermische limieten | +150 °C (max) |
| Behuizing | DIP-16 |
| Opmerkingen / varianten | Bevat ingebouwde diodes voor bescherming tegen inductieve belasting |
- Zorg voor voldoende warmteafvoer bij continu gebruik.
- Gebruik ontkoppelcondensatoren voor een stabiele voedingsspanning.
- Wees voorzichtig met de ingangsspanning om schade te voorkomen.
- Implementeer PWM voor snelheidsregeling indien nodig.
- Controleer de bedrading om kortsluiting te voorkomen, vooral bij inductieve belastingen.
Bedradingsinstructies

Om de ESP32 en L293D-motorstuurmodule met de waterpomp te bedraden, volg je deze stappen zorgvuldig. Verbind eerst de voeding met de L293D. Verbind pin 1 (enable-pin voor motor A) en pin 8 (Vcc2) met de positieve spanningsbron (5V). Verbind pin 4 (aarde) met de aarde van je circuit.
Verbind vervolgens de ESP32 met de L293D. Verbind GPIO-pin 13 van de ESP32 met pin 2 (ingang 1) op de L293D, en GPIO-pin 14 met pin 7 (ingang 2). Verbind ten slotte de waterpomp met pin 3 (uitgang 1) en pin 6 (uitgang 2) van de L293D. Zorg ervoor dat alle aardverbindingen met elkaar zijn verbonden voor een correcte werking. Als je deze instructies volgt, zou je bedrading eenvoudig en functioneel moeten zijn.
Codevoorbeelden en uitleg
In de code definiëren we de pinverbindingen voor de motorsturing. De identifiers motor1A en motor2A komen overeen met respectievelijk GPIO-pinnen 13 en 14 op de ESP32. Deze pinnen sturen de waterpomp aan via de L293D-stuurmodule.
#define motor1A 13
#define motor2A 14
void setup() {
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
}
In de setup()-functie initialiseren we de motorstuurpinnen als uitgangen. Dit zorgt ervoor dat we signalen naar de L293D-stuurmodule kunnen sturen om de pomp te bedienen. De loop()-functie regelt vervolgens de werking van de pomp.
void loop() {
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
delay(5);
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(2000); // wacht een seconde
}
In de loop()-functie zetten we motor1A op HIGH en motor2A op LOW om de pomp te starten. Na een korte vertraging stoppen we de pomp door beide pinnen op LOW te zetten. Deze cyclus herhaalt zich oneindig, waardoor de pomp kort draait en vervolgens stopt.
Demonstratie / Wat te verwachten
Zodra je de bedrading hebt voltooid en de code hebt geüpload, zou je de waterpomp in een cyclus moeten zien aan- en uitschakelen. De pomp zal kort draaien en dan stoppen, waardoor een aan-uitpatroon ontstaat. Zorg ervoor dat je voeding voldoende is voor de vereisten van de pomp om problemen te voorkomen (in video op 09:30).
Videotijdstempels
- 00:00 Start
- 1:50 Projectintroductie
- 3:17 Waarom hebben we L293D met Arduino nodig?
- 5:47 Bedrading voor waterpomp uitgelegd
- 10:01 Arduino-code uitgelegd
- 12:21 COM-poort selecteren voor ESP32 in Arduino IDE
- 14:03 Demonstratie van het draaien van de pomp
- 15:25 Demonstratie met water
#define motor1A 13
#define motor2A 14
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin as an output.
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// Rotate
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
delay(5);
// Stop
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(2000); // wait for a second
}
Common Course Links
Common Course Files
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 16/55 - SunFounder motor documentationdocs.sunfounder.com
Bestanden📁
Datasheet (pdf)
-
L293d_Quadruple_half_bridge_datasheet
l293d_Quadruple_half_bridge_datasheet.pdf0.34 MB