Comunicação entre Arduíno e Modulo Bluetooth HC-05

Eu estou com um problema na comunicação entre o Arduíno mega 2560 e um módulo Bluetooth(HC-05) eu conectei conforme um esquema encontrado na internet, mas quando eu envio os comandos AT ele não manda OK de volta, parece que ele nao está trocando informações com o Arduíno. Pelo celular consigo emparelhar com ele. Vocês sabem o que pode estar acontecendo?

Exibições: 14851

Responder esta

Respostas a este tópico

Qual o esquema ?

Está usando um programa ?

Os leds da serial piscam (se tiver) ?

O 2560 tem varias seriais, pode ser que seu esquema mande ligar em uma diferente da usada no monitor serial, entao seria necessario um programa que copie os dados de uma serial a outra para fazer testes pelo monitor.

Sugiro vc ligar ele primeiro pra testar direto no PC e usar um programa terminal (terminal do windows). Para essa ligação vc precisa de um conversor USB-Serial com saida nivel logico (nao RS232).

A comunicação serial PC+ARDUÍNO eu consigo. Exemplo:mandando o carácter "A" para o Arduíno ele liga os LEDs do meu projeto, mais eu queria enviar esse carácter pelo BLUETOOTH e ele fazer a mesma coisa.

O meu projeto é sobre Automação Residencial e eu queria controlar a casa pelo um aplicativo android que eu fiz, que envia caracteres para o módulo HC-05 e o Arduíno faz a função que é receber o carácter e ligar um led ou outras coisas.

explica melhor pra nós alguns pontos:

- Vc disse que está usando o arduino mega, então talvez o problema esteja nas portas RX/TX usadas. Se vc colar teu sketch aqui pra nós, talvez dê pra te ajudar melhor

- vc disse que fez conforme um esquema encontrado na net, mas qual esquema é esse?

- a partir de onde vc está enviando o comando AT? via serial monitor? via algum app android?

Estou enviando via serial monitor, mas o que tem que ser feito e pelo app android. Esse esquema encontrei em um arquivo em PdF só que é do uno, não sei se tem algum problema.

E a programação está assim:

 

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(14, 15); // RX, TXint salaled = 21;

 

int sala = 21;

int cozinha = 22;

int banheiro = 23;

int jardim = 24;

int garagem = 25;

int modofesta = 26;

int ventiladorsala = 27;

int barreira = 28;

int luminosidade = 29;

int temperatura = 30;

int quarto1 = 31;

int quarto2 = 32;

int piscina = 33;

int ventilador1 = 34;

int ventilador2 = 35;

int amor = 36;

 

 void setup(){

  Serial.begin(9600);//declaração de uso da porta serial

  bluetooth.begin(9600);

  pinMode(sala,OUTPUT);

  pinMode(cozinha,OUTPUT);

  pinMode(banheiro,OUTPUT);

  pinMode(jardim,OUTPUT);

  pinMode(garagem,OUTPUT);

  pinMode(modofesta,OUTPUT);

  pinMode(ventiladorsala,OUTPUT);

  pinMode(barreira,INPUT);

  pinMode(luminosidade,INPUT);

  pinMode(temperatura,INPUT);

  pinMode(quarto1,OUTPUT);

  pinMode(quarto2,OUTPUT);

  pinMode(piscina,OUTPUT);

  pinMode(ventilador1,OUTPUT);

  pinMode(ventilador2,OUTPUT);

  pinMode(amor,OUTPUT);

}

 

void loop(){

  char caracter = Serial.read();//variável responsável por ler o que chega em serial

 

  if(caracter == 'a'){    //se a variável receber igual caracter "a"

    digitalWrite(sala,HIGH);//liga o led

  }

  if(caracter == 'b'){   // se a variável receber igual caracter "b"

    digitalWrite(salaled,LOW); //desliga o led

  }

  if(caracter == 'c'){   

    digitalWrite(cozinha,HIGH);

  }

  if(caracter == 'd'){  

    digitalWrite(cozinha,LOW);

  }

//////////////////Repete isso para todas as saídas recebendo letras diferentes do alfabeto///////////////

 

  if(caracter == 'x'){

   festa();

   }

 

}

 

 

void festa(){

 char caracter = Serial.read();//variável responsável por ler o que chega em serial

 digitalWrite(sala,HIGH);

 delay(300);

 digitalWrite(sala,LOW);

 delay(300);

 if(caracter == 'a','b','c','d','e','f','g','h','j','z','y','A','B','C','D','E','F','G','H','I','J','K','L'){

 loop();

 }

}

OBS: usei os pinos 14 RX e 15 TX, nao com está no esquema que são os pinos digitais 10 e 11 .

eu  recomendo  vc  testar ligar o bluetooth nos pinos 3 e 10 do seu mega. Nessas portas, eu tenho certeza absoluta que o mega aceita rx e  tx, pois são nelas que eu sempre mando rodar a softserial.

Outra coisa: ali no seu sketch, não vi nenhum código programado para que seja impresso algo no serial  monitor após vc digitar comandos AT. Logo, o que vc relatou sobre não vir resposta nenhuma quando digita AT não seria exatamente um problema, mas  sim o que vc deveria esperar. Estranho seria se aparecesse OK na serial monitor com esse seu sketch.

Acabei de testar com uma programação que quando um carácter for recebido escreve na serial, mas tbm não deu certo. T.T Mas ainda assim agradeço a ajuda. 

Cola pra nós aí o sketch que usou pra testar e como conectou os componentes. Falar simplesmesmente que não funcionou não fornece dados suficientes pra gente te dar um norte pra resolver o problema. Pode ser que o sketch usado seja inapropiado para aquilo que vc quer, pode ser que falte um ajuste no sketch, pode ser que vc ligou os componentes errado, enfim, pode ser muita coisa. Então, ajude-nos a te ajudar.

#include <SoftwareSerial.h>
SoftwareSerial serial2(3,10);

void setup(){
Serial.begin(115200);
serial2.begin(38400);
pinMode(8,OUTPUT);
digitalWrite(8,HIGH);
Serial.println("Digite os comandos AT:");
}
void loop(){
if(Serial.available())
serial2.write(Serial.read());

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

}

Vc ja seguiu esse tuto?

http://www.tuxti.com.br/wiki/index.php/Arduino_-_Bluetooth_HC-05

So fique antenado que se vc vai usar as portas 3 e 10 do seu mega, precisa ligar corretamente no rx/tx do hc05 e configurar certo no sketch.

O primeiro numero no sketch é o rx do mega e se vc digitar 3 ali, vc tem que ligar o pino 3 do mega no tx do hc05. Se vc digitar 10 ali no segundo numero, tipo (3,10), vc deve ligar o pino 10 no rx do hc05. Rx de um ligado ao tx do outro. E tx de um ligado ao rx do outro, entende? Significa que ali enquanto um fala, o outro escuta. E  no outro pino fica escutando aquilo que é dito na outra ponta do fio. É diferente de vcc e gnd, em que vcc de um deve ser ligado no vcc do outro. E gnd de um ligamos no gnd do outro. No caso do rx/tx devemos inverter as ligações.

Atenção também na alimentação, porque esse módulo é alimentado com 3.3v. Se usar 5v queima.

Sim disso eu sei, que o RX vai no TX e o TX vai no RX. No meu módulo pode usar 5v ou 3.3v.

Ja tentei diversas programações e em todas as portas serias e um pouco das digitais e nada.

Acho q vou desistir, ele faz parte do meu TCC de técnico em mecatrônica é uma das coisas que eu queria poder fazer.

Mas mesmo assim muito obrigado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço