This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 1 voto(s) - 3 Media
  • 1
  • 2
  • 3
  • 4
  • 5
HC-05
#1
Estoy intentando hacer funcionar un modulo HC-05 pero no consigo hacerlo he mirado un montón de tutoriales por Internet probando diferentes códigos y diferentes circuitos pero nada.

Cuando uso el monitor serial por lo general recibo un mensaje "Enter AT commands" o "Esperando comandos AT", eso depende del código que haya buscado pero cuando escribo "AT" se supone que debería responderme con un OK, pero ni caso, he probado poniendo otras cosas como AT+NAME y demás pero no funciona. Enfadado

En el monitor serial tengo puesto que funcione a 9600 Baudrios y "Ambos NL & CR" y el led rojo del modulo HC-05 no para de parpadear.

He probado usando Arduino UNO y MEGA 2560. Indeciso

Aquí dejo uno de los tantos enlaces que he usado

http://www.prometec.net/bt-hc05/

Gracias de antemano.
  Responder
#2
¿Has comprobado el hardware?

Eso que recibes ("Enter AT commands" o "Esperando comandos AT") no te lo está mandando el módulo, si no el arduino (Se que es evidente si tienes idea de esto, pero como se si es el caso...), así que el hecho de recibir eso no supone nada. 

La configuración de monitor serie no parece ser problema, dado que recibes ese texto al principio... ¿Has probado a cambiar las velocidades del módulo? (El "BT1.begin(57600); " en tu ejemplo) Quizá en la tienda donde lo hayas comprado tengaan algo más de información, pero de primeras me parece raro que use 57600... la mayoria de los que he visto yo van o bien despacio, a 9600, o bien a 115200. 

Otra cosa rara que veo, pero que entiendo que debe funcionar, es que alimente el módulo desde un pin del arduino. Hablo desde el desconocimiento (No le he dado nunca al arduino, los micros que he usado son de otros fabricantes) pero por lo general el consumo va a ser siempre mayor de lo que pueda sacar un pin de E/S, salvo que esa salida vaya a través de un transistor, o algo...

En cualquier caso, mira si te ocurre esto: (De la misma página que tu enlazas, en los comentarios de abajo)


Cita:Hola,
solucionado el problema, resulta que hay por el mercado un modulo que es un tanto distinto, y en lugar de tener el pin “KEY”, tiene un pin “EN”. Para entrar en el modo AT necesitas forzar un 1 en la entrada del pin 34 o pulsar un botón mientras se enciende (los que tienen el botón). La solución ha sido colocar un cable a 5V que tocase ese pin en el momento de encenderse, con lo que el módulo ha entrado en el modo AT y ya he podido trabajar con ello.
Por otro lado, estoy mandando el comando AT+NAME y no obtengo ninguna respuesta, con el resto no he tenido problemas, no sé a que se puede deber.
Muchas gracias por todo, muy instructiva su página, un saludo,

Marcos



En cualquier caso, con los datos que das, no se me ocurre ahora mismo nada. ¿Has leído todos los comentarios a ver si en algún otro?

EDIT:
Cita:Fabio23 Dic 2015
Ante todo felicitaciones por la página.
Me trabe con el modulo HC-05 que tiene el bendito botonito… para otros que tengan problemas la cosa me funciono así:
– Del código publicado aquí el Pin 9 no tiene ningún efecto para ingresar al modo AT.
– Establecí la comunicación en 38400 bps
– Alimento el módulo bluetooth, ground mediante, después de alimentar el arduino y mientras presiono el botón un par de segundos. Si parpadea lento esta en modo AT, si parpadea rápido no.
  Responder
#3
Muchas gracias Thorontir por la ayuda y perdona por haber tardado tanto en contestar.

Resulta que mi modulo bluetooth no tiene el pin "KEY" y en vez de ese pin tiene "EN"he probado hacer lo que ponías en las dos citas que has adjuntado pero nada, dejo el enlace del modulo:
http://www.banggood.com/3Pcs-HC-05-Wirel...11725.html
He intentado buscar la datasheet del modulo pero nada.

He probado hacer el cambio de los baudrios y tengo una duda, ¿Cambio solamente BT1.begin(57600); y voy probando con distintos baudrios en el puerto serial o también tengo que ir cambiando Serial.begin(9600);?
Si es el primer caso lo he intentado y no funciona. u.u

Ya que estamos con preguntas del código... ¿porque las dos anteriores fragmentos de código que he mandao tienen distintos baudrios?
  Responder
#4
(21-07-2016, 09:06 PM)maxi94 escribió: He probado hacer el cambio de los baudrios y tengo una duda, ¿Cambio solamente BT1.begin(57600); y voy probando con distintos baudrios en el puerto serial o también tengo que ir cambiando Serial.begin(9600);?
Si es el primer caso lo he intentado y no funciona. u.u

Ya que estamos con preguntas del código... ¿porque las dos anteriores fragmentos de código que he mandao tienen distintos baudrios?
Si, por un lado tienes Serial.begin, que es el puerto serie para el monitor serie, y por otro tienes el BT1.begin que es para el módulo Bluetooth. Si el serie va bien, no hace falta tocarlo, así que es como lo has hecho. Piensa que por cada canal que tengas, tendrás una configuración (Puedes hablar con el PC a una velocidad, por ejemplo, y con el módulo a otra)

¿Por que el baudrate es distinto? Por que serían módulos diferentes. Al final, aunque el integrado sea al mismo, el fabricante de cada módulo escoge sus opciones. Por eso son todos tan parecidos, pero a la vez casi ninguno es idéntico...
(21-07-2016, 09:06 PM)maxi94 escribió: Resulta que mi modulo bluetooth no tiene el pin "KEY" y en vez de ese pin tiene "EN"he probado hacer lo que ponías en las dos citas que has adjuntado pero nada, dejo el enlace del modulo:
http://www.banggood.com/3Pcs-HC-05-Wirel...11725.html
He intentado buscar la datasheet del modulo pero nada.
Con el enlace ya podemos mirar más cosas. Fíjate en los comentarios de la gente, concretamente:

Cita:I tried for a long time to use those Bluetooth modules with not much success. Then I browsed all the comments until I found a link that explain it all: http://www.martyncurrey.com/arduino-with...lave-mode/ Hint, by default they are at 9600Bds.

Otro compañero que lo intentó por un tiempo sin mucho éxito. Pero buscando llegó al enlace que pone ahí. Y como pista, dice que por defecto están a 9600 baudios.

Y el propio vendedor enlaza a este hilo: http://forum.banggood.com/forum-topic-124414.html

Diría que con eso tienes material de sobra para hacerlo funcionar, pero en cualquier caso, si te atascas, pregunta e intentamos mirarlo.
  Responder
#5
Perdona otra vez por la tardanza Gran sonrisa

Ayer volví a probar durante un buen rato a poner el bluetooth en marcha y se podría decir que conseguí algo.
He seguido este tutorial que había entre los que me pasaste
http://www.martyncurrey.com/arduino-with...lave-mode/
He conseguido hacerlo funcionar con un arduino nano dejando tal cual el código, pero yo lo necesito para un mega ya que tengo que usar bastantes pines, estuve intentándolo primero con el mega pero al ver que no lo conseguía me pasé al nano y en 5 minutos ya lo tenia... después de calentarme la cabeza durante horas.. -.-

Con el mega lo que hacia era cambiar en el código el pin 2 (RX) por 18 del mega y el pin 3 (TX) por el 19. El móvil me detectaba el módulo pero no recibía ni mandaba nada.

Con todo esto ya descarto que sea problema del modulo bluetooth y no creo que sea problema del mega ya que he probado con distintos... supongo que hay algo del código que se me escapa.

Gracias
  Responder
#6
Me sonaba que el arduino Mega tenia tres puertos serie y que se diferenciaban con números (Serial1,Serial2,Serial3). https://www.arduino.cc/en/Reference/Serial 
Serial1:19 (RX) y 18 (TX) => Tu caso
//Serial2: 17 (RX) y 16 (TX),
//Serial3: 15 (RX) y 14 (TX).

Yo cambiaría todos los Serial.**** por Serial1.****( Serial.begin(); => Serial1.begin(); ). No sé si se puede deber a esto, pues no tengo ningún arduino Mega, pero por probar...
Un Saludo y suerte!
  Responder
#7
No se a que te refieres con lo de Serial.begin(); => Serial1.begin(); pero he probado los 3 conjuntos cambiando únicamente los pines en el código y nada
  Responder
#8
Que en vez de poner Serial.begin(); pongas Serial1.begin(); , para indicar al arduino los pines que quieres utilizar como TX y RX.
  Responder