COMO FAZER UM CARRINHO COM O ARDUINO CONTROLADO POR APP ANDROID – PARTE 2

Com o teste do motor realizado e efetivados vamos iniciar a construção do aplicativo Android pelo MIT APP INVENTOR. Legal, né? Então vamos lá.

primeiramente, acesse o link abaixo para entrar no MIT APP inventor:


http://www.appinventor.mit.edu/

Vale salientar que para utilizar o MIT APP inventor é necessário que você tenha uma conta no Google. E assim para iniciarmos precisamos fazer o login!

Agora clique em criar um novo projeto e daremos início

Abra o projeto que você criou e vamos adicionar os componentes essenciais para o controle do carrinho.

Primeiramente vamos em “Organização e adicionar 4 blocos de “OrganizaçãoHorizontal” e, além disso, dentro desses, colocaremos dois botões para cada bloco, esses estão na pasta “Interface de Usuário”. Como na imagem a seguir:

Agora, para organizar melhor, renomeei os botões, como no exemplo:

Com todos os botões colocados e o layout organizado, como no exemplo a seguir, temos que trabalhar nas conexões que será feita e, para isso, iremos em “conectividade” e adicionar ao aplicativo “ClienteBluetooth”, além disso, vá em “Interface de Usuário” e adicione uma “Lista”, essa será essencial para encontrarmos o dispositivo que vamos conectar.

Agota, com tudo adicionado vamos iniciar o código do APP, esse funciona como um quebra cabeça, ou seja, vamos encaixar bloco a bloco para montar a lógica de programação desejada, para isso, primeiramente. clique no botão “blocos” no canto superior da tela e, assim, abriremos a aba de programação.

A priori, na aba de blocos você encontra todos os comandos necessários para o controle e assim confecciona o código.

Nessa aba, terá os comando essenciais para a construção do aplicativo. Para tal, segue os passo a seguir:

A seta “1” indica o comando que está em “controle” que será utilizado, esse faz com que quando a pessoa quiser conectar a um Bluetooth apareça uma lista de opções e essa lista está relacionada a segunda seta, essa faz com que apareça as opções de conectividade.

Agora depois de escolher vamos confirmar a conexão e se não estiver conectado chamar a lista novamente

Além disso, adicionamos uma parte não tão essencial do projeto, mas fica ótimo para visualizar melhor o que está ocorrendo no aplicativo. Essa é o co mando “NOTAS”. Segue ilustração de como é feita tal lógica:

Feito isso, vamos controlar os botões que conecta e desconecta o Bluetooth no APP:

Seguindo a ordem de cada seta vamos explicar o passo a passo:

  • Botão LIGB( ligar Bluetooth)

Primeiro ele ira analisar se o Bluetooth do seu celular está conectado, se esse estiver desconectado uma mensagem ira aparecer no seu celular. Se tudo estiver ok ele ira mostrar a lista de seleção.

  • Botão DESB( desligar Bluetooth)

Primeiro o app irá analisar se o Bluetooth está conectado e se estiver, esse irá desconectar o Bluetooth. E quando desconectado a mensagem “Bluetooth desconectado”.

Com toda lógica de conectividade trabalhada vamos começar a adicionar cada botão e seu devido comando necessário para o funcionamento desse.

  • Controle da velocidade:

Quando o botão que controla o aumento da velocidade for clicado, esse ira enviar uma mensagem para o arduino com a letra “A” e, no código do arduino, vamos controlar a partir de  tal comando. Analogamente a mesma ideia se repetirá para a redução da velocidade.

E tal ideia trabalhada na velocidade se repetirá para cada comando encaixado no aplicativo, observe a imagem para entender melhor a ideia:

Com a lógica de blocos finalizada, vamos programar no Arduino o código final que iremos utilizar para controlar o carrinho e, além disso, gerar a conexão desse com o Módulo. Para isso iremos utilizar a conexão TX E DX do Arduíno em conjunto com o módulo. Vale salientar que o TX do Arduíno conecta com o RXD do módulo e o TXD do módulo com o DX do Arduíno. Mas essa conexão não é feita  diretamente. É necessário um divisor de tensão entre esse para pleno funcionamento. Observe o exemplo de código:

  //PROGRAMA: CÓDIGO FINAL DO APLICATIVO 
  //AUTOR: SALAMAKER em parceria com ELETROGATE
  
  //Definições dos pinos dos motores ligados ao Arduino:

  //Motor A
  int IN1 = 4;
  int IN2 = 5;
  
  //Motor B
  int IN3 = 6;
  int IN4 = 7;


 //Pinos para ativar o enable da ponte H com um sinal de PWM 

  int EA = 11; // ativa Enabe Motor A
  int EB = 6; // ativa Enabe Motor B
  
  int velocidade=85;// A velocidade inicia com um valor intermediário 
  char leitura= 0;//A variável LEITURA irá receber as mensagens enviadas via bluetooth.
  
void setup() 
{
  //Inicia a janela Serial Monitor
  Serial.begin(9600);// Habilitando a comunicacao serial 
    
  //MAPEAMENTO DAS SAÍDAS DO MOTOR 1 
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(EB, OUTPUT);// Pino de PWM do arduino, a fim de controlar a valocidade do motor 1
  
  //MAPEAMENTO DAS SAÍDAS  DO MOTOR 2 
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(EA, OUTPUT);// Pino de PWM do arduino, a fim de controlar a valocidade do motor 2
}

void loop() 
{
  leitura = Serial.read();   //É usada a função READ porque iremos ler a mensagem enviada via bluetooth. 
                          
  if(leitura == 'F')
  {       
    // Movimentação do motor no sentido horário 
    //MOTOR 1 
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);//Desativa o outro sentido, a fim de rotacionar somente em um deles 
    //MOTOR1
    analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
    //MOTOR2  
    analogWrite(EB, velocidade);
   //MOTOR 2
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);//Desativa o outro sentido, a fim de rotacionar somente em um deles
  }
  
  else if(leitura == 'B')
  { 
    // Movimentação do motor no sentido anti-horário 
    //MOTOR1
    digitalWrite(IN2, LOW);
    digitalWrite(IN1, HIGH);//Desativa o outro sentido, a fim de rotacionar somente em um deles 
    //MOTOR1
    analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
    //MOTOR2  
    analogWrite(EB, velocidade);
    //MOTOR2
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);//Desativa o outro sentido, a fim de rotacionar somente em um deles
  }
  else if(leitura == 'P')
  {  //Para de movimentar o carrinho
    //MOTOR1
    digitalWrite(IN2, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, HIGH);
  }
 
  else if(leitura == 'D')
  {  
    if( velocidade>=75)//tal condicional garante que o motor só irá girar na velocidade que limitamos
    {   
      velocidade=velocidade-10;
      //MOTOR1
      analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
      //MOTOR2  
      analogWrite(EB, velocidade);
      }
      
      else 
      {
        velocidade=velocidade+5;//Assim, ao tentar reduzir muito, a valocidade recebe 5 unidades  
       //MOTOR1
       analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
       //MOTOR2  
       analogWrite(EB, velocidade);
      }   
    }

  else if(leitura == 'A')
  {
    if(velocidade<=200 )//tal condicional garante que o motor só irá girar nessa velocidade 
       {   
          velocidade=velocidade+10;
         //MOTOR1
         analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
         //MOTOR2  
         analogWrite(EB, velocidade);
       }
       else 
       {
          velocidade=velocidade-5;//Ao tentar ultrapassar a velocidade de giro do motor ou reduzir em demasia a velocidade vai reduzir em 5 unidades
         //MOTOR1
         analogWrite(EA, velocidade);// Girando o motor com uma velocidade recebida 
         //MOTOR2  
         analogWrite(EB, velocidade);
       }
     }
  else  if(leitura=='L')
  {
    //MOTOR1
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);//Desativa o outro sentido, a fim de rotacionar somente em um deles 
    //MOTOR2
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, HIGH);//Desativa o MOTOR2, a fim de rotacionar somente em um deles
    analogWrite(EA, velocidade);
  }
  else if(leitura=='R')
  {       
    //MOTOR2
    digitalWrite(IN4, HIGH);
    digitalWrite(IN3, LOW);//Desativa o outro sentido, a fim de rotacionar somente em um deles
        
    //MOTOR1
    digitalWrite(IN2, LOW);
    digitalWrite(IN1, LOW);//Desativa o MOTOR1, a fim de rotacionar somente em um deles      
   }
  }

Feito o código, vamos entender a montagem física do circuito final do carrinho.

No artigo anterior, vimos como interligar o driver da ponte H ao Arduino e, além disso, entendemos como esse funciona. Agora, faremos o mesmo com o Bluetooth.

  • Usando o aplicativo

1º PASSO:    Faça o download do aplicativo pelo QR Code ou via USB pelo computador.

2º PASSO: Ao terminar o download do aplicativo, clique para abri-lo.

3º PASSO:    Como esse aplicativo vem de fonte desconhecida para o seu celular é possível que ele recuse instalá-lo.

É necessário que você altera as configurações do seu dispossitivo, para isso clique em configurações:

Módulo Bluetooth – Envio de dados

Primeiramente, vale salientar que o Módulo Bluetooth HC-05 quando utilizado com o Arduíno utiliza quatro entradas, sendo elas:


VCC (alimentação de 3,6 à 6V)
GND
RXD (Receiver) – Tensão máxima de 3.3V.
TXD (Transmitter) – Tensão máxima de 3.3V.

Como mencionado anteriormente, há um divisor de tensão no pino RXD do módulo Bluetooth, mas por quê?

O pino de RXD é o pino que irá receber os dados enviados pelo Arduino e esse, na saída do TX envia um sinal que possui tensão de 5V e, a fim de preservar a integridade do módulo, é feito tal circuito.

Agora, veja abaixo o esquemático da ligação do Bluetooth:

Entendido isso e, ademais, feito a montagem do Bluetooth, vamos fazer as ligações de forma completa. Para tal, siga o esquemático abaixo:

Então, gente. Este foi o tutorial e espero que tenham gostado!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *