Bene, dopo aver preso un po’ di confidenza con l’ESP8266 e uno degli ambienti di sviluppo (Arduino IDE) iniziamo ad analizzare le altre caratteristiche di questo fantastico dispositivo. Partiamo con quella che è di sicuro una delle caratteristiche più interessanti: la possibilità di effettuare connessioni wi-fi tramite l’interfaccia on-board.

E cosa potremmo fare con questa interfaccia? Beh, molte cose!
Ad esempio :

  • accedere al dispositivo via IP (quindi usando un browser da smartphone, tablet, pc) e pilotare i vari PIN disponibili
  • leggere dati da sensori collegati all’ESP8266 e pubblicarli su internet

Queste sono solo alcune delle cose che si possono fare!

Il dispositivo supporta tre modalità di connessione:

  • AP (Access Point mode): il dispositivo funziona come access point
  • STA (Station mode) : il dispositivo funziona come un normale dispositivo di rete
  • AP_STA : modalità ibrida

Per questo primo esperimento userò il dispositivo in Station mode ovvero lo collegherò come un normale dispositivo di rete al router di casa. Cercherò di creare un piccolo web server mediante il quale interrogare il dispositivo per fargli fare qualcosa, ad esempio accendere/spegnere il led di bordo.

La cavia che ho scelto di utilizzare per le mie prove è la witty board e arduino IDE.
Intanto va detto che quando abbiamo installato il package di supporto per l’ESP8266 in Arduino Ide abbiamo di fatto caricato tutte le librerie di supporto per l’ESP8266 quindi disponiamo già di tutto il necessario a livello di tool chain.

Il programma da caricare è il seguente:

#include <ESP8266WiFi.h>
 
const char* ssid = "SSID";
const char* password = "router_password";
 
int ledPin = 12; // GPI12 - Led Verde
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
   
  // Connessione alla rete wifi
  Serial.println();
  Serial.println();
  Serial.print("Connessione a ");
  Serial.println(ssid);
   
  WiFi.begin(ssid, password);
   
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connesso");
   
  // Start the server
  server.begin();
  Serial.println("Server attivato");
 
  // Mostra l'indirizzo IP assegnato
  Serial.print("Utilizza questa URL per connetterti: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
    
}
 
void loop() {
  // Controlla se il client è connesso
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
   
  // Aspetta finchè il client non manda qualche dato
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
   
  // Leggi la parte iniziale della richiesta (fino al primo ritorno a capo)
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
   
  // identifica il tipo di richiesta
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1) {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  } 
  if (request.indexOf("/LED=OFF") != -1){
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
   
 
  // Ritorna la risposta del webserver
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html; charset=utf-8");
  client.println(""); //  serve assolutamente
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
   
  client.print("Il led adesso è: ");
   
  if(value == HIGH) {
    client.print("acceso");  
  } else {
    client.print("spento");
  }
  client.println("<br><br>");
  client.println("Clicca <a href=\"/LED=ON\">qui</a> per accendere il led verde<br>");
  client.println("Clicca <a href=\"/LED=OFF\">qui</a> per spegnere il led verde<br>");
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disconesso");
  Serial.println("");
 
}
 

Impostate il vostro SSID e relativa password di accesso al router, caricate il programma e attivate il monitor seriale di Arduino IDE per scoprire l’IP assegnato al dispositivo.

Sul monitor seriale vedrete qualcosa del tipo:

Connessione a SSID
....
WiFi connesso
Server attivato
Utilizza questa URL per connetterti: http://192.168.1.5/

Quindi collegandosi all’IP 192.168.1.5 usando un browser dal PC o direttamente dallo smartphone avrete la possibilità di accedere/spegnere il led cliccando sui due link predisposti.

Direi che questo breve esempio è sufficiente per farsi un’idea e per iniziare a sperimentare in proprio!
bye

ESP8266 : connessioni wi-fi

2 pensieri su “ESP8266 : connessioni wi-fi

  • Giugno 11, 2019 alle 10:31 am
    Permalink

    ciao scusami per l’ignoranza di questo settore io ho acquistato un ESP-01S Relay Module non ci sono istruzioni ma andando in internet ho trovato qualcosa ho scaricato l’app e configurato con la rete pero’ quando vado sull’app col mio iPhone 6 mi dice non collegato (Premesso che sull’app ho inserito l’idirizzo ip del mio ruter e la porta)
    qui sotto ti scrivo la mia mail se per favore mi scrivi dove ho sbagliato
    Grazie

    Rispondi
    • Luglio 2, 2019 alle 10:06 am
      Permalink

      Ciao Francesco,
      purtroppo non tutte le app che trovi in rete sono compatibili con i vari firmware che i produttori pre-installano negli esp.
      Se hai un link allo shop ci posso dare un’occhiata e darti dei consigli viceversa la cosa più ovvia e scegliere un firmware e flashare nuovamente il modulo.
      In questo caso puoi cercare in rete uno dei tanti firmware e seguire le istruzioni, considera che lo 01 è il più piccolo quindi abbastanza limitato
      come memoria disponibile
      Ciao

      Rispondi

Lascia un commento

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