Go Down

Topic: Modulo Wi-Fi ESP8266 (Read 212162 times) previous topic - next topic

testato

#2565
May 10, 2017, 09:02 am Last Edit: May 10, 2017, 09:04 am by testato
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
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

biccius

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

testato

#2567
May 11, 2017, 11:42 pm Last Edit: May 11, 2017, 11:49 pm by testato
non e' possibile, e' codice in rom e viene sempre stampato sulla uart0
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ziopippo

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

zoomx

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.

testato

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

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

zoomx

Hai ragione! Ricordavo male.

ziopippo

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?

Enzo--

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.

roboticboyer

Ho pubblicato un articolo su come creare un network MQTT usando solo degli ESP8266 al seguente link:
http://wp.me/p4ZDu-3s
Il mio blog:http://roboticboyer.wordpress.com
GitHub:https://github.com/roboticboyer

testato

bello uMQTT, ottimo articolo
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ziopippo

Questo è uno sketch di prova:

Code: [Select]

#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

Code: [Select]

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.

biccius


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

testato

#2578
May 23, 2017, 11:19 am Last Edit: May 23, 2017, 11:21 am by testato
e' stata scritta da poco, non e' presente nel core, anzi magari cosi' puoi contribuire sui test e riferisci sulla issue direttamente
https://github.com/esp8266/Arduino/issues/1330

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up