jueves, 4 de agosto de 2016

Microchip PIC: Bluetooth + LED + Android + dsPIC30F4013 + HC-05

El Bluetooth es una tecnología usada por la gente desde hace bastante tiempo y a día de hoy, sigue más de moda que nunca con sus nuevas versiones, pero para este capítulo, vamos a aprovechar que los módulos de Bluetooth clásicos están tirados de precio y jugaremos con ellos.

La idea principal es cambiar el estado de cuatro LEDs mediante una aplicación Android que se pueda instalar en nuestros teléfonos o tablets y que mande el comando a ejecutar mediante la tecnología Bluetooth.

Para ello, se ha escogido el microcontrolador dsPIC30F4013 que estará conectado a los cuatro LEDs y al módulo de Bluetooth. En este capítulo no nos vamos a parar a explicar qué es y cómo funciona la tecnología Bluetooth, para nosotros será transparente ya que los módulos de Bluetooth que están disponibles en el mercado, su comunicación con el microcontrolador es, en su mayoría, transparente mediante el módulo de UART.

Así que por un lado, tendremos la aplicación Android instalada en nuestro teléfono móvil o tablet, y por otro lado, tendremos nuestro microcontrolador con los LEDs y el módulo de Bluetooth, para que funcione y podamos cambiar el estado de los LEDs, será necesario establecer establecer una conexión entre nuestra aplicación Android y el módulo de Bluetooth, dicha conexión será única e individual.

Una vez se establezca dicha comunicación, el microcontrolador podrá recibir los comandos para cambiar el estado de los LEDs correspondientes.



El material que vamos a necesitar y su función, es la que se muestra a continuación:

· dsPIC30F4013: Microcontrolador para este programa.

· Protoboard: Donde insertaremos nuestros componentes.

· PICKIT 3: Programador y depurador necesario para programar el código.

· Módulo Bluetooth: En este caso, el famoso módulo Bluetooth HC-05.

· APP: Aplicación Android para establecer conexión con el módulo de Bluetooth HC-05. Dicha APP estará disponible en el apartado de descargas.

· LEDs: Cuatro LEDs.

· Resistor 100 Ω: Cuatro resistores que irán conectados entre el microcontrolador y los LEDs.

· Resistor 4.7 kΩ: Un resistor que irá conectado entre los pins #MCLR y VDD.



El firmware es el que se muestra a continuación:

/**
* @file     main.c
* @author   Manuel Caballero
* @date     25/7/2016
* @brief    Archivo principal.
* \copyright
*     AqueronteBlog@gmail.com
*
* Este archivo es propiedad intelectual del blog Aqueronte,
* cuya direccion web, es la siguiente:
*
*   http://unbarquero.blogspot.com/
*
* Se permite cualquier modificacion del archivo siempre y cuando
* se mantenga la autoria del autor.
*/


#include "xc.h"
#include < stdint.h >
#include "variables.h"
#include "functions.h"
#include "interrupts.h"

/**
 *  \brief     int main( void )
 *  \details   This firmware turns an LED on/off ( there are four LEDs ) depending on
 *             the received command by the Bluetooth module: HC-05 ( by UART )
 * 
 *
 *  \author    Manuel Caballero
 *  \version   0.0
 *  \date      25/7/2016
 *  \pre       This firmware is tested on the dsPIC30F4013.
 *
 *  \pre       MPLAB X IDE v3.35.
 *  \pre       Compiler XC16 v1.22.
 */
int main(void) {    
   conf_IO     ();
   conf_UART   ();
    
   while( 1 ){
     Idle();                                                 // uC in Low Power
        
     switch ( RxBuff ){                                      // Change the state of the chosen LED
       case  0x01:
             LATBbits.LATB9   =  ~LATBbits.LATB9;
             break;
       case  0x02:
             LATBbits.LATB10   =  ~LATBbits.LATB10;
             break;
       case  0x03:
             LATBbits.LATB11   =  ~LATBbits.LATB11;
             break;
       case  0x04:
             LATBbits.LATB12   =  ~LATBbits.LATB12;
             break;
       default:
             LATB     &=   ~( LED1 | LED2 | LED3 | LED4 );   // Turn off all the LEDs
             break;
       }
    }
    
    return 0;
}

Como vemos, el ejemplo es bastante simple, se recomienda bajar los archivos disponibles más abajo para indagar entre sus librerías y leer sus funciones de manera más detallada.

Un vídeo que demuestra lo explicado anteriormente se presenta a continuación:



Os pongo a vuestra disposición el programa en lenguaje C (XC16 y CCS) para que lo podáis descargar y probar:

Microchip PIC: dsPIC30F4013 + Bluetooth + HC-05 + LEDs
Compilador XC16Compilador CCS
CC
dsPIC30F4013: LEDs + HC-05 + App 
dsPIC30F4013: LEDs + HC-05 + App
dsPIC30F4013: LEDs + HC-05 + App
dsPIC30F4013: LEDs + HC-05 + App


Podéis encontrar el código completo en nuestro repositorio GitHub:

·AqueronteBlog GitHub.


· NOTA 1: Lo comentarios están en formato doxygen. Aunque no se entrega dicha documentación ya que el MPLAB X no tiene ningún pulgin capaz de trabajar con dicho formato.

· NOTA 2: La APP ha sido diseñada en Android Studio y probada en el teléfono móvil Motorola Moto G.