Go Down

Topic: HC 05 + Leonardo. (Read 245 times) previous topic - next topic

DMora

Hola a todos, soy nuevo en el mundo de Arduino, y voy a realizar mi primer proyecto con este, pero tengo un pequeño problema con el Modulo Bluetooth HC 05 hasta donde tengo entendido las conexiones con el Leonardo son
HC              Leonardo
EN(o Key)            3.3 V
RXD                         TX1->1
TXD                         RX1<-0
GND                        GND (POWER)
VCC                          5V


y en la programación no se como va, ya que de algo que estuve leyendo es que el Arduino Leonardo no necesita incluir la librería Software serial, por lo que he usado esta programación.

Code: [Select]
void setup() {
  // put your setup code here, to run once:
Serial1.begin(38400);
Serial.begin(38400);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial1.available())
  {
    byte a=Serial1.read();
    Serial.write(a);
  }
  if(Serial.available())
  {
    byte a=Serial.read();
    Serial1.write(a);
  }
}


No se que más hacer, si me pudieran ayudar estaría eternamente agradecido;
PD: ¿Tengo una duda puedo implementar el arduino y el modulo a otro circuito y enviar datos del circuito(Como que un led se encendio) a un android? ¿y que desde Android se genere alguna acción?.
¿Que tendría que hacer?.


GRACIAS.

ehrja

Hola

Bienvenido

Ese código que nos muestras creo que vale para un arduino mega o un due que tienen dos puertos serial, el arduino leonardo solo tiene un puerto serial( pin 0 y pin 1), pero puedes emular otro puerto serial con Softwareserial.h es una librería que emula un puerto serial y sus funciones son practicamente las mismas que el Serial nativo.

Si quieres mandar los comandos directamente a tu HC, para probarlo, puedes hacer lo siguiente:
con el arduino desconectado del usb, coloca un puente del reset a gnd, y conecta tu modulo HC rx a tx y tx a rx estos como ves van cruzados, conecta vcc a vcc y gnd a gnd, conecta el arduino a la pc y prueba mandando comandos a tu modulo hc por medio del la consola serial, en el monitor veras las respuestas.

Si aun necesitas usar otro Serial para hacer debug pues tienes que incluir a SoftwareSerial.h en tu sketch

--
Para resolver tus dudas tendrías que aclarar que tipo de circuito es y muchos detalles mas, pero si es solo si enciende un led es algo fácil, mandarlo a android supongo que también, peor como te digo necesitamos mas detalles.

¿Que quieres hacer?
Hola buenos días!

carmeloco

El Arduino Leonardo si que tiene 2 puertos serial. Serial para el USB y Serial1 para los pins 0 y 1.

Quote
Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Leonardo, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.
Extraído de:

http://arduino.cc/en/Main/ArduinoBoardLeonardo

DMora

Hola

Bienvenido

Ese código que nos muestras creo que vale para un arduino mega o un due que tienen dos puertos serial, el arduino leonardo solo tiene un puerto serial( pin 0 y pin 1), pero puedes emular otro puerto serial con Softwareserial.h es una librería que emula un puerto serial y sus funciones son practicamente las mismas que el Serial nativo.


Es que lo que dice
El Arduino Leonardo si que tiene 2 puertos serial. Serial para el USB y Serial1 para los pins 0 y 1.

Extraído de:

http://arduino.cc/en/Main/ArduinoBoardLeonardo
es cierto, el Leonardo tiene dos puertos seriales, por lo que no hay necesidad de simular.
Pero ya he probado con este código el HC y no recibo respuesta alguna, he usado el BlueTerm para comunicarme y nada.

Code: [Select]

char dato;
void setup()
{
pinMode(13,OUTPUT);

Serial1.begin(9600);

}

void loop()
{
while (Serial1.available()){
dato=Serial1.read();
switch(dato){
case 'w':
{ digitalWrite(13,HIGH); Serial1.println("Led encendido"); break; }

case 'e':
{ digitalWrite(13,LOW); Serial1.println("Led apagado"); break; }

case 'r':
{ digitalWrite(13,HIGH); delay(200);
digitalWrite(13,LOW);delay(200);
digitalWrite(13,HIGH);delay(200);
digitalWrite(13,LOW);delay(200);
digitalWrite(13,HIGH);delay(200);
digitalWrite(13,LOW);delay(200);
digitalWrite(13,HIGH);delay(200);
digitalWrite(13,LOW);delay(200);
digitalWrite(13,HIGH);delay(200);
digitalWrite(13,LOW);delay(200);
Serial1.println("Led intermitente"); break; } } }
}




También he probado llevar al HC 05 a comandos AT y comprobar que la velocidad de transmisión sean 9600 baudios pero no sé si mi código este bien, y no he usado el SoftwareSerial, por lo dicho antés.

Code: [Select]


void setup()

{

  Serial.begin(9600);
  Serial1.begin(38400);



Serial.println("Inicio de comandos AT:");


}



void loop()
{
if(Serial.available())
Serial1.write(Serial.read());

if(Serial1.available())
Serial.write(Serial1.read());

}



drarse

¿La conexión Bluetooth la hace bien? Es decir, tu móvil se conecta al HC-05? (Led parpadeando: No conectado, led fijo: Conectado)

DMora

Cuando se conecta al modulo, desde mi móvil, el dispositivo tiende a parpadear más lento.

drarse

Quizá en el HC-05 sea así. Yo tengo un HC-06. Yo probaría a encender un Led después de Serial1.available() para comprobar que realmente recibe algo.

Khazus

Si estás utilizando arduino Leonardo hay una cosa que creo no haber visto por ninguna parte en tu código y es practicamente obligatorio en un Leonardo para usar los puertos Serial y Serial1.

Code: [Select]


Serial.begin(9600);
while(!Serial);
Serial1.begin(38400);
while(!Serial1);


Go Up