Arduino RS422 a WiFi

En esta guía, exploraremos el uso del Arduino Uno R4 WiFi para construir un convertidor de RS-422 serie a WiFi. Con esta configuración, el Arduino leerá datos de una interfaz RS-422 serie y los transmitirá a un servidor TCP, ya sea dentro de la misma red de área local (LAN) o de forma remota a través de Internet. También puede recibir datos desde el servidor TCP y enviarlos de vuelta a través de la interfaz RS-422 serie.

Estos pasos le permitirán establecer puentes de comunicación versátiles entre dispositivos RS-422 seriales y un servidor TCP/IP utilizando Arduino.

Convertidor RS-422 a WiFi para Arduino

Acerca de RS422 y TCP

Si no sabes cómo usar RS422 y la comunicación TCP con Arduino, aprende sobre estos temas en los siguientes tutoriales:

Cómo funciona el convertidor de RS422 a WiFi

  • Arduino se conecta a un dispositivo serial a través de una interfaz RS422
  • Arduino funciona como cliente TCP que se conecta a un servidor TCP (puede ser un software de servidor TCP en tu PC u otro Arduino programado como servidor TCP)
  • Arduino lee datos desde la interfaz RS422 y los envía al servidor TCP
  • Arduino lee datos desde la conexión TCP y los envía a la interfaz RS422

Diagrama de Cableado

  • Diagrama de cableado si se utiliza el puerto serie por hardware
Diagrama de cableado de Arduino TTL a RS-422

This image is created using Fritzing. Click to enlarge image

  • Diagrama de cableado si se utiliza software serial
Diagrama de cableado de Arduino RS-422 a TTL

This image is created using Fritzing. Click to enlarge image

Código de Arduino para Serial de hardware

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-rs422-to-wifi */ #include <WiFiS3.h> const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS422 interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from RS422 interface and send them to TCP if (Serial.available()) { char c = Serial.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

Código de Arduino para Software Serial

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-rs422-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> // define the SoftwareSerial object and their pins SoftwareSerial rs422(6, 7); // RX: 6, TX: 7 const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); rs422.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS422 interface if (TCP_client.available()) { char c = TCP_client.read(); rs422.write(c); } // read data from RS422 interface and send them to TCP if (rs422.available()) { char c = rs422.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

Pruebas

Puede hacer una prueba enviando datos en los siguientes flujos:

  • Software de comunicación serial (en tu PC) → RS-422 → Arduino → Wi-Fi → Software de servidor TCP (en tu PC).
  • Software de servidor TCP (en tu PC) → Wi-Fi → Arduino → RS-422 → Software de comunicación serial (en tu PC).
Comunicación entre Arduino y PC mediante RS-422

Para hacerlo, siga los pasos siguientes:

  • Si es la primera vez que usas Arduino Uno R4, consulta cómo configurar el entorno para Arduino Uno R4 en el IDE de Arduino.
  • Conecta Arduino Uno R4 WiFi a tu PC utilizando un módulo TTL a RS422 y un cable RS422-USB, como se muestra en el diagrama de cableado anterior.
  • Instala un programa de terminal serie como Tera Term o PuTTY
  • Instala un programa de servidor TCP como ezTerm
  • Abre el programa de terminal serie y configura los parámetros de la conexión serial (puerto COM, tasa de baudios...)
  • Abre el programa del servidor TCP y configúralo como servidor TCP, luego haz clic en el botón Escuchar
Servidor TCP de ezTerm
  • Abre el símbolo del sistema en tu PC.
  • Encuentra la dirección IP de tu PC ejecutando el siguiente comando:
ipconfig
  • La salida se muestra a continuación:
Command Prompt
C:\WINDOWS\system32>ipconfig Windows IP Configuration Ethernet adapter: Subnet Mask . . . . . . . . . . . : 255.0.0.0 IPv4 Address. . . . . . . . . . . : 192.168.0.26 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . :
  • Actualiza la dirección IP del servidor TCP (tu PC) en el código de Arduino. En el ejemplo anterior: 192.168.0.26
  • Compila y sube el código a la placa Arduino haciendo clic en el botón Subir en el IDE de Arduino.
  • Escribe algunos datos desde el programa Serial para enviarlos a Arduino a través de Serial.
  • Si tiene éxito, verá los datos de eco en el software del servidor TCP.
  • Escribe algunos datos desde el programa del servidor TCP para enviarlos a Arduino a través de TCP.
  • Si tiene éxito, verá los datos de eco en el programa Serial.
Serial de Arduino a TCP

Si quieres usar un convertidor RS422 a Ethernet comercial, puedes comprar CSE-H55N2 Serial To Ethernet Converter

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.

※ 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!