Arduino Serial (RS232) to Ethernet gateway, dynamically configurable. Makes your RS232 devices network-compatible.
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.
To make it work you will need:
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.
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);
...
}
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.
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.
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.
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:
?
- get <label>,<baudrate>,<parity>,<wordlength>,<stopbits>
label [string]
- get or set custom label for this box (up to 32 characters)baudrate [value]
- get or set baudrate (300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200)parity [value]
- get or set parity (N, E, O)wordlength [value]
- get or set wordlength (5, 6, 7, 8)stopbits [value]
- get or set stopbits (1, 2)save
- saves current settings to EEPROM memoryload
- loads settings from EEPROM memoryFor example:
baudrate 9600
parity N
stopbits 1
wordlength 8
save
?
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.
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.