Zpět na články

Ovládání DC motoru přes webový server na ESP32

Vytvoř webový server na ESP32 a ovládej DC motor přes WiFi pomocí jednoduché webové stránky.

Ovládání DC motoru přes webový server na ESP32

V tomto projektu vytvoříme webový server na mikrokontroleru ESP32, pomocí kterého lze na dálku ovládat DC motor. Webová stránka bude obsahovat tlačítka pro otáčení motoru dopředu, dozadu nebo pro jeho zastavení. Motor bude připojen přes driver L298N a ESP32 bude naprogramováno pomocí Arduino IDE.

Přehled projektu

ESP32 vytvoří jednoduchý webový server. Po otevření IP adresy zařízení v prohlížeči se zobrazí webová stránka s ovládacími tlačítky.

Každé tlačítko odešle na ESP32 jiný HTTP požadavek:

  • tlačítko Forward odešle požadavek na adresu /forward a motor se začne otáčet dopředu
  • tlačítko Backward odešle požadavek na /backward a motor se začne otáčet opačným směrem
  • tlačítko Stop odešle požadavek na /stop a motor se zastaví

ESP32 podle přijaté URL zavolá odpovídající funkci pro řízení motoru.

ESP32 Blog image

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.

ESP32 Blog image

Instalace knihoven

Pro vytvoření webového serveru se používají dvě knihovny:

  • ESPAsyncWebServer
  • AsyncTCP

Tyto knihovny lze nainstalovat pomocí Library Manageru v Arduino IDE.

Po instalaci je možné vytvořit asynchronní webový server, který zvládne více klientů současně.

ESP32 Blog image

ESP32 Blog image

Program pro ESP32

Následující kód vytvoří webový server, který zobrazí stránku s tlačítky pro ovládání motoru.

dc-web.cpp
1#include <Arduino.h> 2#include <WiFi.h> 3#include <AsyncTCP.h> 4#include <ESPAsyncWebServer.h> 5 6// piny motoru 7int motor1Pin1 = 27; 8int motor1Pin2 = 26; 9int enable1Pin = 14; 10 11// WiFi připojení 12const char* ssid = "NAZEV_WIFI"; 13const char* password = "HESLO_WIFI"; 14 15AsyncWebServer server(80); 16 17// HTML stránka 18const char index_html[] PROGMEM = R"rawliteral( 19<!DOCTYPE html> 20<html> 21<head> 22<meta name="viewport" content="width=device-width, initial-scale=1"> 23<title>ESP32 Motor Control</title> 24</head> 25<body> 26<h2>Ovládání motoru</h2> 27<a href="/forward"><button>Dopředu</button></a> 28<a href="/backward"><button>Dozadu</button></a> 29<a href="/stop"><button>Stop</button></a> 30</body> 31</html>)rawliteral"; 32 33void moveForward(){ 34 digitalWrite(enable1Pin, HIGH); 35 digitalWrite(motor1Pin1, LOW); 36 digitalWrite(motor1Pin2, HIGH); 37} 38 39void moveBackward(){ 40 digitalWrite(enable1Pin, HIGH); 41 digitalWrite(motor1Pin1, HIGH); 42 digitalWrite(motor1Pin2, LOW); 43} 44 45void stopMotor(){ 46 digitalWrite(enable1Pin, LOW); 47 digitalWrite(motor1Pin1, LOW); 48 digitalWrite(motor1Pin2, LOW); 49} 50 51void initWiFi(){ 52 WiFi.mode(WIFI_STA); 53 WiFi.begin(ssid, password); 54 55 while(WiFi.status() != WL_CONNECTED){ 56 delay(1000); 57 } 58} 59 60void setup(){ 61 Serial.begin(115200); 62 63 pinMode(motor1Pin1, OUTPUT); 64 pinMode(motor1Pin2, OUTPUT); 65 pinMode(enable1Pin, OUTPUT); 66 67 initWiFi(); 68 69 server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ 70 request->send(200, "text/html", index_html); 71 }); 72 73 server.on("/forward", HTTP_GET, [](AsyncWebServerRequest *request){ 74 moveForward(); 75 request->send(200, "text/html", index_html); 76 }); 77 78 server.on("/backward", HTTP_GET, [](AsyncWebServerRequest *request){ 79 moveBackward(); 80 request->send(200, "text/html", index_html); 81 }); 82 83 server.on("/stop", HTTP_GET, [](AsyncWebServerRequest *request){ 84 stopMotor(); 85 request->send(200, "text/html", index_html); 86 }); 87 88 server.begin(); 89} 90 91void loop() { 92 93}

Program vytvoří webovou stránku s tlačítky, která odesílají HTTP požadavky na ESP32. Podle požadavku ESP32 změní stav pinů a tím ovládá motor.

Spuštění projektu

Po nahrání programu do ESP32 otevři Serial Monitor s rychlostí 115200 baudů.

ESP32 po připojení k WiFi vypíše svou IP adresu. Tuto adresu zadej do webového prohlížeče na počítači nebo telefonu připojeném ke stejné síti.

Zobrazí se webová stránka s tlačítky pro ovládání motoru.

Kliknutím na tlačítka můžeš motor:

  • roztočit dopředu
  • roztočit dozadu
  • zastavit

Server může obsluhovat více zařízení najednou, takže motor lze ovládat například z počítače i telefonu současně.

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.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.