Sommario:

Come utilizzare ESP8266 come server Web: 5 passaggi
Come utilizzare ESP8266 come server Web: 5 passaggi

Video: Come utilizzare ESP8266 come server Web: 5 passaggi

Video: Come utilizzare ESP8266 come server Web: 5 passaggi
Video: Come realizzare un WEB SERVER su ESP8266 modalità STA -Tutorial Italiano 2024, Luglio
Anonim
Come utilizzare ESP8266 come server Web
Come utilizzare ESP8266 come server Web

Ciao, attualmente sto usando Windows 10, NodeMCU 1.0 ed ecco l'elenco dei software che ho usato e le guide di installazione che ho seguito:

  • Arduino IDE
  • Schede aggiuntive per esp8266
  • Spiff

Biblioteca utilizzata:

Websocket

Ho usato NodeMCU come server per servire un file HTML che ho creato da questo tutorial. Per servire questo file, ho caricato il file nel file system nodemcu usando Spiffs. Il file HTML invia i dati al nodemcu utilizzando i websocket per essere stampati sul monitor seriale per questo. La comunicazione bidirezionale veloce tramite websocket del server e del client ha permesso di utilizzare questo come controllo remoto. Nei seguenti passaggi, spiegherò come funziona il mio codice

Forniture

NodoMCU

Passaggio 1: fallo funzionare

Fallo funzionare
Fallo funzionare
Fallo funzionare
Fallo funzionare
Fallo funzionare
Fallo funzionare

Ecco i passaggi su come funziona

  1. Scarica il file allegato e apri il file mousebot.ino
  2. Vai a schizzo> mostra la cartella dello schizzo e crea una nuova cartella denominata dati
  3. Salva il file html di questo tutorial nella cartella denominata. Ho chiamato il mio come "Joystick"
  4. Assicurati che il tuo spiff sia già funzionante andando su strumenti e vedendo il "caricamento dei dati dello schizzo esp8266"
  5. Carica il file html su nodemcu facendo clic su "esp8266 sketch data upload"
  6. Dopo il caricamento del file, carica su nodemcu il file mousebot.ino accedendo all'IDE di arduino e premendo ctrl U

Passaggio 2: come funziona il codice

Innanzitutto, includiamo le librerie che verranno utilizzate da questo codice

//per consentire all'ESP8266 di connettersi al WIFI

#include #include #include //Abilita ESP8266 ad agire come server #include //abilita la comunicazione con il server e il client (il tuo dispositivo connesso) #include #include //Per aprire il file caricato sul nodemcu #include

Imposta esp8266 come server web aperto sulla porta 80. Le porte sono percorsi attraverso i quali passeranno i dati. Come porta del server, invierà il file HTML al client (i dispositivi ad esso collegati).

Aggiunge una connessione websocket utilizzando la porta 81 per ascoltare i messaggi dal client

I websocket hanno il parametro num, WStype_t, payload e dimensioni. Il num determina il numero del client, il payload è il messaggio che invia, la dimensione è la lunghezza del messaggio e WStype_t è per diversi eventi come

  • WStype_DISCONNECTED - alla disconnessione di un client.
  • WStype_CONNECTED: - quando un client si connette
  • WStype_TEXT - Dati ricevuti dal client

A seconda del tipo di evento vengono eseguite diverse azioni ed è commentato qui

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {

switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Disconnected!\n", num); //stampa i dati sul monitor seriale break; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP(num); // ottiene l'IP del client Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], carico utile); webSocket.sendTXT(num, "Connesso"); //invia "connesso" alla console del browser } break; case WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); //stampa il numero del cliente in %u e i dati ricevuti come stringhe in %s\n break;}}

Passaggio 3: impostare NODEMCU come server

imposta l'ssid e la password che utilizzerai per connetterti ad esso in seguito

const char *ssid = "Prova";

const char *password = "12345678";

sulla configurazione, specifichiamo la velocità con cui comunicheranno il nostro nodemcu e il pc, che è 115200.

void setup(void){

Serial.begin(115200); Serial.print("\n");

impostato su true anche vedere l'output diagnostico wifi sul terminale serila

Serial.setDebugOutput(true);

initaliazzare il filesystem

SPIFFS.begin();

Imposta il nodemcu come accesspoint con ssid e password defiend in precedenza e stampa l'ip del nodemcu con cui ti connetterai in precedenza. per impostazione predefinita è 192.168.4.1

Serial.print("Configurazione punto di accesso…");

WiFi.mode(WIFI_AP); WiFi.softAP(ssid, password); IPAddress mioIP = WiFi.softAPIP(); Serial.print("Indirizzo IP dell'AP: "); Serial.println(mioIP);

Inizializza il websocket sul nodemcu, che è pur server

webSocket.begin();

Chiama la funzione webSocketEvent quando si verifica un evento websocket.

webSocket.onEvent(webSocketEvent);

Per il debug, stampa "Server WebSocket avviato" su una nuova riga. Questo serve per determinare la riga di codice che il nodemcu sta elaborando

Serial.println("Server WebSocket avviato.");

quando un client visita 192.168.4.1, chiamerà la funzione handleFileRead e invierà con essa l'URI del server dei parametri che in questo caso è la nostra informazione nodemcu. La funzione handleFileRead servirà il file html dal file system nodemcu

server.onNotFound((){

if(!handleFileRead(server.uri()))

se non può essere trovato mostrerà "FileNotFound"

server.send(404, "testo/normale", "FileNotFound");

});

Avvia il server e avvia il server HTTP di stampa.

server.begin(); Serial.println("Server HTTP avviato");

Nel nostro loop void, abilitiamo il server a gestire continuamente le comunicazioni del client e dei suoi websocket come segue:

ciclo vuoto(vuoto){

server.handleClient(); webSocket.loop();}

Passaggio 4: caricare il file HTML

useremo una funzione chiamata handleFileRead per aprire e il file html dal file system nodemcu. restituirà un valore booleano per determinare se è caricato o meno.

Quando "192.168.4.1/" è aperto dal client, impostiamo il percorso del file su "/Joystick.html, il nome del nostro file nella cartella dei dati

bool handleFileRead(String path){

Serial.println("handleFileRead: " + percorso); if(path.endsWith("/")) path += "Joystick.html"; if(SPIFFS.exists(percorso)){ File file = SPIFFS.open(percorso, "r"); size_t inviato = server.streamFile(file, "testo/html"); file.close(); restituire vero; } restituisce falso; }

Controlla se il percorso del file "/Joystick.html" esiste

if(SPIFFS.exists(percorso)){

Se esiste, apri il percorso con lo scopo di leggerlo che è specificato dalla "r". Vai qui per più scopi.

File file = SPIFFS.open(percorso, "r");

Invia il file al server come con un tipo di contenuto "testo/html"

size_t inviato = server.streamFile(file, "testo/html");

chiudi il file

file.close();

la funzione handleFileRead restituisce true

restituire vero;}

se il percorso del file non esiste, la funzione handleFileRead restituisce false

restituire vero; }

Passaggio 5: provalo

Image
Image

Connettiti al nodeMCU e vai su "192.168.4.1" e provalo!:)

Consigliato: