quarta-feira, 1 de abril de 2015

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

Palavras-chave: Arduino, Android, App Inventor, Bluetooth, L293D, HC-06, Zumo, QRE1113 Analógico, QRE-1113, Buzzer.

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

Ok, mais um carrinho?

Calma, não pretendo montar novas versões!

Para ficar mais interessante foram adicionados dois sensores de refletância QRE1113 analógicos, um buzzer e criado uma pista em forma de labirinto.

A ideia é controlar o carrinho sem tocar nas linhas pretas. Caso contrário o buzzer emitirá um som irritante até que o sensor saia da linha.

A descrição completa do carrinho nas versões 1 e 2 podem ser vistas em [1] e [2], respectivamente.

Aqui será tratado apenas das mudanças realizadas sob a versão 2.

MATERIAIS

Eletrônica e Controle:

- Sensores de refletância QRE1113 - Analógico;
- 1 Buzzer.

Diversos:

- 4 Pilhas AA - alimentação do Arduino e módulos;
- 1 Bateria 9V - alimentação dos motores;
- 2 Folhas de cartolina branca;
- 1 Rolo de fita isolante preto;
- 1 Rolo de fita adesiva transparente. 

PROGRAMAÇÃO - ARDUINO
 
Copie o código abaixo integralmente e faça o upload.
/*-------------------------------------------------------
 * CONTROLANDO CARRINHO COM ARDUINO, BLUETOOTH E ANDROID
 *
 * Sensores QRE-1113 Analogico e Buzzer
 *
 * Desativar o modulo Bluetooth antes de fazer upload!
 *
 * www.binarycodec.blogspot.com
 * Data: 01/04/2015
 * v.2.1
 -------------------------------------------------------*/
#include <Wire.h>

const int sensorDireito = 0; // Sensor do lado direito - pino A0
const int sensorEsquerdo = 1; // Sensor do lado esquerdo - pino A1

const int buzzer = 12;

char caracter;


void setup() {

  Serial.begin(9600);

  pinMode(sensorDireito, INPUT);
  pinMode(sensorEsquerdo, INPUT);

  pinMode(buzzer, OUTPUT);

  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

  digitalWrite(buzzer, LOW);

}

void loop() {

  int sLadoDireito = analogRead(sensorDireito);
  int sLadoEsquerdo = analogRead(sensorEsquerdo);

  if (sLadoDireito >= 300 && sLadoEsquerdo < 300 || sLadoDireito < 300 && sLadoEsquerdo >= 300) { // 300 leituras por segundo

    digitalWrite(buzzer, HIGH);

  }

  else {

    digitalWrite(buzzer, LOW);

  }

  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 houver comparacoes/comandos
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);

    }

  }

}
MONTAGEM

Desconecte o Arduino da USB antes de prosseguir!

As Figuras 1 e 2 mostram o sensor de refletância e o esquema de ligação de todos os componentes.

Recomenda-se que o sensor fique a 3mm de distância da superfície.

Fig. 1 - Sensor de refletância QRE1113 Analógico.
Fig. 2 - Diagrama elétrico.
A Figura 3 mostra o carrinho montado e a posição dos sensores.

Fig. 3 - Carrinho montado e posição dos sensores.
APLICATIVO - ANDROID

Maiores informações em [1] e [2].

Link para download em [3].

LABIRINTO

Junte as duas folhas de cartolina com a fita adesiva transparente. Na sequência contorne as folhas com fita isolante.

Ainda com a fita isolante e respeitando as dimensões do chassis, insira obstáculos formando um labirinto.

Se o sensor passar na fita o buzzer será acionado. 

TESTE

Conecte a alimentação do carrinho, ative o Bluetooth do celular/tablet, abra o aplicativo de controle e clique em "CONECTAR". 

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. 

Nenhum comentário: