¿Puedo usar el puerto serie con los pines RX y TX para ESP8266?

Hola, quería saber si es posible cambiar los pines del puerto serie ya que estoy haciendo un proyecto con la placa Arduino UNO, el modulo ESP8266 y la plataforma de blynk. En el sketch que esta me da para el ESP8266, me dice que debo usar solo los pines 2 y ~3 para usar el puerto serie de la placa Arduino UNO. entonces lo que yo quiero y si es posible cambiar estos pines al RX y TX de la placa sin ningún problema, no se si la plataforma de blynk solo asigna esos pines para el puerto serie de la placa.
tengo el proyecto funcionando y todo pero necesito cambiarlos al RX y TX para tener mas pines digitales libres y así poder usarlos con mas sensores.

Hola @jdlasprilla por lo visto estas algo perdido.

Ese ejemplo usa SoftwareSerial porque el UNO solo tiene un puerto serie fisicio en 0,1 y entonces con la librería SoftwareSerial y asignando un par de pines que puedes cambiar a gusto, lo usas donde quieres para comunicarte con el ESP.

Si, estoy un poco perdido, es que como nunca he usado el puerto serie entonces esa era mi duda, pero voy a cambiar los pines ya que tu me dices que si se puede por usar la librería SoftwareSerial.

Gracias :slight_smile:

Recuerda que tienes que tener pines cruzados, RX de un dispositivo al TX del otro y viceversa y nunca olvidar que los GND deben compartirse.

Para terminar la linea TX del arduino que llega al RX del ESp debe adecuarse en nivel, esto es porque el nivel del arduino UNO/NANO/MEGA tiene 5V y lo que acepta el ESP son 3.3V.
Entonces usas un divisor resistivo formado por dos R, una de 2k que conectas a masa y al punto donde unes el otro resistor de 1k . En el punto donde ambos resistores estan unidos conectas el RX del ESP.
Y en el extremo restante del resistor de 1k conectas el TX del Arduino.

Luego de tanta explicación un esquema.

Ahi se ve como la salida TX del ESP va directo al RX del Arduino. Esto es porque los 3.3V del ESP son bien leídos por el Arduino como nivel HIGH/LOW.

Pero en el sentido inverso, la tensión de 5V puede dañar al ESP de modo que usas los Resistores como divisor de tensión.

He hecho todo lo que me has dicho, teniendo mucho cuidado con las conexiones ya que me da cosa quemar el modulo ESP, he cambiado los pines desde el sketch lo he cargado a la placa pero aun así no funciona con los pines RX y TX, lo he puesto tal cual como en la imagen pero no anda. He vuelto a cambiar los pines al 2 y ~3 y va todo perfecto.

A ver.. postea el codigo con 2,3 y postea el código que no te funciona con otros pines.

Si cambias los pines supongo que cambias los pines fisicamente hablando no?

Este seria el código como viene.

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Your Auth Token";

// or Software Serial on Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

void setup()
{
  // Debug console
  Serial.begin(9600);

  delay(10);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, "SSID", "PASSWORD");
}

void loop()
{
  Blynk.run();
}

Este seria como yo pienso que debería usar los pines RX y TX del arduino, o sea solo cambiando el 2 y ~3 por el 0 y 1.

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Your Auth Token";

// or Software Serial on Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(0, 1); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

void setup()
{
  // Debug console
  Serial.begin(9600);

  delay(10);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, "SSID", "PASSWORD");
}

void loop()
{
  Blynk.run();
}

Te dejo también el esquema de conexión, aunque solo lo he hecho con un LED para probar la conexión con blynk para después hacer un proyecto con sensores.

Pero si cambias 2,3 por 0,1 no necesitas SoftwareSerial

#include <SoftwareSerial.h>
SoftwareSerial EspSerial(0, 1); // RX, TX

Esto se usa para todos los pines excepto 0,1

Estas muy perdido!!

Digo yo porque no lo conectas a 2,3?

Si no vas a usar PARA NADA el monitor serie, entonces usa 0,1, pero quita SoftwareSerial y en lugar de ESPSerial, usa de nombre Serial.

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Your Auth Token";

ESP8266 wifi(&EspSerial);

void setup()
{
  // Debug console
  Serial.begin(9600);            // ya esta eso configura el puerto serie

  delay(10);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, "SSID", "PASSWORD");
}

void loop()
{
  Blynk.run();
}

@surbyte no lo sabia, creía que con eso yo podía asignar cualquier pin al puerto serie, lo probare igualmente.

@ArduMyth tengo una placa nodeMCU por ahí, la probare como tu me dices a ver que tal.

Gracias!