V tomto projektu budeme ovládat DC motor. Motor bude připojen přes driver L298N a ESP32 bude naprogramováno pomocí Arduino IDE.
Přehled projektu
DC motor nelze připojit přímo na GPIO piny ESP32 – potřebuje víc proudu než je ESP32 schopno dodat. Motor driver L298N funguje jako prostředník: přijímá logické signály z ESP32 a spíná výkonový proud z externího zdroje.

Potřebné komponenty
Pro vytvoření projektu budeš potřebovat několik základních součástek:
- mikrokontroler ESP32
- DC motor
- motor driver L298N
- propojovací vodiče
- externí napájení pro motor (například 4 AA baterie nebo jiný zdroj)
Motor potřebuje vyšší proud než dokáže poskytnout ESP32, proto se používá motor driver a samostatné napájení.
Zapojení ESP32, L298N a motoru
Motor se připojuje k výstupu Motor A na modulu L298N.
Pin Input 1 na driveru L298N připojíme na GPIO 27 na ESP32.
Pin Input 2 na driveru připojíme na GPIO 26 na ESP32.
Pin Enable A připojíme na GPIO 14 na ESP32.
Pin GND na driveru musí být propojen se zemí ESP32.
Motor driver je napájen externím zdrojem, například bateriovým držákem. V tomto zapojení lze použít napětí přibližně 6 až 12 V podle typu motoru.
Doporučuje se také připájet 0,1 µF keramický kondenzátor mezi kontakty motoru, aby se omezily napěťové špičky vznikající při jeho chodu.

Program pro ESP32
Následující kód vytvoří webový server, který zobrazí stránku s tlačítky pro ovládání motoru.
1// Piny
2const int IN1 = 27;
3const int IN2 = 26;
4const int ENA = 14;
5
6// PWM nastavení
7const int pwmChannel = 0;
8const int pwmFreq = 1000; // Hz
9const int pwmRes = 8; // 8-bit = 0–255
10
11void moveForward(int speed) {
12 digitalWrite(IN1, LOW);
13 digitalWrite(IN2, HIGH);
14 ledcWrite(pwmChannel, speed);
15}
16
17void moveBackward(int speed) {
18 digitalWrite(IN1, HIGH);
19 digitalWrite(IN2, LOW);
20 ledcWrite(pwmChannel, speed);
21}
22
23void stopMotor() {
24 digitalWrite(IN1, LOW);
25 digitalWrite(IN2, LOW);
26 ledcWrite(pwmChannel, 0);
27}
28
29void setup() {
30 Serial.begin(115200);
31
32 pinMode(IN1, OUTPUT);
33 pinMode(IN2, OUTPUT);
34
35 // PWM pro ENA
36 ledcSetup(pwmChannel, pwmFreq, pwmRes);
37 ledcAttachPin(ENA, pwmChannel);
38}
39
40void loop() {
41 Serial.println("Dopředu – plná rychlost");
42 moveForward(255);
43 delay(3000);
44
45 Serial.println("Dopředu – poloviční rychlost");
46 moveForward(128);
47 delay(3000);
48
49 Serial.println("Stop");
50 stopMotor();
51 delay(1000);
52
53 Serial.println("Dozadu – plná rychlost");
54 moveBackward(255);
55 delay(3000);
56
57 Serial.println("Stop");
58 stopMotor();
59 delay(1000);
60}Spuštění projektu
Po nahrání programu do ESP32 otevři Serial Monitor s rychlostí 115200 baudů.
Možná rozšíření projektu
Tento projekt můžeš dále rozšířit například o:
- řízení rychlosti motoru pomocí PWM
- ovládání více motorů
- přidání senzorů a zobrazování dat na webu
- vytvoření dashboardu pro IoT zařízení
ESP32 díky WiFi umožňuje snadno vytvářet webové aplikace pro ovládání hardware v reálném čase.
