Go Down

Topic: usando 2 modulos Bluetooth (Read 3570 times) previous topic - next topic

futepa

Estou fazendo um protótipo de um carrinho, a ideia é que ele funcione de forma autonoma para se deslocar!
Nesse trabalho escolhi colocar 2 arduinos, cada um com Bluetooth! E preciso fazer com que os dois se comuniquem pois um será o carro e outro uma central que monitora o ambiente e diz para onde o carro deve ir!
Problemas, sou iniciante! E preciso aprender primeiramente como trocar msg entre arduino e PC! Pois liguei o módulo corretamente nos pinos! Eu fiz um código que faz o Led ligar e desligar, e funciona qnd ligado na USB!
Porem qnd eu tiro o USB ligo outra fonte de pilhas 9v, consigo parear porem qnd abro o monitore envio a mesma msg a programa trava como se não conseguisse conversar com o arduino! É necessário declarar alguma coisa para utilizar a comunicação com Bluetooth?

futepa

consegi usar o Bluetooth do PC para trocar Info com o arduino! Pelo q vi é frescura do Windows para conectar e liberar a porta certa! Agora realmente o problema! Q comando usara para fazer um arduino se conectar ao outro pelo Bluetooth?

Mortis

#2
Apr 29, 2013, 03:42 am Last Edit: Apr 29, 2013, 03:49 am by Mortis Reason: 1
Qual módulo ou shield bluetooth você esta usando? Pergunto porque para que um arduino conecte-se a outro um precisa estar configurado como master (capacidade de solicitar conexão) e o outro como slave.

Achei esse post, só passei os olhos por cima e parece ter o que precisas: http://blog.webtronico.com/?p=727

edit: encontrei esse outro http://www.instructables.com/id/BlueTooth-Link-with-auto-detect-connect/?ALLSTEPS

Se tiver dúvidas mais específicas é só dizer

GSCANDELARI

Olá a todos... tbm me encontro nesta situação, querendo utilizar dois modulos bluetooth para um protótipo de robô quadrupede e outro hexápode.

o código é simples, dentro do arduino, para se comunicar através de um modulo bluetooth

Code: [Select]
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop(){
char c = Serial.read();
if(c == '1') digitalWrite(13,HIGH);
else if (c == '0') digitalWrite(13,LOW);
}


mas como o Mortis disse, precisa ser configurado o modulo como master e outro como slave, assim, encontrei um link que diz respeito a isto... porém... não está muito bem claro como faz essa configuração. http://blog.webtronico.com/?p=727


Mortis

Fala ai GSCANDELARI,

O módulo que uso é apenas slave, para mudar o nome, baudrate, pin, eu uso comandos como exemplificado neste post do dx.com http://club.dx.com/forums/forums.dx/threadid.1166641, ou seja, é só imprimir na serial o comando AT.

Mas como pode ver no código do link do instructables, aquele módulo é diferente, não recebe comando padrão AT, deve ter uma tabela de comandos específica.

Veja o código que deste post: http://arduino.cc/forum/index.php/topic,154708.0.html. Só passei o olho, mas mostra como escrever os comandos rs

futepa

O modulo que estou usando é Esse http://produto.mercadolivre.com.br/MLB-477682323-modulo-transceiver-bluetooth-rs232-ttl-para-arduino-pic-_JM . Realmente eu vi algo sobre por em modo Master e slave! Mas nao achei nada que me ajudasse a configurar! Vou dar uma olhada nesses links q vcs postaram! Tô usando net no celular 2g, até religarem minha net! Mas vou ver se consigo ver td q vcs postaram! Valeu...

Mortis

#6
Apr 30, 2013, 01:58 am Last Edit: Apr 30, 2013, 02:03 am by Mortis Reason: 1
No anuncio tem três imagens, de dois módulos diferentes. Eu tenho aqui um igual a este:

mas ela é só slave =/

Tem alguma informação no verso da tua placa? Tipo MCU ou algo mais? Como você conseguiu parear com o PC, qual nome apareceu? Linvor 1.5 ou o que?

O que eu tenho é exatamente este hardware http://dx.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299 só que a versão é 1.05

Mortis

Creio que preciso de umas horas de sono, pois não vi o obvio, nas respostas o vendedor diz que é HC-06. Confirme isso, pois o HC-06 é apenas slave.

futepa

A versão que tem atrás da placa é a 1.05, acho q dancei nessa!

Mortis

Sinto muito pela má notícia.

Mas para ter certeza, usa a biblioteca SoftwareSerial e use o comando "AT+VERSION" para checar a vesão

futepa


Fala ai GSCANDELARI,

O módulo que uso é apenas slave, para mudar o nome, baudrate, pin, eu uso comandos como exemplificado neste post do dx.com http://club.dx.com/forums/forums.dx/threadid.1166641, ou seja, é só imprimir na serial o comando AT.

Mas como pode ver no código do link do instructables, aquele módulo é diferente, não recebe comando padrão AT, deve ter uma tabela de comandos específica.

Veja o código que deste post: http://arduino.cc/forum/index.php/topic,154708.0.html. Só passei o olho, mas mostra como escrever os comandos rs


Eu não entendi muito bem como usar esses comandos AT, pode por um exemplo para que eu consiga entender, eu fiz um codigo baseado no primeiro link, mas não mostrava nada para mim! não sei tb se estou conectando errado o arduino, pois eu fiz esse mesmo codigo e liguei o bluetooth na placa e a placa na usb, abri o monitor do programa do arduino, mas nada apareceu para mim!!

Mortis

Ok, primeiro testa só este exemplo:
http://arduino.cc/en/Reference/SoftwareSerial

Depois você entra no serial monitor, seleciona "no line ending" e digita os comando AT:

AT
deverá aparecer "OK" no serial monitor
AT+VERSION
deverá aparecer a versão na serial

Se você não conseguir, a noite eu posso tirar meu arduino e o módulo do fundo da gaveta e estar ;)

futepa

Mortis, eu upei esse codigo, inclusive ja tinha visto ele nos exemplos que vem no programa do arduino.Upei e testei, e incrivelmente, não apareceu nada...
Axo q eu devo estar fazendo alguma coisa de errado na montagem da placa.

Mortis

#13
May 01, 2013, 03:06 am Last Edit: May 01, 2013, 04:12 am by Mortis Reason: 1
Na verdade tens de ligar o TX e RX do módulo nas portas 11 e 10, consecutivamente, pois as portas TX e RX do arduino são usadas pela usb, pelo serial monitor.

Mortis

#14
May 01, 2013, 04:01 am Last Edit: May 01, 2013, 04:17 am by Mortis Reason: 1
Ok, vamos lá! ^^

Se o módulo estiver emparelhado com o PC, desemparelha, o led vermelho tem de estar piscando (modo de espera de conexão)
Conecta o RX do módulo na porta digital 10 do arduino e o TX na porta 11 (ou seja, TX do módulo no RX definido no softwareSerial e RX do módulo no TX definida no softwareSerial)

Faz o upload no código abaixo:
Code: [Select]

#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // RX, TX

long BaudRate[] = {300,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600,1382400};

void setup()
{
 Serial.begin(9600);
 Serial.println("Finding Baud");
 
 for(int x=0; x < 15;x++){
   Serial.print("Baud: ");
   Serial.println(BaudRate[x]);  
   
   mySerial.begin(BaudRate[x]);
   delay(10);
   mySerial.write("AT");
   delay(1000);
   
   if (mySerial.available()){
    String strData;
     while (mySerial.available()){
       strData += (char)mySerial.read();
     }
     Serial.println(strData);
     break;
   }
   mySerial.end();
 }
 //mySerial.begin(1200);
 //mySerial.begin(2400);
 //mySerial.begin(4800);
 //mySerial.begin(57600);
 //mySerial.begin(19200);
 //mySerial.begin(38400);
 //mySerial.begin(57600);
 //mySerial.begin(115200);
 //mySerial.begin(230400);
 //mySerial.begin(460800);
 //mySerial.begin(921600);
 //mySerial.begin(1382400);
}

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


Eu uso esse código porque sempre esqueço que porta baud eu configurei  :smiley-mr-green:

Ao iniciar o serial monitor você verá as linhas abaixo aparecendo:

Finding Baud
Baud: 300
Baud: 1200
Baud: 2400
Baud: 4800
Baud: 9600
Baud: 14400
Baud: 19200
Baud: 28800
Baud: 38400
Baud: 57600
OK

Neste caso, o meu módulo esta configurado com 57600 ^^

Digite no serial monitor os caracteres AT
deve aparecer ok
Digite AT+VERSION
se teu módulo for igual ao meu, aparecerá OKlinvorV1.5, ou seja "OK" como resposta ao reconhecimento do comando e "linvorV1.5" que é a versão do firmware.

Edit: tentei ser mais claro em relação às portas ^^

Go Up