Arduino RS232 a WiFi

En este tutorial, vamos a aprender cómo usar el Arduino Uno R4 WiFi para crear un convertidor que conecte dispositivos RS-232 a WiFi. Con esta configuración, el Arduino leerá datos de una interfaz RS-232 y los enviará a un servidor TCP, ya sea en la misma red local o a través de Internet. También puede recibir datos del servidor TCP y enviarlos de vuelta a través de la interfaz RS-232.

Seguir estos pasos le ayudará a configurar puentes de comunicación flexibles entre dispositivos RS-232 y servidores TCP/IP utilizando Arduino.

Convertidor RS232 a WiFi para Arduino

Acerca de RS232 y TCP

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

Cómo funciona el convertidor RS232 a WiFi

  • Arduino se conecta a un dispositivo serie a través de la interfaz RS232.
  • Arduino actúa como un cliente TCP, conectándose a un servidor TCP. El servidor TCP podría ser un software que se ejecuta en tu computadora o otro Arduino programado para actuar como servidor TCP.
  • Arduino lee información de la interfaz serie RS232 y la envía al servidor TCP.
  • Arduino también lee datos de la conexión TCP y los devuelve a través de la interfaz serie RS232.

Diagrama de Cableado

  • Diagrama de cableado si se utiliza el puerto serie de hardware
Diagrama de cableado de Arduino TTL a RS232

This image is created using Fritzing. Click to enlarge image

  • Diagrama de cableado si se usa software serial
Diagrama de cableado de Arduino RS-232 a TTL

This image is created using Fritzing. Click to enlarge image

Código de Arduino para Hardware 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-rs232-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 RS232 interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from RS232 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-rs232-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> SoftwareSerial rs232(7, 6); // RX: 7, TX: 6 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); rs232.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 RS232 interface if (TCP_client.available()) { char c = TCP_client.read(); rs232.write(c); } // read data from RS232 interface and send them to TCP if (rs232.available()) { char c = rs232.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 puerto serie (en tu PC) → RS-232 → Arduino → Wi-Fi → Software del servidor TCP (en tu PC).
  • Software del servidor TCP (en tu PC) → Wi-Fi → Arduino → RS-232 → Software de puerto serie (en tu PC).
Comunicación RS232 entre Arduino y PC

Para hacerlo, siga los siguientes pasos:

  • 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 mediante un módulo TTL a RS232 y un cable RS232 a 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 software de servidor TCP como ezTerm
  • Abre el programa de terminal serie y configura los parámetros de serie (puerto COM, baudios...)
  • Abre el programa de servidor TCP y configúralo como servidor TCP; luego haz clic en el botón Escuchar.
ezTerm Servidor TCP
  • 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 ve 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 . . . . . . . . . :
  • Actualice la dirección IP del servidor TCP (tu PC) en el código de Arduino. En el ejemplo anterior: 192.168.0.26
  • Compilar y subir el código a la placa Arduino haciendo clic en el botón Subir en el IDE de Arduino
  • Escriba 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.
  • Escriba 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.
Arduino Serial a TCP

Si quieres usar un convertidor RS232 a Ethernet comercial, puedes comprar CSE-H53N 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!