«

»

Ott 11

Stampa Articolo

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-18: 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 22-23: 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 25: crea l’oggetto server in ascolto sulla porta 80;

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

linee 29-30: imposta la comunicazione Seriale;

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

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

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

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

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

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

linea 46: esegui la connessione alla rete WiFI;

linee 48-51: 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 53: genera un numero casuale partendo dai microsecondi;

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

linea 60: 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 62-66: definisci la funzione composeWebPage() il cui scopo, in questo esempio è creare la concatenazione di stringhe HaderPage + rootPageBody + FooterPage;

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

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

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

linea 71: 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

 

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/wemos-esp8266-webserver.html

1 ping

  1. HTML Web Page - Mauro Alfieri Elettronica Domotica Robotica Elettronica

    […] « WeMos ESP8266 WebServer […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>