Microcontroladores , Open Hardware , Open Software e Tecnologia em Geral
Blog do Je » Page 'Modem Bluetooth no Arduino'

Modem Bluetooth no Arduino

Realizei alguns testes com o módulo bluetooth fornecido pela Seeedstudio. O módulo funcionou de primeira sem nenhum problema. Para testa-lo, usei a minha velha Palm Tungsten T5, de quem não consigo me livrar mesmo depois do N95. Construi um exemplo bem simples de comunicação através da porta serial default do Arduino, que me permitiu avaliar a transmissão simultaneamente com a recepção:

/*
Module: Blue1
Author: Jeronimo da Silva Avelar Filho
Date: 08/10/2009
Description:
Teste do modulo bluetooth conectado a porta serial hardware do Arduino
- O Arduino a cada 1 segundo envia um valor inteiro para testar
a transmissão
- Arduino verifica a recepção de caracteres , se vier '1' acende o led
ligado ao pino 13. Se chegar '2' apaga o led ligado ao pino 13
*/

int char_in = 0;         // byte recebido na porta serial
int led = 13 ;
int out = 0 ;
unsigned long tempo ;
unsigned long tempoEspera = 1000 ; // 1000 milisegundos = 1 segundo
void setup()
{
  // configura a serial para 115200 bps:
  Serial.begin(115200);
  pinMode(led, OUTPUT);   // configura pino 13 como saida para o led
  tempo = millis() ;      // pega a qtd de milisegundos desde que ligou o arduino
}

void loop()
{
  verifica_entrada() ; // verifica se recebeu caracteres
  envia_mensagem() ;   // envia inteiro pela serial
}

void envia_mensagem() {
  // se ja se passou 1 segundo envia o inteiro e incrementa o seu valor
  if ((millis() - tempo ) > tempoEspera) {
    Serial.println(out++) ;
    tempo = millis() ;
  }
}
void verifica_entrada() {
  // se tem um byte na porta serial
  if (Serial.available() > 0) {

    // pegue o caracter que chegou
    char_in = Serial.read() ;  

    // verifique se o caracter é valido
    if(char_in != -1) {
      switch (char_in) {
        case '1':
        // se for o caracter 1 ligue o led
          digitalWrite(led,HIGH) ;
          break;
        case '2':
        // se for o caracter 2 desligue o led
          digitalWrite(led,LOW) ;
          break;
      }
    }
  }
}

O modulo apresenta uma dificuldade : ele é fornecido em formato SMT e precisei criar uma breakout board para poder usá-lo. Se fosse um bluesmirf da Sparkfun viria tudo montadinho e pronto para usar mas teria custado umas tres vezes mais do que este módulo.

O módulo funciona com 3.3 v mas é tolerante a i/o em 5 volts desde que alimentado em 3.3 v. O seeduino possui chaves que pemitem configura-lo para alimentação em 3.3v onde utiliza seu regulador interno para gerar esta voltagem, a partir dos 5 volts da alimentação principal externa ou via USB. Muito prático.

O unico problema deste modem é a documentação muito fraquinha, mas como usa chip da CSR eu acredito que vou encontrar os comandos que faltam, como verificar se está conectado, dispositivos existentes na area, conexão a um dispositivo especifico, qualidade do sinal, etc. Em tempo, a senha de pareamento default é “1234″ e não “0000″ como escrito no site.

Links:
Modulo bluetooth da Seeedstudio
Seeduino 168

Download:
Arquivo Eagle com versão preliminar do esquema da breakout board
Biblioteca Eagle para o módulo Bluetooth

Gostou deste post ? Divulgue !
delicious digg google
stumbleupon technorati Yahoo!

26 commentarios to “Modem Bluetooth no Arduino”

  1. Muito legal este módulo BT ! Affordable ? Sempre vi com preços elevados.

  2. Marcelo,
    Chega barato : custa US$ 19,50 e o frete da china para o brasil é de US$ 3,00 dolares via correio com tracking.

  3. Parabéns Je!

    Estamos fazendo isso mas com outros hardwares. quanto pagou no seu modulo bt?

  4. Wagner , dá uma olhada na resposta anterior.
    Abs

  5. ficou massa a breakout.
    estou com um modulo idêntico a esse, mesmo chipset., estou fazendo a breakout dele.

    andei pesquisando e encontrei nesse forum algumas coisas a mais sobre o bluesmirf que pode ser que funcione nesse modulo. Já testou?

    abraços

  6. esqueci de postar o link do forum. http://forum.sparkfun.com/viewtopic.php?p=42073

  7. Valeu pela dica Bruno, vou verificar se funcionam.
    jeronimo

  8. Boa noite Je! Então tenho pensado em adquirir um modulo bluetooth pra substituir o usb do meu arduino, esse modulo consegue fazer essa função, não? Ah, fiquei com outra dúvida, o link que vc postou redirecionou pra um “Serial port bluetooth module (master)” eu achei outro no site pelo mesmo valor só que slave, vc sabe me dizer a diferença?
    Valeu, abraços e parabén pelo blog!!!!

  9. Leandro, Não testei ainda mas vou verificar. Quanto ao link , na epoca que comprei o meu modulo ainda não havia a distinção entre master e slave.

  10. Jeronimo, você somente fez testes usando o palm?
    estou aqui tentando conectar o computador ao adaptador e tah um sufoco só

    abraços

  11. Bruno ,
    Usei inicialmente a T5 porque o programa de teste de bluetooth que tenho nela é muito simples para testes rápidos, Neste momento estou testando com um celular N95 com python , sem problemas. Depois irei testar com Linux e python e colocarei os resultados.

  12. Jeronimo, olhando rapidamente as imagens do teu circuito vi que tem coisas a mais que o meu. No meu somente liguei tx, rx vcc e gnd. O seu parece que tem algumas coisas alem. Pode me passar o esquema?

  13. Bruno.
    O esquema está disponível para baixar e está no post, abaixo do titulo “Download:”. É um arquivo zip contendo o esquema e a pcb e para abrir use o programa EAGLE CAD ( download em http://www.cadsoftusa.com/ ).
    Boa sorte !

  14. Fala Jê, entrei em contato com o pessoal da Seed Studio perguntando com qual modelo poderia conectar meu arduino com o PC e enviar programas para ele, recebi a seguinte resposta: “The slave module should be OK.
    Serial data communication well.
    But the current version Bluetooth module cannot program Arduino.”
    ou seja, segundo eles, posso usar o módulo Slave para a comunicação, porém não dá para transferir os programas para o Arduino, parece que aquela minha idéia não vai rolar!! :(
    Abraços, se vc, ou alguém, conseguir me dá um toque!!
    Valeu!!! ;)

  15. Puxa que legal! Tô aqui com meu kit Arduino e doida pra mexer! Já vi que vou frequentar esse blog :)

  16. Nos temos tambem um parecido aqui no BRASIL.

    http://www.basic4ever.com/bluetooth.shtml

  17. Miguel,
    Muito boa a sua dica de modulos bluetooth aqui no Brasil.

  18. Boa tarde Je!

    Cara tem como fazer um tutorial desses utilizando o WT11 da Bluegiga?

    Ou mesmo me indicar algum já feito pode ser em inglês mesmo!

    Eu sou extremamente iniciante no área do arduino porém estou desenvolvendo um projeto que involve comunicação bluetooth.

    Nas minhas pesquisas eu encontrei o WT11-E-AI3 (que é o mesmo chip bluetooth utilizado pelo ArduinoBT) por apenas U$29.33 na semiconductorstore.com que pra quem não sabe é uma loja online que tem um braço aqui no Brasil!!

    Link do Chip:
    http://www.semiconductorstore.com/cart/pc/viewPrd.asp?idproduct=42055

    Meu interesse nesse chip é o seu firmware que tem muitas funções e também pela biblioteca de códigos que pode ser encontrada no site oficial da arduino!

    Tem como você me ajudar cara?

    Mais uma dúvida com esse chip que você utilizou tem como conseguir uma lista dos dispositivos próximos e seus respectivos RSSI’s ?

    Muito Obrigado!

  19. Boa tarde Je!
    Parabéns pelo projeto! Muito interessante!
    Estou utilizando a tecnologia bluetooth no meu trabalho de diploma da universidade.
    Gostaria de saber como você pareou o palm com o arduino+BT ? E como você faz para um programa enviar continuamente uma informação serial para um arduino+BT?
    Obrigado!

  20. O Palm Tungsten tem funçoes para pareamento e discovery de dispositivos perto dele. Para testar usei um programa freeware para Palm chamado BTSerialPro. No Arduino é só ficar lendo a porta serial , ele ignora que tem uma interface bluetooth ligado nela.

  21. Je, você conhece algum programa que poderia substituir o BTSerialPro para que eu possa utilizar no PC ou MAC ao invés de utilizar um Palm?
    Estamos utilizando o MatLab. Seria possível parear e enviar informações do matlab continuamente através do bluetooth para o arduino+BT?
    Obrigado!

  22. Maskin ,
    Eu testei no linux , Ubuntu 9.10 e usei comandos do proprio sistema operacional para enviar os caracteres de teste do exemplo acima. No meu Ubuntu eu tenho instalado o blueman-manager ( http://blueman-project.org/ ) , que é uma aplicação grafica muito prática e amigável para visualizar os dispositivos bluetooth em volta, fazer pareamento e conectar. Depois que o dispositivo é identificado, voce realiza o pareamento e conecta com o modem-bluetooth. Neste momento é criado um dispositivo no Ubuntu chamado /dev/rfcomm0, que emula uma porta serial. Dai para frente voce pode usar o minicom ou mesmo dar os comandos abaixo para verificar o funcionamento:
    Ligar o led : $ echo 1 > /dev/rfcomm0
    Desligar o led : $ echo 2 > /dev/rfcomm0

    Acredito que no MAC seja bem semelhante ao Ubuntu. No Windows 7 , usei o programa hyperterminal apos o modem ter sido reconhecido , pareado e associado a uma porta COMX pelo sistema.

    Não conhecço o suficiente do MATLAB para te orientar mas se ele fala com uma porta serial normalmente, então ele irá funcionar com este modem bluetooth sem problemas, será só associa-lo a porta serial que o sistema te disponibilizar.

    Boa Sorte !

  23. Muito obrigado pelas dicas de Ubuntu!
    Eu tava apanhando faz um tempo já pra configurar…

    []s

  24. Je,
    conectei apenas o Tx, Rx, Vcc, Gnd, led 1 e led 2 (PIO10 e PIO11), utilizando o Bluetooth Module da Seeed Studio. Quando ligo, fica piscando o led indicando que não está conectado (pisca 2x/s) e o led do Tx fica aceso constante, e quando tento encontrar o dispositivo com o celular ou o laptop não aparece nenhum dispositivo, então não consigo pareá-lo.

    Você sabe se eu preciso conectar mais algum pino? Pelas fotos da sua conexão não está dando pra ver direito, mas me parece que você conectou o STS da sua breakoutboard. Nos esquemas que você postou no final do post num encontrei as conexões entre o arduino e o BT, mas dá pra ver que você fez algumas outras conexões.

    Obrigado!

  25. Maskin ,
    É suficiente conectar apenas o TX,RX e GND para comunicar com o modem Bluetooth. Revise as ligações , sugiro verificar se as conexões de TX e RX não estão invertidas . O funcionamento deste modulo é muito simples.
    Atenção para a alimentação do módulo que é 3.3 Volts.
    Boa sorte !!!

  26. Estou com a versao 2.0, sinal muito melhor, mas ainda classe II.

    http://www.basic4ever.com/bluetooth.shtml

    Obrigado

Deixe um comentario

XHTML - Voce pode usar:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Topo da página / Assinar para receber novos Posts (RSS)