Práctica 10 con Miuva. RS232 usando bluetooth con PIC C

Es esta práctica utilizaremos el protocolo RS232 para recibir información de un dispositivo móvil, interpretarla y controlar el led RGB de Miuva.

RS232

Es un protocolo de comunicación asíncrono y serial. En este caso lo configuraremos con la siguiente línea:

#use RS232(BAUD = 9600, BITS = 8, PARITY = N, XMIT = PIN_C6, RCV = PIN_C7)

Velocidad de 9600 baudios, 8 bits de información y sin bit de paridad, así como la dirección donde estará conectada Tx y Rx, en Miuva puedes conectar directamente un dispositivo bluetooth HC-05 y HC-06 ya que tiene un puerto predefinido para esta acción.

Imagen1. Puerto RS232 de Miuva

Dónde Tx está conectado al pin C6 y Rx al pin C7.

Para enviar y recibir información en este protocolo utilizaremos las siguientes funciones:

a = getc();    //Recibimos información y la almacenamos en a
printf();      //Enviarmos información

Los caracteres recibidos están en su equivalente en formato ASCII, por lo tanto al recibir información es importante saber interpretarla. Por ejemplo, si el dispositivo móvil nos envía el caracter “v” estaremos recibiendo y almacenando el entero “118”. 

Imagen2. Tabla ASCII

 

Por lo tanto en nuestro código realizaremos diferentes acciones según los valores recibidos en Miuva, acorde a la siguiente tabla:

Imagen3. Tabla de funcionamiento

Esto lo podemos realizar con un ciclo condicional if.

Con esto podemos crear el siguiente código:

Código para PIC C:

#include<18f4550.h>
#Fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL2, CPUDIV1, VREGEN
#use delay (clock=48M)      //Seleccionamos la frecuencia de reloj de 48MHz
#use RS232(BAUD = 9600, BITS = 8, PARITY = N, XMIT = PIN_C6, RCV = PIN_C7)
unsigned int8 dato;

void main(){
   set_tris_e(0x00);    //Puerto E como salida
   output_e(0x07);      //Apagamos los leds
   printf("Inicio de comunicacionr"); //Enviamos por RS232

   while(TRUE){                  //Ciclo infinito
      dato = getc();             //Leemos información y la almacenamos en dato
      if (dato == 118){          //¿Se recibió la "v" en ASCII?
         output_low(PIN_E0);     //Encedemos led
         printf("Color Verde");  //Enviamos información
         delay_ms(100);          //Esperamos 100ms
      }

      if (dato == 114){          //¿Se recibió la "r" en ASCII?
         output_low(PIN_E1);     //Encedemos led
         printf("Color Rojo");   //Enviamos información
         delay_ms(100);          //Esperamos 100ms
      }

      if (dato == 97){           //¿Se recibió la "a" en ASCII?
         output_low(PIN_E2);     //Enecedemos led
         printf("Color Azul");   //Enviamos información
         delay_ms(100);          //Esperamos 100ms
      }

      if (dato == 49){           //¿Se recibió el "1" en ASCII?
         output_high(PIN_E0);    //Apagamos led
         delay_ms(100);          //Esperamos 100ms
      }

      if (dato == 50){           //¿Se recibió el "2" en ASCII?
         output_high(PIN_E1);    //Apagamos led
         delay_ms(100);          //Esperamos 100ms
      }

      if (dato == 51){           //¿Se recibió el "3" en ASCII?
         output_high(PIN_E2);    //Apagamos led
         delay_ms(100);          //Esperamos 100ms
      }  
   }
}

Para hacer la parte de la comunicación desde el dispositivo móvil, te recomendamos descargar nuestra aplicación para Android:

Descargar IntescBT.apk

Es necesario abrirla desde el celular e instalarla siguiendo los pasos que indica el dispositivo móvil (es posible que pida autorizar la instalación de aplicaciónes externas a la Play Store, en ese caso es necesario otorgarle ese permiso).

Para utilizarla:

  1. Empareja tu módulo HC – 05 con tu dispositivo móvil mediante bluetooth (la contraseña por defecto será “1234”).
  2. Abre la APP.
  3. Coloca en “Número de bytes a recibir” un “1” (si esperas recibir más bytes escribe el número deseado).
  4. Presiona en “Conectar bluetooth” y selecciona HC 05
  5. Escribe el dato que deseas enviar en “Dato a enviar”
  6. Presiona “Enviar”

 

Observa el video demostrativo

Descarga el proyecto en PIC C o Mikro C

Menú