ESP32 - WebSocket
In deze handleiding leert u wat WebSocket is, waarom u het nodig heeft om ESP32 soepel te besturen, en hoe u WebSocket met ESP32 gebruikt. In een praktisch voorbeeld maken we een chatapplicatie tussen de webbrowser en ESP32, waarmee u het volgende kunt doen:
- Typ een bericht in het chatvenster van de webbrowser en stuur dit naar de ESP32. U kunt dit aanpassen om de ESP32 te besturen.
- Ontvang real-time berichten van de ESP32. Dit kunt u gebruiken om de ESP32 in real-time te monitoren.

Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Wat is ESP32 WebSocket?
U vraagt zich misschien af: "Wat is WebSocket?" Het is redelijk eenvoudig: WebSocket is een technologie die het mogelijk maakt dat een webbrowser rechtstreeks en in real-time met een webserver communiceert.
- Zonder WebSocket moet u de webpagina verversen om updates te zien. Dat is niet erg praktisch.
- Met WebSocket blijven de webpagina en server continu verbonden. Daardoor kunnen ze direct informatie uitwisselen zonder de pagina opnieuw te laden.
U komt WebSocket waarschijnlijk dagelijks tegen in webapplicaties zoals online games, instant messaging en beursupdates.
Waarom hebben we WebSocket nodig om ESP32 soepel te besturen?
Stel, u wilt uw bestuurbare auto op afstand bedienen via een webinterface op uw telefoon of computer. Zonder WebSocket zou u elke keer de webpagina moeten verversen om de richting of snelheid van de auto aan te passen. Dat is alsof u telkens op een "ververs"-knop moet drukken om uw commando door te geven.
Met WebSocket is het alsof er een continue en directe verbinding is tussen uw telefoon/computer en de auto. U hoeft de pagina niet telkens te verversen om de auto te sturen of de snelheid aan te passen. De auto "luistert" continu naar uw commando’s in real-time, zonder vertraging door steeds opnieuw laden van de pagina.
Samengevat stelt WebSocket u in staat om:
- Gegevens van de webbrowser naar de ESP32 te sturen zonder de pagina te verversen.
- Gegevens van de ESP32 naar de webbrowser te sturen zonder de pagina te verversen.
Dit maakt tweerichtingscommunicatie in real-time mogelijk.
Voordelen van WebSocket met ESP32:
- Realtime Besturing: WebSocket maakt directe communicatie met de ESP32 mogelijk, wat snelle reacties op commando’s geeft voor een vloeiende gebruikerservaring.
- Persistente Verbinding: Houd een doorlopende verbinding zonder de bedieningspagina te verversen, waardoor direct instructies gestuurd kunnen worden.
- Efficiëntie: Geniet van vlotte reacties zonder steeds de pagina te hoeven herladen, wat de algehele gebruiksvriendelijkheid en efficiëntie verhoogt.
Web Chat met ESP32 via WebSocket
De inhoud van de webpagina (HTML, CSS, JavaScript) wordt apart opgeslagen in een index.h bestand. Zo heeft u in de Arduino IDE twee codebestanden:
- Een .ino bestand met de ESP32-code, dat een webserver en WebSocket-server creëert
- Een .h bestand dat de inhoud van de webpagina bevat
Snel aan de slag
- Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
- Verbind het ESP32-board met uw PC via een micro-USB-kabel
- Open de Arduino IDE op uw PC.
- Selecteer het juiste ESP32-board (bijv. ESP32 Dev Module) en de juiste COM-poort.
- Open de Library Manager door te klikken op het Library Manager icoon in de linker navigatiebalk van de Arduino IDE.
- Zoek op “DIYables ESP32 WebServer” en vind de Web Server bibliotheek gemaakt door DIYables.
- Klik op de Install knop om de Web Server bibliotheek te installeren.

- Maak in Arduino IDE een nieuwe sketch aan, geef deze 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 onder het seriële monitor icoon en New Tab te kiezen, of gebruik 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 Upload knop in Arduino IDE om de code naar de ESP32 te uploaden.
- Open de Seriële Monitor
- Bekijk het resultaat in de Seriële 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 webpagina zoals hieronder afgebeeld:
- Klik op de CONNECT-knop om de webpagina via WebSocket te verbinden met de ESP32.
- Typ wat tekst en verstuur dit naar de ESP32.
- U ziet dan de reactie van de ESP32.
- Als u de HTML-inhoud in index.h aanpast maar niets verandert aan newbiely.com.ino, zal Arduino IDE bij compileren en uploaden de HTML-inhoud niet bijwerken.
- Om Arduino IDE de HTML-inhoud toch te laten bijwerken, maakt u een wijziging aan het newbiely.com.ino bestand (bijv. een lege regel toevoegen of een commentaarregel).




※ Notiz:
Regel-voor-regel Code Uitleg
De bovenstaande ESP32-code bevat regel-voor-regel uitleg in comments. Lees deze goed door!
Hoe het Systeem Werkt
De ESP32-code werkt door het creëren van zowel een webserver als een WebSocket-server. Het proces verloopt als volgt:
- Als u het IP-adres van de ESP32 invoert in een webbrowser, wordt een verzoek gedaan voor de webpagina (gebruikersinterface) bij de ESP32.
- De webserver van de ESP32 reageert door de inhoud van de pagina (HTML, CSS, JavaScript) te verzenden.
- Daarna toont de webbrowser de webpagina.
- Wanneer u op de CONNECT-knop klikt, maakt de JavaScript-code in de webpagina een WebSocket-verbinding met de WebSocket-server op de ESP32.
- Met de WebSocket-verbinding actief, wordt bij het typen en klikken op de SEND-knop de tekst via die WebSocket-verbinding naar de ESP32 gestuurd. Dit gebeurt op de achtergrond.
- Wanneer de WebSocket-server het bericht ontvangt, stuurt deze een antwoord terug naar de webpagina.
Andere voorbeelden met ESP32 en WebSocket kunt u hier vinden: