Interface entre Arduino e Android com Bluetooth: Aplicação Final

Arduino e Android bluetooth
Este post faz parte da série Arduino e Android com Bluetooth. Leia também os outros posts da série:

Olá galera, vamos continuar com o nosso tutorial sobre a Interface entre Arduino e Android com Bluetooth. Para acompanhar este artigo é necessário que você tenha lido o anterior.

 

Bom, no artigo anterior nós fizemos o design/layout, agora vem uma parte que é um pouco mais complicada, mas não é nenhum bicho de sete cabeças. Vamos lá, para começar iremos fazer algumas configurações, primeiramente vá aos componentes:

 

bluetooth-componentes
Figura 1 -  Componentes do aplicativo

 

E clique em BluetoothClient1. Em seguida, desmarque a opção Secure

 

bluetooth-secure
Figura 2 - Opção Secure

 

 

Desativamos o Secure para que o módulo Bluetooth ou seu celular não fique pedindo senhas na hora do pareamento. Agora, nessa tela de componentes você irá clicar em ActivityStarter1 e no campo Action você deverá escrever essa linha de código:

 

Android.bluetooth.adapter.action.REQUEST_ENABLE 

 

bluetooth-action
Figura 3 - Campo de ação

  

Agora temos que clicar em Clock1 (também está nos componentes) e reduzir o tempo de 1000 para 100.

 

bluetooth-clock
Figura 4 - Ajustando o clock

 

Pessoal, essa parte de pequenas configurações realmente é um pouco chata, mas  acabou! Agora vamos dar vida ao nosso aplicativo, com códigos é demais... Bora lá!

 

Agora você precisa ir em BLOCKS e montar essa programação:

 

bluetooth-variavel
Figura 5 - Declarando uma variável

 

Adicione essa variável para armazenarmos o que vier do bluetooth. Acrescente:

 

bluetooth-programando-tela
Figura 6 - Programando o inicio da tela

 

Nesse código, temos uma função que quando iniciarmos o aplicativo e o bluetooth não estiver conectado, então, vai chamar a função de ativação. Acrescente:

 

bluetooth-programando-bt-conectar
Figura 7 - Programando o botão de conectar

 

Nesse pedação de código, temos o seguinte: Quando você clicar no botão de conectar e o app já estiver habilitado e conectado, então, ele vai desconectar e mudar o nome do botão para CONECTAR, e também vai abrir a lista (call ListPicker1.Open). Agora, se o bluetooth não estiver habilitado, vai aparecer um alerta na tela com a opção de habilitar. Entretanto, precisamos dar vida a esse alerta, então, vamos fazer essa função:

 

bluetooth-programando-alerta
Figura 8 - Programando o alerta

 

Essa função determina que se a sua escolha no alerta for sim, o aplicativo vai chamar a função de ativar o bluetooth (ActivityStarter1).

 

Agora vamos montar o nosso botão de envio, para acender e apagar o LED, para isso, monte esse código:

 

bluetooth-programando-bt-led
Figura 9 - Programando o botão do led

 

Bom, nesse pedaço temos o seguinte: se o botão para acender o LED for “clicado”, ele verifica se o bluetooth está conectado e se estiver, ele manda o caractere “a” pro Arduino. Já já vamos ver como isso irá funcionar dentro do código do Arduino.

 

Agora, acrescente ao seu código essa função:

 

bluetooth-programando-listpicker
Figura 10 - Programando o ListPicker

 

Esse pedaço de código irá ter a função de listar os dispositivos bluetooth disponíveis para pareamento. Antes de executar o ListPicker, acrescente também ao seu código essa função:

 

bluetooth-programando-listpicker
Figura 11 - Programando o ListPicker

 

Essa função vai ser executada, depois de termos a lista de dispositivos Bluetooth disponíveis para pareamento, então, se você escolher conectar em algum bluetooth disponível. O app vai conectar e aparecerá o alerta: “O bluetooth está conectado!!!!”, se você clicar para conectar e algum bluetooth da lista e ele não conectar, então, aparecerá o alerta “Não houve sucesso ao conectar!!!!”

 

Agora vamos programar nossa função TIMER, acrescente ao código:

 

bluetooth-programando-timer
Figura 12 - Programando a função TIMER.

 

Esse pedação de código é difícil de explicar, você já deve estar familiarizado com as estruturas condicionais, alertas, funções e etc... Então, tente olhar para esse pedaço de código e tente compreender. Enfim, esse pedaço de código, vai ter o papel de receber os bytes do Arduino, ou seja, estamos trabalhando com um ping e pong, eu mando uma ordem pro Arduino ele recebe e me manda de volta o resultado. Esse pedaço de código tem a função de receber do Arduino os caracteres “1on” e “1off” para termos uma noção se o LED está aceso ou não.

 

Dessa forma, se o Arduino nos mandar os caracteres “1on” o LED está aceso, e se ele nos mandar os caracteres “1off”, o LED está desligado.

 

Se você está lendo até aqui, você é um guerreiro e saiba que você é motivo de orgulho e felicidade pra mim, por estar lendo meu artigo. Boa notícia, o código do APP acabou, bora pro Arduino! Abra sua IDE e digite esse código:

 

int Led13 = 13;

boolean status13 = false;

void setup() {
 
  Serial.begin(9600);
 
  pinMode(13, OUTPUT);
  digitalWrite(13,LOW);
}

void loop() {
  char cerebro = Serial.read();
 
  int leitura = digitalRead(13);
 
  if(leitura == HIGH){
	if(status13){
  	digitalWrite(13, LOW);
  	status13 = false;
  	Serial.println("1off");
	}
  }
	else {
  	digitalWrite(13, HIGH);
  	status13 = true;
  	Serial.println("1on");
	}
	delay(300);
 
 
  if(cerebro == 'a'){
  	if (status13){
  	digitalWrite(13, LOW);
  	status13 = false;
  	Serial.println("1off");
	}
  }
	else{
  	digitalWrite(13, HIGH);
  	status13 = true;
  	Serial.println("1on");
	}
}

 

Agora segue o esquema do módulo bluetooth HC-05 com o Arduino:

 

bluetooth-circuito
Figura 13 - Esquema do módulo no Arduino UNO

 

Bom, não quero que você apenas copie, cole e compile. Vamos tentar entender tudo. Primeiramente configuramos o pino do LED e acrescentamos um boolean. Na estrutura do void loop temos o seguinte, ele vai ler o status do LED, e se o LED estiver apagado, ele vai enviar os caracteres “1off” para o aplicativo. O aplicativo vai receber os caracteres “1off”, e aí vai acontecer tudo aquilo que expliquei e programamos no aplicativo. Bom ao ler o status do LED e o mesmo estiver aceso, então o Arduino vai enviar os caracteres “1on” para o aplicativo. Agora, se o aplicativo enviar o caractere ‘a’ pro Arduino, aí o Arduino vai ler o status do LED e se ele estiver apagado vai acendê-lo e mandar os caracteres “1on” de volta para o aplicativo. Caso contrário, ele vai apagar o LED e mandar os caracteres “1off” de volta para o aplicativo. E é assim que funciona essa comunicação, é um constante ping-pong.

 

Enfim, espero que tenham aprendido e gostado, muito obrigado por acompanhar e até a próxima.

Outros artigos da série

<< Interface entre Arduino e Android com Bluetooth: Primeiros passos
Este post faz da série Arduino e Android com Bluetooth. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Bruno Garcia
Estudante de análise e desenvolvimento de sistemas no Instituto Federal de São Paulo, desenvolvedor web, apaixonado por segurança da informação e admirador de movimentos open-source

15
Deixe um comentário

avatar
 
12 Comment threads
3 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
14 Comment authors
LeonardoChateauGustavo S.Reginaldomarcos patricio sanfelice Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Leonardo
Visitante
Leonardo

No exemplo está sendo enviado um texto "a", mas eu preciso enviar o valor variante de um slider. Como faço isso?

Chateau
Visitante
Chateau

Excelente trabalho!! Já a alguns dias estou procurando algum material que me oriente para parear o módulo bluetooth HC-05 ou HC-06 diretamente pelo App, sem a necessidade do usuário digitar senha ao parear. Alterei a senha(PIN) do meu módulo HC-06 e gostaria que apenas o meu App(que sabe a senha) possa se comunicar com o módulo Bluetooth. Você tem algum material que explica como proceder nesta configuração?

Gustavo S.
Visitante
Gustavo S.

Boa tarde Bruno,
Tens interesse em desenvolver um aplicativo Android/IOS para comunicação BT em ioT? Caso afirmativo entre em contato pelo e-mail abaixo. Obrigado!

Reginaldo
Visitante
Reginaldo

Caro Bruno, parabéns pelo texto. Bem didático para quem faz DIY, como hobby.
Tire-me uma dúvida. O módulo wifi que vc usou me parece ser o HC-05 (ou 0 HC-06) que tem o nível RX em 3.3V. No entanto, vc ligou diretamente no pino TX do Arduino, que tem nível 5V. Tenho visto, em geral, a recomendação de se usar um divisor de tensão resistivo para permitir esse nível de 3V no módulo.
Pergunto: há ou não há necessidade desse divisor de tensão? O HC-05 resiste a essa sobretensão?

Obrigado pela resposta.

marcos patricio sanfelice
Visitante
marcos patricio sanfelice

ola estou tendo problemas com o bloco if then else,,, por algum motivo a imagem nao acopla nos outros modulo,, o que estou fazendo de errado..

raghu faria
Visitante
raghu faria

Cara, muito bom seu artigo, valeu demais. Estou com uma duvida, na programação, quando carrego o programa na IDE do arduino o led 13 fica piscando bem fraco, porem fica piscando. Quando abro o monitor serial, fica mostrando 1on e 1off o tempo todo..Tem como da uma ajuda?Obrigado

Geovane Santos
Visitante
Geovane Santos

BRILHANTE POSTAGEM MAS NAO ENTENDI AINDA A FUNCÃO DO "a"que seria enviado ao arduino,o fato de simplesmente ter 1on e 1off nao bastaria??

Igor Sousa
Visitante
Igor Sousa

Ótimo artigo, parabéns!

Jessica Gross
Visitante
Jessica Gross

Olá, estou fazendo um projeto e queria saber se você sabe como fazer um alerta caso o Bluetooth desconece sozinho depois que ultrapassou 5 metros?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Jéssica, você pode fazer algo com Beacon: http://makernews.info/featured/2015/09/BLE-nrf24l01-arduino.html

Vanderley Di Paula
Visitante
Vanderley Di Paula

Boa noite Bruno .... cara achei excelente seus artigos, vc foca bem os detalhes muito bom mesmo, continuo aguardando seu proximo artigo, só uma coisa pra eu baixar este aplicativo no meu celular é só eu clicar no upload file ?? porem estou fazendo a programaçao pelo computador, como baixo para o celular ?? desculpe minha ignorancia, mas quem nao pergunta nunca saberá né rsrsrs