Inhoudsopgave:
- Benodigdheden
- Stap 1: Laat het werken
- Stap 2: Hoe de code werkt
- Stap 3: Stel de NODEMCU in als server
- Stap 4: HTML-bestand laden
- Stap 5: Probeer het
Video: Hoe ESP8266 als webserver te gebruiken: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Hallo, ik gebruik momenteel Windows 10, NodeMCU 1.0 en hier is de lijst met software die ik heb gebruikt en installatiehandleidingen die ik heb gevolgd:
- Arduino IDE
- Extra borden voor esp8266
- Spiff
Gebruikte bibliotheek:
Websocket
Ik heb NodeMCU als server gebruikt om een HTML-bestand te dienen dat ik van deze tutorial heb gemaakt. Om dit bestand te dienen, heb ik het bestand geüpload naar het nodemcu-bestandssysteem met behulp van Spiffs. Het HTML-bestand stuurt gegevens naar de nodemcu met behulp van websockets om hiervoor op de seriële monitor te worden afgedrukt. Door de snelle bidirectionele communicatie via websockets van de server en de client kon dit worden gebruikt als afstandsbediening. Bij de volgende stappen zal ik uitleggen hoe mijn code werkt
Benodigdheden
KnooppuntMCU
Stap 1: Laat het werken
Hier zijn de stappen om te zien hoe het werkt
- Download het bijgevoegde bestand en open het bestand mousebot.ino
- Ga naar schets> toon schetsmap en maak een nieuwe map met de naam data
- Sla het html-bestand van deze tutorial op in de map met de naam. Ik noemde de mijne als "Joystick"
- Zorg ervoor dat je spiff al functioneel is door naar tools te gaan en de "esp8266 sketch data upload" te zien
- Upload het html-bestand naar nodemcu door te klikken op "esp8266 sketch data upload"
- Upload na het uploaden van het bestand het bestand mousebot.ino naar de nodemcu door naar de arduino IDE te gaan en op ctrl U te drukken
Stap 2: Hoe de code werkt
Eerst nemen we de bibliotheken op die deze code zal gebruiken
// om de ESP8266 in staat te stellen verbinding te maken met wifi
#include #include #include //Schakel de ESP8266 in om als server te fungeren #include //maakt communicatie met de server en de client (uw aangesloten apparaat) mogelijk #include #include //Om het geüploade bestand op de nodemcu te openen #include
Stel de esp8266 in als een webserver die is geopend op poort 80. Poorten zijn paden waar de gegevens doorheen gaan. Als serverpoort stuurt het het HTML-bestand naar de client (de apparaten die ermee verbonden zijn).
Voegt een websocket-verbinding toe via poort 81 om te luisteren naar berichten van de client
De websockets hebben de parameter num, WStype_t, payload en size. Het nummer bepaalt het klantnummer, de payload is het bericht dat wordt verzonden, de grootte is de lengte van het bericht en WStype_t is voor verschillende evenementen zoals
- WStype_DISCONNECTED - bij het loskoppelen van een client.
- WStype_CONNECTED: - wanneer een client verbinding maakt
- WStype_TEXT - Gegevens ontvangen van de klant
Afhankelijk van het type evenement worden verschillende acties uitgevoerd en worden hier becommentarieerd
void webSocketEvent (uint8_t num, WStype_t type, uint8_t * payload, size_t lengte) {
switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Verbinding verbroken!\n", num); // drukt gegevens af naar de seriële monitoronderbreking; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP (num); //krijgt het IP-adres van de client Serial.printf("[%u] Verbonden vanaf %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], lading); webSocket.sendTXT(num, "Verbonden"); // stuurt "verbonden" naar de browserconsole } break; case WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); // drukt het klantnummer af in %u en de data ontvangen als strings in %s\n break;}}
Stap 3: Stel de NODEMCU in als server
stelt de ssid en het wachtwoord in waarmee je er later verbinding mee wilt maken
const char *ssid = "Probeer";
const char *wachtwoord = "12345678";
bij de installatie specificeren we de snelheid waarmee onze nodemcu en pc zullen communiceren, namelijk 115200.
ongeldige setup (ongeldig){
Serieel.begin(115200); Serieel.print("\n");
ingesteld op true zie ook de wifi-diagnose-uitgang op de serila-terminal
Serial.setDebugOutput (waar);
initialiseer het bestandssysteem
SPIFFS.begin();
Stel de nodemcu in als een toegangspunt met ssid en wachtwoord defiend eerder en print het ip van de nodemcu waarmee je eerder verbinding zult maken. standaard is dit 192.168.4.1
Serial.print("Toegangspunt configureren…");
WiFi.modus (WIFI_AP); WiFi.softAP (ssid, wachtwoord); IPA-adres mijnIP = WiFi.softAPIP(); Serial.print("AP IP-adres: "); Serieel.println(mijnIP);
Initialiseer de websocket op de nodemcu, wat pur server is
webSocket.begin();
Roept de functie webSocketEvent aan wanneer een websocket-gebeurtenis plaatsvindt.
webSocket.onEvent (webSocketEvent);
Voor foutopsporing drukt u "WebSocket-server gestart" op een nieuwe regel af. Dit is om de regel code te bepalen die de nodemcu verwerkt
Serial.println("WebSocket-server gestart.");
wanneer een klant 192.168.4.1 bezoekt, roept het de functie handleFileRead aan en stuurt het de parameterserver-URI mee, wat in dit geval onze nodemcu-informatie is. De functie handleFileRead dient het html-bestand van het nodemcu-bestandssysteem
server.onNotFound((){
if(!handleFileRead(server.uri()))
als het niet kan worden gevonden, wordt "FileNotFound" weergegeven
server.send(404, "text/plain", "FileNotFound");
});
Begint de server en print HTTP-server gestart.
server.begin(); Serial.println("HTTP-server gestart");
Op onze void-lus stellen we de server in staat om de communicatie met de client en zijn websockets continu als volgt af te handelen:
lege lus(leegte){
server.handleClient(); webSocket.loop();}
Stap 4: HTML-bestand laden
we zullen een functie met de naam handleFileRead gebruiken om te openen en het html-bestand van het nodemcu-bestandssysteem. het zal een boolean van waarde retourneren om te bepalen of het is geladen of niet.
Wanneer "192.168.4.1/" is geopend door de client, stellen we het bestandspad in op "/Joystick.html, de naam van ons bestand in de gegevensmap
bool handleFileRead(String path){
Serial.println ("handleFileRead: " + pad); if(path.endsWith("/")) pad += "Joystick.html"; if(SPIFFS.exists(pad)){ Bestandsbestand = SPIFFS.open(pad, "r"); size_t verzonden = server.streamFile(bestand, "tekst/html"); bestand.close(); retourneer waar; } onwaar retourneren; }
Controleer of het bestandspad"/Joystick.html" bestaat
if(SPIFFS.exists(pad)){
Als het bestaat, open dan het pad met als doel het te lezen dat wordt aangegeven door de "r". Ga hierheen voor meer doeleinden.
Bestandsbestand = SPIFFS.open(pad, "r");
Stuurt het bestand naar de server als met een inhoudstype "text/html"
size_t verzonden = server.streamFile(bestand, "tekst/html");
sluit het bestand
bestand.close();
de functie handleFileRead retourneert true
retourneer waar;}
als het bestandspad niet bestaat, retourneert de functie handleFileRead false
retourneer waar; }
Stap 5: Probeer het
Maak verbinding met de nodeMCU en ga naar "192.168.4.1" en probeer het!:)
Aanbevolen:
Garagedeuropener met feedback Esp8266 gebruiken als webserver - Ajarnpa
Garagedeuropener met feedback Esp8266 gebruiken als webserver.: Hallo, ik zal je laten zien hoe je op een eenvoudige manier een garagedeuropener kunt maken. feedback, u weet of de deur in realtime open of dicht is - Eenvoudig, slechts één snelkoppeling om i
Hoe de GPIO-pinnen en Avrdude van een Raspberry Pi te gebruiken om DIMP 2 of DA PIMP te Bit-bang-programma te gebruiken 2: 9 stappen
Hoe de GPIO-pinnen van een Raspberry Pi en Avrdude te gebruiken voor Bit-bang-programma DIMP 2 of DA PIMP 2: Dit zijn stapsgewijze instructies voor het gebruik van een Raspberry Pi en het gratis open-source commando avrdude to bit-bang -programmeer een DIMP 2 of DA PIMP 2. Ik neem aan dat je bekend bent met je Raspberry Pi en de LINUX-opdrachtregel. Je hoeft niet
Hoe de Wiimote als computermuis te gebruiken Kaarsen als sensor gebruiken!! - Ajarnpa
De Wiimote als computermuis gebruiken Kaarsen als sensor gebruiken!!: Deze gids laat je zien hoe je je Wii-afstandsbediening (Wiimote) op je pc aansluit en als muis gebruikt
Hoe maak je een grootouderskalender & Plakboek (zelfs als je niet weet hoe je plakboek moet maken): 8 stappen (met afbeeldingen)
Hoe maak je een grootouderskalender & Plakboek (zelfs als je niet weet hoe je plakboek moet maken): Dit is een zeer voordelig (en zeer gewaardeerd!) kerstcadeau voor grootouders. Ik heb dit jaar 5 kalenders gemaakt voor minder dan $7 per stuk.Materialen:12 geweldige foto's van je kind, kinderen, nichten, neven, honden, katten of andere familieleden12 verschillende stukken
Hoe de Instructables IRC-chatroom te gebruiken! 6 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe de Instructables IRC-chatroom te gebruiken!: Vóór de implementatie van de Meebo-chatroom, waar de meesten van jullie in zijn geweest of van hebben gehoord, had Instructables een IRC-chatroom. De meebo-kamer heeft ons goed gediend, maar is beperkt, heeft veel gebreken, en verzandt de meeste gemiddelde computersystemen. IRC-ka