Problema scheda ESP8266

Salve a tutti,
ho acquistato la scheda WiFi ESP8266 con il relativo adattatore per poter essere alimentata direttamente da Arduino. Vorrei utilizzarla per qualche progetto di IoT e ho trovato questo codice molto valido e semplice da capire:

/*
 *  This sketch demonstrates how to set up a simple HTTP-like server.
 *  The server will set a GPIO pin depending on the request
 *    http://server_ip/gpio/0 will set the GPIO2 low,
 *    http://server_ip/gpio/1 will set the GPIO2 high
 *  server_ip is the IP address of the ESP8266 module, will be 
 *  printed to Serial when the module is connected.
 */

#include <ESP8266WiFi.h>

const char* ssid = "SSID";
const char* password = "PASSWORD";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  
  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  
  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

I collegamenti sono:

VCC 5 Volt → + Adattatore
GND → - Adattatore
RX → TX Adattatore
TX → RX Adattatore

Ho impostato la board come ESP8266 Generic, ma ho il seguente errore:

warning: espcomm_sync failed
error: espcomm_open failed

Come mai ? Ho commesso qualche errore ?

Si. Per programmarla devi mettere a GND il GPIO0.

Leggi qui --> http://forum.arduino.cc/index.php?topic=265682.0

PaoloP: Si. Per programmarla devi mettere a GND il GPIO0.

Leggi qui --> http://forum.arduino.cc/index.php?topic=265682.0

Salve, grazie per la risposta, ma non cambia la situazione, ho sempre lo stesso problema. Ho commesso qualche altro errore ?

P.S. Io utilizzo l'adattatore per fornire correttamente la corrente richiesta e non uso direttamente la scheda ESP8266

Se usi Arduino UNO come adattatore per la USB, mi pare debba mettere TX-TX e RX-RX.

PaoloP: Se usi Arduino UNO come adattatore per la USB, mi pare debba mettere TX-TX e RX-RX.

Io uso Arduino e lo schema riportato in questa pagina: http://www.ebay.it/itm/131564605230?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Ok, segui lo schema... Ma se non va, prova la mia soluzione.

PaoloP: Ok, segui lo schema... Ma se non va, prova la mia soluzione.

Ho provato la tua soluzione, Tx->Tx, Rx->Rx ma niente, sempre lo stesso errore. Qualche altra idea ?

che versione dell'esp hai? io che ho l'esp12 devo mettere a GND anche il pin15

Paccao: che versione dell'esp hai? io che ho l'esp12 devo mettere a GND anche il pin15

L'ESP-01

Ho visto adesso che colleghi l'esp ai 5V, non dipende da questo l'errore ma ti sconsiglio di farlo, ho letto molte volte che l'esp va usato a 3.3 con l'alimentazione possibilmente da una batteria. Per quanto riguarda l'errore non so,... hai scaricato i driver dell'adattatore? Selezioni la porta COM nel momento della programmazione?

nel messaggio #1 jackbell16 ha detto che ha l'adattatore, che non è altro che un regolatore di tensione che riduce i 5V in 3.3V, non serve nessun driver software per l'adattatore

ah ok, l'ho detto perché quando io ho collegato l'esp con il mio adattatore usb ho dovuto installare i driver in modo che il computer vedesse la porta, non avevo visto il tipo di adattatore che aveva preso :) scusatemi :D allora non so proprio :sob:

icio: nel messaggio #1 jackbell16 ha detto che ha l'adattatore, che non è altro che un regolatore di tensione che riduce i 5V in 3.3V, non serve nessun driver software per l'adattatore

Si è soltanto un regolatore, che permette di alimentare la scheda direttamente da Arduino, senza una alimentazione esterna. Qualche idea sul problema che sto riscontrando ?

Allora... non puoi collegare l'ESP per la programmazione e contemporaneamente farlo dialogare con Arduino e vedere i dati sul serial monitor.

Ci devi dire cosa vuoi fare con l'ESP. Lo vuoi programmare con l'Arduino IDE? Come collegamento all'USB passi attraverso Arduino UNO?

Oppure vuoi semplicemente usare il firmware AT e farla comunicare con Arduino e non con il PC?

PaoloP: Allora... non puoi collegare l'ESP per la programmazione e contemporaneamente farlo dialogare con Arduino e vedere i dati sul serial monitor.

Ci devi dire cosa vuoi fare con l'ESP. Lo vuoi programmare con l'Arduino IDE? Come collegamento all'USB passi attraverso Arduino UNO?

Oppure vuoi semplicemente usare il firmware AT e farla comunicare con Arduino e non con il PC?

La mia idea è quella di usare un mezzo di comunicazione low-cost, per poter comunicare con il web. Ad esempio voglio inviare un POST/GET ad Arduino e questo accende una lampada. Oppure voglio che Arduino faccia una richiesta HTTP ad un server, quando un sensore cambia valore. In pratica progetti di IoT. Vorrei usare, se possibile, direttamente l'Arduino IDE e utilizzare come micro Arduino uno. Spero di essere stato chiaro. Ti ringrazio per il tuo supporto.

Per poter controllare sensori e dialogare con servizi HTTP non ha bisogno di Arduino. L'ESP ha già un microcontrollore programmabile che può fare tutto da solo.

Col modello 01 hai solo 2 pin disponibili. Per cose più complesse devi passare ad altri modelli dell'ESP. Tutti i modelli sono programmabili direttamente dell'IDE di Arduino dopo aver scaricato il core ESP.

Per poter collegare l'ESP al PC ti serve un convertitore seriale/USB che funzioni a 3.3V. Puoi usare in quel caso l'Arduino UNO e il convertitore di segnale che hai già.

Per fare in modo che il micro di Arduino non disturbi durante il collegamento tra l'ESP e il PC hai 2 soluzioni: o togli il micro, oppure ci carico sopra uno sketch vuoto (con setup() e loop() vuoti). In quel caso, ovvero per programmarlo da IDE, il collegamento ai pin 0 e 1 e TX-TX, RX-RX.

PaoloP: Per poter controllare sensori e dialogare con servizi HTTP non ha bisogno di Arduino. L'ESP ha già un microcontrollore programmabile che può fare tutto da solo.

Col modello 01 hai solo 2 pin disponibili. Per cose più complesse devi passare ad altri modelli dell'ESP. Tutti i modelli sono programmabili direttamente dell'IDE di Arduino dopo aver scaricato il core ESP.

Per poter collegare l'ESP al PC ti serve un convertitore seriale/USB che funzioni a 3.3V. Puoi usare in quel caso l'Arduino UNO e il convertitore di segnale che hai già.

Per fare in modo che il micro di Arduino non disturbi durante il collegamento tra l'ESP e il PC hai 2 soluzioni: o togli il micro, oppure ci carico sopra uno sketch vuoto (con setup() e loop() vuoti). In quel caso, ovvero per programmarlo da IDE, il collegamento ai pin 0 e 1 e TX-TX, RX-RX.

Grazie, quindi in realtà uso il micro del dispositivo WiFi e non di Arduino ? Se volessi ad esempio accendere e spegnere un LED, posso farlo ? Ed utilizzare librerie che sono già per Arduino (come ad esempio il MySQLConnector) ?

No. Devi cercare le librerie compatibili con l'ESP.

PaoloP: No. Devi cercare le librerie compatibili con l'ESP.

Grazie per la risposta, in pratica quello che mi stai dicendo tu è che viene utilizzato l'Arduino UNO solo per caricare il programma sulla scheda ESP8266. In pratica l'ESP8266 è un micro-controllore vero e proprio e devo sfruttare lui nei programmi, è giusto ?

Se lo usi senza l'Arduino si. L'ESP è dotato di un microcontrollore programmabile come l'Arduino. Ma spesso le librerie non sono compatibili tra i due micro.