PitESP8266 - 01 - LED control WEB

L'utilizzo del modulo ESP8266 versione 01 - LED control WEB.

Fonte principale maffucci.it.

Prova del modulo ESP-01

Cosa serve:

  • ESP-01
  • modulo alimentazione
  • led
  • reistenze
  • cavetti

Codice sorgente:


    /* 
     * Prof. Michele Maffucci 
     * 12.05.2017 
     * accensione/spegnimento LED da pagina web 
     * con ESP8266 
     * per maggiori informazioni: 
     * https://www.arduino.cc/en/Reference/WiFi 
     * https://github.com/esp8266 
     * introdotte piccole modifiche per controllo collegamento wifi tramite led
     */  
      
    #include "ESP8266WiFi.h"  
      
    // La connessione dell'ESP8266 al un network WiFi viene  
    // realizzata usando un personal encryption WEP e WPA2  
    // Per poter sapere a quale rete connettersi bisogna  
    // effettuare un broadcast dell'SSID (nome del network)   
      
    // definizione di due array di caratteri  
    // in cui memorizzare nome della rete WiFi e password  
          
    

    const char ssid[] = "MioSSID";       // inserire l'ssid della rete  
    const char pass[] = "MIAPASSW";      // password della rete  
      
    // Creazione di un server web in ascolto sulla porta 80  
    // attende contenuti (pagine html, immagini, css, ecc...)  
    WiFiServer server(80);  
      
    int pinLed = 2;                   // LED connesso tra pin 2 e ground  
    int pinCtr = 0; 
      
    void setup() {  
      Serial.begin(115200);           // inizializzazione Serial Monitor  
      delay(10);  
      
      pinMode(pinCtr, OUTPUT);        
      pinMode(pinLed, OUTPUT);     
      digitalWrite(pinLed, LOW);      // LED inizialmente spento  
      
      // Connessione alla rete WiFi  
        
      Serial.println();  
      Serial.println();  
      Serial.println("------------- Avvio connessione ------------");  
      Serial.print("Tentativo di connessione alla rete: ");  
      Serial.println(ssid);  
      
      /*  
       * Viene impostata l'impostazione station (differente da AP o AP_STA) 
       * La modalità STA consente all'ESP8266 di connettersi a una rete Wi-Fi 
       * (ad esempio quella creata dal router wireless), mentre la modalità AP  
       * consente di creare una propria rete e di collegarsi 
       * ad altri dispositivi (ad esempio il telefono). 
       */  
        
      WiFi.mode(WIFI_STA);  
      
      /*  
       *  Inizializza le impostazioni di rete della libreria WiFi e fornisce lo stato corrente della rete, 
       *  nel caso in esempio ha come parametri ha il nome della rete e la password. 
       *  Restituisce come valori: 
       *   
       *  WL_CONNECTED quando connesso al network 
       *  WL_IDLE_STATUS quando non connesso al network, ma il dispositivo è alimentato 
      */  
      WiFi.begin(ssid, pass);  
      
      /*  
       *  fino a quando lo non si è connessi alla WiFi 
       *  compariranno a distanza di 250 ms dei puntini che 
       *  evidenziano lo stato di avanzamento della connessione 
      */    
      while (WiFi.status() != WL_CONNECTED) {  
        delay(125);  
        Serial.print(".");  
        digitalWrite(pinCtr, HIGH);  
        delay(125);  
        digitalWrite(pinCtr, LOW);  
        
      }  
      
      // se connesso alla WiFi stampa sulla serial monitor  
      // nome della rete e stato di connessione  
      Serial.println("");  
      Serial.print("Sei connesso ora alla rete: ");  
      Serial.println(ssid);  
      Serial.println("WiFi connessa");  
      
      // Avvia il server  
      server.begin();  
      Serial.println("Server avviato");  
      
      // Stampa l'indirizzo IP  
      Serial.print("Usa questo URL : ");  
      Serial.print("http://");  
      Serial.print(WiFi.localIP()); // Restituisce i'IP della scheda  
      Serial.println("/");  
    }  
      
    void loop() {  
      
      // Verifca se il client e' connesso  
      WiFiClient client = server.available();  
      if (!client) {  
        return;  
      }  
      
      // Aspetta fino a quando il client invia dei dati  
      Serial.println("Nuovo client");  
      while (!client.available()) {  
        delay(1);  
      }  
      
      // Legge la prima richiesta  
        
      /*  
       * readStringUntil() legge i caratteri dal buffer seriale 
       * all'interno di una stringa fino a quando non riceve il 
       * carattere di terminazione in questo cas \r 
       * oppure si verivica un time out 
       */  
         
      String request = client.readStringUntil('\r'); 
      Serial.println(request); 
      client.flush();                               // flush() elimina il buffer una volta che 
                                                    // tutti i caratteri in uscita sono stati inviati. 
     
      // Verifica quale richiesta e' stata fatta  
      
      /* 
       * Individua un carattere o una stringa all'interno di un'altra stringa (nell'esempio la strina è request). 
       * Per impostazione predefinita, ricerche dall'inizio della stringa, 
       * ma è possibile effettuare la ricerca partendo da un dato indice, 
       * permettendo di individuare tutte le istanze del carattere o della stringa. 
       * Se il valore restituito è -1 allora la stringa non è stata trovata. 
       */  
      
      int valore = LOW;  
      if (request.indexOf("/LED=ON") != -1) {  
        digitalWrite(pinLed, HIGH);  
        valore = HIGH;  
      }  
      if (request.indexOf("/LED=OFF") != -1) {  
        digitalWrite(pinLed, LOW);  
        valore = LOW;  
      }  
      
      // Restituisce la risposta  
        
      /* 
       * La pagina web dovrà essere formattata con la sua intestazione html 
       * e variando il messaggio che identifica lo stato del LED  
       */  
         
      // intestazione pagina html  
      client.println("HTTP/1.1 200 OK");  
      client.println("Content-Type: text/html");  
      client.println(""); //  non dimenticare questa linea  
      client.println("");  
      client.println("");  
      
      // titolo della pagina  
      client.println("

Intefaccia di controllo LED mediante ESP8266

"); // includiamo tutto il testo in un div in cui il font è impostato a 20 px // N.B. ricorda che per poter considerare le " come stringa e' necessario farle precedere da uno \ client.print("
"); client.print("Il LED e': "); if (valore == HIGH) { // stampa ON di colore verde client.print("ON"); } else { // stampa OFF di colore rosso client.print("OFF"); } // stampa una riga separatrice client.println("
"); // lista puntata client.println("
    "); client.println("
  • Fai click QUI per portare ad ON il LED sul pin 2
  • "); client.println("
  • Fai click QUI per portare ad OFF il LED sul pin 2
  • "); client.println("
"); client.print("
"); client.println(""); // chiusura connessione delay(1); Serial.println("Client disconnesso"); Serial.println(""); }

 

 

 

Scarica tutto quello che serve:

 

 

 

ZappocoS, 17 febbraio 2018