stepansnigirev / ArduinoSerialToEthernet

Arduino Serial (RS232) to Ethernet gateway, dynamically configurable. Makes your RS232 devices network-compatible.
51 stars 19 forks source link

Arduino Serial to Ethernet gateway

Makes your RS232 devices network-compatible. A simple sketch with several additional features.

Checked to work with different scientific equipment like XGS600 gauges controller, Agilent turbo pump, Pfeifer vacuum gauge, Thermotek-ag chiller, TDK-Lambda power supply and many others.

Features

Quickstart

Buy parts

To make it work you will need:

Prepare sketch and Arduino IDE

Ethernet.h or Ethernet2.h?

Depending on the chip that is used in your board / Ethernet shield, you will need to use either Ethernet.h or Ethernet2.h library. If your ethernet board is based on W5500, you will need Ethernet2.h.

If you know what library to use to make network on your board working, just comment/uncomment corresponding lines in the beginning of the sketch.

//#include <Ethernet.h>
//#include <EthernetUdp.h>
#include <Ethernet2.h>
#include <EthernetUdp2.h>

To figure out which one works for you I would recommend first to upload to your board an example sketch (for example ChatServer) from both libraries and check which one will work.

Network configuration

Open the sketch a edit your network mac address (printed on the label at the bottom of the board):

// replace this with your mac address
byte mac[] = {
  0x90, 0xA2, 0xDA, 0x10, 0x5C, 0xEE
};

Depending on your network, you may need or not need to assign IP address, gateway and subnet. If you have a DHCP server, you probably need to write only your mac address.

/*
  For manual configuration of the network uncomment the following lines
  and change the Ethernet.begin arguments in the setup() function
*/
//IPAddress ip(192, 168, 1, 177);
//IPAddress gateway(192, 168, 1, 1);
//IPAddress subnet(255, 255, 0, 0);

...

void setup() {
  // For DHCP use only mac. For manual configuration use all parameters.
  Ethernet.begin(mac);
//  Ethernet.begin(mac, ip, gateway, subnet);
...
}

Serial Shield configuration

This sketch uses a hardware serial port (called Serial1), that uses TX and RX pins (D0, D1) for data transmission. So, you need to configure your serial shield to use the same pins. If you want to use a software serial - you will need to change the sketch and use one of software serial libraries.

Serial port configuration

You may need to use a null-modem adapter or a serial cross cable to plug Arduino to your serial device. Just keep it in mind - it may be a reason if it doesn't work.

Usage

After uploading the sketch to the board and plugging it to the serial device and. If you know the IP address of the board, you can telnet to it and start working.

If you don't know the IP address, run python udp_scan.py and it will print IP addresses of all devices like this one. It only works if you are in the same subnet. Another way is to plug your Arduino to the computer with USB cable and open a Serial port from Arduino IDE - it is used for debug information. Type ? there and you will get all the info on current status of the device, including ip address.

Remotely configuring the serial port

Telnet to the box on port 24:

telnet <ip-address> 24

Type help to get all available commands.

Configure the device if necessary: set label, baudrate and other stuff if it differs from defaults. Then don't forget to type save. You are done. Now the box is ready for work. Next time it will load the settings from the memory.

Available commands:

For example:

baudrate 9600
parity N
stopbits 1
wordlength 8
save
?

Plugging the box to the device

Once again, you will probably need a null-modem and gender-changer adapters. Then you can test if everything works by connecting to the device via telnet on port 23:

telnet <ip-address> 23

and start typing stuff that you want to send to your serial device. All the data that you send to port 23 will be sent to the serial port and vice versa.

Troubleshooting

I can't connect to the device via network

I don't get a responces from my serial device

Extra tools

In the tools folder there are python scripts.

udp_scan.py

Run this script to find ip addresses of your Serial2Ethernet gateways.

dummy_device.py

To test if arduino box is working correctly, you can plug it to the network and to your computer with Serial-USB adapter. Then run dummy_device.py script to start a test device. This device will answer with a phrase YEYYYYY!!!!\r\n as soon as it recieves ? character. Very simple but might be useful for testing/debugging.