Está en la página 1de 15

Comunicacion Serial entre Proteus y C Sharp

Paola Padilla Hidalgo1

Universidad Técnica de Ambato, Ambato Av. Los Chásquis 180207, EC


https://www.uta.edu.ec/

Abstract. Cuando programamos el microcontrolador de Arduino, lo


hacemos a través del puerto serie. Este puerto nos permite cargar el
programa, pero también sirve para monitorear, de forma sencilla, los
datos de salida de los sensores conectados y poderlos visualizar en al-
guna aplicación. En esta investigación te voy a explicar cómo podemos
hacer la comunicación puerto serie entre Arduino y C Sharp para que
puedas crear tus propias aplicaciones en Visual Studio.

Keywords: Arduino · proteus · puertos · codigo · aplicacion.

1 Introducción

Los puertos de comunicación serial nos proporcionan la forma más efectiva de co-
municar nuestra placa de Arduino con Proteus, y como podrás notarlo a través de
esta comunicación podremos mandar diferentes órdenes a nuestro Arduino para
automatizar procesos o incluso recibir informaciones importantes para mostrar-
las en la pantalla de nuestro computador.

La comunicación serial entre dos dispositivos se realiza a través del intercambio


de una secuencia de bits, donde se transmite bit a bit, uno por vez, donde,
aunque es lenta la comunicación, tiene la ventaja de poder ser transmitida a
mayores distancias y utilizar menos lı́neas de comunicación.

Por último, también es conocida como comunicación serial RS232 el cual es


un protocolo muy común utilizado industrialmente por diversos dispositivos y
equipos. La comunicación serial de Arduino RS232 puede ser utilizada para
adquisición de datos, control, depuración de código, etc.

La transmisión del protocolo RS232 implica el envı́o de datos un bit a la vez,


a través de una sola lı́nea de comunicaciones. En contraste, las comunicaciones
paralelas requieren al menos tantas lı́neas como bits en una palabra que se está
transmitiendo (para una palabra de 8 bits, se necesita un mı́nimo de 8 lı́neas).
La transmisión serial RS232 es beneficiosa para las comunicaciones de larga
distancia, mientras que el paralelo está diseñado para distancias cortas o cuando
se requieren velocidades de transmisión muy altas.
2 P. Padilla

2 Origen

La historia de las comunicaciones se remonta a 1810 cuando un señor alemán


de apellido Von Soemmering, utilizó 26 cables (1 por cada letra del alfabeto)
pegados a la parte inferior de un acuario. Cuando se pasaba corriente por los
cables, se producı́an burbujas en el agua. De esta forma, se podı́an enviar men-
sajes codificados por medio de burbujas. Los militares vieron este ingenio y se
inició la carrera para desarrollar los sistemas de comunicaciones.

Luego, el señor Morse inventó su dispositivo que enviaba sonidos cortos y largos,
que representaban los caracteres. En el código Morse, los sonidos cortos se llaman
ESPACIOS y los sonidos largos se denominan MARCAS. Por lo tanto, esto es un
código binario, porque usa solo 2 valores posibles: Espacio y Marca. En términos
de computadoras se dirı́a que trabaja con los números 0 y 1, dependiendo de
cada bit.

Cuando se habla de código Morse, hablamos de comunicación SERIAL. Se llama


serial, porque los bits se reciben uno detrás de otro o “en serie”. La comunicación
RS-232 también es de tipo serial, ya que los bits vienen uno detrás de otro.

3 Principio de Funcionamiento

El puerto serial es un dispositivo muy extendido y ya sean uno o dos puertos,


con conector grande o pequeño, todos los equipos PC lo incorporan actualmente.
Debido a que el estándar del puerto serial se mantiene desde hace muchos años,
la institución de normalización americana (EIA) ha escrito la norma RS-232-
C que regula el protocolo de la transmisión de datos, el cableado, las señales
eléctricas y los conectores en los que debe basarse una conexión RS-232.

La comunicación realizada con el puerto serial es una comunicación ası́ncrona.


Para la sincronización de una comunicación se precisa siempre de un bit adicional
a través del cual el emisor y el receptor intercambian la señal del pulso. Pero en
la transmisión serial a través de un cable de dos lı́neas esto no es posible ya que
ambas están ocupadas por los datos y la tierra. Por este motivo se intercalan
antes y después de los datos de información de estado según el protocolo RS-
232. Esta información es determinada por el emisor y el receptor al estructurar
la conexión mediante la correspondiente programación de sus puertos seriales.
Esta información puede ser la siguiente:

I. Bit de Inicio. Cuando el receptor detecta el bit de inicio sabe que la trans-
misión ha comenzado y es a partir de entonces que debe leer la transmisión y
entonces debe leer las señales de la lı́nea a distancias concretas de tiempo, en
función de la velocidad determinada.
Comunicacion Serial entre Proteus y C Sharp 3

II. Bit de Parada. Indica la finalización de la transmisión de una palabra de


datos. El protocolo de transmisión de datos permite 1, 1.5 y 2 bits de parada.

III. Bit de Paridad. Con este bit se pueden descubrir errores en la transmisión.
Se puede dar paridad par o impar. En la paridad par, por ejemplo, la palabra de
datos a transmitir se completa con el bit de paridad de manera que el número
de bits 1 enviados es par.

4 Protocolo RS-232

Consiste en un conector tipo DB-25 de 25 pines, aunque es normal encontrar


la versión de 9 pines DB-9, más barato e incluso más extendido para cierto tipo
de periféricos (como el ratón serie del PC). En cualquier caso, los PCs no suelen
emplear más de 9 pines en el conector DB-25. Las señales con las que trabaja
este puerto serial son digitales, de +12V (0 lógico) y -12V (1 lógico), para la
entrada y salida de datos, y a la inversa en las señales de control. El estado de
reposo en la entrada y salida de datos es -12V. Dependiendo de la velocidad
de transmisión empleada, es posible tener cables de hasta 15 metros. Cada pin
puede ser de entrada o de salida, teniendo una función especı́fica cada uno de
ellos. Las más importantes se observan en la Fig. 1 y Fig. 2.

Las señales TXD, DTR y RTS son de salida, mientras que RXD, DSR, CTS
son de entrada. La tierra de referencia para todas las señales es SG (Tierra de
Señal). Finalmente, existen otras señales como RI (Timbre Telefónico).

Fig. 1. Pines más importantes del conector DB9.


4 P. Padilla

Fig. 2. Pines más importantes del conector DB25.

A continuación los pasos para crear una comunicacion serial entre proteus y
visual studio, con el diseño e implementacion de un semaforo con control remoto.

Paso 1

Instalacion de Proteus 8 Professional.(Fig. 3)

Fig. 3. Aplicacion Proteus 8 Professional.

Paso 2

Creamos un nuevo proyecto, donde crearemos la simulacion con un Arduino


(primero se instala las librerias para tener Arduino), leds, resistencias, compim
(modela un puerto serie fı́sico. Almacena la comunicación serie recibida y la
presenta como señales digitales al circuito) y de un ground (Tierra o masa).
(Fig. 4)
Comunicacion Serial entre Proteus y C Sharp 5

Fig. 4. Creacion del circuito o simulacion del semaforo.

Paso 3

Instalacion de Arduino IDE. (Fig. 5)

Fig. 5. Aplicacion Arduino IDE.

Paso 4
6 P. Padilla

Escribimos la logica que va producir el Arduino en tiempo de ejecucion. (Fig. 6)

Fig. 6. Codigo implementado en Arduino IDE.

void setup() {
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
}
void loop() {
while(Serial.available()){
delay(100);
byte dato=Serial.read();
switch(dato){
case ’1’:
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
break;
case ’2’:
digitalWrite(13,LOW);
break;
case ’3’:
Comunicacion Serial entre Proteus y C Sharp 7

digitalWrite(12,HIGH);
digitalWrite(11,LOW);
digitalWrite(13,LOW);
break;
case ’4’:
digitalWrite(12,LOW);
break;
case ’5’:
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
break;
case ’6’:
digitalWrite(11,LOW);
break;
case ’7’:
digitalWrite(13,HIGH);
digitalWrite(12,HIGH);
digitalWrite(11,HIGH);
break;
case ’8’:
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
break;
}
}
}

Paso 5

Hacer clic en ”Exportar a binarios compilados”, este proceso sera necesario para
la ejecucion del Arduino en la simulacion. A continuacion se creara 2 archivos.
(Fig. 7)

Fig. 7. ”Exportar a binarios compilados” y los archivos.


8 P. Padilla

Paso 6
Hacer clic en el Arduino, se va a desplegar una ventana donde vamos a seleccionar
uno de los archivos que se nos creo a partir de la exportacion, como se menciono
en el anterior paso. (Fig. 8)

Fig. 8. Seleccion del archivo exportado a binarios compilados.

Paso 7
Hacer clic en el Compim para seleccionar el puerto, en mi caso seleccione el
puerto: 2 y configurar segun el codigo escrito. (Fig. 9)

Fig. 9. Configuracion y seleccion del puerto.

Paso 8
Configurar cada resistencia pasar de 1k a 220, con el fin de que el led sea mas
intensa al encender. (Fig. 10)
Comunicacion Serial entre Proteus y C Sharp 9

Fig. 10. Configuracion de cada resistencia.

A continuación el diseño y codigo del control del semaforo en Visual Studio.

Paso 9

Crear un nuevo proyecto de tipo ”Aplicacion de Windows Forms (.Net Frame-


work)”. Hacemos clic en siguiente ponemos un nombre al proyecto y finalmente
en crear. En mi caso lo cree con el nombre de ”Control Botones C Sharp”.
(Fig. 11)

Fig. 11. Creacion del proyecto.

Paso 10

Contruimos el control del semaforo, para ello se uso buttons, labels, un picture-
Box y un serialPort, que es el mas importante para exista esa comunicacion entre
las aplicaciones. (Fig. 12)

Para comunicar Visual Studio con Arduino a través del puerto serie tienes
que hacer uso de una clase llamada SerialPort. Esta clase será la encargada de
comunicar a través del puerto serie con Arduino. La clase expone una serie de
propiedades y de métodos que nos ayudan a configurar el protocolo de comuni-
cación.
10 P. Padilla

Fig. 12. Creacion del control del Arduino.

Paso 11

A partir del anterior paso, hacemos clic en cada button y en cualquier lado de
la Aplicacion de Windows Forms para que se nos carge el Load de la misma.
Aqui vamos usar la misma logica que se uso en Arduino, solo que cada case del
switch que se escribio en Arduino IDE sera para cada evento clic de los buttons.
(Fig. 13)

Fig. 13. Implementacion del codigo para el control del semaforo.

using System;
using System.IO.Ports;
using System.Windows.Forms;

namespace ControlB otonesC S harp


{
publicpartialclassF orm1 : F orm
Comunicacion Serial entre Proteus y C Sharp 11

{
SerialP ortpuerto5;
publicF orm1()
{
InitializeComponent();
}

privatevoidF orm1L oad(objectsender, EventArgse)


{
try
{
puerto5 = newSerialP ort();
puerto5.Close();
puerto5.P ortN ame = ”COM 5”;
puerto5.BaudRate = 9600;
puerto5.DataBits = 8;
puerto5.P arity = P arity.N one;
puerto5.StopBits = StopBits.One;
puerto5.Handshake = Handshake.N one;
puerto5.Encoding = System.T ext.Encoding.Def ault;
}
catch(Exceptionex)
{

Console.W riteLine(ex.M essage);


}
}

privatevoidbutton1C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”1”);
puerto5.Close();
}

privatevoidbutton2C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”2”);
puerto5.Close();
}

privatevoidbutton3C lick(objectsender, EventArgse)


{
puerto5.Open();
12 P. Padilla

puerto5.W rite(”3”);
puerto5.Close();
}

privatevoidbutton4C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”4”);
puerto5.Close();
}

privatevoidbutton5C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”5”);
puerto5.Close();
}

privatevoidbutton6C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”6”);
puerto5.Close();
}

privatevoidbutton7C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”7”);
puerto5.Close();
}

privatevoidbutton8C lick(objectsender, EventArgse)


{
puerto5.Open();
puerto5.W rite(”8”);
puerto5.Close();
}

privatevoidbutton9C lick(objectsender, EventArgse)


{
this.Close();
}
}
Comunicacion Serial entre Proteus y C Sharp 13

A continuación crearemos puertos de serie virtuales para vincular el Proteus


con Visual Studio.

Paso 12

Instalamos la aplicacion ”Launch Virtual Serial Port Driver” (Fig. 14)

Virtual Serial Port Driver permite crear un número ilimitado de puertos serie
virtuales. Los puertos creados se encuentran en el grupo de ”puertos” en el
Administrador de Dispositivos, por lo que son visibles y fácilmente reconocibles
por todo el software y hardware que instale.

Fig. 14. Aplicaion instalda ”Launch Virtual Serial Port Driver”.

Paso 13

Creamos el puerto serial virtual que seria: COM2 - COM5; el COM2 se uso en
el compim del Proteus y el COM5 se usa en el Visual Studio. (Fig. 15)

A continuación tendremos la ejecucion de los programas.

Paso 14

Ejecutamos el Proteus, el ejecutable que se compilo del Visual Studio y el Launch


Virtual Serial Port Driver para ver la actividad de los puertos. (Fig. 16)
14 P. Padilla

Fig. 15. Creacion del puerto para la comuniacion de los programas.

Fig. 16. Resultado final: Ejecucion de todo el programa.

Como se puede ver se enciende todos los leds del Proteus a partir de hacer clic
en el button ”Encender todos” del ejecutable de Visual Studio y tambien se ve
la actividad del puerto serial creado en Launch Virtual Serial Port Driver.

Paso 15

Tambien se puede obtener el puerto de comunicaciones. Dependerá del puerto


COM asignado a cada placa de Arduino. Una manera de saber que número de
puerto tenemos asignado despues de la configuracion es a través del IDE de
desarrollo, en Herramientas/Puerto podemos verlo.(Fig. 17)
Comunicacion Serial entre Proteus y C Sharp 15

Fig. 17. Forma de ver los puertos de comuniacion: creados y configurados.

References
1. “Comunicación puerto serie entre Arduino y C,” Programar fácil con Arduino, Oct.
16, 2015. https://programarfacil.com/tutoriales/fragmentos/comunicacion-puerto-
serie-entre-arduino-y-c/ (accessed Nov. 26, 2022).

2. dotnet-bot, “SerialPort Clase (System.IO.Ports),” Mi-


crosoft.com, 2022. https://learn.microsoft.com/es-
es/dotnet/api/system.io.ports.serialport?view=dotnet-plat-ext-7.0 (accessed
Nov. 26, 2022).

3. Tecnologia Extraterrestre, “Encender Led con Arduino Y Visual Basic /


Video1/,” YouTube. Apr. 03, 2021. Accessed: Nov. 26, 2022. In: Youtube,
https://www.youtube.com/watch?v=4NKCX4qrYw4.

4. un, “Virtual Serial Port Driver,” Virtual Serial Port Driver, 2019.
https://www.virtual-serial-port.org/es/ (accessed Nov. 26, 2022).

5. INNOVA DOMOTICS, “Control del Puerto Serial con C en Visual Studio 2015
Community,” YouTube. Oct. 30, 2016. Accessed: Nov. 26, 2022. In: Youtube,
https://www.youtube.com/watch?v=wMgqSupTSfU.

6. Hubor, “¿Qué es proteus?,” Hubor-proteus.com, 2015. https://www.hubor-


proteus.com/proteus-pcb/proteus-pcb/2-proteus.html (accessed Nov. 26, 2022).

También podría gustarte