terça-feira, 31 de março de 2015

Controlando Carrinho com Arduino, Bluetooth e Android - versão 2

Palavras-chave: Arduino, Android, App Inventor, Bluetooth, L293D, HC-06, Zumo.

Nota: todos os links para sites e ferramentas encontram-se no final do post.

Este post é a releitura do carrinho controlado por Arduino, Bluetooth e Android publicado em [1].

As mudanças estão na substituição do chassis Magician DG007 para o Zumo da Pololu e na utilização de um proto shield com o L293D e o conversor de nível lógico da Sparkfun, Figura 1.

Fig. 1 - Conversor de nível lógico.
MATERIAIS

Mecânica:

- 1 Kit do chassis Zumo da Pololu com motores.

Eletrônica e Controle:

- 1 Arduino Uno;

- 1 Módulo transceiver Bluetooth (HC-06);
- 1 Conversor de nível lógico de dois canais Sparkfun;
- 1 Proto shield;
- 1 L293D.

Diversos:

- Fios (jumpers) para montagem em protoboard;
- 4 Pilhas AA;
- Parafusos com espaçadores para fixar o Arduino no chassis. 

PROGRAMAÇÃO - ARDUINO
 
Copie o código abaixo integralmente e faça o upload.
/*-------------------------------------------------------
 * CONTROLANDO CARRINHO COM ARDUINO, BLUETOOTH E ANDROID
 *
 * Desativar o modulo Bluetooth antes de fazer upload!
 *
 * www.binarycodec.blogspot.com
 * Data: 31/03/2015
 * v.2.0
-------------------------------------------------------*/

char caracter;

void setup() {

  Serial.begin(9600);
  pinMode(2, OUTPUT); // Motor 1 - Direita
  pinMode(3, OUTPUT); // Motor 1 - Direita - Inverte sentido
  pinMode(4, OUTPUT); // Motor 2 - Esquerda
  pinMode(5, OUTPUT); // Motor 2 - Esquerda - Inverte sentido

}

void loop() {

  if (Serial.available()) {
    
  caracter = Serial.read();
  
  switch (caracter) {
    
    case 'w': // Para frente
      digitalWrite(2, LOW);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      break;
      
    case 's': // Para tras
      digitalWrite(2, HIGH);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      break;
      
    case 'a': // Para esquerda
      digitalWrite(2, HIGH);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      break;
      
    case 'd': // Para direita
      digitalWrite(2, LOW);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      break;
      
    case 'e': // Parar
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      break;
      
    default: // Motores sempre desligados enquanto nao comandos
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      
    }

  }

}
MONTAGEM

Desconecte o Arduino da USB antes de prosseguir!

A Figura 2 mostra o esquema de ligação de todos os componentes ao Arduino. Já a Figura 3 o carrinho montado.

Fig. 2 - Diagrama elétrico.

Fig. 3 - Carrinho montado.

APLICATIVO - ANDROID

Instale o aplicativo "ControleCarrinhoBC.apk" no celular ou tablet. Ele está disponível na página Downloads ou através do link [2].

Em [1] há um breve tutorial de como fazer o aplicativo no MIT App Inventor.

TESTE

Conecte a alimentação do carrinho. Perceba que o led do módulo Bluetooth começará a piscar. 

Ative o Bluetooth do celular/tablet e efetue o pareamento (dispositivo HC-06). Será solicitado uma senha (1234).

Abra o aplicativo de controle e clique em "CONECTAR". Aparecerá todos os dispositivos que o celular/tablet já detectou incluindo o módulo. Clique no dispositivo HC-06 e aguarde o aplicativo apresentar os botões de movimento. Neste ponto o led do módulo deverá permanecer aceso.

Ao clicar em "DESCONECTAR" os botões de movimento perdem efeito e o led do módulo voltará a piscar. 

O aplicativo foi testado no Android v.2.2 e v.4.2. 

4 comentários:

Anônimo disse...

Tem como usar outro app pra controlar o carrinho??
Se tiver ele altera o programa?

Binary Codec disse...

Oi, você pode usar/fazer outro app da forma como quiser. O importante é garantir a conexão app-arduino e passar as informações corretas do app para o arduino, ou seja, w-s-a-d para movimentar. Se preferir outra letras, terá que modificar o código do arduino.

Andrey Carlos disse...

Man, boa tarde esse conversor de nivel logico sparkfun, qual o intuito dele ? Vc soldou o modulo bluetooth diretamente no conversor ???

Binary Codec disse...

@Andrey Carlos: boa tarde, o conversor é necessário porque o módulo bluetooth trabalha com 3.3V e as I/Os do arduino 5V. Gosto de usar esse módulo pois deixa tudo organizado. O bluetooth não foi soldado apenas fiz uma plaquinha para encaixá-lo melhor. Ah, só uma dica, antes de gravar o código no arduino desconecte o módulo do bluetooth. O módulo utiliza os pinos Tx e Rx do arduino e gera um erro na gravação.