ESP8266 Web Server

Questo articolo è superato

Si consiglia di utilizzare l’Arduino-IDE per ESP

 

Io e Carlo abbiamo sviluppato un primo esempio per Arduino Uno (ARD1) di Web Server utilizzando i moduli Wifi ESP8266 (ESP).

La connessione tra ARD1 e ESP avviene tramite SoftwareSerial a 9600baud.
Il codice è disponibile su Gist

Ho utilizzato gli ESP8266 con il firmware > 0.9.2 che comunicano a 9600 baud .
Ho connesso ESP8266 attraverso un Level Converter Bidirezionale ad Arduino per avere le tensioni a 3.3 V.
Alimento ESP8266 con un alimentatore esterno a 3.3V.
ESP8266 comunica attraverso la SoftwareSerial sui pin 9 (Rx Arduino) e 10 (Tx Arduino) di Arduino.
Per il debug posso quindi usare la comunicazione USB di Arduino, come caricare gli sketch senza problemi, come di norma faccio con i moduli BT.L’esempio di codice allegato crea un web server (WS) con una pagina dinamica che ogni 20 secondi si connette al WS e riceve i secondi dall’accensione del WS.Commentato c’è anche il codice per visualizzare 2 segnali analogici.Questo codice è frutto dell’elaborazione dell’esempio di http://rayshobby.net/?p=9734
Consiglio di visitare il sito di Ray per maggiori dettagli. Ray ha inoltre sviluppato un nuovo sketch che dovrebbe gestire meglio gli ESP. La mia versione non è stata ancora aggiornata.
ATTENZIONE:
L’esempio di Ray è stato sviluppato per Arduino Mega che dispone di due seriali Hardware.
Per un esempio più complesso consiglio invece di consultare il Blog di Peter
E’ sempre in costante aggiornamento:
Peter usa un Arduino Mega per avere due seriali Hardware
Advertisements

10 pensieri su “ESP8266 Web Server

  1. Ciao e complimenti per il tutorial,
    sto provando il tuo codice, utilizzando anche io un Arduino Uno, un level converter ed il modulo esp8266, però non riesco a farlo funzionare, mi riporta sempre error:2 e poi error:1, sul modulo esp mi si accende anche il led blu quando tenta di comunicare, ma evidentemente poi non va a buon fine, da cosa pensi possa dipendere?
    Grazie

    P.S.: Provando invece il nuovo sketch di Ray non mi riconosce la Serial1 già in fase di compilazione… mah

    Rispondi
    • Lo sketch di Ray utilizza un Arduino Mega quindi ha a disposizione la Serial1 Hardware.
      Per usare Arduino Uno dovresti usare la Software Serial per il debug utilizzando un convertitore USB/TTL esterno tipo i CP2102 e i pin D0 e D1 di Arduino per la seriale Hardware. Questo complica le cose perchè devi scollegare l’ESP quando carichi lo sketch.

      Gli errori hanno questa codifica:
      WIFI_ERROR_AT => 1
      WIFI_ERROR_RST => 2

      Secondo me ESP non comunica con Arduino.

      Ti consiglio di fare prima delle prove usando https://gist.github.com/roboticboyer/c123b8d7035f6c9bc568#file-esp_echo-ino

      Dal terminale Arduino (settato a 9600 bit/sec e con CR e LF come terminatori) dai i comandi:
      AT
      AT+RST
      e vedi se ti risponde.
      O c’è un collegamento errato o il tuo ESP non comunica a 9600 bit/s ( vecchie versioni funzionavano a 115200 come esempio di Ray)

      Per ulteriori aiuti scrivi anche sul Forum Arduino – ESP8266

      Tra tutti ti possiamo aiutare di più.

      Rispondi
      • Grazie per la velocissima risposta 🙂
        Ho fatto una prova veloce impostando il baudrate 115200, ma così facendo non mi si accende neanche il led blu, quando tenta di comunicare e mi riporta sempre error 1, quindi credo che per il mio esp sia corretto a 9600.
        Una cosa che avevo dimenticato di scrivere è che dal pc ho notato che l’esp crea anche una sua rete wireless (ESP_9E3878), è normale? Creandone una sua come fa ad accedere poi anche a quella che gli ho impostato nello sketch?
        Ora faccio le prove che mi hai suggerito con i comandi AT.
        Grazie ancora

      • ESP può funzionare sia come Access Point (AP) che come scheda di rete wifi standard (STA) le due funzionalità possono essere attive simultaneamente.

        La rete wifi ESP_9E3878 è quella dell’AP (192.168.4.1).

        AT+CWMODE? =>ti dice in che configurazione sei
        AT+CWMODE=1 => STA
        AT+CWMODE=2 => AP
        AT+CWMODE=3 => STA + AP

        Qui trovi l’elenco completo dei comandi AT
        http://woodsgood.ca/projects/wp-content/uploads/ESP8266ATCommandsSet.pdf

        Per esperienza vissuta, prima di fare gli sketch complessi per l’ESP verifica se funziona inviandogli solo i comandi AT a mano.

        Io per esempio ho collegato l’ESP direttamente al convertitore USB/TTL CP2102 (Tx e Rx sono a 3.3V) o un FTDI ( non so i voltaggi Tx e Rx) è fatto tutte le prove. Solo dopo mi sono cimentato con Arduino.

  2. Complimenti, ottimo, avete fatto un ottimo lavoro. Provato e funziona. Ora vorrei aggiungere un’altra pagina web però non riesco. Mi spiegato cosa fa esattamente questo pezzo di codice?

    if(strncmp(buffer, “+IPD,”, 5)==0) { //Compara.
    // request: +IPD,ch,len:data
    sscanf(buffer+5, “%d,%d”, &ch_id, &packet_len);
    if(packet_len > 0){
    // read serial until packet_len character received
    // start from :
    pb = buffer+5;
    while(*pb!=’:’) pb++;
    pb++;
    if (strncmp(pb, “GET /”, 5) == 0) {
    serve_homepage(ch_id);
    }
    }
    }

    GRAZIE

    Rispondi
  3. ciao ragazzi sono 3 giorni che mi è arrivato l’ESP8266 ma non riesco a comunicare con questo dispositivo non ricevo nessuna risposta quando scrivo nel serial monitor o roba del genere, AIUTATEMI conttatemi anche in privato

    Rispondi
    • Hai collegato tutto correttamente?
      ESP8266_TX->RX(D3)
      ESP8266_RX->TX(D2)
      ESP8266_CH_PD->3.3V
      ESP8266_VCC->3.3V
      ESP8266_GND->GND

      Rispondi
  4. ho collegato il mio modulo direttamente ad arduino uno ho utilizzato questo codice sostituendo il baudrate a 115200 perchè a 9600 non andava.
    :
    #include
    SoftwareSerial esp8266(9, 10); // RX, TX

    void setup()
    {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    esp8266.begin(9600);
    }

    void loop() // run over and over
    {
    while (esp8266.available()>0 )
    Serial.write(esp8266.read());

    while (Serial.available()>0 ){
    esp8266.write(Serial.read());
    delay(100);
    }
    }

    con i comandi AT il modulo risponde, ma molti dei i caratteri che appaiono sono diversi.

    come mai? sembra che non comunica alla perfezione, da cosa puo dipendere?

    Rispondi
  5. ho collegato il mio modulo direttamente ad arduino uno ho utilizzato questo codice sostituendo il baudrate a 115200 perchè a 9600 non andava.a
    :
    #include
    SoftwareSerial esp8266(9, 10); // RX, TX

    void setup()
    {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    esp8266.begin(9600);
    }

    void loop() // run over and over
    {
    while (esp8266.available()>0 )
    Serial.write(esp8266.read());

    while (Serial.available()>0 ){
    esp8266.write(Serial.read());
    delay(100);
    }
    }

    con i comandi AT il modulo risponde, ma molti dei i caratteri che appaiono sono diversi.

    come mai? sembra che non comunica alla perfezione, da cosa puo dipendere?

    Rispondi

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...