Skip to main content

Comenzando con la Placa de Expansión Seeed Studio XIAO-RS485

Visión General del Hardware

Material preparado

Seeed Studio XIAO RS485-Expansion-BoardSeeed Studio XIAO ESP32-C3

Pinout Diagram

Diagrama de Indicación: XIAO RS485 Expansion
  • Interruptor 5V OUT/IN: Uno de los puertos 5V es de entrada y salida. Cuando el dispositivo esclavo configura el archivo IN, funciona como entrada; cuando el dispositivo principal configura el archivo OUT, este puerto descarga externamente, y se puede conectar al suministro de energía de un sensor.

  • Interruptor 120R: El interruptor de 120R se utiliza para determinar si la resistencia de 120 ohmios está conectada o no. En una instalación de cables largos, se debe agregar una resistencia de 120 ohmios al inicio y al final para hacer el emparejamiento y asegurar la comunicación.

  • INT: Puerto de interrupción reservado.

tip

Cuando se utiliza en modo de entrada, es necesario girar el interruptor a IN, y si se utiliza en modo de salida, se debe girar el interruptor a OUT para evitar daños.

Esquema de conexión

Conexión de dos placas de expansión RS485

Visión General del Software

Código del Emisor

#include <HardwareSerial.h>

HardwareSerial mySerial(1);


#define enable_pin D2 // Define el pin de habilitación como D2

void setup() {
Serial.begin(115200); // Inicializa el serial de hardware con una velocidad de 115200
mySerial.begin(115200, SERIAL_8N1, 7, 6); // RX=D4(GPIO4), TX=D5(GPIO5)


// Espera a que el serial de hardware esté listo
while(!mySerial);
// Espera a que el serial de hardware esté listo
while(!Serial);

pinMode(enable_pin, OUTPUT); // Establece el pin de habilitación como salida
digitalWrite(enable_pin, HIGH); // Establece el pin de habilitación en alto
}

void loop() {
if (Serial.available()) {
String receivedData = Serial.readStringUntil('\n'); // Lee los datos del serial de hardware hasta un carácter de salto de línea

// Si los datos recibidos no están vacíos
if (receivedData.length() > 0) {
Serial.println("Enviado con éxito"); // Imprime un mensaje de éxito
mySerial.print("La información enviada por el maestro es: "); // Envía un mensaje de aviso al serial de hardware
mySerial.println(receivedData); // Envía los datos recibidos al serial de hardware
}
}
}

  • HardwareSerial Library: Permite la creación de puertos seriales adicionales en el ESP32, típicamente usados para la comunicación con dispositivos (como sensores o módulos).

  • HardwareSerial mySerial(1);: Define un objeto HardwareSerial llamado mySerial, usando D5 y D4 como los pines de recepción y transmisión.

  • #define enable_pin D2: Define un pin de habilitación utilizado para controlar el estado de envío y recepción del módulo RS485.

  • setup():

    • Serial.begin(115200);: Inicializa el puerto serial con una velocidad de baudios de 115200.
    • mySerial.begin(115200, SERIAL_8N1, 7, 6);: RX=D4(GPIO4), TX=D5(GPIO5).
    • while(!mySerial);: Espera hasta que el puerto serial esté listo para la comunicación.
    • while(!Serial);: Espera hasta que el puerto serial esté listo para la comunicación.
    • pinMode(enable_pin, OUTPUT);: Configura el pin de habilitación como un pin de salida para controlar el módulo RS485.
    • digitalWrite(enable_pin, HIGH);: Establece el pin de habilitación en HIGH, configurando el módulo RS485 para el modo de envío.
  • loop():

    • if (receivedData.length() > 0): Verifica si hay datos disponibles para leer desde el puerto serial.
    • String receivedData = Serial.readStringUntil('\n');: Lee los datos desde el puerto serial hasta un carácter de salto de línea.
    • Serial.println("Envío exitoso");: Imprime un mensaje de éxito.
    • mySerial.print("La información enviada por el maestro es: ");: Envía un mensaje de solicitud al puerto serial.
    • mySerial.println(receivedData);: Envía los datos necesarios al módulo de expansión RS485.

Código del Receptor

#include <HardwareSerial.h>

HardwareSerial mySerial(1); // Usa UART2
#define enable_pin D2 // Define el pin de habilitación como D2

void setup() {
Serial.begin(115200); // Inicializa el serial de hardware con una velocidad de 115200
mySerial.begin(115200, SERIAL_8N1, 7, 6); // RX=D4(GPIO4), TX=D5(GPIO5)

// Espera a que el serial de hardware esté listo
while(!Serial);
// Espera a que el serial de hardware esté listo
while(!mySerial);

pinMode(enable_pin, OUTPUT); // Establece el pin de habilitación como salida
digitalWrite(enable_pin, LOW); // Establece el pin de habilitación en bajo
}

void loop() {
// Verifica si hay datos disponibles desde el serial de hardware
if (mySerial.available()) {
String receivedData = mySerial.readStringUntil('\n'); // Lee cadenas basadas en saltos de línea
Serial.print("Datos recibidos: ");
Serial.println(receivedData); // Imprime directamente los datos recibidos
}
}

  • HardwareSerial Library: Permite la creación de puertos seriales adicionales en el ESP32, utilizados típicamente para la comunicación con dispositivos (como sensores o módulos).

  • HardwareSerial mySerial(1);: Define un objeto HardwareSerial llamado mySerial, utilizando D5 como RX y D4 como TX.

  • #define enable_pin D2: Define un pin de habilitación utilizado para controlar el estado de envío y recepción del módulo RS485.

  • setup():

    • Serial.begin(115200);: Inicializa el puerto serial con una velocidad de baudios de 115200.
    • mySerial.begin(115200, SERIAL_8N1, 7, 6);: RX=D4(GPIO4), TX=D5(GPIO5).
    • while(!Serial);: Espera hasta que el puerto serial esté listo para la comunicación.
    • while(!mySerial);: Espera hasta que el puerto serial esté listo para la comunicación.
    • pinMode(enable_pin, OUTPUT);: Configura el pin de habilitación como un pin de salida para controlar el módulo RS485.
    • digitalWrite(enable_pin, LOW);: Establece el pin de habilitación en LOW, configurando el módulo RS485 para el modo de recepción.
  • loop():

    • if (mySerial.available()): Verifica si hay datos disponibles para leer desde el puerto serial.
    • String receivedData = mySerial.readStringUntil('\n');: Lee cadenas basadas en saltos de línea.
    • Serial.print("Datos recibidos: ");: Imprime un mensaje en el puerto serial indicando que los datos han sido recibidos.
    • Serial.println(receivedData);: Imprime los datos enviados al receptor RS485.

Resultado de la Transmisión RS485

Soporte técnico y discusión de productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte y asegurarnos de que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...