Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Como construir um aplicativo Android personalizado para seu projeto Arduino usando o MIT App Inventor


Neste tutorial do Arduino, aprenderemos como construir aplicativos Android personalizados para controlar o Arduino usando o aplicativo online MIT App Inventor. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.

Visão geral


Para este tutorial temos dois exemplos. O primeiro exemplo é controlar um LED simples e o segundo é controlar um Motor de Passo usando um smartphone. No meu tutorial anterior já aprendemos como fazer a comunicação Bluetooth entre a Placa Arduino e o Smartphone usando o módulo Bluetooth HC-05 e explicamos o código Arduino necessário para o primeiro exemplo.

Código do Arduino


Aqui está uma rápida visão geral desse código. Assim, através da porta serial, recebemos os dados de entrada do smartphone e os armazenamos na variável ‘state’. Se recebermos o caractere '0' que é enviado do smartphone quando o botão 'LED:OFF' é pressionado, desligaremos o LED e enviaremos de volta ao smartphone o String “LED:OFF”. Por outro lado, se recebermos o caractere '1' acenderemos o LED e enviaremos de volta a String “LED:ON”.
/* Arduino and HC-05 Bluetooth Module Tutorial
 * 
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 */
 
#define ledPin 7
int state = 0;

void setup() {
 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, LOW);
 Serial.begin(38400); // Default communication rate of the Bluetooth module
}

void loop() {
 if(Serial.available() > 0){ // Checks whether data is comming from the serial port
 state = Serial.read(); // Reads the data from the serial port
 }

 if (state == '0') {
 digitalWrite(ledPin, LOW); // Turn LED OFF
 Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
 state = 0;
 }
 else if (state == '1') {
 digitalWrite(ledPin, HIGH);
 Serial.println("LED: ON");;
 state = 0;
 } 
}Code language: Arduino (arduino)

Então agora precisamos construir nosso aplicativo Android personalizado que enviará esses caracteres '0' e '1' quando um botão específico for pressionado, bem como receber as Strings recebidas do Arduino.

MIT App Inventor


No site do MIT App Inventor, precisamos fazer login no aplicativo de construção on-line clicando em "Criar aplicativos!" botão. Para fazer o login, precisamos ter uma conta do Gmail. Uma vez que estamos logados agora, podemos criar nosso primeiro projeto. Veja como fica a janela de design e agora podemos começar a criar nosso aplicativo.

Mas antes disso, podemos conectar nosso smartphone a este projeto para que possamos ver como o aplicativo está tomando forma diretamente em nosso smartphone em tempo real. Para fazer isso, primeiro precisamos baixar o aplicativo MIT AI2 Companion da Play Store e instalá-lo em nosso smartphone. Em seguida, no menu Conectar do editor online, selecionaremos AI Companion e aparecerá um código de barras que basta digitalizar ou inserir o código no aplicativo para smartphone e a conexão entre o editor online e o aplicativo para smartphone será estabelecida.

Então agora, por exemplo, se inserirmos um botão na tela do editor online, o botão aparecerá em tempo real também no smartphone. Semelhante a isso, se você não quiser usar seu smartphone durante a construção do aplicativo, você pode instalar o Android Emulator no seu computador e usar da mesma forma. Você pode encontrar mais detalhes sobre como configurar o emulador em seu site.

Criando o aplicativo – Exemplo 1


Agora estamos prontos para construir o primeiro exemplo. Vamos começar com o layout do programa. Primeiro vamos adicionar alguns HorizontalArrangements da Paleta de layout e definir suas propriedades como a altura, a largura e o alinhamento para combinar com a aparência desejada do nosso programa. Em seguida, da UserInterface Palette, adicionaremos um ListPicker e anexaremos uma imagem a ele. O ListPicker será usado para selecionar o dispositivo Bluetooth ao qual nosso smartphone se conectará.

Em seguida, adicionaremos outro HorizontalArrangements no qual colocaremos um Label. Esta etiqueta indicará se o smartphone está conectado ou não ao módulo Bluetooth e é por isso que definiremos o texto inicial desta etiqueta como “Não conectado”. A próxima etiqueta será usada para exibir o status do LED, se está desligado ou ligado. O estado inicial será “LED:OFF”. Em seguida, adicionaremos os dois botões, 'Ligar' e 'Desligar' para controlar o LED. Neste ponto, é bom renomear os componentes para que possamos reconhecê-los mais facilmente e usá-los posteriormente no editor de Blocos. O que resta agora é adicionar o BluetoothClient que é um componente não visível, bem como um relógio que será usado para a indicação em tempo real do status da conexão.

Editor de blocos


Agora no editor de Blocos estamos prontos para dar vida ao nosso programa. Do lado esquerdo temos todos os blocos e funções relacionados aos componentes adicionados anteriormente.


Começaremos com o BluetoothList ListPicker. A partir daí, primeiro adicionaremos o bloco ‘BeforePicking’ e anexaremos a ele o bloco ‘set Bluetooth Elements’. Em seguida, dos blocos BluetoothClient, adicionaremos o bloco 'BluetoothClient AddressesAndNames'. O que esse conjunto de blocos fará é definir uma lista de dispositivos Bluetooth que já estão pareados com nosso telefone, então quando clicarmos no botão "Connect" do ListPicker, a lista de todos os dispositivos emparelhados será exibida.

Em seguida, temos que definir o que acontecerá depois de escolhermos ou selecionarmos nosso módulo Bluetooth específico. A partir do bloco BluetoothClient, adicionaremos o bloco 'call BluetoothClient .Connect address' e adicionaremos o bloco 'BluetoothList Selection', o que significa que nosso telefone se conectará ao endereço Bluetooth que selecionamos anteriormente.

Em seguida, dos blocos Clock, adicionaremos o bloco “.Timer”. Dentro deste bloco faremos a indicação em tempo real se o telefone está conectado ou não ao módulo Bluetooth utilizando o bloco “set Text” da etiqueta denominada “Connected”.

Em seguida, precisamos dar vida aos dois botões. Assim, quando o botão “TurnOn_Button” for clicado, usaremos a função de cliente Bluetooth “Send1ByteNumber” para enviar um número para o módulo Bluetooth do Arduino. No nosso caso é o número 49 que corresponde ao caractere '1' de acordo com a tabela ASCII e que acenderá o LED. Logo em seguida, usaremos a função BluetoothClient “ReceiveText” para receber a String de entrada que é enviada de volta do Arduino para o telefone. Esta String é definida para o rótulo “LED_Status”.

O mesmo procedimento vale para o “TurnOff_Button” onde o número de envio deve ser alterado para 48 que corresponde ao caractere ‘0’. O que resta agora é baixar e instalar o programa em nosso smartphone. Podemos fazer isso no menu “Build” salvando-o em nosso computador e depois transferindo para nosso telefone ou digitalizando um código QR para download on-line do programa. Aqui está a demonstração do exemplo.

Aqui está um arquivo de download do projeto MIT App Inventor acima:

BluetoothTest.aia

1 arquivo(s) Download de 5,16 KB

Exemplo de controle de motor de passo



Agora vamos dar uma olhada no segundo exemplo, controlando um motor de passo. Na parte superior da tela temos os mesmos componentes para a conexão Bluetooth do exemplo anterior. Em seguida, temos um componente Canvas que é usado para desenhar e inserir imagens. Inseri duas imagens transparentes que desenhei anteriormente. A primeira é uma imagem de um medidor que será fixado no lugar e a segunda é uma imagem de um ponteiro que estará girando. Em seguida, temos um botão Check para alternar entre o modo Manual e Auto ou modo de funcionamento contínuo e um botão para alterar o sentido de rotação. No botão temos um controle deslizante para alterar a velocidade de rotação do motor de passo.

Aqui estão os blocos e o código Arduino por trás deste exemplo. Assim, no editor de Blocos novamente temos os mesmos blocos para a conexão Bluetooth do exemplo anterior.

Agora para girar a imagem do ponteiro usamos a função ImageSprite “.PointInDirection” que gira a imagem da posição 0° para as coordenadas X e Y onde a tela foi tocada. Ao mesmo tempo, definimos o título ImageSprite girado para o rótulo de texto acima. Depois disso, chamamos de procedimento customizado, ou função, que na verdade é um atraso de 10m segundos.

Por fim, enviamos o valor do cabeçalho como um texto para o Arduino usando a função Bluetooth “SendText”. Este valor será aceito pelo Arduino e ele irá girar o motor de passo de acordo.

Em seguida é o bloco CheckBox. Portanto, se o CheckBox estiver marcado, enviaremos o texto “Auto” para o Arduino que ativará o motor de passo para girar continuamente. Enquanto estivermos neste modo, se pressionarmos o botão “Reverse”, enviaremos o texto “Reverse” para o Arduino que mudará o sentido de rotação do motor. Além disso, enquanto estamos neste modo, podemos alterar a velocidade de rotação. Se alterarmos a posição do slider, o valor atual da posição do slider será enviado para o Arduino que alterará a velocidade de rotação do stepper. Se desmarcarmos a CheckBox voltaremos ao modo manual. Aqui está a demonstração do exemplo.

Aqui está um arquivo de download do projeto MIT App Inventor acima, bem como as duas imagens usadas no projeto:

StepperMotorTest.aia

1 arquivo(s) Download de 60,96 KB

Imagens de ponteiro e medidor de motor de passo

1 arquivo(s) Download de 27,34 KB
Aqui está o código Arduino do segundo exemplo:
/*  Stepper Motor Control via HC-05 Bluetooth Module
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// Defining variables
const int stepPin = 7; 
const int dirPin = 6;
String state = ""; 
int currentHeading=0;
int currentAngle=0;
int lastAngle=0;
int angle=0;
int rotate=0;
int runContinuously=0;
String mode = "Manual";
boolean dirRotation = HIGH;
int rotSpeed = 1500;
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
  delayMicroseconds(1);
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.readString(); // Reads the data from the serial port
 }
 // When Auto Button is pressed
 if (mode == "Auto") {
  if (state == "Reverse") {
    delay(10);
    if (dirRotation == HIGH) {
      dirRotation = LOW;
    }
    else {
      dirRotation = HIGH;
    }  
    digitalWrite(dirPin,dirRotation);
    delay(10);
    state = "";
  }
  rotSpeed = state.toInt();
  if (rotSpeed >= 300 && rotSpeed <= 3000) {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(rotSpeed); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(rotSpeed);
  }
  else {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(1500); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(1500);
  }
  
  if (state == "Manual"){
    mode = state;
  }
 }
 // When Program is in Manual mode
 else if (mode == "Manual"){ 
 currentHeading = state.toInt();
 //Serial.println(angle);
 //Serial.println(state);
 if (currentHeading < 0 ){
  currentHeading = 360+currentHeading;
 }
 currentAngle = map(currentHeading,0,359,0,200);
 digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  if (currentAngle != lastAngle){
    if(currentAngle > lastAngle){  
      rotate = currentAngle - lastAngle;  
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }

    if(currentAngle < lastAngle){  
      rotate = lastAngle - currentAngle; 
      digitalWrite(dirPin,LOW); //Changes the rotations direction
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }
  }
  lastAngle = currentAngle;
  if (state == "Auto"){
    mode = state;
  }
 }
}
Code language: Arduino (arduino)

Processo de manufatura

  1. Construa um sistema de recuperação de pára-quedas balístico para seu drone
  2. Como escolher o material certo para o seu projeto?
  3. Faça Monitor Ambilight usando Arduino
  4. Controle remoto universal usando Arduino, 1Sheeld e Android
  5. Como construir seu roteiro de automação em 7 etapas
  6. Magnésio vs. Alumínio:como escolher uma liga para seu projeto de fundição personalizado
  7. Como escolher o guindaste certo para seu projeto
  8. Usinagem personalizada:veja como se preparar para a cotação do seu projeto
  9. Como estimar os requisitos de aço para seu projeto
  10. Os benefícios do jateamento para seu projeto de fabricação de metal personalizado