WeMos ESP8266 WebServer

WeMos ESP8266 WebServer ti consente di realizzare un semplice web server con la wemos o l’esp8266 per ottenere una o più pagine come quella seguente.

WeMos ESP8266 WebServer Chrome Web Page

 

Realizzare un webserver è certamente un progetto tanto richiesto quanto complesso ed in passato hai letto dei miei articoli che trattavano delle timide realizzazioni scritte da me come:

Tutorial: Arduino, Ethernet e pagine multiple su SD Card

Tutorial arduino ethernet sdcard

o altre in cui utilizzando la potenza della Arduino Yun sfruttavi il Web Server lightHttp su Linino o OpenWRT.

Oggi con al WeMos e/o la ESP8266 puoi realizzare un WeMos ESP8266 WebServer utilizzando la libreria ESP8266WebServer.h scaricabile dal library manager o su gitHub

Sketch di esempio per WeMos ESP8266 WebServer

Lo sketch parte da uno degli esempi rilasciati con la libreria che ho opportunamente modificato per realizzare questo esempio:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/***** Web Pages ************************************************************************/

String HeaderPage = "<!DOCTYPE html><html><head><style> header { background: linear-gradient(to right, #1e5799 0%,#7db9e8 100%); color: #fff; padding:10px; text-align: center; vertical-align: middle; } body{ padding:15px; color: #5e5e5e; font-family: Helvetica,Arial,sans-serif; font-variant: small-caps; font-size:1em; text-align: center; } footer { background: linear-gradient(to left, #1e5799 0%,#7db9e8 100%); color: #fff; padding:10px; text-align: right; vertical-align: bottom; } h2 {  padding:10px; text-align: center; vertical-align: middle; font-size:2em; } </style></head><body><header>:: Mauro Alfieri WeMos NeoPixel ::</header>";
String FooterPage = "<footer>powerd by mauroalfieri.it</br>CC licence</footer></body></html>";
String rootPageBody = "<h2>Hello World</h2>";
String rootWebPage;

/****************************************************************************************/

const char *wifi_ssid = "SSID 2.4G";
const char *wifi_password = "passwordWiFI";

ESP8266WebServer server(80);
WiFiClient espClient;

void setup() {
  Serial.begin(115200);
  Serial.println();

  setup_wifi();
  composeWebPage();
  startWebServer();
}

void loop() { server.handleClient(); }

/***** Functions ***********************************************************************/

void setup_wifi() {

  delay(10);
  Serial.print("Connecting to ");
  Serial.println(wifi_ssid);
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.print("WiFi connected at IP address: ");
  Serial.println(WiFi.localIP());
}

void handleRoot() { server.send(200, "text/html", rootWebPage); }

void composeWebPage() {
  rootWebPage = HeaderPage;
  rootWebPage += rootPageBody;
  rootWebPage += FooterPage;
}

void startWebServer() {
  server.on("/", handleRoot);
  server.begin();
  Serial.println("SERVER BEGIN!!");
}

le linee 01-03: includi le librerie che ti servono per la connessione WiFi e la configurazione della porta 80 in ascolto come web server;

linee 07-10: sono nella realtà, copiate nell’IDE arduino, solo 4 e servono a impostare la parte HTML relativa alla pagina che visualizzeremo; ( in un prossimo articolo ci dedicheremo alla comprensione della pagina )

linee 14-15: definisci le credenziali con cui puoi accedere alla tua rete WiFi, ricordati che le informazioni che ho scritto sono finte e devi sostituirle con i tuoi parametri:

linea 17: crea l’oggetto server in ascolto sulla porta 80;

linea 18: crea l’oggetto WiFiClient con cui ti colleghi alla rete WiFI;

linee 21-22: imposta la comunicazione Seriale;

linea 24: richiama la setup_wifi() con cui esegui il collegamento alla rete WiFi;

linea 25: richiama la composeWebPage() all’interno della quale comporremo le pagine che serviremo al client connesso;

linea 26: avvia il webserver richiamando la funzione startWebServer() che nelle prossime liee analizzerai;

linea 29: definisci la funzione loop() il cui unico scopo, e comando, è eseguire l’handle delle pagine del server;

linea 33: inizia con la creazione della funzione “setup_wifi()“;

linee 36-37: scrivi sul monitor seriale le informazioni che ti indicano di essere arrivati a questa funzione;

linea 38: esegui la connessione alla rete WiFI;

linee 40-43: fino a quando la connessione non avviene, lo stato è diverso da WL_CONNECTED e continui a scrivere sul monitor seriale dei puntini ad indicare l’attesa;

linea 45: genera un numero casuale partendo dai microsecondi;

linee: 47-49: scrivi sul monitor seriale l’Ip ricevuto dalla connessione WiFi, questo IP è quello su cui potrai ritrovare la pagina della WeMos;

linea 52: crea la funzione handleRoot() che rarà invocata dal server tutte le volte che l’url non presenterà pagine o parametri particolari, diciamo la root ( radice ) appunto del webserver. Tale funzione restituisce la stringa rootWebPage composta nella funzione successiva;

linee 54-58: definisci la funzione composeWebPage() il cui scopo, in questo esempio è creare la concatenazione di stringhe HaderPage + rootPageBody + FooterPage;

linea 60: definisci la funzione startWebServer() che è invocata dalla setup() per inizializzare tutte le comunicazioni tra client e web server;

linea 61: imposta il richiamo della funzione handleRoot, vista alla linea 52, quando il server viene invocato senza parametri;

linea 62: avvia il server web usando il metodo begin() 

linea 63: scrivi sul monitor seriale “SERVER BEGIN!!” quando tutto è pronto per la connessione.

Funzionamento del WeMos ESP8266 WebServer

Dopo aver trasferito alla WeMos puoi aprire il monitor seriale e dovresti vedere una schermata simile alla seguente:

WeMos WebServer connected

in cui le informazioni importanti sono l’avvenuta connessione e l’IP ricevuto dal server a cui dovrai collegarti per vedere la pagina che hai disegnato;

Ecco come appare la pagina sul browser del computer:

WeMos ESP8266 WebServer Chrome Web Page

ed ecco la stessa pagina dal browser del telefono:

WeMos WebServer iPhone Web Page

 

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/wemos-esp8266-webserver.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.