Modulo Wi-Fi ESP8266

Hai fatto un errore di sbaglio :slight_smile:
I due schemi da te citati non fanno la stessa cosa, fai bene ad usare lo schema di questo topic per alimentare correttamente l'esp, ma poi per avere gli effetti da te desiderati devi mettere i pin rx tx su pin0-1 di arduino.

Cricri:
Buonasera, ho un Arduino UNO al quale ho collegato un modulo esp8266 come da guida nel primo post optando per l'opzione con i diodi. Dopo aver collegato tutti i fili ho impartito uno sketch con setup e loop vuoti come scritto su questo sito ESP8266 arduino comandi AT Mauro Alfieri Elettronica Domotica ed ho poi provato ad avviare il monitor seriale dando il comando AT ma senza ottenere alcuna risposta! Ho provato con tutti i baud scritti sempre su quel sito ma niente! È capitato anche ad altri?

testato:
Hai fatto un errore di sbaglio :slight_smile:
I due schemi da te citati non fanno la stessa cosa, fai bene ad usare lo schema di questo topic per alimentare correttamente l'esp, ma poi per avere gli effetti da te desiderati devi mettere i pin rx tx su pin0-1 di arduino.

Grazie per la risposta! Mi sono scordato di scriverlo, ho fatto proprio questa modifica rispetto allo schema del topic ma non funziona!

Edit: mi sta sorgendo un dubbio: per impartire il comando AT nell'IDE di Arduino devo selezionare come scheda Arduino UNO o il modulo stesso? O quello va selezionato solo nel caso in cui si colleghi direttamente al pc il modulo?

Edit 2: ho scordato anche di scrivere che il pc rileva la rete wifi AI-thinker e che, mettendo il modulo da Arduino acceso (come consigliano in un video) mi restituisce il messaggio "ready", però provando ad inviare il comando AT non ottengo risposta...

C'è un poco di confusione. L'ESP può stare da solo, come ho scritto prima, oppure può essere usato come scheda WiFi di Arduino UNO oppure ancora possono essere usati in tandem come se fossero due veri e propri microcontrollori.

Nel primo caso usi l'IDE Arduino ma l'ESP come board.

Nel secondo caso puoi usare l'ESP con un interprete AT di comandi oppure un ESP con alcuni firmware apposta. In questo caso usi l'IDE Arduino e come scheda sempre l'Arduino a meno che devi mettere nell'ESP un firmware che lo faccia diventare simile allo shield WiFi di Arduino, cose che rientra nel primo caso.

L'ultimo caso è quello in cui ESP e Arduino collaborano fra loro con due sketch, uno per scheda, per cui quando devi caricare lo sketch per Arduino devi selezionare la scheda Arduino mentre per lo sketch èer l'ESP8266 devi selezionare la scheda corrispondente.

I moduli ESP in genere arrivano con l'interprete di comandi AT.

L'interprete di comandi funziona anche se usi un terminale seriale su PC e relativo adattatore USB-seriale TTL che funzioni a 3.3V perché non tutti funzionano anche a questa bassa tensione.

zoomx:
...

Nel secondo caso puoi usare l'ESP con un interprete AT di comandi oppure un ESP con alcuni firmware apposta. In questo caso usi l'IDE Arduino e come scheda sempre l'Arduino a meno che devi mettere nell'ESP un firmware che lo faccia diventare simile allo shield WiFi di Arduino, cose che rientra nel primo caso.

L'ultimo caso è quello in cui ESP e Arduino collaborano fra loro con due sketch, uno per scheda, per cui quando devi caricare lo sketch per Arduino devi selezionare la scheda Arduino mentre per lo sketch èer l'ESP8266 devi selezionare la scheda corrispondente.

Riusciresti a fornire dei link che spiegano bene come si ottengono queste soluzioni?
Premetto che vorrei usare una nano e non la uno.

Purtroppo io uso l'ESP esclusivamente nel primo modo per cui non ho mai cercato link o articoli degli altri due modi.
Se comprendi l'inglese tecnico, c'è un PDF che è una sorta di compendio, scritta da Kolban, utente di questo forum
http://neilkolban.com/tech/esp8266/
In italiano dovresti provare a cercare con Google. Usare la la nano e non la UNO non fa differenza, dove ho scritto UNO puoi usare anche la nano, vale anche per ciò che trovi in rete.

Prova a leggere la mia guida in firma.

Ma lui al momento chiede lumi su un caso ben preciso, usare i comandi AT usando come adattatore usb seriale la Uno, ed usando come sw il serial monitor dell'ide.

In questo caso non conta quale board setti nell'ide, ma è importante che nel serial monitor tu setti la seriale giusta che sarà la seriale assegnata alla virtualcom della Uno.

Prova anche ad invertire rx-tx perché la serigrafia in questo caso ti fa sbagliare
Altro consiglio, toglilo proprio il 328 dalla board

Qualcuno sa come é possibile rimuovere i messaggi di boot provenienti dalla seriale quando si avvia esp8266?

La mia board é un dev kit nodemcu.
Ho provato a flashare dei bin del firmware AT e anche l'ultima release del nodemcu ma niente. Sembra che si trovi nella ROM.

Se qualcuno sa già la risposta mi fa evitare si perdere un sacco di tempo

non e' possibile, e' codice in rom e viene sempre stampato sulla uart0

Buongiorno.
Ho una nano collegata a due sensori Dallas DS18B20 e ad un display lcd 16x2.
Attualmente visualizzo i dati solo sul display ma mi piacerebbe poterli vederli anche fuori casa magari interfaccianfomi con il sito cayenne.
Sono riuscito a programmare la ESP in modo stand alone ma ovviamente la mia ESP 01 non riesce a gestire tutto fa solo.
Mi aiutereste con un esempio o un lino funzionante a farlo interagire con la nano?
Ho provato diversi sketch sulla nano ma niente da fare.
Inoltre la ESP va programmata e come?

Per il collegamento ho usato 3 resisreze da 2200 e un condensatore elettrolitico da 10uF
Grazie

Prendi una nodeMCU oppure una Wemos o altre simili, per display sarebbe meglio un piccolo OLED oppure un TFT a colori con bus SPI. Hanno una USB e si programmano praticamente come la nano.
Dopodiché in rete trovi un sacco di progetti simili.

Oppure metti sulla ESP01 il firmware che simula la scheda WiFi ufficiale di Arduino (se ci entra ma credo di si) e sulla nano metti la corrispondente libreria. Quindi potresti usare uno sketch che faccia uso della WiFi ufficiale e adattarlo alle tue esigenze.

Di più non ti posso dire perché non uso gli ESP come periferiche di Arduino, ti riferisco solo quanto ho visto in rete.

non serve cambiare fw per la seconda ipotesi, si usa sull'arduino una libreria che usa la API della shield wifi arduino, e dall'altro parla all'ESP01 via comandi AT
L'esp lo si usa cosi' come arriva dal venditore senza metterci mano

Hai ragione! Ricordavo male.

Buona domenica a tutti.
Per impegni lavorativi non sono riuscito più ad aggiornarvi sui miei problemi ho però seguito constantemente i vostri consigli.
Nel frattempo sono riuscito a rimettere il firmware originale aggiornato ESP8266_NONOS_SDK_V2.0.0_16_08_10.
Con questo sono riustito ad inviare e collegarmi alla mia WiFi tramite comandi AT.
Ho capito che programmando la mia ESP in modo stand alone perdevo la possibiltà di usare i comandi AT.
Sono riuscito a collegare la ESP alla mia board NANO e farla collegare alla mia WiFi con gli esempi di Blink usando la libreria BlynkSimpleShieldEsp8266 ed ad interagire con ESP/NANO ed Android con virtuino.

NON sono però ancora riuscito a trovare uno sketch che mi fa collegare la nano alla WiFi per poi connettermi ed inviare il token a Cayenne.

Consigli?

ziopippo:
Sono riuscito a collegare la ESP alla mia board NANO e farla collegare alla mia WiFi con gli esempi di Blink usando la libreria BlynkSimpleShieldEsp8266 ed ad interagire con ESP/NANO ed Android con virtuino.

NON sono però ancora riuscito a trovare uno sketch che mi fa collegare la nano alla WiFi per poi connettermi ed inviare il token a Cayenne.

Consigli?

Confused!!! Puoi spiegarti meglio? Non ho capito.

Ho pubblicato un articolo su come creare un network MQTT usando solo degli ESP8266 al seguente link:

bello uMQTT, ottimo articolo

Questo è uno sketch di prova:

#include <CayenneEthernet.h>
#include <SoftwareSerial.h>

#define SSID "MY SSID"  //name of wireless access point to connect to
#define PASS "MY PASS"  //wifi password

#define CAYENNE_DEBUG         // Uncomment to show debug messages
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space

#define LED 13


// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = "MY TOKEN";

SoftwareSerial ss(10, 11);

void setup()  //initialise device & connect to access point in setup
{
  pinMode(LED, OUTPUT);

  reset();

  //Serial1.begin(115200);    // hardware serial connects to esp8266 module
  ss.begin(9600);
  Serial.begin(115200); // usb serial connects to to pc

  delay(4000);    //wait for usb serial enumeration on 'Serial' & device startup



  boolean wifi_connected = false; //not connected yet...
  for (int i = 0; i < 5; i++) //attempt 5 times to connect to wifi - this is a good idea
  {
    if (connectWiFi()) //are we connected?
    {
      wifi_connected = true;  //yes
      break;              //get outta here!
      Serial.println(" SEND Cayenne.begin(token) COMMAND ");
      Cayenne.begin(token);
    }
    Serial.print("i= ");
    Serial.println(i);
  }
  if (!wifi_connected) hang("wifi not connected");  //these seem ok - never had a problem
  delay(250);
  if (!cipmux0()) hang("cipmux0 failed");
  delay(250);
  if (!cipmode0()) hang("cipmode0 failed");
  delay(250);

}

void loop()
{
  Serial.println("SEND Cayenne.run() COMMAND");
  Cayenne.run();
}

//------------------------------------------------------------------------------------


boolean connectWiFi()
{
  Serial.println("Try to connect...");

  String cmd = "AT+CWJAP=\""; //form eg: AT+CWJAP="dynamode","55555555555555555555555555"
  cmd += SSID;
  cmd += "\",\"";
  cmd += PASS;
  cmd += "\"";

  Serial.println(cmd);

  ss.println(cmd);
  delay(5000); //give it time - my access point can be very slow sometimes

  Serial.println(char(ss.read()));

  if (ss.find("OK"))
  {
    Serial.println("Connected to WiFi...");
    return true;
    //Cayenne.begin(token);
  }
  else
  {
    Serial.println("Not connected to WiFi.");
    return false;
  }
}

//--------------------------------------------------------------------------------
//ditch this in favour of hardware reset. Done

boolean softwarereset()
{
  Serial.println("AT+RST");
  ss.println("AT+RST");
  //if (Serial1.find("ready"))
  if (ss.find("ready"))
  {
    return true;
  }
  else
  {
    return false;
  }
}

//--------------------------------------------------------------------------------

void reset()
{
  Serial.println("Reset with AT+RST");
  ss.println("AT+RST");

  digitalWrite(LED, HIGH);
  delay(100);
  digitalWrite(LED, LOW);
}

//------------------------------------------------------------------------------

boolean cwmode3()
// Odd one. CWMODE=3 means configure the device as access point & station. This function can't fail?

{
  Serial.println("AT+CWMODE=3");
  ss.println("AT+CWMODE=3");
  //if (Serial1.find("no change"))  //only works if CWMODE was 3 previously
  if (ss.find("no change"))
  {
    return true;
  }
  else
  {
    return false;
  }
}

//----------------------------------------------------------------------------------

boolean cipmux0()
{
  Serial.println("AT+CIPMUX=0");
  ss.println("AT+CIPMUX=0");
  //if (Serial1.find("OK"))
  if (ss.find("OK"))
  {
    return true;
  }
  else
  {
    return false;
  }
}

//-----------------------------------------------------------------------

boolean cipmode0()
{
  Serial.println("AT+CIPMODE=0");
  ss.println("AT+CIPMODE=0");
  //if (Serial1.find("OK"))
  if (ss.find("OK"))
  {
    return true;
  }
  else
  {
    return false;
  }
}

//------------------------------------------------------------------------

void hang(String error_String)    //for debugging
{
  Serial.print("Halted...   ");
  Serial.println(error_String);
  while (1)
  {
    digitalWrite(LED, HIGH);
    delay(100);
    digitalWrite(LED, LOW);
    delay(100);
  }
}

//----------------------------------------------------------------------------

void hangreset (String error_String)    //for debugging
{
  Serial.print(error_String);
  Serial.println(" - resetting");
  reset();
}

E questo è l'output seriale

Try to connect...
AT+CWJAP="MY SSID","MY PASS"
A
Connected to WiFi...
AT+CIPMUX=0
AT+CIPMODE=0
SEND Cayenne.run() COMMAND

Interrogando l'home page del router vedo l'ip della ESP ma il sito cayenne resta sempre in attesa.

Domanda sulla comunicazione I2C tra Arduino e ESP8266

Qualcuno sa se esiste qualche sketch funzionante che testi la comunicazione I2C tra un Arduino MASTER (io ad esempio ho un Pro Mini che lavora a 3.3V) e un ESP8266 SLAVE ?

Non posso ripiegare sulla soluzione seriale quindi devo capire se c'è qualcosa di funzionante senza stare a impazzire

e' stata scritta da poco, non e' presente nel core, anzi magari cosi' puoi contribuire sui test e riferisci sulla issue direttamente