




Para desenvolver o nosso IHM, iremos utilizar uma ferramenta totalmente online e gratuita de desenvolvimento e muito legal. Foi criada pelo MIT (Massachusetts Institute of Technology) chamada App Inventor. 

Aqui mesmo no blog da Eletrogate existe um post do Vitor Vidal, super completo sobre a tecnologia e sobre o módulo que iremos usar, o HC-05. Tudo que você precisa saber sobre ele está aqui:
Recomendo muito a leitura!
//cria a variável que vai receber o dado do IHM
char incomingByte;
void setup() {
//inicializa o pino 13, ligado ao led onboard da placa
pinMode(LED_BUILTIN, OUTPUT);
//inicia a comunicação Serial
Serial.begin(9600);
}
void loop() {
//verifica se existe algum dado na Serial
if (Serial.available() > 0) {
//lê o dado recebido e define na variável incomingByte
incomingByte = Serial.read();
}
switch (incomingByte) {
// caso (incomingByte igual a 'a')
case 'a':
//define o estado do led como HIGH
digitalWrite(LED_BUILTIN, HIGH);
//envia uma msg para o IMH com o estado do led
Serial.println("led ligado");
break;
// caso (incomingByte igual a 'b')
case 'b':
//define o estado do led como LOW
digitalWrite(LED_BUILTIN, LOW);
//envia uma msg para o IMH com o estado do led
Serial.println("led desligado");
break;
}
//limpa o valor da variável
incomingByte = ' ';
}
Eu fiz o arduino enviar uma resposta ao receber o comando do IHM. Dessa maneira posso demonstrar a comunicação tanto de recebimento como de envio de dados nas duas pontas.Note que o protocolo Bluetooth é compatível com a Serial do Arduino. Logo, não há a necessidade de importar bibliotecas ou mesmo criar classes, objetos ou eventos específicos para a comunicação. Você programa exatamente como se estivesse enviando e recebendo dados direto na porta Serial. E... Na verdade é isso mesmo o que está acontecendo!
Você pode até mesmo testar o programa enviando os comandos e recebendo as respostas pela Serial Monitor da IDE do próprio arduino!
Isso por que o módulo HC também usa comunicação serial e se encarrega de passar a mensagem para frente e de escrever na serial do arduino tudo o que ele recebe do celular! Legal né!?Na páina inicial (https://appinventor.mit.edu/) clique em Create Apps!
Faça login com sua conta Google:
Aceite os termos:
Esta é a tela inicial, basta fecha-la:
Uma tela com links para tutoriais se abrirá (aconselho a dar uma olhada mais tarde)
Finalmente chegamos na tela de projetos, vamos criar um novo, clique em Start New Project:
Na tela de Nome de pojetos, coloque LED_CONTROL (ou o nome que preferir)
E finalmente esta é a tela de desenvolvimento:
Nos menus a esquerda você encontra os itens que podem ser adicionados a tela clicando e arrastando. Em user interface estão todos os itens de interação como textos, caixa de texto, botões, check box etc. Ainda no lado esquerdo acessamos outros submenus com mais funcionalidades que podem ser adicionadas . Já no lado direito, temos acesso as propriedades da tela e dos componentes adicionados. (Components e Properties).
Em Seguida, clique em ListPicker, segure e arraste para a tela.
Sua tela deve ficar assim:
Por fim, clique em Button, segure e arraste para a tela.
Repita o procedimento 2 vezes.
Sua tela deve ficar assim:
Agora vamos configurar os objetos.
Nos menus a direita em Components clique em 'Label1' e em Properties vá em Text e esceva: 'Status: '
Depois clique em Rename e em New Name escreva 'lbl_stats':
Renomeie Label2 para lbl_msg e em Text coloque 'msg recebida: '
Renomeie ListPicker1 para btn_connect e em Text coloque 'Conectar'
Renomeie Button1 para btn_discocnnect e em Text coloque 'Desconectar'
Renomeie Button2 para btn_led_on e em Text coloque 'Ligar Led'
Renomeie Button3 para btn_led_off e em Text coloque 'Desligar Led'Sua tela agora deve ficar assim:
E por ultimo os componentes. No menu a esquerda vá em Connectivity, clique em BluetoothClient.
Segure e arraste para tela
Sua tela deve ficar assim:
Note que esse componente foi expulso automaticamente da tela e foi parar embaixo de "Non-visible components"
Isso aconteceu por que esse componente é um objeto "puramente manipulador de dados" e não tem nenhuma interface visual (e nem faz sentido ter, pelo propósito do qual ele foi criado)
E todos componentes sem interface vão pra esse lugar (só deles)!E finalmente, no menu a esquerda vá em Sensors, cliquei em Clock.
Segure e arraste para tela.Em Properties, deixe TimeInteval em 5:
Sua tela final deve ficar assim:
No canto superior direito. clique em Blocks:
Bem-vindo a tela de programação do App Inventor!
No menu à direita temos os blocos de construção (built-in) e os objetos (Screen1).
Ao clicar nos itens dessa lista um menu irá se abrir com os blocos correspondentes. Tudo que você tem a fazer é selecionar os blocos que vai usar e arrastar para a tela (igual fizemos no layout).
Apenas blocos que se complementam encaixam-se entre sí. Isso já previne de antemão erros de lógica. E erros de sintaxe tb são evitados, pois os comandos estão todos em blocos e você não precisa digitar nenhum deles!


Em seguida, rolando o menu para baixo, procure:
Agora no menu Blocks, procure por Bluetooth Client1 procure os elementos mostrados na imagem no menu e arraste para viewer.
Depois arraste btn_connect.Selection e encaixe no bloco roxo de Bluetooth:
Em Blocks clique em lbl_status, no menu procure por set lbl_stats.Text e arraste dentro de btn_connect.AfterPincking
Em seguida, eem Blocks cliquei em Text, então, arraste o primeiro bloco e encaixe no bloco adicionado anteriormente.
Dê dois cliques em cima do quadradinho entre aspas e digite:
"Status: Conectado"
Ou qualquer mensagem que deseje mostrar na tela de seu app
Pronto! A programação de conexão está finalizada!
Já deu pra pegar o jeito no negócio, né?Então daqui pra frente (para não extender muito mais) vou mostrar somente os blocos pontos para você seguir e montar:
Se está na dúvida de onde encontrar os blocos no lado direito, você pode se basear pela corPara o botão de desconectar faça:
Para os botões de led:
Para monstar a resposta do arduino na tela:
Para o controle de led pelo movimento:
Nota: Para quem já programa e está familiarizado com funções, no App Inventor elas recebem o nome de Procedures.Paa criar uma Para poder visualizar o programa no seu celular e posteriormente gerar um arquivo executável (.apk) você precisa ter instalado - no seu celular - o aplicativo do AppInventor:
Basta procurar por AI2 Companion na Goole AppStore, ou clicando aqui:
https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3O programa é gratuito e a última versão (até o momento desta postagem) atualizada em 31 de Agosto de 2020 tem 15M.O procedimento aqui é absurdamente simples, vamos ao passo a passo:No menu superior vá em: Connect, depois em All Companion:
um QR-code irá se abir:
Abra o app no seu celular, clique em scan QR code ou digite o código que aparece na tela.
Aguarde o app sincronizar e pronto!
Os módulos bluetooth permitem a conexão com diversos componentes, até mesmo, smartphones e tablets além de um alcance muito bom e uma velocidade rápida de comunicação que atendem a grande maioria dos projetos. Por trabalharem nativamente com comunicação serial, não exige nenhum trabalho extra além da própria comunicação serial do arduino.O App Inventor apesar de limitado no dev de layouts mais elaborados, tornam a troca de dados entre Arduino e celular extremamente fáceis de programar através dos blocos. E para as demais funcionalidades também não exige muito conhecimento em programação. Porém pode ser um pouco contra produtivo para programadores mais avançados. Outra vantagem é que não existe instalação de ambiente de produção (IDE) nem pacotes adicionais, no computador. Apenas o próprio app da AppInventor no celular, tudo feito online. Em linhas gerais, para aplicativos pessoais com finalidade de aprendizado e familiarização com dev de app é uma ótima e poderosa ferramenta.
Se você precisa de uma IHM, que não tenha a necessidade de controles físicos reais - ou seja: controles digitais virtualizados em uma tela - com certeza essa é uma das soluções mais simples, rápidas e relativamente baratas para seu projeto.
|
Neste post você vai aprender a criar uma interface sem fio no seu celular ou tablet para gerenciar seu projeto com Arduino.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200