In deze blogpost leggen we uit - op basis van de introductie tot de ESP32 ( Link ) - hoe een lokale website te hosten met dit WLAN-compatibele ontwikkelbord, waarop sensorgegevens live worden weergegeven. De hier gebruikte code is te vinden op GitHub (https://github.com/Simsso/Arduino-Examples/blob/master/ESP32/WiFiSensorServer/WiFiSensorServer.ino).
De basisstructuur van het project is als volgt: Een ESP32 is verbonden met een of meer sensoren en leest hun waarden uit. Bovendien is de ESP32 verbonden met het WLAN en wacht op inkomende HTTP-aanvragen. Afhankelijk van het pad van de aanvraag, beantwoordt deze deze met een HTML-website of de sensorgegevens in JSON-indeling.
De sensor kan willekeurig worden gekozen. Voor de demonstratie hebben we een joystick met twee assen gekozen die twee analoge waarden uitvoert. Afgezien van de sensor, hoeft er geen andere hardware op de microcontroller te worden aangesloten om het demo-programma te starten.
De analoge signalen van de joystick worden gebruikt bij de functieaanroepen
analogRead (34);
analogRead (35);
uitlezen. Dit toont duidelijk de kracht van ESP-Arduino (https://github.com/espressif/arduino-esp32): Het uitlezen van de waarde van een analoog-digitaalomzetter zou normaal niet alleen een functieaanroep zijn.
HTTP-server
Om een HTTP-server te starten die kan worden bereikt in het lokale netwerk, moet de ESP32 verbinding kunnen maken met het WLAN. Wijzig hiervoor de waarde van de twee constanten ssid (WLAN-naam) en wachtwoord (Wifi-wachtwoord).
const char * ssid = "Naam toegangspunt";
const char * password = "Wachtwoord";
Het serverobject is met WiFiServer-server (80); gemaakt. De parameter geeft aan op welke poort de server bereikbaar moet zijn. 80 is de standaard voor websites.
De seriële verbinding met de pc wordt tot stand gebracht in de setup-functie. Het zal alleen worden gebruikt voor foutopsporing in dit project. Let echter op de baudrate, die niet 9600 maar 115200 is. In de seriële monitor moet u deze mogelijk rechtsonder aanpassen. Nadat de microcontroller verbinding heeft gemaakt met het WLAN, voert hij zijn IP-adres uit via de seriële monitor. Dit wordt door de WLAN-router aan het apparaat toegewezen en ziet er als volgt uit: 192.168.0.103. In de browser kunt u dan door te bellen http://192.168.0.103 stuur een verzoek naar de ESP32. Dit heeft bijvoorbeeld de volgende vorm
GET / HTTP / 1.1
Host: 192.168.0.103
Verbinding: in leven houden
Pragma: geen cache
en arriveert op de ESP32 als een lange reeks, teken voor teken. In de lusfunctie wordt de eerste regel van het verzoek gescheiden omdat deze het pad bevat. In het voorbeeld is dit slechts een schuine streep (KRIJGEN /). Zou echter de website zijn http://192.168.0.103/test de eerste regel van het HTTP-verzoek zou er als volgt uitzien: GET / test HTTP / 1.1
Aan het einde van de zoekopdracht wordt u gemarkeerd met een lege regel. In het programma, zodra dit wordt herkend, de sendResponse Functie noemde de eerste regel van het verzoek en dat klant Object moet worden doorgegeven. Het antwoord is in het laatste geschreven, dat vervolgens de gevraagde gegevens bevat (bijvoorbeeld de HTML-code van een website).
De eerste verzoekregel bevatte de informatie waartoe het verzoek was gericht / sensor de sensorgegevens worden naar de client verzonden.
// antwoordkop
client.println ("HTTP / 1.1 200 OK");
client.println ("Content-Type: application / json");
client.println ();
// verzend sensorgegevens in JSON-indeling
client.println ("{
\ "x \": "+ String (analogRead (35) / 4096.0) +",
\ "y \": "+ String (analogRead (34) / 4096.0) +",
\ "time \": "+ millis () +"
}");
De gelezen gegevens komen vervolgens in de browser aan.
Om de sensorwaarden iets leuks weer te geven, hebben we een eenvoudige website (https://github.com/Simsso/Arduino-Examples/blob/master/ESP32/WiFiSensorServer/index.html), die de positie van de joystick met een rode cirkel binnen een vierkant markeert. De gegevens worden meerdere keren per seconde van de server geladen.
Samenvatting
Het weergeven van de gegevens van een sensor met de ESP32 in het lokale netwerk op een website is niet complex. Als u ons voorbeeldprogramma gebruikt (https://github.com/Simsso/Arduino-Examples/blob/master/ESP32/WiFiSensorServer/WiFiSensorServer.ino), je moet het gewoon doen
- sluit analoge sensoren aan op pennen G34 en G35,
- voer de naam en het wachtwoord van uw wifi-netwerk in en
- Roep het IP-adres van uw ESP32 op in de browser, die u kunt vinden als logoutput in de seriële monitor.
3 Reacties
Ferdinando Todeschini
Can you help me find a phone app to put in communication with the D1 R32 card with its communication program? Thank you
MaHa76
Danke für diese Anleitung und die hilfreiche Erklärung.
Kann ich über diesen Weg auch mehrere ESP miteinander vernetzen?
Den ESP der in diesem Beispiel den Sensor ausliest, würde ich gern als AccessPoint verwenden und die Daten für mehrere andere ESPs bereitstellen.
Die Verbindung sollte dann auch dauerhaft zu allen ESPs bestehen bleiben, so dass die Daten kontinuierlich angezeigt werden könnten.
Thanathan
Guter Artikel aber fehlt im ersten Absatz nicht ein Link? Oder ist das “Link xxx” beabsichtigt? ;)