fbpixel
Etiquetas: , , , , ,

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

start-new-project Criar uma aplicação com App Inventor 2

O ecrã de design do projecto irá aparecer

new-project-designer-screen Criar uma aplicação com App Inventor 2

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.

project-title-label Criar uma aplicação com App Inventor 2

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

project-bluetooth-canvas Criar uma aplicação com App Inventor 2

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

project-bluetooth-lbl-btn Criar uma aplicação com App Inventor 2

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

project-sensor-lbl Criar uma aplicação com App Inventor 2

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.

project-command-canvas Criar uma aplicação com App Inventor 2

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

project-on-off-btn Criar uma aplicação com App Inventor 2

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

project-bluetooth-client Criar uma aplicação com App Inventor 2

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

project-clock Criar uma aplicação com App Inventor 2

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

project-designer-end Criar uma aplicação com App Inventor 2

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.

ai2-blocks-btn-menu Criar uma aplicação com App Inventor 2

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

ai2-blocks-create-list Criar uma aplicação com App Inventor 2

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

ai2-blocks-handle-bt-connexion Criar uma aplicação com App Inventor 2

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

ai2-blocks-handle-command Criar uma aplicação com App Inventor 2

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

ai2-blocks-send-command Criar uma aplicação com App Inventor 2

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.

ai2-blocks-recieve-text Criar uma aplicação com App Inventor 2

Código completo

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

ai2-myapp-complete-code Criar uma aplicação com App Inventor 2

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)

ai2-app-build-qrcode Criar uma aplicação com App Inventor 2

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

ai2-app-QRcode Criar uma aplicação com App Inventor 2

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

ai2-app-export-project-aia Criar uma aplicação com App Inventor 2

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

ai2-app-import-project-aia Criar uma aplicação com App Inventor 2

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

myApp-not-connected Criar uma aplicação com App Inventor 2
myApp-connected Criar uma aplicação com App Inventor 2
ai2-app-arduino-onoff Criar uma aplicação com App Inventor 2

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.

Aplicações

Fontes