usando 2 modulos Bluetooth

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?

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?

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

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

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

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 DX New Forum – Discuss Cheap Electronics and Find Smart Tech Here, 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

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...

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 Recommendations For You - DealeXtreme só que a versão é 1.05

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.

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

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

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 DX New Forum – Discuss Cheap Electronics and Find Smart Tech Here, 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!!

Ok, primeiro testa só este exemplo:

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 :wink:

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.

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.

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:

#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 :grin:

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 ^^

Mortis, valeu ai pela explicação, não sei se vc olhou a imagem q postei, o maior dos meus erros ja era previsto, foi um probleminha com os fios da placa, ja q no proprio arduino tem portas com o nome tx, rx e eu estava usando elas porem declarando as portas 11 e 10, ate ai eu axava q era um simples capricho de qm inventou isso imprimir na placa tx e rx nas posições 0 e 1 mas configura=las como 10 e 11.

Mesmo com medo de fazer merda troquei realemente para as portas 10 e 11 do arduino e deu certo o codigo!!

versão da minha placa bluetooth: OKOKlinvorV1.5

PQ VC NAUM ME DISSE ISSO ANTES!!!!

Brigadão cara!

Mas finalmente, é possivel por essa placa em modo master??

Que bom que funcionou!

Bad new, tua placa é apenas slave (conhecida como HC-06), mesma versão da minha.

Ah, e cuidado se for comprar outro (ou se for o caso do teu), eu tinha dois módulos, em um o TX trabalha com 5v, no outro com 3.3v. Uma vez confundi os módulos e coloquei um na breadboard do outro e puft, matei o TX (3.3v) do módulo.

Nestas brincadeiras temos de ter atenção! :wink: