conectar dos arduino uno a traves del modulo esp-01

necesito una mano tenia un codigo en el cual conectaba dos arduino uno a traves de dos modulos wifi esp-01 usando comandos AT, el del exterior enviaba datos a otros y segun los datos en del interior le envia las correcciones, sin querer borre el pendrive donde tenia todo el codigo, si alguien tiene un ejemplo solo de la conexion bi direcional de conexcion entre ambos, o el link de una paginja, ya que la pagina esta en portugues un logro encontrarla con san google.

Conectar dos UNOs usando dos ESP01.
Los ESP01 deben conectarse entre si usando UDP y la conexión de cada UNO con el ESP01 es vía Serial, asi que ahi tienes todo.
Cuando instalas en el IDE el soporte ESP8266 hay un ejemplo UDP que justamente intercambia datos.
Lo que debes hacer es que esos datos sean leídos enviados via el puerto serie del ESP01 al UNO y vice versa.

Dicho de modo fácil.
Si quieres lo hacemos.
Yo no te voy a buscar una página en portugues de lo que pides con la poca información que indicas, jajaja.

Vamos Adrían, que creo que le pides peras al olmo!!!

Asi como quien no quiere tiré una prueba en San Google y tuviste suerte pero tal vez debas trabajarlo.

Using ESP-01 and Arduino UNO

Errores evidentes que veo:

  • Alimenta el ESP01 con los 3.3V del Arduino UNO. Eso esta mal.. Debes usar un step down o un AMS1117

Lo correcto:

  • Agrega un divisor resistivo para proteger la entrada RX del ESP01.
  • Es un buen ejemplo con un botón y un pulsador.

Como verás cuando arranca toma la IP asignada por el Router lo que te complicará a la hora de quererlo comuncar con otro ESP01 - UNO.

gracias surbyte, yo lo tenia armado con un proyectito de un carrito que paseaba por el pateo y envia información a otro arduino, pero borre el pendrive sin querer, para usarlo con el osciloscopio, eso me pasa por no controlar que habia grabado adentro :confused:

el codigo que yo había encontrado era algo asi, aca uno de los arduino uno le conectabas un modulo wifi esp-01, y se conectaban entre si, sin usar el router de la casa, ya lo voy a encontrar jaja, no creo que lo hayan borrado?, porque yo solo quiero que sirvan como nexo entre las placas arduino, el que tenia el carrito tomaba info de temp. hum. uve, luminosidad, presion, y tenia un ds3231, envia por wifi los datos, al que estaba adentro, me faltaba hacer que el de adentro le diera ordenes segun lo que recibia, pero por ahora fueeee.

MIra, para mi lo tenes que hacer con UDP y ahi tendrás las cosas muy claras.

Acá tenes un hilo que puede servirte link

Nunca se me dio por saber que es UDP. vamos a investigar :slight_smile:

Protocolo TCP/IP y protocolo UDP

TCP/IP es una denominación que permite identificar al grupo de protocolos de red que respaldan a Internet y que hacen posible la transferencia de datos entre redes de ordenadores. En concreto, puede decirse que TCP/IP hace referencia a los dos protocolos más trascendentes de este grupo: el conocido como Protocolo de Control de Transmisión (o TCP) y el llamado Protocolo de Internet (presentado con la sigla IP).

UDP son las siglas de Protocolo de Datagrama de Usuario (en inglés User Datagram Protocol) un protocolo sin conexión que, como TCP, funciona en redes IP. UDP/IP proporciona muy pocos servicios de recuperación de errores, ofreciendo en su lugar una manera directa de enviar y recibir datagramas a través una red IP.

Definiciones copy & paste.

EDITO:

Esto es lo mas simple que puedes usar.
Tal vez demasiado para tu caso pero míralo y luego me dices si no se adapta a tu necesidad.
Se trata de una red MESH de ESPs. EL Id utilizado es el id de cada ESP8266 de modo que no tienes de que preocuparte. Los msg iran de uno a otro.

Mira el ejemplo :

#include <easyMesh.h>

// some gpio pin that is connected to an LED... 
// on my rig, this is 5, change to the right number of your LED.
#define   LED             5       // GPIO number of connected LED

#define   BLINK_PERIOD    1000000 // microseconds until cycle repeat
#define   BLINK_DURATION  100000  // microseconds LED is on for

#define   MESH_PREFIX     "whateverYouLike"
#define   MESH_PASSWORD   "somethingSneeky"
#define   MESH_PORT       5555

easyMesh  mesh;

uint32_t sendMessageTime = 0;

void setup() {
  Serial.begin(115200);
    
  pinMode( LED, OUTPUT );

//mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE ); // all types on
  mesh.setDebugMsgTypes( ERROR | STARTUP );  // set before init() so that you can see startup messages

  mesh.init( MESH_PREFIX, MESH_PASSWORD, MESH_PORT );
  mesh.setReceiveCallback( &receivedCallback );
  mesh.setNewConnectionCallback( &newConnectionCallback );

  randomSeed( analogRead( A0 ) );  
}

void loop() {
  mesh.update();

  // run the blinky
  bool  onFlag = false;
  uint32_t cycleTime = mesh.getNodeTime() % BLINK_PERIOD;
  for ( uint8_t i = 0; i < ( mesh.connectionCount() + 1); i++ ) {
    uint32_t onTime = BLINK_DURATION * i * 2;    

    if ( cycleTime > onTime && cycleTime < onTime + BLINK_DURATION )
      onFlag = true;
  }
  digitalWrite( LED, onFlag );

  // get next random time for send message
  if ( sendMessageTime == 0 ) {
    sendMessageTime = mesh.getNodeTime() + random( 1000000, 5000000 );
  }

  // if the time is ripe, send everyone a message!
  if ( sendMessageTime != 0 && sendMessageTime < mesh.getNodeTime() ){
    String msg = "Hello from node ";
    msg += mesh.getChipId();              // aca es donde identificas el ChipId
    mesh.sendBroadcast( msg );
    sendMessageTime = 0;
  }
}

void receivedCallback( uint32_t from, String &msg ) {
  Serial.printf("startHere: Received from %d msg=%s\n", from, msg.c_str());
}

void newConnectionCallback( bool adopt ) {
  Serial.printf("startHere: New Connection, adopt=%d\n", adopt);
}