sábado, 20 de diciembre de 2014

¿Cómo añadir una librería en Arduino?

Una librería es un código que nos aporta funcionalidades o nos simplifica la programación. Este código se puede llamar desde un programa en Arduino para que realice una tarea determinada sin tener que escribir el código nuevamente.

Existen muchas librerías disponibles en Internet de libre descarga. Para poder usar esas librerías, es necesario instalarlas.

Generalmente, las librerías que existen en Internet las encontramos como archivos .zip o en una carpeta con el nombre de la librería. En estas carpetas siempre se encuentran los archivos .cpp y .h y muchas veces también encontramos archivos de texto y una carpeta con ejemplos de uso de la librería.

Existen dos maneras de instalar librerías:

Instalación Automática

Es necesario tener la versión 1.0.5 del IDE o superiores para poder instalar una librería de manera automática. En este caso no es necesario descomprimir el archivo .zip que contiene la librería. Para instalarla, debes ir a la barra de menú del IDE, debes seleccionar Sketch (Programa), luego Import Library (Importar Librería) y seleccionar la opción Add Library (Añadir librería). Seguidamente, busca el archivo .zip que contiene la librería y ábrelo. El archivo se descomprimirá en la carpeta de librerías del directorio de Arduino.




Una vez agregada la librería, si la queremos usar, la podemos encontrar en la lista de librerías que se pueden ver en el menú Sketch (Programa) > Import Library (Importar Librería).




Instalación Manual

Para instalar la librería es necesario descomprimir el archivo zip que contiene la librería. Debes asegurarte que la carpeta descomprimida contenga los archivos .cpp y .h, puedes encontrar otros archivos pero estos dos son los más importantes.
Una vez realizado esto, debes copiar la carpeta descomprimida en la carpeta donde se encuentran tus librerías, en Windows la encontrarás en My Documents\Arduino\libraries y en Linux, en la carpeta libraries dentro del sketchbook.

De la misma manera, si queremos usar la librería que acabamos de agregar, la podemos encontrar en el menú Sketch (Programa) > Import Library (Importar Librería).

Configuración de un módulo bluetooth esclavo

La configuración de un módulo bluetooth esclavo se realiza casi de la misma manera que la de un módulo maestro/esclavo, con pequeñas diferencias. Esta vez se utiliza un módulo HC-06, el cual se puede encontrar en cualquier tienda de electrónica en la web
Así mismo, para poder configurar este módulo bluetooth, se usarán los comandos AT.

En este caso usaremos los siguientes comandos AT:

AT: Prueba de comunicación.
AT+NAME: Cambia el nombre del dispositivo bluetooth.
AT+BAUD: Cambia la comunicación serial del módulo bluetooth.
AT+PIN: Cambia la contraseña asociada al módulo bluetooth.

El hardware que se necesita para implementar el circuito con el que vamos a configurar el módulo esclavo es el siguiente:

Componentes a utilizar
  •  Arduino Uno
  •  Resistencia de 220 Ω
  •  Led
  •  Módulo Serial Bluetooth esclavo
  •  Protoboard

Circuito


Luego de implementar el circuito, se debe copiar el código que se encuentra más abajo en el IDE de Arduino. Se darán cuenta que se ha incluido la librería SoftwareSerial, la cual servirá para la comunicación por bluetooth, para ello se usarán los pines digitales 2 y 3. El pin 2 para la recepción de datos y 3 para el envío.
Lo que se hace es enviar los códigos AT al módulo bluetooth para configurarlo. Así mismo, se van mostrando en el monitor serial los comandos enviados y la respuesta que recibimos del bluetooth.


Código


//Se declara esta libreria especialmente para la comunicacion por bluetooth
#include<SoftwareSerial.h>

//Se definen los pines TX y RX, en este caso pin 2 = Rx, pin 3 = Tx
SoftwareSerial mySerial(2,3);

//Variable para control de configuracion
boolean configurado = false;

void setup(){
 
pinMode(13,OUTPUT);    //Pin 13 para control del proceso
 
Serial.begin(9600);    //se inicia comunicacion serial
  mySerial.
begin(9600);  //se inicia comunicacion bluetooth
 
digitalWrite(13, LOW); //se apaga el led del pin 13
}


void loop(){
  if (configurado){
    
/* Parpadeo para verificar su funcionamiento */
    
digitalWrite(13, HIGH); //Enciende el LED
    
delay(1000);            //Espera 1 segundo
    
digitalWrite(13, LOW);  //Apaga el LED
    
delay(1000);            //Espera 1 segundo
  
}
  
else{
    
digitalWrite(13, HIGH); //Empezamos el tiempo de espera para reconectar
    
delay(1000);            //Espera de 1 segundo (se puede variar)
    
digitalWrite(13, LOW);  //Tiempo de espera agotado para reconectar

    
    
Serial.println("AT");  
       
mySerial.write("AT");     //comenzamos la comunicacion con el modulo BT
    delay(1000);             //Espera de 1 segundo
    
while(mySerial.available()>0)     Serial.write(mySerial.read());      
       
Serial.println();

    
Serial.println("AT+NAMEHC-06");  
       
mySerial.write("AT+NAMEHC-06");  //se coloca un nombre al dispositivo
    delay(1000);                    //Espera de 1 segundo    
    
while(mySerial.available()>0)     Serial.write(mySerial.read());    
       
Serial.println();        

       
Serial.println("AT+BAUD4"); 
    mySerial.
write("AT+BAUD4");   //se establece la velocidad en 9600
   
delay(1000);                  //Espera de 1 segundo    
    
while(mySerial.available()>0)     Serial.write(mySerial.read());    
       
Serial.println();        

       
Serial.println("AT+PIN4321"); 
    mySerial.
write("AT+PIN4321"); //se establece el PIN de 
    
delay(1000);                  //asociacion(contraseña)   
    while(mySerial.available()>0)     Serial.write(mySerial.read());    

    
/* En este punto debe estar configurado */
    
digitalWrite(13, HIGH); // se muestra que todo ha funcionado 
    configurado 
= true;     // segun lo esperado
  
}
}


Pasos a seguir:

    1. El módulo no debe estar vinculado a ningún dispositivo.
    
    2. La forma visual de saber si el módulo está vinculado:
        Led fijo --> Emparejado
        Led intermitente --> sin emparejar
    
    3. Definir mediante la librería SoftwareSerial los nuevos pines TX, RX para el Arduino,              conectar el TX del módulo Bluetooth al RX del Arduino y conectar el RX del módulo             bluetooth al TX del Arduino.
    
    4: Cargar el programa.
    
    5: Comunicar con el módulo (AT).
    
    6: Cambiar el nombre del módulo (AT+ANAME).
    
    7: Ajustar la velocidad de comunicación (AT+BAUD).
    
          1 : 1200 baudios
          2 : 2400 baudios
          3 : 4800 baudios
          4 : 9600 baudios (por defecto)
          5 : 19200 baudios
          6 : 38400 baudios
          7 : 57600 baudios
          8 : 115200 baudios
          
    8 : Configurar PIN(contraseña) de emparejamiento (AT+PIN).


jueves, 6 de noviembre de 2014

Configuración de un módulo bluetooth maestro/esclavo como esclavo

Antes que nada hay que saber un poco sobre la tecnología Bluetooth. Bluetooth es una especificación tecnológica para redes inalámbricas que permite la transmisión de voz y datos entre distintos dispositivos mediante una radiofrecuencia segura de 2,4 GHz. Esta tecnológica permite crear redes inalámbricas domésticas para sincronizar y compartir la información que se encuentra almacenada en diversos equipos.

Por otro lado, los comandos AT son instrucciones codificadas que conforman un lenguaje de comunicación con un terminal módem, en este caso el módulo Bluetooth.  Los comandos AT se denominan así por la abreviatura de attention.

Este módulo Bluetooth se puede configurar tanto como un dispositivo esclavo o un dispositivo maestro y tiene una ligera diferencia con los demás módulos al momento de enviar los comandos AT. El módulo viene por defecto en modo esclavo, así que tanto el nombre como la contraseña están definidos.
Para este caso se usan los siguientes comandos:

AT+ROLE=0\r\n
Este comando define el modo en el que funcionará el modulo bluetooth, un 1 significa que se desea configurar en modo maestro, mientras un 0 indica modo esclavo. Como queremos configurar en modo esclavo usaremos "AT+ROLE=0\r\n"

AT+PSWD=4444\r\n
Este comando define una contraseña, como el módulo está configurado como esclavo, el comando indica la contraseña asociada al módulo.
Ahora vamos a implementar el circuito para configurar el módulo. Para ello necesitamos los siguientes componentes.


 Componentes a utilizar
  • Arduino Uno
  • Resistencia de 220 Ω
  • LED
  • Módulo Serial Bluetooth(maestro/esclavo)
  • Protoboard


Circuito



Finalmente, en el código que vamos a escribir vamos a usar la librería SoftwareSerial, la cual permite una comunicación serial a través de cualquier pin digital del Arduino. En la página de Arduino pueden encontrar más información sobre la librería SoftwareSerial.


Código

 //Se declara esta libreria  para la comunicacion bluetooth
#include<SoftwareSerial.h>

//Se definen los pines TX y RX, en este caso pin 2 = Rx, pin 3 = Tx
SoftwareSerial mySerial(2,3);

//Variable para control de configuracion
boolean configurado = false;
 
void setup(){
   pinMode(13,OUTPUT);     //Pin 13 para control del proceso
   Serial.begin(9600);     //se inicia comunicacion serial
   digitalWrite(8, LOW);
   mySerial.begin(9600);   //se inicia comunicacion bluetooth
   digitalWrite(13, LOW);  //se apaga el led 13
}
 
 
void loop(){
 
  if (configurado){
    digitalWrite(8, LOW);
    /* Parpadeo para verificar su funcionamiento */
    digitalWrite(13, HIGH);  //se enciende el led
    delay(1000);             //Espera de 1 segundo

  }
  else{
    digitalWrite(13, HIGH); // se inicia el tiempo de espera para reconectar
    digitalWrite(8, HIGH);  // se coloca el pin KEY en 
ALTA 
    delay(1000);            
// (asi se encontrara en modo AT)
    digitalWrite(13, LOW);  // Tiempo de espera agotado para reconectar
    
    Serial.println("AT");  
    mySerial.write("AT\r\n"); //se inicia la comunicacion con modulo BT
    delay(1000);              //Espera de 1 segundo
    while(mySerial.available()>0) {
      Serial.write(mySerial.read()); 
    }     
    Serial.println();

    Serial.println("AT+ROLE=0\r\n"); 
    mySerial.write("AT+ROLE=0\r\n"); 
    delay(1000);            //Espera de 1 segundo  
    while(mySerial.available()>0)     Serial.write(mySerial.read());    

    Serial.println("AT+PSWD=4444\r\n"); 
    mySerial.write("AT+PSWD=4444\r\n"); //se establece el pin de 
    delay(1000);                        //
asociacion(contraseña)
    while(mySerial.available()>0)     Serial.write(mySerial.read());
    
    digitalWrite(8,HIGH);
    /* En este punto debe estar configurado */
    digitalWrite(13, HIGH); //se mustra que todo ha funcionado 
    configurado = true;     //
segun lo esperado
  }
}

//////////////////////////////////////////////////////////////////////////

Pasos a seguir:

    1: El módulo no debe estar vinculado a ningún dispositivo.

    2: La forma visual de conocer el estado del módulo:
        Led fijo --> Emparejado
        Led intermitente --> Sin emparejar

    3: Definir mediante la librería SoftwareSerial los nuevo pines TX, RX para el Arduino
        Conectar el TX del módulo Bluetooth al RX del arduino
        Conectar el RX del módulo Bluetooth al TX del arduino

    4: Realizar las conexiones tal como se muestra en el circuito
          NOTA: Al momento de hacer las conexiones asegurarse de que la tarjeta Arduino
                      no esté conectada.

    5: Cargar el programa, seguidamente verifique que el led del módulo bluetooth                          comience a parpadear de manera rápida. Esto indica que se encuentra en modo AT a         9600 baudios, si por lo contrario el led parpadea de forma lenta indica que el módulo           está en modo AT a 38400 baudios. En el código se le ha configurado a 9600 baudios.           Hay que repetir el paso 5 y 6 hasta lograr que el LED parpadee de manera rápida.

   6: Probamos la comunicación con el módulo, mediante el comando de testeo: AT\r\n.               Seguidamente se deberá visualizar la respuesta en el Monitor Serial. Se espera la                respuesta OK. Si esta respuesta no aparece, verificar las conexiones.

   7: Si se confirma la respuesta, ingresamos los comandos AT según nuestro interés.

   8: Verificar que los comandos AT son recibidos correctamente mediante el monitor                    serial(se debe esperar una respuesta OK, después de enviar los comandos AT).