Arduino - WebSocket
In deze handleiding ontdekken we wat WebSocket is, waarom het nuttig is voor het effectief aansturen van Arduino, en hoe u WebSocket implementeert met Arduino. Met een praktijkvoorbeeld laten we zien hoe u een chatapplicatie bouwt die een webbrowser verbindt met Arduino, waarmee u kunt:
- Berichten typen en verzenden vanuit het chatvenster in uw webbrowser naar Arduino. Deze methode kan worden aangepast om Arduino aan te sturen.
- Direct berichten ontvangen van Arduino. Deze opzet kan worden aangepast om Arduino realtime te monitoren.

Benodigd Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Wat is Arduino WebSocket?
U vraagt zich misschien af: "Wat is WebSocket?" Het is eigenlijk heel simpel: WebSocket is een technologie die het een webbrowser mogelijk maakt om in realtime direct te communiceren met een webserver.
- Zonder WebSocket moet u de webpagina verversen om nieuwe updates te zien. Dat is niet erg praktisch.
- Met WebSocket blijft de webpagina continu verbonden met de server, waardoor ze direct informatie kunnen uitwisselen zonder de pagina te hoeven verversen.
Waarschijnlijk komt u WebSocket-technologie regelmatig tegen in alledaagse webapplicaties zoals online games, instant messaging en beurskoersen.
Waarom hebben we WebSocket nodig om Arduino soepel te besturen?
Stel u voor dat u uw op afstand bestuurbare auto wilt aansturen via een webinterface op uw telefoon of computer. Zonder WebSocket zou u bij elke verandering van richting of snelheid de webpagina moeten verversen. Het is alsof u elke keer op een 'herlaad'-knop moet drukken voordat de auto reageert.
Met WebSocket is er echter een doorlopende en directe verbinding tussen uw telefoon of computer en de auto. U hoeft de pagina niet te verversen om de auto te sturen of de snelheid aan te passen. Het is alsof de auto constant luistert naar uw commando’s in realtime, zonder vertragingen door vernieuwen.
Kortom maakt WebSocket het mogelijk om:
- Gegevens van de webbrowser naar Arduino te sturen zonder de pagina te verversen.
- Gegevens van Arduino terug te sturen naar de webbrowser zonder vernieuwen.
Dit maakt soepele tweerichtingscommunicatie in realtime mogelijk.
Voordelen van WebSocket met Arduino:
- Realtime Besturing: WebSocket zorgt voor directe communicatie met Arduino, waardoor commando’s snel worden verwerkt voor een naadloze gebruikerservaring.
- Persistente Verbinding: Houdt een continue verbinding zonder dat de bedieningspagina ververst hoeft te worden, wat zorgt voor een altijd-klaar communicatielijn voor onmiddellijke instructies.
- Efficiëntie: Ervaar snelle reacties zonder constant de pagina te herladen, wat het gebruiksgemak en de efficiëntie vergroot.
Web Chat met Arduino via WebSocket
De inhoud van de webpagina (HTML, CSS, JavaScript) wordt apart opgeslagen in een index.h bestand. We hebben dus twee codebestanden in de Arduino IDE:
- Een .ino-bestand dat de Arduino-code bevat, en hierin de webserver en WebSocket-server worden aangemaakt
- Een .h-bestand met de inhoud van de webpagina
Snelle Stappen
- Als dit de eerste keer is dat u Arduino Uno R4 gebruikt, bekijk dan hoe u de omgeving instelt voor Arduino Uno R4 in Arduino IDE.
- Verbind het Arduino-bord met uw pc via een micro USB-kabel.
- Open Arduino IDE op uw pc.
- Selecteer het juiste Arduino-bord (Arduino Uno R4 WiFi) en de COM-poort.
- Open de Library Manager door te klikken op het Library Manager-icoon in de linker navigatiebalk van Arduino IDE.
- Zoek naar Web Server for Arduino Uno R4 WiFi 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 nieuw sketch aan, geef het een naam, bijvoorbeeld ArduinoGetStarted.com.ino
- Kopieer onderstaande code en open deze met Arduino IDE
- Pas de WiFi-informatie (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 kiezen voor New Tab, of gebruik Ctrl+Shift+N.
- Geef het bestand de naam index.h en klik op OK.
- Kopieer onderstaande code en plak die in index.h.
- Nu heeft u code in twee bestanden: ArduinoGetStarted.com.ino en index.h.
- Klik op de Upload-knop in Arduino IDE om de code op de Arduino te zetten.
- 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 dan de volgende webpagina:
- Klik op de CONNECT-knop om de webpagina via WebSocket met Arduino te verbinden.
- Typ een bericht en verstuur dit naar Arduino.
- U ziet het antwoord van Arduino verschijnen.
- Als u de HTML-inhoud in index.h wijzigt zonder iets in het ArduinoGetStarted.com.ino bestand aan te passen, zal Arduino IDE bij compileren en uploaden de HTML-inhoud niet bijwerken.
- Om Arduino IDE te dwingen de HTML-inhoud toch bij te werken, maakt u een kleine wijziging in het ArduinoGetStarted.com.ino bestand (bijvoorbeeld een lege regel toevoegen of een commentaarregel invoegen).




※ Notiz:
Code Regel-voor-Regel Uitleg
De Arduino-code hierboven bevat regel-voor-regel uitleg. Lees de opmerkingen in de code goed door!
Hoe werkt het systeem?
De Arduino-code zet zowel een webserver als een WebSocket-server op. Zo werkt het:
- Wanneer u het IP-adres van de Arduino in een webbrowser invoert, vraagt de browser om de webpagina (gebruikersinterface) van de Arduino.
- De webserver op Arduino verzendt de inhoud van de webpagina (HTML, CSS, JavaScript) naar uw browser.
- De webbrowser toont de webpagina.
- Als u op de CONNECT-knop op de webpagina klikt, start de JavaScript-code op de pagina een WebSocket-verbinding met de WebSocket-server op Arduino.
- Zodra de WebSocket-verbinding actief is, en u iets typt en op de SEND-knop drukt, verstuurt JavaScript uw tekst op de achtergrond via de WebSocket-verbinding naar Arduino.
- Na ontvangst stuurt de WebSocket-server op Arduino een reactie terug naar uw webpagina.
U kunt meer Arduino WebSocket-voorbeelden leren via de onderstaande links: