ESP8266 - RS-485

En este tutorial, exploraremos la implementación de la comunicación RS485 con ESP8266. Específicamente, cubriremos los siguientes aspectos en detalle:

El tutorial también proporciona las instrucciones para tanto Hardware Serial como SoftwareSerial.

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Módulo TTL a RS485
1×Cables Puente
1×(Opcional) Convertidor USB a RS485
1×(Opcional) USB to RS485 Cable
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del módulo TTL a RS485

Al utilizar la comunicación serie en el ESP8266 a través de funciones como Serial.print(), Serial.read() y Serial.write(), el ESP8266 transmite datos a través del pin TX y recibe datos a través del pin RX. Estos pines funcionan a nivel TTL, lo que significa que las señales que manejan tienen alcance limitado. Por lo tanto, para la comunicación serial a distancias mayores, es necesario convertir la señal TTL a los estándares de señal RS232, RS485 o RS422.

En este tutorial, profundizaremos en la utilización de RS485 (también conocido como RS-485) con ESP8266 empleando un módulo TTL a RS485. Este módulo facilita la conversión de señales TTL a señales RS485 y viceversa.

Diagrama de pines

El módulo RS485 a TTL tiene dos interfaces:

  • La interfaz TTL (conectada al ESP8266) incluye 4 pines
    • Pin VCC: pin de alimentación, debe conectarse a VCC (5V o 3.3V)
    • Pin GND: pin de alimentación, debe conectarse a GND (0V)
    • Pin RXD: pin de datos, debe conectarse al pin TX del ESP8266
    • Pin TXD: pin de datos, debe conectarse al pin RX del ESP8266
  • La interfaz RS485 comprende los siguientes pines:
    • D+ (A o TR+) pin: Este pin facilita la comunicación de datos.
    • D- (B o TR-) pin: Este pin sirve para la transmisión de datos.
    • Pin GND: Aunque es opcional, se recomienda encarecidamente incluir este pin para mitigar interferencias de ruido, asegurando un rendimiento óptimo.
    Pinout del módulo RS-485
    image source: diyables.io

Diagrama de Cableado

  • Diagrama de cableado si se utiliza el puerto serie de hardware
Diagrama de cableado ESP8266 NodeMCU TTL a RS485

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

  • Diagrama de cableado si se usa software serial
Diagrama de cableado RS-485 a TTL para ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Cómo programar ESP8266 para usar el módulo RS-485

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

Serial.begin(9600);
  • Si usas SoftwareSerial, necesitas incluir la biblioteca y declarar un objeto SoftwareSerial:
#include <SoftwareSerial.h> #define RX_PIN D6 #define TX_PIN D7 // Define the SoftwareSerial objects and their pins SoftwareSerial rs485(RX_PIN, TX_PIN);

Código ESP8266 para Serial de Hardware

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-rs485 */ void setup() { // start communication with baud rate 9600 Serial.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on Serial if (Serial.available()) { char data = Serial.read(); // read the received character Serial.print(data); // echo back to data to the sender } }

Código ESP8266 para Serial por software

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-rs485 */ #include <SoftwareSerial.h> #define RX_PIN D6 #define TX_PIN D7 // define the SoftwareSerial object and their pins SoftwareSerial rs422(RX_PIN, TX_PIN); void setup() { // start communication with baud rate 9600 rs485.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on rs485 if (rs485.available()) { char data = rs485.read(); // read the received character rs485.print(data); // echo back to data to the sender } }

Pruebas

Puede realizar una prueba enviando datos desde su PC al ESP8266 a través de RS-485 y viceversa. Para hacerlo, siga los siguientes pasos:

  • Conecta el ESP8266 a tu PC mediante un cable RS-485 a USB como se muestra a continuación:
Comunicación RS-485 entre ESP8266 NodeMCU y PC
  • Instala un programa de terminal serie como Tera Term o PuTTY
  • Abre el programa de terminal serie y configura los parámetros de la comunicación serie (puerto COM, baudios...)
  • Escribe algunos datos desde el terminal serie para enviarlos al ESP8266.
  • Si tiene éxito, verás los datos de eco en el terminal serie.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!