Comunicación entre ESP8266 y Arduino por serie (Sin comandos AT)

¡Hola a todos!

Vengo a plantear una cuestión al foro, para ver si alguno que este mas puesto con el modulo ESP8266 puede ayudarme.

Estoy "Domotizando" mi casa, y estoy usando módulos ESP8266, raspberry pi y arduinos.

Todo bien hasta el momento, pero estoy usando el modelo ESP01 de ESP8266 y por tanto solo puedo tener dos E/S.

Mi pregunta es, ¿Puedo de alguna forma enviar y recibir datos desde ESP8266 por el puerto serie sin que sean comandos AT hasta mi arduino?

La idea es:
Conectar los sensores y reles en mi arduino que tengo muchas mas entradas y salidas. Que Arduino envié por puerto serie información de los sensores por ejemplo (Sensor1_50). Luego que el módulo ESP8266 procese esos valores y los transmita por la red MQTT.

De la misma forma, que el ESP8266 reciba de la red MQTT los datos, lo envíe por puerto serie (Rele1_0) y Arduino lo procese.

¿Se entiende la idea?

La intención es no tener que usar un modulo ESP8266 para cada dispositivo y usar Arduino para juntar varios dispositivos y sensores.

No he encontrado nada al respecto. Solo una comunicación AT.

Saludos.

fjramirez:
¿Puedo de alguna forma enviar y recibir datos desde ESP8266 por el puerto serie sin que sean comandos AT hasta mi arduino?

A menos que alguien me lo corrija, técnicamente se puede programar una placa ESP01 con la IDE de Arduino.
Lo que sí no sé decir (aparte de tener que conectar no recuerdo qué pin a tierra), es cuál placa seleccionar. Si existe la opción del ESP01 o será un “NodeMCU genérico”.

Reprogramándolo con la IDE de Arduino, puedes crear tu propio “protocolo de aplicación” sobre puerto serial; efectivamente reemplazando el muy conocido protocolo por comandos AT.

Lucario448:
A menos que alguien me lo corrija, técnicamente se puede programar una placa ESP01 con la IDE de Arduino.
Lo que sí no sé decir (aparte de tener que conectar no recuerdo qué pin a tierra), es cuál placa seleccionar. Si existe la opción del ESP01 o será un "NodeMCU genérico".

Reprogramándolo con la IDE de Arduino, puedes crear tu propio "protocolo de aplicación" sobre puerto serial; efectivamente reemplazando el muy conocido protocolo por comandos AT.

Si, yo he programado el modulo ESP01 con un arduino uno. Y ahora que lo pienso... este me enviaba los valores de los sensores por puerto serie y los veía en el monitor serie de la IDE de Arduino. En teoría, si esto es posible debe ser posible también que reciba cualquier otro valor y lo procese...

Ya os comento... Pero ahora estoy intentando programar el ESP01 con un arduino mega y no hay manera...

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Que tedioso es programar este modulo... supongo que es debido a que no tengo las herramientas adecuadas y me toca programarlo con arduino.

Echa un ojo aquí. Está en inglés, así que por si no dominas bien el idioma, te recalcaré los puntos más importantes:

  • Es preferible programar con convertidor USB-serial que pueda operar con nivel lógico de 3.3v, como el FTDI que aparece en las imágenes, que tiene un jumper para seleccionar 5 o 3.3.
  • Mira el esquema de conexión, ahí sabrás de los componentes necesarios.
  • Recomiendan la versión 1.6.5, sin embargo debería funcionar incluso en la más reciente.
  • Asumiendo que has instalado las definiciones de las placas basadas en ESP8266, la placa a seleccionar es "Generic ESP8266 Module".
  • No es un NodeMCU, así que el procedimiento para programarlo es manual. Si colocaste los botones según el diagrama, presiona el que va al Reset, y luego junto al de la memoria flash. Liberando Reset pero manteniendo Flash, clic en subir; apenas termine de compilar, libera también Flash. Dice que si el LED azul parpadea, es porque ahora sí se está programando.