Introduction: Braço Robô Controlado Por Giroscópio Via Celular

Este projeto ira te auxiliar na criação de um braço robótico controlado pelo giroscópio de um celular, irei separa em x partes:

  1. Lista de materiais
  2. Esquema eletrônico
  3. Movendo o Braço
  4. Capturando as informações do giroscópio
  5. Integrando celular e arduino

Supplies

Você ira precisar dos seguintes materiais:

  1. Arduino
  2. 3 Servo motores
  3. Modulo Bluetooth para arduino
  4. Case para 4 pilhas AA
  5. 4 pilhas AA

Step 1: Esquema Eletrônico

Os servos utilizados deverão ser ligados nas portas habilitadas para PWM no Arduino (indicadas por esta sigla ou por um asterico [~] em algumas versões).

A alimentação dos servos não pode ser fornecida diretamente pelo Arduino pois não há potência disponível suficiente para movimentar os 3 servos utilizados neste projeto. Dessa forma, deve-se utilizar uma fonte externa de aproximadamente 5v (foram utilizadas 4 pilhas AA de 1.5V cada, totalizando 6v, dentro dos limites operacionais dos servos).

Step 2: Código Arduino

O código do Arduino é composto das seguintes partes:

Bibliotecas e defines

Utilizamos a biblioteca Servo para comunicação com os servos motores e SoftwareSerial para realizar a conexão bluetooth.

Setup

Realizamos a inicialização dos servos e da iniciamos a conexão bluetooth.

SetPosition

Essa é a função que define a posição dos servos.

Loop

A função loop recebe os dados enviados pelo giroscópio do celular através de um protocolo simples:

  • O valor 0 (zero) significa um início de um comando (a sequencia da posição dos servos 1, 2 e 3)
  • O valor 255 significa o final do comando
  • Valores intermediários identificam a posição de cada servo, ficando então limitados a valores entre 1 e 254

Ao receber o valor 255, a função setPosition é chamada com as respectivas posições dos servos, atualizando a posição do braço.

Step 3: Android

O código gyroFunction recebe o evento do SensorManager e processa os dados retornados pelo giroscópio, convertendo a matriz de acelerações em um array de angulos, variando de pi a -pi.

(fonte: http://plaw.info/articles/sensorfusion/)

Esses angulos, armazenados originalmente como floats, devem ser convertidos para char, sendo que -pi equivale a 1 e pi equivale a 254.

Esses inteiros serão enviados por bluetooth para o Arduino como uma string char(0) + X + Y + Z + char(255).

A conversão e envio dos dados é feito pela função enviaCoordenadasBluetooth.