Braço Robótico controlado por voz

Mas um projeto para os fãs de robótica! Em nosso último tutorial montamos um braço robótico controlado por dois módulos joystick, mas agora vamos fazer algo mais ousado, vamos controlar o braço através de comandos de voz!

Existem várias formas de controlar um este kit de braço robótico, como por potenciômetro, joystick, controle com fio e sem fio do Play Station, Bluetooth, controle remoto da TV e etc.

Aqui neste post optamos pelo controle sem fio via Bluetooth, porém iremos adicionar o diferencial de enviar os comandos via voz, ou seja, iremos falar com o celular e este irá enviar via bluetooth para o Arduino Uno as instruções para movimentar o Braço Robótico! Você pode adquirir o Kit completo para montar este tutorial em nossa loja, a Arduino Ômega, é só clicar neste link e adquirir o seu Kit Braço Robótico!

Material Necessário

O projeto é simples, usamos apenas comandos básicos com posições pré-definidas para que com a palavra chave correta o braço se movimente para posições já marcadas, porém, com esse conceito introdutório você poderá desenvolver um código muito mais interativo, e mais elaborado para acrescentar funções mais avançadas, mas de início, acredito que com posições pré-definidas o resultado já será bem legal!

No futuro iremos postar avanços desse projeto e deixar ele cada vez mais “inteligente”, e iremos divulgando essas atualizações aqui no blog e no meu perfil (Sandro Mesquita, autor desse projeto) no Instagram essa é uma promessa minha com vocês, leitores do blog da Arduino Ômega, e o nosso objetivo é desenvolver o perfil maker na comunidade e interagir com vocês, com troca de ideias e sugestões para os projetos, e não somente consumidores de conteúdos que pegam tudo muito prontinho, logo nosso trato é, vamos caminhando e aprendendo juntos, pois aqui no Arduino Ômega vamos procurar fazer projetos que você não vai encontrar fácil em outro site, aqui os projetos serão diferenciados 👊 .

Construindo o App

Seguindo em frente, a tela do aplicativo que vamos desenvolver pode ser vista abaixo:

Esta é a tela do aplicativo que iremos desenvolver no APPInventor, que será entregue o código para você poder alterar, a figura abaixo mostra a visão geral da area de design do aplicativo mas se você nunca desenvolveu no APP Inventor postei em meu YouTube uma play list dos primeiros passos com APP Inventor neste link.

A lógica é a seguinte, você fala o comando, que na nossa programação são: “abaixa”, “levanta”, “esquerda”, “direita” e “início”, e o app se conecta com o Google, interpreta e se a palavra que você falou for igual a uma dessas ditas que já estará programada no aplicativo, este irá enviar um carácter para o Arduino de acordo com a palavra captada, se você falar “abaixa”, o App envia a letra ‘a’, se o comando for “levanta”, será enviado a letra ‘l’, e assim vai, se for “esquerda” envia ‘e’, “direita” manda o ‘d’ e “início” envia pelo bluetooth a letra ‘i’. Lembrando que o comando de voz do APP Inventor só funciona se seu celular estiver conectado na internet.

Calma, calma, não se apavore, além do link mencionado acima (para o vídeo no Youtube), vamos falar um pouco de cada bloco desses começando pela programação que faz a conexão Bluetooth:

Olha como é simples, se alguém disse pra você que programar aplicativo de celular é difícil aprender, nesse tutorial você verá que é muito fácil, lógico, aqui estamos falando em uma aplicação de desenvolvimento limitada e online, não se compara a ferramentas profissionais que são realmente complexas.

O Botão com o ícone do bluetooth inserido no screen é justamente este que está no código, você pode procurar na barra lateral e arrastar para área do código (se não sabe como fazer vai na play list do YouTube que postei linhas acima) e começar a escrever a lógica dentro dele que funciona assim:

  • QUANDO clicar no botão Bluetooth
  • Verifica SE o Bluetooth está pareado e ativado, SENÃO ESTIVER apresenta a mensagem “O Bluetooth não está ativado. Ative-o.”
  • SE o Bluetooth estiver ativa verifica se ele está CONECTADO, SENÃO estiver conectado abre a lista de bluetooths disponíveis (assunto do próximo bloco logo mais)
  • SE o Bluetooth estiver conectado, então o seu click nele irá desconectá-lo e apresentar a mensagem “Conectar”, ou seja, se clicar de novo irá ser a ação de conectar o Bluetooth.

Esse outro bloco, tanto é invocado pelo Bluetooth, como vimos na sequência anterior como podemos vir direto para ele clicando no Botão que é representado por uma lupa e quando ele é invocado ocorre os seguintes passos:

  • Quando a lista de pesquisa for invocada faça:
  • Verifica SE o cliente Bluetooth está disponível, SE estiver apresenta a lista de endereços bluetooth, SENÃO estiver apresenta a mensagem “Não foi possível conectar”.
  • Após a lista apresentada você escolhe um dos MAC’s bluetooth disponível, ou seja o equipamento que deseja conectar, no nosso caso deve aparecer HC-05 e logo irá aparecer a mensagem “Bluetooth Conectado” se tudo estiver ok, lembrando que, a falha na conexão pode ocorrer por diversos fatores e um deles é alimentação e mão contato do bluetooth.

O nosso último bloco é o do reconhecimento de voz e comparação do texto devolvido pelo Google:

Apesar de parecer muito grande, na verdade a lógica é só uma, o restante é repetir o processo:

  • Quando você apertar o botão do microfone (OBS. Basta apertar, não precisa segurar para falar), o aplicativo irá invocar o reconhecimento de Voz do seu aparelho e conectar com o Google, quando você falar o aplicativo irá enviar seu áudio e receber um texto como resposta.
  • Esse texto será capturado no segundo bloco com o método “result”, a partir daí você pode desenvolver quantas lógicas IF’s desejar, comparando o valor do “result” com a palavra chave para o aplicativo enviar o caractere por bluetooth.
  • A palavra estando certa, o app irá invocar a conexão bluetooth (que já deve estar conectada” e enviar um texto com o caractere escolhido, ao qual o Arduino estará ansioso aguardando em sua programação).

Baixe o APK (arquivo de instalação do App no Android) em nosso repositório no Github clicando neste link.

Codificando na IDE do Arduino

O Código do Arduino, é bem simples, e no próprio código colocamos todas informações complementares:

/*
 * Projeto: Braço Robótico controlado por Voz
 * Autor: Sandro Mesquita (@profsandromesquita)
 * Publicado em: Arduino Ômega Blog
 */
#include <Servo.h> // Chama a biblioteca do Servo
Servo garra, elevar, avancar, base; // nome dos servos

char comandoVoz; //Variável que recebe o texto vindo do aplicativo

void setup(){
  garra.attach(3); // Anexar o motor 01 ao pino 03 (GARRA)
  elevar.attach(5); // Anexar o motor 02 ao pino 05 (ELEVAÇÃO)
  avancar.attach(6); // Anexar o motor 03 ao pino 06 (AVANÇO)
  base.attach(9); // Anexar o motor 04 ao pino 09 (GIRO)

  //Setup da conexão serial USB com o computador
  Serial.begin(9600);
  //Posição inicial do Braço
  posInicial();
}

void loop(){
  if (Serial.available() >= 0 ){
    comandoVoz = Serial.read(); //Dado recebido do Aplicativo
    //Se o comando for a letra 'a', de avanção, o braço avança
    if (comandoVoz == 'a'){ 
      elevar.write(45);
      delay(10);
      avancar.write(130);
      delay(10);
      garra.write(30);
      delay(10);
    }
    //Se o comando for a letra 'l', de levantar, o braço levanta
    if (comandoVoz == 'l'){
      elevar.write(120);
      delay(10);
      avancar.write(60);
      delay(10);
      garra.write(0); //Escreve no servo o valor da posição
      delay(10);
    }
    //Se o comando for a letra 'd', de direita, o braço vira para direita
    if (comandoVoz == 'd') base.write(0);
    //Se o comando for a letra 'e', de esquerda, o braço vira para esquerda
    if (comandoVoz == 'e') base.write(180);
    //Se o comando for a letra 'i', de inicio, o braço vai para posição inicial
    if (comandoVoz == 'i') posInicial();
  }
}
//Função que posiciona o braço na posição inicial
void posInicial() {
  garra.write(0);
  elevar.write(90);
  avancar.write(90);
  base.write(90);
  delay(10);
}

No código acima, definimos os ângulos que o servo deve ir, e a posição inicial de acordo com nossa montagem, esse ângulo varia muito, vai depender de como você posicionou o servo motor no Braço Robótico a, logo sugiro que antes de adotar os valores que propus, teste seu braço com um potenciômetro movimentando-o devagarzinho para conhecer os limites máximo e mínimo de cada movimento dele.

Confira abaixo o detalhamento de cada movimento do braço:

  1. Abrir/Fechar a garra, geralmente é um ângulo máximo de deslocamento de 30 graus
  2. Avança/Recuar a garra, esse movimento é bem complexo pois exige sincronismo com o de Elevar/Baixar, mas ele trabalha com uma faixa de 120 graus de liberdade
  3. Elevar/Baixar, este trabalha com grau de liberdade do servo de aproximadamente 90 graus, ou seja se a posição inicial do servo estiver em 70 graus, ele poderá movimentar 45 graus para cima, ir até 115 graus ou movimentar 45 graus para baixo, ir até 25 graus, entendeu?
  4. Já a base Esquerda/Direita, sugiro estabelecer a posição de 90 graus como inicial e deslocar para 0 graus se quiser ir para esquerda ou 180 graus se seu desejo for para direita.
Acesse o código fonte deste tutorial em nosso repositório do Gitbhub!

Montando o hardware do projeto

A montagem do circuito ficou assim:

A montagem final do projeto ficou assim:

Como temos motores, que são indutores, na mesma linha de alimentação do Bluetooth, sugiro instalar um capacitor de 12V e capacitância maior de 1.000uF para filtrar e estabilizar qualquer interferência ou oscilação na alimentação, lembra que disse se o Bluetooth não conectar poderia ser devido a falha na alimentação? Pois é, esse é um caso.

Galera é isso ai, precisando de um help, pode comentar aqui ou me contactar na rede social, meu Instagram é @profsandromesquita.

Sandro Mesquita
Sobre Sandro Mesquita 2 artigos
Prof. Sandro Mesquita, Msc. Eng de Software, CREA - 44680 .

1 Trackback / Pingback

  1. Tanque Esteira Lagarta com Arduino e controlado por App

Deixe uma resposta

O seu endereço de email não será publicado.


*