Tutorial - Comunicación serial (Primera parte)

PRIMERA PARTE: COMUNICACIÓN SERIAL CON ARDUINO
Para esta parte leeremos el valor del voltaje de un potenciómetro que está conectado al pin A0 de nuestro Arduino. Los datos se mostrarán por el puerto serial. La conexión es la siguiente:

# PIN A0 : Arduino UNO => PIN CENTRAL : Potenciómetro
# GND : Arduino UNO => EXTREMO : Potenciómetro 
# 5V : Arduino UNO => EXTREMO : Potenciómetro


El programa es el siguiente:
/*
   PROGRAMA DE PRUEBA DE COMUNICACION SERIAL
   CONEXION:
             Arduino (A0) : Pin central potenciometro
             Arduino (GND): Pin extremo potenciometro
             Arduino (5V) : Pin extremo potenciometro
   
   El siguiente programa nos ayuda a realizar la lectura del votlaje del potenciometro y mostrarlo por
   puerto serial.
   
   Autor: Renato H.
   http://beetlecraft.blogspot.pe/
  
   El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera 
   ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor
*/

int POT = 0; // Variable de almacenamiento del valor del potenciometro

void setup(){
  Serial.begin(9600);                    // Inicio de comunicacion a 9600 bps
  Serial.print("Valor potenciometro: "); // Mensaje inicial
}

void loop(){
  POT = analogRead(A0);            // Lectura del pin A0 correspondiente al voltaje
  POT = map(POT, 0, 1023, 0, 100); // Conversion de datos a formato de 0 a 100%
  Serial.println(POT);             // Escritura por puerto serial del valor del potenciometro
  delay(500);                      // Espera de 500 ms
}
Para poder ver los valores del potenciómetro en el Arduino IDE tenemos la opción "Herramientas" en el Arduino IDE y escogemos "Monitor Serie".


De la misma manera, podemos hacer click en la opción de la lupa como se muestra en la figura


El resultado obtenido es el siguiente:


SEGUNDA PARTE: COMUNICACIÓN SERIAL CON ARDUINO (VISUALIZACIÓN DE DATOS)
Usando el programa anterior, lo único que debemos hacer es entrar a "Herramientas" en el Arduino IDE y escogemos "Serial Plotter".


El resultado es el siguiente:


TERCERA PARTE: COMUNICACIÓN SERIAL CON ARDUINO Y PROCESSING
Para esta parte realizaremos el mismo procedimiento anterior, pero mostraremos el dato de dos maneras:
# Mostrando el dato por la pantalla serial del mismo Processing.
# Mostrar el cambio del valor del voltaje del potenciómetro modificando el tamaño de un rectángulo.

En el programa usado para Arduino usaremos la construcción de una palabra enviando un dato tipo Integer de 16 bits, el cual enviaremos primeramente el primer byte y luego el segundo byte. Para poder iniciar y diferenciar el dato será por medio de una cabecera representada por la letra "P". Por lo tanto, el dato será algo como "P10001....".
/*
   PROGRAMA DE PRUEBA DE COMUNICACION SERIAL
   CONEXION:
             Arduino (A0) : Pin central potenciometro
             Arduino (GND): Pin extremo potenciometro
             Arduino (5V) : Pin extremo potenciometro
   
   El siguiente programa nos ayuda a realizar la lectura del votlaje del potenciometro y mostrarlo por
   puerto serial y luego por Processing.
   
   Autor: Renato H.
   http://beetlecraft.blogspot.pe/
  
   El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera 
   ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor
*/

int POT = 0; // Variable de almacenamiento del valor del potenciometro

void setup(){
  Serial.begin(9600);                    // Inicio de comunicacion a 9600 bps
}

void loop(){
  Serial.print('P');               // Cabecera de inicio de comunciacion
  POT = analogRead(A0);            // Lectura del pin A0 correspondiente al voltaje
  POT = map(POT, 0, 1023, 0, 100); // Conversion de datos a formato de 0 a 100%
  Serial.write(lowByte(POT));      // Envia el byte bajo
  Serial.write(highByte(POT));     // Envia el byte alto
  delay(100);                      // Espera de 100 ms
}
El programa usado para Processing recoge por puerto serial los 16 bits enviados por el Arduino, diferenciando el dato por medio de la cabecera P; para luego reconstruir el dato multiplicando por 256 y como se tiene un dato de 16 bits, se sumara el dato convertido con el dato anterior leído.
/*
  PROGRAMA DE PRUEBA DE COMUNICACION SERIAL
  
  CONEXION:
            Arduino (A0) : Pin central potenciometro
            Arduino (GND): Pin extremo potenciometro
            Arduino (5V) : Pin extremo potenciometro
 
 El siguiente programa nos ayuda a realizar la lectura del votlaje del potenciometro y mostrarlo por
 puerto serial y luego por Processing cambiando el ancho del rectangulo mostrado en pantalla..
 
 Autor: Renato H.
 http://beetlecraft.blogspot.pe/
 
 El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera 
 ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor
 */

import processing.serial.*; // Declaracion inicial para comunicacion serial

Serial Puerto;       // Crear el puerto serial
char cabecera = 'P'; // Letra asignada como cabecera del mensaje
int POT;             // Variable de lectura del puerto serial

void setup() {
  size(100, 100);                          // Porte de la pantalla
  Puerto = new Serial(this, "COM4", 9600); // Inicio de la comunicacion a 9600 bps del puerto COM4
}

void draw() {
  if ( Puerto.available() >= 3) {                 // Verifica que exista 3 bytes en el puerto serial
    if (Puerto.read() == cabecera) {              // Verifica que "P" sea la cabecera del mensaje
      POT = Puerto.read();                        // Lectura del puerto
      POT = Puerto.read() * 256 + POT;            // Conversion del mensaje de 16 bits a integer 
      println("Valor del potenciometro: " + POT); // Muestra el dato en el puerto serial
    }
  }

  // Dibujo del rectangulo
  background(167);      // Rellena el espacio de trabajo de color plomo
  fill(0);              // Llena el espacio en negro
  rect(0, 0, 100, POT); // Dibuja el rectangulo con los valores obtenidos de la lectura del puerto
}
El resultado que podemos obtener al abrir el "Monitor Serial" del Arduino es el siguiente:


El resultado del Processing es el siguiente:



NOTAS:
Algunas cosas debemos tener en cuenta al momento de realizar una comunicación serial:
# Al momento de realizar la comunicación nos debemos fijar que la plataforma (Placa "Arduino/Genuino Uno") usada sea la misma a la mencionada en el puerto ("COM4 (Arduino/Genuino Uno)").

#  Observar que el puerto está habilitado, esto se puede verificar entrando a "Herramientas" luego se escoge "Puerto" y se ve que tenga un check el puerto "COM4".


# Al momento de generar el objeto puerto en el Processing, fijarse en el puerto usado en ese momento por el Arduino ("COM4")

Autor: 

No hay comentarios:

Publicar un comentario