ESP32 - Servo Motor Besturen via Web
Deze handleiding legt uit hoe u de ESP32 gebruikt om een servo motor via het web te besturen, rechtstreeks vanuit een browser op uw smartphone of pc. We gebruiken iets genaamd WebSocket om de servo motor soepel en dynamisch te besturen via een grafische webgebruikersinterface.
De onderstaande video is een demonstratie:
Waarom WebSocket gebruiken? Hier is het idee:
- Zonder WebSocket moet de pagina steeds opnieuw geladen worden wanneer u de hoek van de servo wilt aanpassen. Niet ideaal!
- Met WebSocket stellen we een speciale verbinding in tussen de webpagina en de ESP32. Hierdoor kunnen we de hoekwaarde op de achtergrond naar de ESP32 sturen, zonder de pagina te herladen. Dit zorgt voor een vloeiende en realtime aansturing van de servo. Best gaaf, toch?
Laten we beginnen!
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables ESP32 Starterskit (ESP32 inbegrepen) | |
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over Servo Motor en WebSocket
We hebben specifieke tutorials over servo motor en WebSocket. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over hardware pinout, werkingsprincipe, bedrading naar ESP32, ESP32 code… Meer leren over deze onderwerpen kan via de volgende links:
- ESP32 - Servo Motor tutorial
- ESP32 - WebSocket tutorial
Hoe Werkt Het
De ESP32 code maakt zowel een webserver als een WebSocket-server aan. Zo werkt het:
- Wanneer u het IP-adres van de ESP32 in een webbrowser invoert, wordt de webpagina (gebruikersinterface) opgevraagd bij de ESP32.
- De webserver van de ESP32 reageert door de inhoud van de webpagina te versturen (HTML, CSS, JavaScript).
- Uw webbrowser toont vervolgens de webpagina.
- De JavaScript-code in de webpagina maakt een WebSocket-verbinding met de WebSocket-server op de ESP32.
- Zodra deze WebSocket-verbinding tot stand is gebracht, stuurt de JavaScript-code ongemerkt de hoekwaarde naar de ESP32 via deze WebSocket-verbinding op de achtergrond, telkens wanneer u de hendel op de pagina draait.
- De WebSocket-server op de ESP32 ontvangt de hoekwaarde en bestuurt de servo motor overeenkomstig.
Kortom, de WebSocket-verbinding maakt een soepele en realtime besturing van de hoek van de servo motor mogelijk.
Bedradingsschema tussen Servo Motor en ESP32

This image is created using Fritzing. Click to enlarge image
Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.
Voor de eenvoud wordt het bovenstaande bedradingsschema gebruikt voor test- of leerdoeleinden en voor servo motoren met een klein koppel. In de praktijk raden wij sterk aan om een externe voeding te gebruiken voor de servo motor. Het onderstaande bedradingsschema toont hoe de servo motor op een externe voedingsbron aangesloten kan worden.

This image is created using Fritzing. Click to enlarge image
Hieronder ziet u een echte bedrading tussen de servo motor en ESP32.

ESP32 Code
De inhoud van de webpagina (HTML, CSS, JavaScript) wordt apart opgeslagen in een index.h bestand. Dus, we hebben twee codebestanden in de Arduino IDE:
- Een .ino bestand met de ESP32 code, dat een webserver en WebSocket-server aanmaakt en de servo motor bestuurt
- Een .h bestand, dat de inhoud van de webpagina bevat
Snelle Stappen
- Als u ESP32 voor het eerst gebruikt, zie dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
- Maak de bedrading zoals hierboven in de afbeelding.
- Sluit de ESP32 aan op uw pc via een micro USB-kabel.
- Open Arduino IDE op uw pc.
- Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de correcte COM-poort.
- Open de Library Manager door te klikken op het Library Manager icoon in de linker navigatiebalk van Arduino IDE.
- Zoek naar “DIYables ESP32 WebServer”, en vind dan de Web Server bibliotheek gemaakt door DIYables.
- Klik op de Install knop om de Web Server bibliotheek te installeren.

- Typ ESP32Servo in de zoekbalk en zoek naar de servo bibliotheek van Kevin Harrington, John K. Bennett.
- Klik op de Install knop om de servo motor bibliotheek voor ESP32 te installeren.

- Maak in Arduino IDE een nieuwe sketch aan, geef het een naam, bijvoorbeeld newbiely.com.ino
- Kopieer de onderstaande code en open deze met Arduino IDE.
- Pas de WiFi-gegevens aan (SSID en wachtwoord) in de code, zodat deze overeenkomen met uw eigen netwerkgegevens.
- Maak het bestand index.h aan in Arduino IDE door:
- Of te klikken op de knop net onder het serial monitor-icoon en kies New Tab, of gebruik de toetsencombinatie Ctrl+Shift+N.
- Geef het bestand de naam index.h en klik op OK.
- Kopieer de onderstaande code en plak deze in index.h.
- Nu heeft u de code in twee bestanden: newbiely.com.ino en index.h
- Klik op de Upload knop in Arduino IDE om de code naar de ESP32 te uploaden.
- Open de Serial Monitor.
- Bekijk het resultaat in de Serial Monitor.
- Noteer het weergegeven IP-adres en voer dit adres in de adresbalk van een webbrowser op uw smartphone of pc in.
- U ziet de webpagina zoals hieronder:
- De JavaScript-code van de webpagina maakt automatisch de WebSocket-verbinding met de ESP32 aan.
- Nu kunt u de hoek van de servo motor via de webinterface bedienen.
- Als u de HTML-inhoud in index.h wijzigt zonder iets aan te passen in newbiely.com.ino, dan zal Arduino IDE de HTML-inhoud niet bijwerken bij het compileren en uploaden van de code naar ESP32.
- Om Arduino IDE de HTML-inhoud in dit geval te laten bijwerken, brengt u een wijziging aan in het newbiely.com.ino bestand, bijvoorbeeld een lege regel toevoegen of een commentaarregel.



Om het geheugen van de ESP32 te besparen, worden de afbeeldingen van de servo motor NIET op de ESP32 opgeslagen. Ze worden in plaats daarvan via internet geladen, dus uw telefoon of pc moet verbinding hebben met internet om de afbeeldingen voor de webcontrolpagina te kunnen laden.
※ Notiz:
Regel-voor-regel Code Uitleg
De bovenstaande ESP32 code bevat uitleg regel voor regel. Lees de commentaren in de code alstublieft aandachtig!