Arduino RS232 para WiFi

Neste tutorial, vamos aprender como usar o Arduino Uno R4 WiFi para criar um conversor que conecta dispositivos Serial RS232 ao WiFi. Com essa configuração, o Arduino vai ler dados de uma interface serial RS232 e enviá-los a um servidor TCP, seja na mesma rede local ou pela internet. Ele também pode receber dados do servidor TCP e enviá-los de volta pela interface serial RS232.

Seguir estes passos vai ajudar você a montar pontes de comunicação flexíveis entre dispositivos seriais RS-232 e servidores TCP/IP usando o Arduino.

Conversor RS232 para WiFi com Arduino

Sobre RS232 e TCP

Se você não sabe como usar a comunicação RS232 e TCP com o Arduino, aprenda sobre elas nos seguintes tutoriais:

Como Funciona o Conversor RS232 para WiFi

  • O Arduino se conecta a um dispositivo serial por meio da interface RS232.
  • O Arduino age como um cliente TCP, conectando-se a um servidor TCP. O servidor TCP pode ser um software rodando no seu computador ou outro Arduino programado para agir como servidor TCP.
  • O Arduino lê informações da interface serial RS232 e as envia ao servidor TCP.
  • O Arduino também lê dados da conexão TCP e os envia de volta pela interface serial RS232.

Diagrama de Ligação

  • Diagrama de ligação usando a serial de hardware
Diagrama de ligação do Arduino com TTL para RS232

This image is created using Fritzing. Click to enlarge image

  • Diagrama de ligação usando a serial por software
Diagrama de ligação do Arduino com RS-232 para TTL

This image is created using Fritzing. Click to enlarge image

Código Arduino para Serial de Hardware

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 Arduino para Serial por Software

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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); } } }

Teste

Você pode fazer um teste enviando dados nos seguintes fluxos:

  • Software Serial (no seu PC) → RS-232 → Arduino → WiFi → Software de Servidor TCP (no seu PC).
  • Software de Servidor TCP (no seu PC) → WiFi → Arduino → RS-232 → Software Serial (no seu PC).
Comunicação do Arduino com o PC via RS232

Para isso, siga os passos abaixo:

  • Se esta é a primeira vez que você usa o Arduino Uno R4, veja como configurar o ambiente para o Arduino Uno R4 na Arduino IDE.
  • Conecte o Arduino Uno R4 WiFi ao seu PC usando o módulo TTL para RS232 e o cabo RS232 para USB, conforme o diagrama de ligação acima
  • Instale um programa de terminal serial como o Tera Term ou o PuTTY
  • Instale um programa de servidor TCP como o ezTerm
  • Abra o programa serial e configure os parâmetros seriais (porta COM, baud rate...)
  • Abra o programa de servidor TCP, configure-o como TCP Server e então clique no botão Listen
Servidor TCP no ezTerm
  • Abra o Prompt de Comando no seu PC.
  • Descubra o endereço IP do seu PC executando o comando abaixo:
ipconfig
  • A saída será parecida com esta:
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 . . . . . . . . . :
  • Atualize o endereço IP do servidor TCP (o seu PC) no código Arduino. No exemplo acima: 192.168.0.26
  • Compile e faça upload do código para a placa Arduino clicando no botão Upload na Arduino IDE
  • Digite alguns dados no programa serial para enviá-los ao Arduino pela Serial.
  • Se der certo, você verá os dados de eco no software de servidor TCP.
  • Digite alguns dados no programa de servidor TCP para enviá-los ao Arduino por TCP.
  • Se der certo, você verá os dados de eco no programa serial.
Arduino Serial para TCP

Se você quiser usar um conversor RS232 para Ethernet comercial, pode comprar o Conversor Serial para Ethernet CSE-H53N

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!