Menu

Carrinho com Bluetooth

Agora que já temos o carrinho funcionando, vamos adicionar um módulo para permitir o controle por meio de Bluetooth.

Para isso, precisamos ligar o módulo. Como estamos utilizando um módulo shield de controle de motores (veja _aqui_ como está a ligação), e já utilizamos algumas das portas disponíveis, vamos usar agora a porta digital 2 e a porta analógica 3 para a ligação do módulo. Vai ficar assim:

Não foram apresentadas as ligações anteriores (do sensor de ultrassom e do controle remoto, para a imagem ficar mais limpa. O módulo de controle de motores utiliza quase todas as conexões, ele só não utiliza os pinos digitais 2 e 13 e os pinos analógicos A0 até A5; mas, já usamos os pinos A0, A1 e A2, e reservamos os pinos A4 e A5 para conexões do tipo I2C. Assim, sobraram os pinos digitais 2 e 13 e o pino analógico A3; foi feita a escolha pelos pinos digital 2 e analógico 3, por isso a ligação ficou como apresentada.

A seguir, uma visão do cabo de conexão do modem bluetooth:

O motivo de utilizarmos um diodo Zener é que o módulo bluetooth possui, em sua conexão de recepção de dados, Rx, uma tensão máxima de 3,3V, enquanto o Arduino entrega 5V (uma configuração comum é a utilização de divisores de tensão utilizando resistores, mas preferi colocar um diodo pois ele estabiliza realmente a tensão).

 

E o código?

Agora o código será composto de duas partes: a parte de controle do Arduino e a parte do App. Vamos ver cada uma delas.

1 – Código no Arduino

#include <AFMotor.h> //biblioteca ‘Adafruit Motor Shield library’ para controle dos motores
#include <SoftwareSerial.h> //biblioteca de comunicação serial
#define RX 2 //pino 2 (será usado como RX pelo software - deve ser ligado no Tx do modem)
#define TX A3 //pino 3 (será usado como TX pelo software - deve ser ligado no Rx do modem)

SoftwareSerial bluetooth(RX, TX); //cria um objeto de comunicação serial

char controle = '0'; //para armazenar o caractere recebido

AF_DCMotor mEsq(3); //AF_DCMotor é o objeto; mEsq o nome da variável; '3' foi a porta escolhida 
AF_DCMotor mDir(4); //motor 'mDir' ligado na porta 4

void setup() { 
  bluetooth.begin(9600); //inicializa o objeto bluetooth a 9600bps
  pinMode(LED_BUILTIN, OUTPUT); //este é o LED da placa, porta digital 13
  digitalWrite(LED_BUILTIN, LOW); //inicia com o LED desligado
  //velocidade inicial - vai de 0 até 255
  mEsq.setSpeed(150);
  mDir.setSpeed(150);
  //parar os motores
  mEsq.run(RELEASE); //'run' controla o motor e o parâmetro 'RELEASE' desliga o motor
  mDir.run(RELEASE); 
  controle = 0; 
}

void loop() { 
  if(bluetooth.available()) { //se houver dados na interface serial na qual está o bluetooth

    controle = bluetooth.read(); //lê os dados vindos do bluetooth e coloca na variável 'controle'

    switch (controle){
      case 0: //este valor ser enviado pelo App, você pode trocar
       mEsq.run(RELEASE); //'RELEASE' desliga o motor
       mDir.run(RELEASE);
       break;
      case 1:
       mEsq.run(BACKWARD); //motor no sentido 'para frente'
       mDir.run(BACKWARD);
       break;
      case 2:
       mEsq.run(FORWARD); //motor no sentido 'para trás'
       mDir.run(FORWARD);
       break; 
      case 3:
       mEsq.run(FORWARD);  //esquerda
       mDir.run(RELEASE);
       break;
      case 4:
       mEsq.run(BACKWARD); //direita
       mDir.run(RELEASE);
       break; 
    } 
  }
}

(se você comparar com o código utilizado para o controle remoto  _aqui_  verá que a estrutura é a mesma).

2 – Código do App

Baixe (  controleCarrinhoBluetoothSenhorinha ) o conjunto de códigos.

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais