- Interface entre Arduino e Android com Bluetooth: Primeiros passos
- Interface entre Arduino e Android com Bluetooth: Aplicação Final
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:
E clique em BluetoothClient1. Em seguida, desmarque a 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:
1 |
Android.bluetooth.adapter.action.REQUEST_ENABLE |
Agora temos que clicar em Clock1 (também está nos componentes) e reduzir o tempo de 1000 para 100.
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:
Adicione essa variável para armazenarmos o que vier do bluetooth. Acrescente:
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:
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:
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:
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:
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:
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:
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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:
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.
Faz no Android Studio programar em bloquinho nem é programação
No exemplo está sendo enviado um texto “a”, mas eu preciso enviar o valor variante de um slider. Como faço isso?
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?
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!
Qual seu email?
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.
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..
Muito interessante!
Mas faltou a cereja do bolo: como fica a tela no Android ao ser executada a App?
Fica exatamente como a figura 10 do primeiro artigo! Abraços e obrigado!
Ola Bruno ! Eu fiz tudo como vc mostrou mas não duas coisas no meu não funcionam: 1º no app. quando clico em conectar ele não conecta o bluetooth tenho que habilitar eu mesmo senão o app não liga e 2º quando vou testar o liga e desliga nada acontecem com o led… o que será que está errado? pois já revisei toda a programação e nada aparentemente está errado,
Me ajude por favor…
Olá me envie um e-mail, assim posso te ajudar melhor… [email protected]
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
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??