Autor Tema: La verdad sobre el modulo inalambrico HC-05  (Leído 2364 veces)

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

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
La verdad sobre el modulo inalambrico HC-05
« en: 09 de Diciembre de 2015, 20:10:48 »
hola a todos. como saben el modulo HC-05 esta basado en el microcontrolador BlueCore4 BC417143B. para comunicarse con el modulo, normalmente se emplea el puerto serial, cada vez que llega un dato el modulo lo envia de forma inalambrica. el modulo tambien tiene un puerto SPI, lo que me gustaria saber es si es posible comunicarse con el modulo por el puerto SPI para enviar los datos, ya que no encuentro en ningun lado si es posible o como se hace algo tan complicado.

esta es la hoja de datos del chip inalambrico: https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/CSR-BC417-datasheet.pdf

tambien me gustaria si me pueden ayudar a saber si alguien a intentado hacer una comunicacion de alta velocidad entre el modulo y un dispositivo con android, de unos 100 kilobytes por segundo, lo que pasa es que no puedo pasar mas alla de 1 kilobyte por segundo, porque los datos comienzan a llegar repetidos y algunos se pierden. saven si existe alguna manera de saber si el problema es del modulo inalambrico o si es del android?

lo que pasa es que e buscado mucho en interned y no encuentro nada sobre eso esto esta muy dificil porfabor ayudenme se los agradesco mucho

saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #1 en: 09 de Diciembre de 2015, 20:30:04 »
Citar
el modulo tambien tiene un puerto SPI, lo que me gustaria saber es si es posible comunicarse con el modulo por el puerto SPI para enviar los datos, ya que no encuentro en ningun lado si es posible o como se hace algo tan complicado.

Por lo que dice el datasheet es solo para :

Debugging
Programar la flash ( externa o interna no se )

Fui a la pagina y dice lo mismo.

Respecto a la velocidad por UART, casi 3M baudios tenes ( 2764800 ), no se si es lo que necesitas

Citar
saven si existe alguna manera de saber si el problema es del modulo inalambrico o si es del android?
Un analizador logico ? y ver que sale y que no ?

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #2 en: 09 de Diciembre de 2015, 20:32:27 »
entiendo, gracias por la ayuda. sabes en que lugar puedo bajar el analisador logico?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #4 en: 09 de Diciembre de 2015, 20:55:50 »
ya entendi. aunque creo que seria mejor comprar un receptor bluetot para el computador, y ver si alcansa toda la velocidad, entonces el problema es del android.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #5 en: 09 de Diciembre de 2015, 21:38:40 »
Hablemos claramente, Android es un Sistema Operativo, no se que HW tengas y que maneje ese Android. De eso va a depender la velocidad.
Supuestamente Bluetooth 1.2 llega a 1Mbit/s = 125KB/s aproximadamente teorico, en la practica unos 90KB/s segun wikipedia.

EL modulo que tenes dice ser de 2.0 + EDR , es decir de 3 Mbit/s = 375Kb/s aproximadamente teorico, practica 252.5KB/s segun wikipedia.

Por tus explicaciones pense que de un dispositivo con Android manejabas una salida ( UART o con un conversor ) y de alli manejabas el HC05.
Pero creo que es mas Un dispostivio con android+bluetooth conectado a un HC05 en el otro extremo.
Por eso mismo habia puesto el Analizador logico para que vieras si era realmente lo que se enviaba o no.
« Última modificación: 09 de Diciembre de 2015, 21:44:10 por KILLERJC »

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #6 en: 09 de Diciembre de 2015, 22:08:07 »
ah bueno ya entendi mas, eso significa que si se puede hacer. lo mas seguro es que el problema sea por el android, lo malo de android estudio es que hay muchas formas de hacer lo mismo y es dificil hacer que sea eficiente, tendriamos que obserbar si hay alguna forma para aumentarle la prioridad al bluetooth y a la aplicacion para que tenga mas procesador y asi pueda recibir todos los datos sin ningun problema.

este es el codigo que llebo hasta ahora, te agradeceria mucho si me pudieras sugerir algunas tecnicas para mejorar el rendimiento.


esto es el codigo para recibir los datos del bluetot:

Código: [Seleccionar]
    public class Listenner extends Thread {
        public Listenner() {
            InputStream = new DataInputStream(InStream);
        }

        @Override
        public void run() {

            android.os.Message mensaje;

            while (!this.isInterrupted())  //se ejecuta mientras la task no sea aya intenrrumpido
            {
                bytes = 0;
                try {

                    if(InStream.available()  > 0) {   //si hay datos disponibles
                        bytes = InStream.read(buffer);   //leemos la cantidad de datos disponibles en el bluetot
                        mensaje = ListennerHandler.obtainMessage(AVAILABLE_DATA, -1, -1);  //mandamos el mensaje atravez del handler de mensajes
                        ListennerHandler.sendMessageAtFrontOfQueue(mensaje);      //lo ponemos al frente para que lo lea mas rapido
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                    Log.w("salio mal", e.getMessage());
                    break;
                }

               try{
                    Thread.sleep(10);   //dormimos la rutina por 10 milisegundos para liberar el procesador
                }catch(InterruptedException ie){Log.w("error al dormir", ie.getMessage()); } 

            }
        }
    }

este es el codigo para leer el handler y mostrar los datos en la pantalla

Código: [Seleccionar]

  Bluetooth_ListennerHandler = new Handler() {
            public void handleMessage(android.os.Message msg) {   
                if (msg.what == Bluetooth.AVAILABLE_DATA) {       // si el mensaje nos los mando el listener del bluetott

                    tempBuffer = BytetoInt(Bluetooth.getData());  //almacenamos los datos en un bufer temporal

                    chart.AddSetofData(tempBuffer, Bluetooth.getAvailableData(), 0.1f);  //graficamos los datos en la pantalla


                } else {
                    super.handleMessage(msg);  //le consedemos el manejo al handler principal
                }
            };
        };

bueno. el problema es que hasta ahora lo maximo que he logrado son recibir mil bytes por segundo, si le aumento el numero de bytes que envio con el hc-05 al android, entonces pasa que se pierden datos o salen repetidos.

muchas gracias por ayudarme, te lo agradesco mucho.

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #7 en: 12 de Diciembre de 2015, 22:47:05 »
hola a todos, solo queria decirles que ya arregle el problema, lo que pasaba es que el pic que estaba usando no tenia suficiente velocidad para mandar tantos datos por segundo entonces le puse un pic mas poderoso y se arreglo.

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:La verdad sobre el modulo inalambrico HC-05
« Respuesta #8 en: 13 de Diciembre de 2015, 19:56:04 »
Despues de todo la maxima velocidad que logra alcanzar el HC-05 es de 22 Kilobytes por segundo.  Si le aumento la velocidad, el modulo se muere, se queda trabado la luz roja que tiene queda parpadeando pero el modulo no responde, no hace nada y toca apagarlo y  volverlo a prender para que vuelva a funcionar.

Este modulo recibe los datos en la capa RFCOMM, la cual simula un puerto serial inalambrico. Segun la hoja de datos, la maxima velocidad que puede alcanzar es de 350 kbps lo que seria igual a 43 Kilobytes por segundo. Lo que no entiendo es porque solo puedo lograr la mitad de la velocidad?

Lo otro que sucede es que el modulo recibe los datos con la capa RFCOMM y luego este se los pasa a la capa L2CAP, la cual es una capa de envio de paquetes. imagino que si me pudiece comunicar con la capa L2CAP directamente, sin tener que pasar por la RFCOMM entonces la velocidad mejoraria.

La pregunta es si se puede reprogramar el firmware del BC417 para poder comunicarse con la capa L2CAP directamente?

otra cosa que no entiendo es porque en la hoja de datos no dicen nada sobre los comandos AT.  Esa funcionalidad de los comandos AT es algo que le agrego el fabricante del modulo al programar la maquina virtual del BC417 con codigo extra?? Como seria para escribir mi propio codigo para la maquina virtual?

gracias a todos por su ayuda.





 

anything