Introduction: VBNET Control of ARDUINO Over TCP RS232

Picture of VBNET Control of ARDUINO Over TCP RS232

PROJET PUPITRE SERIAL OVER TCP
VB NET / XPORT (LAN) ou CSW M85 (WIFI LAN) ouCIE M10 (LAN) / ARDUINO

Introduction:

With this project you will be able to pilot outputs of an arduino with a virtual vb.net pusbutton or a switch for digital or analog (PWM filtered) control of whatever.

A more perfect HMI will be supplied later to pilot for example a 6 axes robot like the Esched VIII. With this instructable we will focus on the communication beetween the arduino and a PC or a tab via wifi or ethernet cable.

The arduino uno could send values or messages displayed on a VBNET HMI (using VB EXPRESS 2010). The communication is made with a simple special RS232 ASCII frame I created and wich is encapsulated in a TCP frame. The HMI is the client and the ethernet interface WLAN/LAN<->rs232 (link to arduino with RX TX) is the server.

For this application I used the following frame: o,o,003929

The first both characters are the state of the pushbutton of your HMI (f: pushed, o: no action) and the decimal value is send by a trimmer on the HMI.

-----------------------------------------------------------------------------------------------------------------------------------------------

Le but de ce projet est de piloter des sorties de l'arduino uno en tout ou rien par bouton poussoir ou en PWM par un bouton tournant.

L'interface sera améliorée pour piloter un robot Eshed 6 axes. Il s'agit pour l'instant d'un prototype visant à tester la communication.

L'arduino pourra envoyer des valeurs ou des messages affichés par le pupitre VB.net (Visual Basic Express 2010).

La communication se fera par envoi et réception de trame de caractères ASCII en RS232 over TCP IP.

Pour l'instant , la trame envoyée comme reçue a la structure suivante: o,o,003929

Les caractères o ou f reflètent l'état des boutons poussoirs de la HMI, la valeur décimal sur 6 digits est une valeur envoyée par le bouton tournant.

Step 1: Présentation De L'interface VB.NET/ the VB.NET HMI

Picture of Présentation De L'interface VB.NET/ the VB.NET HMI

The VBNET HMI:

You can download here the prototype with communicates with the IP adress: 1921.168.1.244

The catchy buttons are available on a project called AdvancedHMI (thanx to Archie, one of the developpers) and DotNet shareware.

I used 2 timers : one to send the frame and receive the frame from the arduino (via the interface), another to refresh a trend curve whatever you want.

-------------------------------------------------------------------------------------------------------------------------------------------------------

Interface VBNET:
Voici l'aspect de l'interface prototype d'essai qui communique avec l'adresse 192.168.1.244

Les boutons tournants et poussoirs proviennent du projet AdvancedHMI et du logiciel DotNet pour VB express.
J'ai utilisé 2 timers: un timer pour organiser l'émission et la réception , un timer pour réactualiser une courbe de tendance.

Ci-joint le projet VB net:

Step 2: Le Programme Arduino UNO/The Arduino Code

Picture of Le Programme Arduino UNO/The Arduino Code

It will communicate via the WLAN/LAN <-> rs232 linked to the arduino with RX (D0) and TX (D1).

-----------------------------------------------------------------------------------------------------------------------------------------------------

Il communiquera via un des modules au choix cités plus haut dans le titre qui seront reliés aux bornes de l'arduino RX (D0) et TX (D1).

Ci-joint le programme:

Step 3: Les Paramètre Du Xport De Lantronix: LAN/RS232

Picture of Les Paramètre Du Xport De Lantronix: LAN/RS232

You need to use DeviceInstaller to setup this module. I choose an IP adress like 192.168.1.244 in the Network Menu.

I used too the port 502 usually need for odbus TCP. But you can use other ports like: 10001, 1470...But be carefull, some TCP/RS232 converter can run with modbus tcp, so use another.

-------------------------------------------------------------------------------------------------------------------------------------------------------

C'est en utilisant le logiciel DeviceInstaller du même constructeur et en se connectant à l'adresse IP du module que j'ai arbitrairement fixé à 192.168.1.244 dans la rubrique Network (non fournie ici).

J'ai utilisé le port 502 qui est généralement réservé au modbus TCP.
Vous pourrez si vous le souhaiter en utiliser un autre (10001, 1470,....) mais soyez sûr qu'il n'est pas déjà utilisé. Certains modules ont le port 502 réservés au MODBUS TCP.

Step 4: Le Câblage Du Xport: LAN/RS232, 3.3V<->5V Adapter

Picture of Le Câblage Du Xport: LAN/RS232, 3.3V<->5V Adapter

This schematic is made under PROTEUS and comes from a magazine: Electronique Pratique.

The Xport 1001000-03R (now I think obsolete) is supplied under 3.3V so you need a 3.3V to 5V converter to link it to the arduino.

Pin map: RX1 on D0, TX1 on D1.

----------------------------------------------------------------------------------------------------------------------------------------------------

Ce schéma a été réalisé sous PROTEUS et est inspiré d'un montage d'Electronique Pratique en vente partout.

Le Xport 1001000-03r est alimenté en 3.3V et ses bornes sont donc par là même compatible uniquement 3.3V. Cette interface réalise la conversion 3.3V/5V.

Les bornes RX1 et TX1 seront reliées respectivement et directement à RX et TX de l'arduino.

Step 5: Les Paramètres Du CSW-M85: WLAN/RS232

Picture of  Les Paramètres Du CSW-M85: WLAN/RS232

You need EZmanager to communicate and setup this module in ISP mode. Look at the schematic on next pages.

----------------------------------------------------------------------------------------------------------------------------------------------------

En utilisant EZmanager avec une communication USB en mode ISP (cf montage ci-après).

Step 6: Le Câblage Du CSW-M85: WLAN/RS232

Picture of Le Câblage Du CSW-M85: WLAN/RS232

The schematic made with PROTEUS, a modified schematic of the famous EZ 80C (now obsolete).

In ISP mode (setup with Ezmanager) think to link CTS, RTS, ISP, SYTRST, RXD and TXD.
In communication mode RS232 (RX1 on RX (D0) arduino, TX1 on TX (D1) arduino) think to disconnect the pins RXD, TXD, ISP, CTS et RST.

---------------------------------------------------------------------------------------------------------------------------------------------------

Encore avec proteus et insipré de l'EZ 80 C (obsolète) et la revue Electronique Pratique.

En mode ISP (paramètrage par le logiciel Ezmanager) penser à câbler CTS, RTS, ISP, SYTRST, RXD et TXD.
En mode de communication RS232 (RX1 sur RX (D0) arduino, TX1 sur TX (D1) arduino) penser à débrancher les bornes RXD, TXD, ISP, CTS et RST.

Step 7: Les Paramètres Du CIEM10: LAN/RS232

Picture of Les Paramètres Du CIEM10: LAN/RS232

This converter is now obsolete but new version are available and the setup is nearly the same. You need ezTCP manager to setup the good IP adress.

I used the port 10001 because modbus TCP communication is running on this module, so the port 502 is not available for this application.

------------------------------------------------------------------------------------------------------------------------------------------------------

Ce composant est obsolète mais ses nouvelles versions sont voisines du point de vue fonctionnement.
Le paramétrage se fera grâce à ezTCP manager de eztcp.

J'ai utilisé cette fois-ci le port 10001 car le port 502 est réservé.

Step 8: Le Câblage Du CIE M10: LAN/RS232, 3.3V<->5V Converter

Picture of Le Câblage Du CIE M10: LAN/RS232, 3.3V<->5V Converter

You need this kind of converter because this module is supplied under 3.3V.

-----------------------------------------------------------------------------------------------------------------------------------------------------

Encore une fois ce module s'alimente en 3.3V et il faut réaliser la compatibilité entre les bornes 3.3V et 5V de l'arduino.

Step 9: L'interface Version 2: Saisie De L'adresse IP Et Du Port./VB.NET Source Code

Picture of L'interface Version 2: Saisie De L'adresse IP Et Du Port./VB.NET Source Code

The VB.NET source code with french comments (sorry!):

-----------------------------------------------------------------------------------------------------------------------------------------------------

Le code source VBNET:

Step 10: Remerciements

Many thanks for any running interresting shared tutorial on the net.

---------------------------------------------------------------------------------------------------------------------------------------------------

Un remerciement particulier à Andreas qui sans le savoir et dans l'indifférence générale à contribué à faire aboutir le projet avec son nouveau mode de communication TCP: http://www.zhinst.com

Un autre remerciement particulier pour David Shelato (thanx and best regards) et son interface tcp utilisant le socket TCP qui ne fonctionne plus sous windows 8 mais est très efficace sous XP. C'est son interface rudimentaire et désormais obsolète qui a tout initié: http://www.shelato.com

Les autres acteurs de l'ombre et des ténèbres:

http://www.lextronix.fr

http://www.eztcp.com

http://www.hellfest.fr

Revues à venir: arduino atmega644/1284 clone+ ethernet shield+modbus tcp+AdvancedHMI, carte d'axes du robot...

Comments

manu4371 (author)2015-08-06

Sorry for this very late answer.

First: i didn't studied the AT command for the Xport and i don't think it's possible to use it and reach settings with your microcontroller. Lantronix supplies a soft to do the settings without any code to write.

Second: The Xport i used is now obsolete and i think the newer versions are may be able to run with Https, telnet....Personnaly my favourite circuit is the CSW-M85, a more recent circuit. What do you want to do with your ethernet packet? Read it with a microcontroller? I tried the TCP/IP solution because it's more secured and controlled than an UDP communication.

As far as possible my communication beetween a vb interface or android interface are build to run with a modbus protocol (a reliable and efficient industrial data bus, see one of my old instructables) and type the less code lines i can because i'm not very keen on network settings and communication.

Hope it will help you. Best regards.

snoop911 (author)manu43712015-09-25

Thanks, I actually inherited the Lantronix Xport for free, so that's why I was curious if you had used the xport for tcp over rs232.. doesn't seem many people are using it these days.

My goal is for the vb.net app to request data (tcp/rs232 using firmata protocol) from the arduino and plot it real-time. The lantronix should be able to do this right?

manu4371 (author)snoop9112015-10-03

I think it's possible . The Xport of lantronix is a RS232 to TCP converter, so the RS232 frames are encapsulated in a TCP frame and a Vbnet HMI can extract and analyse them. So the solution is to send the firmata frame to RX TX pins of the arduino and then your ethernet HMI, you had coded for FIRMATA frame analyse, listen to the IP adress of the Xport and makes the job (you need to know each terms of the FIRMATA frame). It's the way i used in my RS232 over IP project.

I think that a better way to supervise your arduino is to use the famous fieldbus MODBUS tcp with an internet shield and AdvancedHMI, a free Vbnet project (see my prvious project) and not so much code to do.

I hope my explanation will be usefull.

Best regards. Manu4371

snoop911 (author)2015-06-04

Are the commands to the Lantronix similar to the 'AT' interface of the ESP8266?

Also, a TCP/IP stack can be rather complex depending on how many protocols/applications it supports. Can the Lantronix do https , FTP/Telnet, etc? It'd be nice if can pass the raw ethernet packets so that a user TCP/IP stack could be run!

manu4371 (author)2015-01-22

Almost granted. I hope it will be undestable!!

Happy instructable.

glennvontot (author)2015-01-22

Hi, can you make it in english?

About This Instructable

14,344views

35favorites

License:

More by manu4371:Arduino-tomation Part 2Arduino 1.8.x Clone With Atmega 8535/32/644p/1284p: the MightycoreArduino PLC 32 I/O+State Machine+SCADA or HMI
Add instructable to: