[SOLUCIONADO] Arduino Uno + ESP8266

Hola a todos!

Os comento, me he comprado el modulo ESP8266 ya que quiero controlar el arduino por remoto. He conseguido establecer la comunicación mediante el "Monitor Serie" y me responde a los comandos, pero he visto dos cosas que no me quedan muy claro, ni el motivo ni donde puede estar el problema o la solución.

  • Lo primero es que he buscado las conexiones y no me muestra mi conexión WIFI (todos los dispositivos que tengo en casa la ven) pero si me salen otras conexiones que no están en mi piso, por descartar me he puesto a escasos dos metros del router y sigue sin salirme en el comando de búsqueda de redes, alguien se ha encontrado con el mismo problema?
  • Lo segundo es lo que me tiene bloqueado y me impide avanzar, ya que al enviar el comando para conectarme a la red con el nombre de la red y el password para ver si aun no saliendo en la lista mi wifi se conectaba (AT+CWJAP="ONO9155","j9HrucYeTdN9"), por defecto se ha conectado a una red que no tiene seguridad, cosa que no entiendo ya que no tiene el mismo nombre... y ahora cada vez que arranco el modulo se intenta conectar sin existo a esa red sin seguridad y entra en un bucle en el que ni se conecta ya que no da ip (Me he conectado con el ordenador y no termina de conectar) ni acepta ningún comando saliendo todo el rato esto en el monitor:
Ai-Thinker Technology Co.,Ltd.

ready
WIFI CONNECTED
WIFI GOT IP
AT+CWQAPAT+CWQAPWIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP

Como podéis ver, en la linea 5 he intentado enviar comandos pero sin respuesta y ahora estoy bloqueado ya que no puedo hacer nada! y al ser tan pequeño no me sirve ni de pisapapeles!!! :wink:

El código del arduino es muy sencillo. (lo he copiado de un hilo)

#include <SoftwareSerial.h>
SoftwareSerial BT1(3, 2); // RX | TX

void setup()
  {  
    Serial.begin(19200);
    BT1.begin(19200);
  }

void loop()
  {  String B= "." ;
     if (BT1.available())
         { char c = BT1.read() ;
           Serial.print(c);
         }
     if (Serial.available())
         {  char c = Serial.read();
            BT1.print(c);
         }
   }

Por otro lado, daros las gracias a todos ya que he aprendido bastante en este foro y pediros disculpas si ya hay algún hilo con este problema, pero he buscado por todos lados y no he encontrado nada! os lo juro!!! y llevo todo el día...

Empecemos estableciendo el firmware de tu ESP8266.
verifica que firmware tiene.

Lo he intentado, pero no me deja, me sale lo de conectando y ahí se queda... no hay alguna forma de resetear el modulo de fabrica?

pillo la wifi en toda la casa

Ai-Thinker Technology Co.,Ltd.

ready
AT+GMRWIFI CONNECTED
WIFI GOT IP

Muchas gracias por ayudarme!

no pierdas mas la cabeza intentando usar el modulo con comandos AT asi, mirate este video tutorial! https://www.youtube.com/watch?v=NwkDKhC0M6M

chabon, no te limes mas la cabeza con intentando usar el modulo con comandos AT asi, mirate este video tutorial

No estas en Argentina. Este es un foro internacional asi que cuida tu lenguaje y habla en un español que todos entiendan.
Además los enlaces se ponen con tags. Si no sabes lee las normas del foro.

Buenos días!!

Hoy parece que empieza bien la cosa! no se el motivo pero hoy sí me ha aceptado la opción de cancelar la conexión y he podido verificar el firmware...

AT+GMR

AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK

que por lo que he visto en el vídeo del link esta bastante desactualizado (0.9.5). voy a ver si hay alguna forma de actualizarlo desde el Arduino, ya que no fui previsor y no compre el adaptador USB :confused:

Otra opción que tengo que no se si es posible y que me gustaría saber vuestra opinión antes de perder tiempo es la siguiente, creéis que seria posible reutilizar la "Pickit 3" para este fin pero alimentando con los 3.3v del arduino??

Es posible que los dos errores por los que inicie el post estén relacionados con la versión del firmware?

CORRECCIÓN

He vuelto a mirar la versión y es la 1.3 (he modificado el post anterior) la 0.40 es la los comandos AT, pido disculpas.

Por lo que entiendo que esta mas o menos bien actualizada ya que he mirado la nueva y es la 1.5.

Has visto el enlace de setting, te lo recomiendo porque yo lo estoy implementando.

Usar ESP8266 sin comandos AT

Buenas! sí, he estado mirando un poco, pero tengo que seguir mirando ya que quiero controlar como mínimo un interruptor, un sensor de temperatura/humedad y un motor paso a paso por wifi y me da que se me quedan pequeños los puertos, pero tengo que seguir investigando esa nueva via que me habeis indicado :smiley:

Y por ahora os comento los avances que he hecho, creo que he encontrado el error... y creo que esta en el programa que lee y envía la info al arduino, no en el modulo ESP'.

Os comento, me he dado cuenta a raiz de ver el firmaware que lleva el modulo y al intentar actualizarlo.

Esto es lo que recibo por pantalla cuando realizo la comunicación del modulo ESP mediante el arduino UNO a 19200 baudios.

Ai-Thinker Technology Co.,Ltd.

ready
WIFI CONNECTED
WIFI GOT IP
AT+CWQAP

WIFI DISCONNECT

OK
AT+CWLAP

+CWLAP:(4,"ONO26ED",-89,"dc:53:7c:32:0d:cf",1,-2)
+CWLAP:(4,"vod:T0A7-
:0:d:T"P:,:_759i,-
,+a

como veis en ningún momento recibo ningún ok y por ejemplo la segunda WIFI esta incompleta...

Pero eliminando el chip del arduino y utilizandolo solo como pasarela para interactuar con el modulo ESP (esto ha sido a raiz de intetar actualizarlo) recibo lo siguiente:

Ai-Thinker Technology Co.,Ltd.

ready
WIFI CONNECTED
WIFI GOT IP
AT+CWQAP

WIFI DISCONNECT

OK
AT+CWLAP

+CWLAP:(4,"ONO26ED",-89,"dc:53:7c:32:0d:cf",1,-6)
+CWLAP:(2,"WLAN_607C",-94,"00:a0:26:81:60:7c",1,-34)
+CWLAP:(3,"vodafone2034",-89,"94:4a:0c:a5:20:35",1,-12)
+CWLAP:(4,"vodafone875A",-69,"80:29:94:66:87:5f",1,-22)
+CWLAP:(0,"_AUTO_ONOWiFi",-90,"02:53:7c:32:0d:d0",1,-6)
+CWLAP:(4,"ONO3817",-86,"08:95:2a:80:f9:4e",1,-11)
+CWLAP:(4,"ONOBE1A",-87,"dc:53:7c:04:6c:db",6,10)
+CWLAP:(3,"DIRECT-63-HP ENVY 4520 series",-84,"b0:5a:da:fb:7f:64",6,-5)
+CWLAP:(0,"_AUTO_ONOWiFi",-87,"02:53:7c:04:6c:dc",6,10)
+CWLAP:(4,"JAZZTEL_AjNb",-86,"34:4d:ea:ee:93:18",3,-2)
+CWLAP:(3,"vodafoneF31C",-84,"f4:e3:fb:cb:f3:24",5,-7)
+CWLAP:(4,"ONO9155",-64,"dc:53:7c:36:95:36",6,1)
+CWLAP:(0,"_AUTO_ONOWiFi",-66,"02:53:7c:36:95:37",6,1)
+CWLAP:(4,"vodafone6922",-67,"80:29:94:6c:69:27",7,-26)
+CWLAP:(0,"_AUTO_ONOWiFi",-93,"02:53:7c:60:81:22",6,-12)
+CWLAP:(3,"vodafone0264",-76,"b8:bc:1b:0b:02:6c",11,-14)
+CWLAP:(3,"MOVISTAR_34F8",-87,"b2:46:fc:6b:34:f8",11,-26)
+CWLAP:(3,"MOVISTAR_C1A8",-92,"e2:41:36:29:c1:a8",11,-17)
+CWLAP:(4,"ONOCB18",-92,"dc:53:7c:60:81:21",6,-12)

OK

Incluso me he conectado a mi red y muestra síntomas de recibir información.

AT+CWJAP="ONO9155","j9HrucYeTdN9"

WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:d3:1d:9f"
+CIFSR:STAIP,"192.168.1.118"
+CIFSR:STAMAC,"18:fe:34:d3:1d:9f"

OK
AT+CIPMUX=1


OK
AT+CIPSERVER=1,80


OK
0,CONNECT
1,CONNECT

+IPD,0,430:GET / HTTP/1.1
Host: 192.168.1.118
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Aquaris E10 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-ES,es;q=0.8,en;q=0.6

Sigo dando vueltas al tema de que se conecte por defecto a la otra red, pero definitivamente creo que el programa de leer y enviar entre el Arduino y el ESP esta mal, vosotros habéis visto algo extraño??

Os lo copio de nuevo.

#include <SoftwareSerial.h>
SoftwareSerial BT1(3, 2); // RX | TX

void setup()
  {  
    Serial.begin(19200);
    BT1.begin(19200);
  }

void loop()
  {  String B= "." ;
     if (BT1.available())
         { char c = BT1.read() ;
           Serial.print(c);
         }
     if (Serial.available())
         {  char c = Serial.read();
            BT1.print(c);
         }
   }

Muchas gracias a todos por vuestro interes!!

Buenas tardes a todos!!!

Finalmente he dado con la solución al problema de la transmisión, después de darle vueltas y mas vueltas lo he conseguido solucionar bajando la velocidad de transmisión a 9600 baudios.

Por ahora lo dejare así para poder seguir avanzando en lo que tengo en mente y después ya me empezare a pegar un poco con el tema que me habéis comentado sobre la programación directamente en ESP.

Quería agradeceros a todos el tiempo dedicado ya que sin vuestras aportaciones no habría aprendido algo nuevo :smiley: y hubiese tardado mas en resolver el problema, espero que este post, por lo menos le sirva a una persona, jejeje.

!!Así es un gustazo preguntar y aprender!!