Aprenda a criar uma aplicação para Android facilmente com o App Inventor 2.
No campo da robótica e dos objectos conectados, uma das funcionalidades mais interessantes de se implementar é o comando à distância de um projecto eletrónico. Seja para exibir valores vindos da sua casa ou para pilotar um drone, uma solução possível é desenvolver uma aplicação para Smartphone e comunicá-la com um microcontrolador via Bluetooth. Essa aplicação pode ser criada rapidamente com o App Inventor 2 (AI2), um software online do MIT.
Equipamento
- Computador
- Smartphone Android com uma aplicação de leitura de QR Code
- Arduino UNO
- Bluetooth HC-06
- Cabo Dupont F/M
Criação da Aplicação AI2
Neste exemplo, criaremos uma aplicação para ativar uma função (ON/OFF) e para recuperar uma medida de um sensor de uma placa Arduino. Este tutorial também serve para muitas outras aplicações.
Inscreva-se no site App Inventor 2.
Crie um novo projecto myApp

O ecrã de design do projecto irá aparecer

Configuração da Aplicação AI2
Para criar o design da nossa aplicação, iremos utilizar os objectos disponíveis nas abas do menu suspenso à esquerda do ecrã e modificar suas configurações, que aparecem à direita da tela.
Em User Interface, inclua um objecto label e renomeie-o como titleLbl. Ele irá conter o título da aplicação myApp.

Em Layout, inclua um objecto VerticalArrangement, que permite alinhar os objectos verticalmente.

No objecto VerticalArrangement, coloque um label btStatusLbl e em seguida um ListPicker btBtn, que servirão para gerenciar a conexão Bluetooth.

Acrescente em seguida um label sensorLbl, que conterá o valor recebido da placa Arduino.

Acrescente um HorizontalArrangement, que permite dispor e alinhar os objectos na horizontal. Ele conterá os botões que permitem ativar a função do Arduino.

No ‘HorizontalArrangement, inclua dois botões: onBtn e offBtn.

Então, em Connectivity, inclua um objecto BluetoothClient, que permitirá interagir com o dispositivo Bluetooth.

E em Sensor, acrescente dois objectos Clock, que permitirão enviar e receber dados a intervalos de tempo regulares.

Pode personalizar a sua aplicação como desejar, utilizando diferentes cores, fontes ou imagens.

Programação da Aplicação AI2
Para programar a aplicação, o AI2 oferece o Scratch, que possibilita criar um programa na forma de diagrama de blocos. A utilização é muito simples, mas exige um pouco de lógica de programação.
Todas as funções são disponíveis clicando nos objectos do menu suspenso à esquerda da tela. Seleccione as funções dos objectos que acrescentou na aplicação, assim como as dos objectos Variables, Text, Math e Control, que iremos utilizar.

Crie a lista dos módulos Bluetooth disponíveis no dispositivo.

Gerencie o estabelecimento da conexão e modifique status em função da conexão.

Uma variável global “command” é definida para salvar na memória o valor fornecido pelo último botão apertado (ON ou OFF).

Enviamos o valor da variável “command” via Bluetooth, se ele estiver conectado, com uma frequência definida pelo objecto Clock1.

Para receber o valor do sensor enviado do Arduino, verificamos se os dados estão disponíveis no buffer com uma frequência definida pelo Clock2. Em seguida, exibimos esse valor em sensorLbl.

Código completo
Uma vez todos os blocos colocados na interface e configurados, o código deve ter este aspecto.

Compilar e compartilhar a sua aplicação
Quando o programa Scratch estiver corretamente configurado e não aparecer erro algum, tenha em mãos uma aplicação de leitura de QR Code e compile o programa, utilizando o menu Build > App (provide QR code for .apk)

Após gerar o QR Code, poderá descarregar e instalar a aplicação no seu Smartphone.

Pode compartilhar o instalador da sua aplicação .APK para Android, ou compartilhar o projecto .AIA para que outras pessoas possam modificá-lo.
Exporte para criar o ficheiro AIA correspondente no seu computador

Importe para abrir um ficheiro AIA na aplicação online e modificar o projecto

Código Arduino
Veja abaixo o código a ser carregado na placa Arduino para enviar e receber dados para a porta serial. (Veja mais informações neste tutorial)
#include <SoftwareSerial.h> SoftwareSerial hc06(2, 3); String cmd = ""; float sensor_val = 0; void setup() { //Initialize Serial Monitor Serial.begin(9600); //Initialize Bluetooth Serial Port hc06.begin(9600); } void loop() { //Read data from HC06 while (hc06.available() > 0) { cmd += (char)hc06.read(); } //Select function with cmd if (cmd != "") { Serial.print("Command recieved : "); Serial.println(cmd); // We expect ON or OFF from bluetooth if (cmd == "ON") { Serial.println("Function is on"); } else if (cmd == "OFF") { Serial.println("Function is off"); } else { Serial.println("Function is off by default"); } cmd = ""; //reset cmd } // Simulate sensor measurement sensor_val = (float)random(256); // random number between 0 and 255 //Write sensor data to HC06 hc06.print(sensor_val); delay(100); }
Resultado
É possível ativar e desativar a função do Arduino e receber os dados de um sensor na aplicação



Se precisar de ajuda para criar a sua aplicação ou se achar que este tutorial precisa de mais informações, deixe-nos um comentário abaixo ou contacte-nos.