ESP32 - Bestuurt Auto via Web
Deze handleiding laat zien hoe u met de ESP32 draadloos een robotauto bestuurt vanuit een webbrowser op uw smartphone of pc via WiFi. De bediening gebeurt via een grafische web interface met behulp van WebSocket, wat zorgt voor een vloeiende en dynamische besturing van de auto.

Hardware Benodigdheden
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over 2WD RC Auto en WebSocket
Waarom kiezen we voor WebSocket? Hier is het verhaal:
- Zonder WebSocket zou het veranderen van rijrichting elke keer de pagina moeten herladen. Niet ideaal!
- Met WebSocket maken we een speciale verbinding tussen de webpagina en de ESP32. Dit maakt het mogelijk om commando’s op de achtergrond naar de ESP32 te sturen zonder dat de pagina hoeft te herladen. Het resultaat? De robotauto bestuurt soepel en in realtime. Heel gaaf, toch?
Kortom, de WebSocket verbinding maakt vloeiende, realtime besturing van de robot mogelijk.
We hebben specifieke tutorials over de 2WD RC Auto en WebSocket. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over hardware pinout, werkingsprincipe, wiring naar ESP32, ESP32 code… Lees er meer over via de volgende links:
- ESP32 - 2WD RC Auto tutorial
- ESP32 - WebSocket tutorial
Hoe Het Werkt
De ESP32 code creëert zowel een webserver als een WebSocket Server. Zo werkt het:
- Wanneer u het IP-adres van de ESP32 invoert in een webbrowser, vraagt deze de webpagina (gebruikersinterface) op bij de ESP32.
- De webserver van de ESP32 reageert door de inhoud van de webpagina te verzenden (HTML, CSS, JavaScript).
- Uw webbrowser toont vervolgens de webpagina.
- De JavaScript code in de pagina maakt een WebSocket verbinding met de WebSocket server op de ESP32.
- Zodra deze WebSocket verbinding is gelegd, zal de JavaScript code bij het indrukken of loslaten van buttons op de webpagina stilletjes commando’s versturen naar de ESP32 via deze WebSocket verbinding op de achtergrond.
- De WebSocket server op de ESP32 ontvangt de commando’s en bestuurt vervolgens de robotauto overeenkomstig.
De onderstaande tabel toont de lijst met commando’s die de webpagina naar de ESP32 stuurt op basis van de acties van de gebruiker:
| Gebruikersactie | Knop | Commando | Auto Actie |
|---|---|---|---|
| INSDRUKKEN | UP | 1 | VOORUIT RIJDEN |
| INSDRUKKEN | DOWN | 2 | ACHTERUIT RIJDEN |
| INSDRUKKEN | LEFT | 4 | LINKS DRAAIEN |
| INSDRUKKEN | RIGHT | 8 | RECHTS DRAAIEN |
| INSDRUKKEN | STOP | 0 | STOPPEN |
| LOSLATEN | UP | 0 | STOPPEN |
| LOSLATEN | DOWN | 0 | STOPPEN |
| LOSLATEN | LEFT | 0 | STOPPEN |
| LOSLATEN | RIGHT | 0 | STOPPEN |
| LOSLATEN | STOP | 0 | STOPPEN |
Bedradingsschema tussen 2WD RC Auto en ESP32
Het onderstaande schema laat zien hoe u de ESP32, de L9110S motor driver en de twee DC-motoren verbindt, waarbij een breadboard wordt gebruikt om de gemeenschappelijke voedings- en aardingslijnen te delen:

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
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.
Opmerking: Het bovenstaande schema toont de juiste bedrading. In de praktijk is het niet eenvoudig om meerdere draden (zoals de gedeelde VCC- en GND-lijnen) in hetzelfde pinheader-gaatje van de ESP32 te steken. Een handige oplossing is het gebruik van een schroefklemmen breakout-board voor ESP32 — meerdere draden kunnen in dezelfde schroefklem worden vastgezet, of één draad in de schroefklem en een andere in de aangrenzende headerpin.

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
De L9110S module (die dient als motor driver) voedt de motoren rechtstreeks via de VCC- en GND-pinnen en heeft geen ingebouwde 5V-regelaar. Hierdoor kunt u alles met slechts één stroombron voeden – vier 1.5V batterijen (totaal 6V). Zo werkt het:
- Verbind de 6V-batterij met de VCC- en GND-pinnen van de L9110S module om de motoren te voeden.
- Verbind dezelfde 6V-batterij met de Vin- en GND-pinnen van de ESP32 om het ESP32-board te voeden.
- Zorg ervoor dat de L9110S module en de ESP32 een gemeenschappelijke GND delen.
In tegenstelling tot de L298N heeft de L9110S geen ENA/ENB enable-jumpers en geen 12V-schroefaansluiting, waardoor de bedrading eenvoudiger is.
Omdat de 2WD RC auto een aan/uit-schakelaar heeft, kunt u optioneel de batterij via deze schakelaar aansluiten om de voeding van de auto in- of uit te schakelen. Wilt u het simpel houden, dan kunt u de schakelaar negeren.
ESP32 Code
De inhoud van de webpagina (HTML, CSS, JavaScript) is apart opgeslagen in een index.h bestand. U gebruikt dus twee codebestanden in Arduino IDE:
- Een .ino bestand met de ESP32 code, die een webserver en een WebSocket Server creëert en de auto bestuurt
- Een .h bestand dat de inhoud van de webpagina bevat
Snelle Stappen
- Als u ESP32 voor het eerst gebruikt, bekijk dan hoe de omgeving te configureren voor ESP32 in Arduino IDE.
- Maak de bedrading volgens bovenstaande afbeelding.
- Verbind het ESP32 bord met uw pc via een micro USB kabel.
- Open Arduino IDE op uw pc.
- Selecteer het juiste ESP32 bord (bijv. ESP32 Dev Module) en de juiste COM-poort.
- Open de Library Manager door te klikken op het Library Manager icoon in de linker zijbalk van Arduino IDE.
- Zoek op “DIYables ESP32 WebServer” en vind de Web Server library gemaakt door DIYables.
- Klik op de knop Installeren om de Web Server library te installeren.

- Maak in Arduino IDE een nieuw sketch en geef het een naam, bijvoorbeeld newbiely.com.ino
- Kopieer onderstaande code en open deze in Arduino IDE
- Pas de WiFi gegevens (SSID en wachtwoord) in de code aan naar uw eigen netwerkgegevens.
- Maak het index.h bestand aan in Arduino IDE door:
- Ofwel te klikken op de knop net onder het serial monitor icoon en kies New Tab, of gebruik de toetsen Ctrl+Shift+N.
- Geef het bestand de naam index.h en klik op OK
- Kopieer 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 knop Upload in Arduino IDE om de code naar de ESP32 te uploaden.
- Open de Serial Monitor.
- Bekijk het resultaat in de Serial Monitor.
- Noteer het IP-adres dat wordt weergegeven en voer dit adres in de adresbalk van een webbrowser op uw smartphone of pc in.
- U ziet dan de volgende webpagina:
- De JavaScript code van de webpagina maakt automatisch de WebSocket-verbinding met de ESP32.
- Nu kunt u via de webinterface de auto vooruit/achteruit laten rijden, en links/rechts laten draaien.
- Als u de HTML-inhoud in het index.h bestand wijzigt en het newbiely.com.ino bestand ongemoeid laat, zal Arduino IDE bij compileren en uploaden de HTML-inhoud niet bijwerken.
- Om Arduino IDE in dit geval de HTML-inhoud te laten updaten, maak dan een kleine wijziging in het newbiely.com.ino bestand (bijvoorbeeld een lege regel toevoegen, een commentaar toevoegen...).



Om het geheugen van de ESP32 te sparen, zijn de afbeeldingen van de bedieningsknoppen NIET opgeslagen op de ESP32. In plaats daarvan worden ze van het internet geladen, dus uw telefoon of pc moet verbonden zijn met internet om deze afbeeldingen te kunnen laden voor de webbediening.
※ Notiz:
Regel-voor-Regel Code-uitleg
De bovenstaande ESP32 code bevat een regel-voor-regel uitleg in de comments. Lees de opmerkingen in de code goed door!