Autor Tema: Problema PIC16f877a y Bluetooth  (Leído 8432 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado luis_zgz

  • PIC10
  • *
  • Mensajes: 4
Problema PIC16f877a y Bluetooth
« en: 12 de Enero de 2012, 05:09:57 »
Buenas a todos

Soy un estudiante de grado superior en zaragoza y soy nuevo en este foro

Estamos realizando en clase un proyecto de fin de curso, consistente en recibir datos en el pic mediante bluetooth y activar unas cargas, como luces, persianas, puerta, etc.

El problema principal que tenemos es que no conseguimos realizar la conexion bluetooth con el PIC. En el proteus nos funciona todo perfectamente al simularlo, pero en cuanto lo monto fisicamente en placa blanca, no nos funciona nada. El bluetooth que estamos utilizando es el EB-301, de microcontroladores.com. El bluetooth funciona perfectamente, ya que lo hemos probado con un pic16f84a y funcionaba. A continuacion os dejo el codigo que hemos programado, a ver si alguien nos puede ayuda. Gracias anticipadas a todos por vuestra ayuda, y perdon si me he equivocado colocando el tema, ya que es la primera vez que escribimos.

Un saludo

Código: [Seleccionar]
#include <16f877a.h>
#fuses NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use standard_io(b)
#use delay(clock=4000000)
#byte port_a=5
#byte port_b=6
#byte port_c=7
#use rs232 (baud=9600, Xmit=pin_c6, Rcv=pin_c7, bits=8)    // ordenes del puerto serie

main()
{
char a;
set_tris_a(0b00000000);
set_tris_b(0b00000000);
port_a=0;
port_b=0;


while(1)
{
   a=getc();

      if(a=='w')  // enciende la luz interior
      {
      output_high(pin_b6);
      output_low(pin_b7);
      puts("enciende interior");
      }

      if(a=='s')  // apaga la luz interior
      {
      output_low(pin_b6);
      output_low(pin_b7);
      puts("apaga interior");
      }

      if(a=='d')  // enciende la luz exterior
      {
      output_high(pin_b0);
      output_low(pin_b1);
      puts("enciende exterior");
      }

      if(a=='a')  // apaga la luz exterior
      {
      output_low(pin_b0);
      output_low(pin_b1);
      puts("apaga exterior");
      }

      if(a=='f')  // abre la puerta
      {
      output_high(pin_a2);
      output_low(pin_a3);
      delay_ms(1000);
      output_low(pin_a2);
      output_low(pin_a3);
      puts("abre puerta");
      }

      if(a=='b')  // cierra la puerta
      {
      output_low(pin_a2);
      output_high(pin_a3);
      delay_ms(1000);
      output_low(pin_a2);
      output_low(pin_a3);
      puts("cierra puerta");
      }

      if(a=='c')  // sube las persianas
      {
      output_high(pin_b2);
      output_high(pin_b4);
      output_low(pin_b3);
      output_low(pin_b5);
      delay_ms(3000);
      output_low(pin_b2);
      output_low(pin_b4);
      output_low(pin_b3);
      output_low(pin_b5);
      puts("sube persianas");
      }

      if(a=='e')  // baja las persianas
      {
      output_low(pin_b2);
      output_low(pin_b4);
      output_high(pin_b3);
      output_high(pin_b5);
      delay_ms(3000);
      output_low(pin_b2);
      output_low(pin_b4);
      output_low(pin_b3);
      output_low(pin_b5);
      puts("baja persianas");
      }

      if(a=='h')  // activa la sirena
      {
      output_high(pin_a0);
      output_low(pin_a1);
      puts("activa sirena");
      }

      if(a=='j')  // desactiva la sirena
      {
      output_low(pin_a0);
      output_low(pin_a1);
      puts("desactiva sirena");
      }
   }}


Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
Re: Problema PIC16f877a y Bluetooth
« Respuesta #1 en: 13 de Enero de 2012, 08:08:30 »
Con el 16F84A te funciono a 4MHz ???

No se si te servira pero tuve un problema similar. Fue tambien con un modulo bluetooth (HC-06) con el que me era imposible establecer comunicacion real a 9600 bps si usaba un oscilador de 4MHz.
Fue cambiar a 8MHz y todo perfecto.
Saludos desde Logroño (España)

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema PIC16f877a y Bluetooth
« Respuesta #2 en: 13 de Enero de 2012, 11:03:31 »
Hola.

Yo use interrupciones para la recepción. Mira aquí.

Saludos
El papel lo aguanta todo

Desconectado luis_zgz

  • PIC10
  • *
  • Mensajes: 4
Re: Problema PIC16f877a y Bluetooth
« Respuesta #3 en: 15 de Enero de 2012, 09:39:18 »
muchas gracias por vuestra ayuda probare primero lo de el reloj poniendo uno mas grande a ver si me funciona porque las interrupciones tambien lo probe pero no me funcionaba probare el reloj y os comento muchas gracias!!

Desconectado luis_zgz

  • PIC10
  • *
  • Mensajes: 4
Re: Problema PIC16f877a y Bluetooth
« Respuesta #4 en: 17 de Enero de 2012, 06:06:34 »
nada me sigue sin funcionar y ya estoy desesperado en el proteus me funciona todo pero en cuanto lo monto en placa blanca no me funciona nada si alguien me pudiese ayudar se lo agradeceria eternamente un saludo!

Desconectado _LAB_

  • PIC10
  • *
  • Mensajes: 36
Re: Problema PIC16f877a y Bluetooth
« Respuesta #5 en: 23 de Enero de 2012, 03:45:15 »
Si dices que el código funcionaba en un 16f84a, entonces deberias pensar si es que está malo el PIC prueba encendiendo unos led antes de entrar al ciclo while(1), para comprobar funcionamiento.
Lo otro, el bluetooth trabaja con niveles de 0V-5V a veces las sensibilidades de los PIC varian y si el bluetooth usa 3.3v quizá requiera adaptación de voltajes...
Y  lo último que se me ocure, en las datas a 9600baudios dice que un reloj de 3.686Mhz da 0% de error en la transmición...
Saludos y espero algo te sirva!!!

Desconectado luis_zgz

  • PIC10
  • *
  • Mensajes: 4
Re: Problema PIC16f877a y Bluetooth
« Respuesta #6 en: 31 de Enero de 2012, 05:23:41 »
ya esta solucionado al final lo que fallaba era el reloj y los condensadores que me han vuelto loco!! de todas formas muchas gracias por vuestra ayuda y espero poder ayudaros cuando tengais alguna duda un saludooo!!

Desconectado quaerenz

  • PIC10
  • *
  • Mensajes: 1
Re: Problema PIC16f877a y Bluetooth
« Respuesta #7 en: 07 de Mayo de 2013, 21:43:15 »
Te cuento que a mí me funcionó perfecto tu código, con un PIC16F877A funcionando con XTAL externo de 4MHz y un módulo Bluetooth de esos JY-MCU de 3.3V (usando claro un level shifter 74LS125). Seguro sólo fueron los capacitores que dices. Gracias por el código!
« Última modificación: 07 de Mayo de 2013, 21:45:41 por quaerenz »
If the implementation is hard to explain, it's a bad idea...