ENVÍO A ARDUINO DE CADENAS DE CARACTERES POR EL PUERTO SERIE


ENVIO A ARDUINO DE CADENAS DE CARACTERES POR EL PUERTO SERIE




A través del monitor serie del IDE podemos controlar mediante el envío de mensajes de texto cualquier sensor o actuador que tengamos conectado a una tarjeta Arduino.

Supongamos un actuador como es un LED y como ejemplo podemos hacer que si desde el monitor serie le enviamos un 1 se encienda el LED y si le enviamos un 0, se apague. Con este programa lo hacemos:

//Variables
const int LED = 7;
char mensaje; //Variable mensaje que almacena el carácter entrante

void setup()
{
         Serial.begin (9600);
         pinMode(LED, OUTPUT);
}
void loop()
{
//Solo actúa cuando hay datos disponibles en el buffer
    if (Serial.available() > 0) //Lee cualquier byte de datos > 0
    {
        mensaje = Serial.read(); //Lee el byte de datos
         //Enciende el LED

        if (mensaje == '1')
         {
          digitalWrite(LED, HIGH);
          Serial.println("LED ON");
        }
      //Apaga el LED
        else if (mensaje == '0')
        {
          digitalWrite(LED, LOW);
          Serial.println("LED OFF");
        }
   }
}

Viendo el monitor serie comprobamos que se imprime correctamente el mensaje en el monitor serie:


El problema surge cuando el mensaje que le queremos enviar a la placa Arduino para que encienda o apague el LED no es un 1 o un 0 como en el ejemplo, sino por ejemplo una frase como Enciende el LED y Apaga el LED.
La librería SoftwareSerial de Arduino que es con la que trabaja por defecto, no permite mensajes de más de un carácter.
He visto que hay alguna solución publicada para este problema pero son complejas, sin embargo la que propongo en este artículo es muy sencilla y está al alcance de todos: Trabajar con la librería SoftwareSerial de BQ, la BitbloqSoftwareSerial.
Esta librería la utiliza BQ para programar con Bitbloq y permite enviar mensajes de texto. Le podemos decir que encienda el LED cuando reciba el mensaje Buenos días ya he llegado.


DESCARGAR E INSTALAR LA LIBRERÍA BitbloqSoftwareSerial
Para descargar esta librería tienes que acceder a esta URL que es donde se encuentran las librerías de BQ


Para instalar cualquiera de ellas, pulsar la tecla CLONE or DOWNLOAD de la página y posteriormente te permite abrirlas en el escritorio o descargar el ZIP con todas las librerías.


Una vez descargadas cada librería está contenida en un directorio y a su vez cada uno de ellos contiene los ejemplos de la librería y los ficheros .cpp y .h.
Por ejemplo, en el caso de la BitbloqSoftwareSerial :


Una vez que ya tenemos los ficheros de la librería, la instalamos en el IDE de Arduino. Para ello tenemos 2 opciones:
·        Cargar la librería (Ejemplos y ficheros .cpp y .h) en el directorio en el que Arduino tiene sus librerías:
Documentos/Arduino/Librerias
·        Cargarla desde el IDE de Arduino:
                  Programa/Incluir Libreria/Añadir librería ZIP


Una vez que ya tenemos instalada la librería BitbloqSoftwareSerial vamos a decirle a la placa Arduino UNO mediante el monitor serie que cuando reciba el mensaje Encender el LED, lo encienda y además imprima en la pantalla del monitor serie El LED esta encendido y que cuando reciba el mensaje Apagar el LED, lo apague y además imprima el mensaje El LED esta apagado.
Lo vamos a hacer con el siguiente código:
/***   Included libraries  ***/
#include <SoftwareSerial.h>
#include <BitbloqSoftwareSerial.h>

/***   Global variables and function definition  ***/
const int led_0 = 7;
bqSoftwareSerial puerto_serie_0(0, 1, 19200);
String mensaje = puerto_serie_0.readString();

/***   Setup  ***/
void setup() {
    pinMode(led_0, OUTPUT);
    Serial.begin(19200);

}

/***   Loop  ***/
void loop() {
    mensaje = puerto_serie_0.readString();
    if (mensaje == "Encender el LED") {
        digitalWrite(led_0, HIGH);
        Serial.println("El LED esta encendido");
    } else if (mensaje == "Apagar el LED") {
        digitalWrite(led_0, LOW);
        Serial.println("El LED esta apagado");
    }
}
Como se ve en el monitor serie imprime correctamente los mensajes:


Comentarios