Arduino Custom WebApp Voorbeeld - Eenvoudige Web Interface Tutorial voor Beginners
Overzicht
Dit voorbeeld biedt een complete sjabloon voor het maken van uw eigen aangepaste webapplicaties die naadloos integreren met de DIYables WebApps bibliotheek.

De CustomWebApp sjabloon is perfect voor beginners die hun eigen web interface willen toevoegen aan het DIYables WebApps ecosysteem! Deze tutorial toont u hoe u een eenvoudige webpagina bouwt met real-time bidirectionele data-uitwisseling tussen webbrowser en Arduino via WebSocket die kan:
- Tekstberichten versturen van webbrowser naar Arduino direct via WebSocket
- Berichten ontvangen van Arduino en deze real-time weergeven op de webpagina
- Persistente WebSocket-verbinding onderhouden voor continue communicatie
- Automatisch opnieuw verbinden wanneer de WebSocket-verbinding verloren gaat
- Werken op mobiele apparaten met responsive design
Ontworpen voor Arduino Uno R4 WiFi en DIYables STEM V4 IoT - deze sjabloon integreert perfect met bestaande DIYables web apps en biedt de basis voor het bouwen van uw eigen aangepaste IoT interfaces!
Deze sjabloon biedt minimale code om u op weg te helpen. Gebruikers kunnen hun eigen geavanceerde webapplicaties ontwikkelen door deze sjabloon te wijzigen. Basis webprogrammeerkennis (HTML, CSS, JavaScript) wordt aanbevolen voor het aanpassen van de web interface en het toevoegen van geavanceerde functies.
Wat U Zult Leren
- Hoe u een aangepaste web app maakt die integreert met de DIYables WebApps bibliotheek
- Hoe u uw aangepaste pagina toevoegt aan het DIYables web apps ecosysteem
- Hoe u tekstberichten verzendt van webbrowser naar Arduino
- Hoe u data verzendt van Arduino naar webbrowser
- Hoe u WebSocket-verbindingen afhandelt en automatisch opnieuw verbindt
- Hoe u mobiel-responsive web interfaces maakt
- Hoe u het DIYables WebApps sjabloonsysteem gebruikt voor snelle ontwikkeling
Functies
- DIYables WebApps Integratie: Integreert naadloos met het DIYables WebApps bibliotheek ecosysteem
- Minimale Sjablooncode: Biedt een basis fundament dat u kunt uitbreiden en aanpassen
- Sjabloon-Gebaseerde Ontwikkeling: Complete startpunt die u kunt wijzigen om geavanceerde applicaties te maken
- Eenvoudige Tekstberichten: Verstuur berichten tussen webbrowser en Arduino
- Automatisch Opnieuw Verbinden: Verbindt automatisch opnieuw wanneer de verbinding verloren gaat
- Mobiel Responsive: Werkt perfect op telefoons, tablets en computers
- Beginnersvriendelijk: Schone, eenvoudige code die makkelijk te begrijpen is
- Uitbreidbaar Framework: Vereist basis webprogrammeerkennis (HTML/CSS/JavaScript) voor geavanceerde aanpassingen
- Platform Uitbreidbaar: Momenteel geïmplementeerd voor Arduino Uno R4 WiFi, maar kan uitgebreid worden voor andere hardware platforms. Zie DIYables_WebApps_ESP32
Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables STEM V4 IoT Starterskit (Arduino inbegrepen) | |
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Hoe Te Beginnen
U kunt beginnen met het bouwen van uw aangepaste web app voor Arduino Uno R4/DIYables STEM V4 IoT board door de volgende hoofdstappen te doorlopen:
- Voer de Standaard Custom App Sjabloon uit op Uw Arduino Board
- Test en Verifieer dat de Standaard Custom Web App Correct Werkt
- Begrijp het Communicatieprotocol en Hoe Het Werkt op de Achtergrond
- Wijzig de Sjabloon om Uw Applicatie aan te Passen
- Beheer Meerdere Custom Web Apps - Essentiële Conflictpreventie Gids
Laten we één voor één beginnen.
Voer de Standaard Custom App Sjabloon uit op Uw Arduino Board
Snelle Stappen
- Als dit de eerste keer is dat u de Arduino Uno R4 WiFi/DIYables STEM V4 IoT gebruikt, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/DIYables STEM V4 IoT in de Arduino IDE
- Verbind het Arduino Uno R4/DIYables STEM V4 IoT board met uw computer met behulp van een USB-kabel
- Start de Arduino IDE op uw computer
- Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM-poort
- Navigeer naar het Libraries icoon in de linker balk van de Arduino IDE
- Zoek naar "DIYables WebApps", zoek vervolgens de DIYables WebApps bibliotheek door DIYables
- Klik op de Install knop om de bibliotheek te installeren

- U wordt gevraagd om enkele andere bibliotheekafhankelijkheden te installeren
- Klik op de Install All knop om alle bibliotheekafhankelijkheden te installeren

- Ga in Arduino IDE naar File > Examples > DIYables WebApps > CustomWebApp
- U ziet 4 bestanden die de complete aangepaste web app sjabloon vormen:
- CustomWebApp.ino - Hoofd Arduino code (hier voegt u uw aangepaste logica toe!)
- CustomWebApp.h - Header bestand (definieert de interface naar de DIYables WebApps bibliotheek)
- CustomWebApp.cpp - Implementatie bestand (handelt integratie af met bibliotheek framework)
- custom_page_html.h - Webpagina ontwerp (pas hier uw web interface aan!)
- Configureer WiFi-instellingen door deze regels te wijzigen in CustomWebApp.ino:
Stap 5: Uploaden en Testen
- Klik op de Upload knop in Arduino IDE om code naar Arduino UNO R4/DIYables STEM V4 IoT te uploaden
- Open de Serial Monitor om de verbindingsstatus te zien
- Noteer het IP-adres dat wordt weergegeven in Serial Monitor
- Open de Serial Monitor
- Bekijk het resultaat in Serial Monitor. Het ziet er als volgt uit
- Als u niets ziet, herstart het Arduino board.
- Noteer het weergegeven IP-adres en voer dit adres in de adresbalk van een webbrowser op uw smartphone of PC in.
- Voorbeeld: http://192.168.0.2
- U ziet de startpagina zoals onderstaande afbeelding:

- Klik op de Web Custom link, u ziet de Web Custom app's UI zoals hieronder:

- Of u kunt de pagina ook direct benaderen via IP-adres gevolgd door /custom. Bijvoorbeeld: http://[IP_ADDRESS]/custom
Test en Verifieer dat de Standaard Custom Web App Correct Werkt
Wanneer u de standaard CustomWebApp sjabloon uitvoert, is dit wat u zou moeten zien:
Op de Web Interface:
- Verbindingsstatus: Toont "Connected" in blauw wanneer WebSocket actief is
- Berichtinvoerveld: Tekstveld om berichten naar Arduino te typen
- Verzenden Knop: Klik om uw bericht te verzenden (of druk op Enter)
- Arduino Berichten Weergave: Toont berichten ontvangen van Arduino in blauwe tekst
Arduino Gedrag:
- Echo Reactie: Wanneer u "Hello" verzendt vanaf web, reageert Arduino met "Echo: Hello"
- Periodieke Updates: Arduino verzendt uptime berichten elke 5 seconden: "Arduino uptime: X seconds"
- Serial Monitor: Alle ontvangen berichten worden gelogd voor debugging
Test de Communicatie:
- Typ een bericht in het invoerveld (bijv. "test bericht")
- Klik Verzenden of druk op Enter
- Controleer Serial Monitor - u zou moeten zien: "Received from web: test bericht"
- Controleer webpagina - u zou moeten zien: "Echo: test bericht"
- Wacht enkele seconden - u ziet periodieke uptime berichten die elke 3 seconden worden bijgewerkt (bijv. "Arduino uptime: 15 seconds", "Arduino uptime: 18 seconds", etc.)
Begrijp het Communicatieprotocol en Hoe Het Werkt op de Achtergrond
Het begrijpen van de interne mechanismen helpt u de sjabloon effectief aan te passen.
App Identifier Systeem
De CustomWebApp sjabloon gebruikt unieke berichtlabels (genaamd "App Identifiers") die helpen Arduino code en web clients berichten te filteren die bij hen horen. Dit is essentieel omdat uw applicatie mogelijk meerdere web apps bevat, en elke app moet alleen zijn eigen berichten verwerken terwijl anderen worden genegeerd:
Arduino Kant (CustomWebApp.h & CustomWebApp.cpp)
JavaScript Kant (custom_page_html.h)
Voordelen van dit ontwerp:
- Enkele bron van waarheid: Wijzig identifier op één plek per taal
- Geen magische strings: Elimineert hardgecodeerde "CUSTOM:" door de code
- Type veiligheid: Het gebruik van constanten voorkomt typefouten
- Uitbreidbaar: Gemakkelijk om meerdere aangepaste apps te maken met verschillende identifiers
- Voorkom dataconflicten tussen meerdere apps: Elke app gebruikt een unieke identifier om berichtinterferentie te voorkomen
- Professioneel: Volgt objectgeoriënteerde ontwerpprincipes
Belangrijke Opmerkingen:
- U kunt de huidige identifier "CUSTOM:" behouden wanneer u deze aangepaste web app sjabloon aanpast voor uw project. Wanneer u echter meer dan één aangepaste app maakt, zorg er dan voor dat u deze wijzigt om conflicten te vermijden.
- Als u de identifier wijzigt, zorg er dan voor dat de waarde in JavaScript (.h bestand) en Arduino code (.cpp bestand) hetzelfde zijn (bijv. beide gebruiken "TEMP:" of beide gebruiken "SENSOR:").
- Vooraf gereserveerde identifiers door ingebouwde apps: De volgende identifiers worden al gebruikt door DIYables WebApps ingebouwde applicaties en moeten worden vermeden:
- Hoofd app identifiers: "CHAT:", "MONITOR:", "PLOTTER:", "DIGITAL_PINS:", "JOYSTICK:", "SLIDER:", "TABLE:", "RTC:", "ROTATOR:", "GAUGE:"
- Sub-protocol identifiers: "TIME:", "DATETIME:", "JOYSTICK_CONFIG:", "PLOTTER_DATA:", "PLOTTER_CONFIG:", "SLIDER_VALUES:", "TABLE_CONFIG:", "TABLE_DATA:", "VALUE_UPDATE:", "PIN_CONFIG:", "PIN_STATES:", "PIN_UPDATE:"
- JavaScript voegt identifier toe: JavaScript voegt automatisch de app identifier toe (namelijk "CUSTOM:" in deze sjabloon) met behulp van de APP_IDENTIFIER constante en verstuurt vervolgens het bericht naar Arduino via WebSocket. Het werkelijke verzonden bericht is: CUSTOM:Hallo
- DIYables WebApps bibliotheek ontvangt: De bibliotheek ontvangt het bericht CUSTOM:Hallo en geeft het door aan uw CustomWebAppPage::handleWebSocketMessage methode
- CustomWebAppPage klasse verwijdert identifier: In handleWebSocketMessage controleert de CustomWebAppPage klasse of het bericht begint met zijn APP_IDENTIFIER, verwijdert de identifier met .substring(APP_IDENTIFIER.length()), en geeft vervolgens het resterende bericht Hallo door door de callback functie te roepen die in uw .ino bestand is geïmplementeerd
- Uw applicatie verwerkt: Uw applicatie in het .ino bestand ontvangt alleen Hallo en kan het bericht verwerken afhankelijk van uw aangepaste logica. De huidige sjabloon drukt het af en stuurt een antwoord terug
- Uw applicatie roept sendToWeb() aan: In uw .ino bestand roept u customPage.sendToWeb("Temperatuur: 25°C") aan om gegevens naar de webbrowser te sturen
- CustomWebAppPage klasse voegt identifier toe en broadcast: De CustomWebAppPage klasse voegt automatisch de app identifier toe met zijn APP_IDENTIFIER constante aan uw bericht en broadcast CUSTOM:Temperatuur: 25°C naar alle verbonden web clients via WebSocket
- JavaScript ontvangt en filtert bericht: De webbrowser ontvangt CUSTOM:Temperatuur: 25°C via de ws.onmessage event handler, maar JavaScript verwerkt alleen berichten die beginnen met APP_IDENTIFIER en verwijdert de identifier met .substring(APP_IDENTIFIER.length())
- Webpagina toont schoon bericht: De huidige sjabloon toont het schone bericht Temperatuur: 25°C (zonder identifier) in de sectie "Bericht van Arduino". U kunt JavaScript aanpassen om de gegevens op verschillende manieren te parseren en weer te geven afhankelijk van uw applicatiebehoeften
- CustomWebApp.ino - Hoofd Arduino schets met uw applicatielogica
- CustomWebApp.h - Header bestand dat de aangepaste paginaklasse definieert (bibliotheekinterface)
- CustomWebApp.cpp - Implementatie met communicatielogica (bibliotheekcode)
- custom_page_html.h - HTML interface gescheiden voor eenvoudige aanpassing
Communicatiestroom
Van Webpagina naar Arduino:
Wanneer u een bericht typt op de web interface en op de verzendknop klikt, bijvoorbeeld: Hallo, gebeurt de volgende stroom:
Van Arduino naar Webpagina:
Wanneer uw Arduino gegevens wil verzenden naar de web interface, bijvoorbeeld: Temperatuur: 25°C, gebeurt de volgende stroom:
Architectuuroverzicht
Het CustomWebApp voorbeeld bestaat uit vier hoofdbestanden:
Wijzig de Sjabloon om Uw Applicatie aan te Passen
De sjabloon is ontworpen om eenvoudig aanpasbaar te zijn voor uw specifieke behoeften. Hier leest u hoe u deze kunt aanpassen:
1. Hardware Integratie
Hardware Initialisatie Toevoegen
In de CustomWebApp.ino setup() functie:
Aangepaste Opdrachten Verwerken
Breid de callback functie uit om uw aangepaste opdrachten te verwerken:
Real-time Sensorgegevens Verzenden
2. Web Interface Aanpassen
HTML Lay-out Wijzigen
Bewerk de HTML in custom_page_html.h om de interface te wijzigen:
JavaScript Verwerking Aanpassen
Update de ws.onmessage functie om specifieke gegevenstypes te verwerken:
Stijlen Toevoegen
Pas de CSS aan voor uw applicatie:
Overige Aanpassingen
Naast het wijzigen van de web interface en hardware integratie, kunt u ook aanpassen hoe uw app verschijnt in het DIYables WebApps ecosysteem:
1. App Pad Aanpassen
U kunt het URL-pad wijzigen waar uw aangepaste web app toegankelijk is door de constructor in uw header bestand te wijzigen:
Standaard Pad:
Aangepaste Pad Voorbeelden:
Belangrijke Opmerkingen:
- Pad moet beginnen met "/": Begin uw pad altijd met een schuine streep
- Gebruik beschrijvende namen: Kies paden die duidelijk de functie van uw app beschrijven
- Vermijd conflicten: Gebruik geen paden die al worden gebruikt door ingebouwde apps zoals /chat, /monitor, /plotter, etc.
- Gebruik kleine letters en koppeltekens: Volg web URL-conventies voor betere compatibiliteit
2. App Kaart op Startpagina Aanpassen
U kunt aanpassen hoe uw app verschijnt op de DIYables WebApps startpagina door de getNavigationInfo() methode in uw implementatiebestand te wijzigen:
Basis App Kaart:
Geavanceerde App Kaart met Inline CSS:
Meerdere Aangepaste Web Apps Beheren - Essentiële Conflictpreventiegids
Bij het ontwikkelen van meerdere aangepaste webapplicaties is het cruciaal om conflicten tussen verschillende apps te vermijden. Stel dat we drie aangepaste apps willen toevoegen met de namen "Temperatuurmonitor", "Motorbesturing" en "Sensordashboard" aan ons Arduino project. Hier leest u hoe u ervoor kunt zorgen dat ze harmonieus samenwerken:
1. Gebruik Unieke App Identifiers
Elke aangepaste web app moet een unieke identifier hebben om berichtconflicten te voorkomen:
Voorbeeld: Temperatuurmonitor App
Voorbeeld: Motorbesturing App
Voorbeeld: Sensordashboard App
2. Gebruik Unieke Paginapaden
Elke web app heeft een uniek URL-pad nodig:
3. Gebruik Unieke Klassenamen
Vermijd naamconflicten door beschrijvende klassenamen te gebruiken:
4. Meerdere Apps Organiseren in Één Project
Hier leest u hoe u een project structureert met meerdere aangepaste apps:
5. Best Practices voor Meerdere Apps
Bestandsorganisatie
Navigatie Tussen Apps
Update de getNavigationInfo() methode in elke app om eenvoudige navigatie te bieden: