Páginas

Robot Accelerometer Joystick


Icone de Apresentação:


Tela 1:



Robot Accelerometer Joystick


Robô Bluetooth Arduino Uno r3: Controle Acelerômetro ou Joystick 5 Velocidades.
Code Arduino Uno r3 - Gratuito:
Robô Carro 2 motores, controle com Acelerômetro ou Joystick em todas as direções(8 direções), com 5 Velocidades, 4 canais Switches ON/OFF e  mais Backgrounds Metalics Colors.


- Efeitos de Luz, Som e Laser podem ser adicionados, pois estes são importantes quando o Robô participa de eventos e demonstrações públicas em feiras de ciências.




Atenção para montagem o robô funciona normalmente apenas com os esquemas das partes 2 e 3, onde se encontram a placa Arduino, Bluetooth, Ponte H, Motores e Bateria(BAIXO CUSTO).

Os esquemas da parte 1 são acessórios opcionais que deixam seu robô muito mais interessante como Laser Verde, Lanterna Led,  Farol, Luz Interna, Lanterna, Buzina e todos os outros acessórios restantes conforme mostra as figuras.


Esquema Robô Part1:




Esquema Robô Part2:



Esquema Robô Part3:



Conteúdo:

1)- Descrição de Funcionamento;

2)- Comandos utilizados e pinagem do Arduino;
3)- Fotos do aplicativo;
3.1)- Fotos do aplicativo funcionando com tablet Samsung;
4)- Código Arduino Uno r3: Robot Accelerometer Joystick;
5)- Lista de Materiais;
6)- Esquema de ligações;

1)- Descrição de Funcionamento:
Robô Bluetooth Arduino Uno r3: Controle Acelerômetro ou Joystick 5 Velocidades.
Code Arduino Uno r3 - Gratuito: 

Robô Carro 2 motores, controle com Acelerômetro ou Joystick em todas as direções(8 direções), com 5 Velocidades, 4 canais Switches ON/OFF e  mais Backgrounds Metalics Colors.


//----------APP. - Robot Accelerometer Joystick----------//


Button Mode for accelerometer or Joystick Touch;


Accelerometer Mode:

Accelerometer for robot control in all directions of the X and Y axis;
Monitors the values of the X and Y axis direction of the Robot;
Monitors and indicates the direction of the robot;

Touch Mode:

Joystick Buttons to 8 directions total control to 2 motors;
Monitors and indicates the direction of the robot;

Engine power control with 5 speeds:

PWM Control Battery level: 20%, 40%, 60%, 80% e 100%.

More 4 channels available example:

A0-Lighthouse: Light Blue Light Front Button icon;
A1-Rear Lantern: Back Light Button icon Yellow Light;
A2-Interior Light: Internal Light icon Green Light;
A3-Horn: Horn Button icon White horn;

Código para Arduino Uno r3 - Gratuito: 



Botão de modo: Configuração para Acelerômetro ou Joystick.

Modo Acelerômetro:

Acelerômetro para controle do Robô em todas as direções nos eixos X e Y;
Monitora e mostra os valores do eixo X e eixoY assim como a direção do Robô;
Indica a direção que o Robô está percorrendo.
Acelerômetro Controle total dos motores com 8 movimentos:
1)-Ir para Frente;
2)-Ir para Traz;
3)-Girar no próprio Eixo para a Esquerda;
4)-Girar no próprio Eixo para a Direita;
5)-Ir para Frente Girando para a Esquerda(curva aberta);
6)-Ir para Frente Girando para a Direita(curva aberta);
7)-Ir para Traz Girando para a Esquerda(curva aberta);
8)-Ir para Traz Girando para a Direita(curva aberta);

Modo Joystick Touch: Controle total dos motores com 8 movimentos:

1)-Ir para Frente;
2)-Ir para Traz;
3)-Girar no próprio Eixo para a Esquerda;
4)-Girar no próprio Eixo para a Direita;
5)-Ir para Frente Girando para a Esquerda(curva aberta);
6)-Ir para Frente Girando para a Direita(curva aberta);
7)-Ir para Traz Girando para a Esquerda(curva aberta);
8)-Ir para Traz Girando para a Direita(curva aberta);

Controle PWM para Potência dos Motores  com 5 Velocidades:

1)- Velocidade 1: 20% da Potência;
2)- Velocidade 2: 40% da Potência;
3)- Velocidade 3: 60% da Potência;
4)- Velocidade 4: 80% da Potência;
5)- Velocidade 5: 100% da Potência Máxima;

SWITCHES - CONTROLE ON/OFF  DE 4 CANAIS:

A0-Lighthouse: Light Blue Light Front Button icon;
A1-Rear Lantern: Back Light Button icon Yellow Light;
A2-Interior Light: Internal Light icon Green Light;
A3-Horn: Horn Button icon White horn;

Obs.2: Efeitos de Luz, Som e Laser podem ser adicionados, pois estes são importantes quando o Robô participa de eventos e demonstrações públicas em feiras de ciências.

Todos os 4 canais podem ser modificados para qualquer outro acionamento, conforme sua  necessidade.


Trabalhar com Acelerômetro ou Joystic Touch para controle do Robô com  todos os seus movimentos, mais controle de velocidade dos motores e mais 4 canais individuais SWITCH ON/OFF para acionamentos diversos;

Como Funciona o Robot Accelerometer Joystick:


Através do botão Mode, podemos selecionar o modo de operação para Acelerômetro ou Joystick Touch.


Como funciona o Acelerômetro:
O acelerômetro é composto por um chip montado junto ao núcleo do smartphone, este chip consegue detectar forças que interagem sobre ele quando inclinamos o smartphone nos eixos X, Y e Z.
Nosso App. reconhece estes dados enviados pelo chip acelerômetro, interpreta e faz uma comunicação via Bluetooth com o  Arduino.


Forward: Robô vai para Frente inclinação eixo Y maior que 80° caractere F



Back: Robô vai para Traz inclinação eixo Y menor que -80° caractere B


Left: Robô vai para Esquerda inclinação eixo X maior que 80° caractere L

 Right: Robô vai para Direita inclinação eixo X menor que -80° caractere R
 Front Left: Robô faz curva aberta para Frente à Esquerda eixo Y maior que 40° e eixo X maior que 40° caractere X

Front Right: Robô faz curva aberta para Frente à Direita eixo Y maior que 40° e eixo X menor que -40° caractere Y

Back Left: Robô faz curva aberta para Traz à Esquerda eixo Y menor que -40° e eixo X maior que 40° caractere Z

Back Right: Robô faz curva aberta para Traz à Direita eixo Y menor que -40° e eixo X menor que -40° caractere W

Stop: Posição Central de descanso o Robô está parado - eixo X 0° e eixo Y 0° caractere S

Analogamente utilizando o modo Joystick Touch:
Também podemos executar todos os movimentos apenas pressionando os botões de comando do Joystick Touch.

O aplicativo Android se conecta com o Arduino  via bluetooth. Então quando pressionamos por exemplo o botão para o Robô ir para frente, o App envia um caractere "F" este caractere é interpretado pelo Arduino através de seu código(fornecido gratuitamente) e envia sinal para a placa de com o Driver Ponte H onde será feito o acionamento de potencia dos motores; Neste caso exemplo comando Ir para Frente os dois motores serão acionados no mesmo sentido de rotação que dará propulsão para o Robot Ir para Frente.

Mantendo a mesma analogia quando o Robô Gira no Eixo significa que um motor é acionado no sentido horário e outro no sentido anti horário e assim por diante.


Quando pressionamos um botão, o App. envia um caractere para o Arduino via Bluetooth que será lido, interpretado pelo código e feito o acionamento da porta correspondente, como farol ou lanterna.


Controle de velocidade de 5 estágios indicação no painel:

Quando pressionamos um estágio no simbolo da bateria podemos ajustar a velocidade do robô, pois o App. envia caractere código PWM para controle de potência dos motores.

Toda esta operação fica por conta do App. Robot Accelerometer Joystick com o  Código Arduino.




2)- COMANDOS UTILIZADOS, PINAGEM ARDUINO E CARACTERES ENVIADOS BT:
Comandos:
Pinagem Arduino:



Caracteres Enviados BT:






ARDUINO UNO R3 - INPUT/OUTPUT PINS:

A0 - Farol: Frontal Light Button icon Blue Light;
A1 - Lanterna trazeira: Back Light Button icon Yellow Light;
A2 - Luz Interna: Internal Light icon Green Light;
A3 - Buzina: Horn Button icon White horn;
A4 - N/C;
A5 - N/C;
D0 - N/C;
D1 - N/C;
D2 - N/C;
D3 - N/C;
D4 - CONTROL INVERTER MOTOR1;
D5 - CONTROL PWM MOTOR1;
D6 - CONTROL PWM MOTOR2;
D7 - CONTROL INVERTER MOTOR2;
D8 - N/C;
D9 - POTÊNCIA DO MOTOR1 - PWM;
D10 - POTÊNCIA DO MOTOR2 - PWM;
D11 - N/C;
D12 - TX BLUETOOTH;
D13 - RX BLUETOOTH;

3)- Imagens do aplicativo:










3.1)- Fotos do aplicativo funcionando com tablet Samsung:















4)- Código Arduino: Robot Accelerometer Joystick



/*
-------------------------------------------------------------------------------
APP. - Robot Accelerometer Joystick

Mode button for accelerometer or Joystick Touch;

Accelerometer Mode:
Accelerometer for robot control in all directions of the X and Y axis;
Monitors the values of the X and Y axis direction of the Robot;
Monitors and indicates the direction of the robot;

Touch Mode:
Joystick Buttons to 8 directions total control to 2 motors;
Monitors and indicates the direction of the robot;

Engine power control with 5 speeds;

More 4 channels available example:
A0-Lighthouse: Light Blue Light Front Button icon;
A1-Rear Lantern: Back Light Button icon Yellow Light;
A2-Interior Light: Internal Light icon Green Light;
A3-Horn: Horn Button icon White horn;


CODE - ARDUINO UNO R3 - INPUT/OUTPUT PINS:

A0 - Farol: Frontal Light Button icon Blue Light;
A1 - Lanterna trazeira: Back Light Button icon Yellow Light;
A2 - Luz Interna: Internal Light icon Green Light;
A3 - Buzina: Horn Button icon White horn;
A4 - N/C;
A5 - N/C;
D0 - N/C;
D1 - N/C;
D2 - N/C;
D3 - N/C;
D4 - CONTROL INVERTER MOTOR1;
D5 - CONTROL PWM MOTOR1;
D6 - CONTROL PWM MOTOR2;
D7 - CONTROL INVERTER MOTOR2;
D8 - N/C;
D9 - POTÊNCIA DO MOTOR1 - PWM;
D10 - POTÊNCIA DO MOTOR2 - PWM;
D11 - N/C;
D12 - TX BLUETOOTH;
D13 - RX BLUETOOTH;
-------------------------------------------------------------------------------
*/

#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13);//Arduino 12-RX(BT-Pino TX), Arduino 13-TX(BT-Pino RX);
#include <Servo.h>
//Servo servo;
float acelerometer;
int cont=0;
float acelerometerCalc;

//------------Declaration of variables to count---------------
int conta = 0;
int contb = 0;
int contc = 0;

 int AA0 =  A0;
 int AA1 =  A1;
 int AA2 =  A2;
 int AA3 =  A3;

 int D4 =  4;//Controle Digital do motor 1;
 int D5 =  5;//Controle PWM do motor 1;
 int D6 =  6;//Controle PWM do motor 2;
 int D7 =  7;//Controle Digital do motor 2;

 int POTENCIA = 0;//Cria a variavel POTENCIA;
 int TURBO_D = 9;// Cria a variavel TURBO_D com o numero do pino Arduino;
 int TURBO_E = 10;// Cria a variavel TURBO_E com o numero do pino Arduino;
 int DriverL = 6;
 int DriverR = 5;

void setup() {
mySerial.begin(9600);
mySerial.setTimeout(5);

 pinMode ( TURBO_D, OUTPUT);//Pino 9 ajustado como saida;
 pinMode ( TURBO_E, OUTPUT);//Pino 10 ajustado como saida;
 analogWrite (TURBO_D, 90);//saida inicia com o nivel em 90;
 analogWrite (TURBO_E, 90);//saida inicia com o nivel em 90;
 pinMode (DriverL, OUTPUT);//Saída controle de direção;
 analogWrite (DriverL, 0);//Controle de direção em PWM = 0;
 pinMode (DriverR, OUTPUT);//Saída controle de direção;
 analogWrite (DriverR, 0);//Controle de direção em PWM = 0;

 pinMode(AA0, OUTPUT);//Controle dos botões do painel 4 channels;
 pinMode(AA1, OUTPUT);
 pinMode(AA2, OUTPUT);
 pinMode(AA3, OUTPUT);

 pinMode(D4, OUTPUT);
 pinMode(D5, OUTPUT);
 pinMode(D6, OUTPUT);
 pinMode(D7, OUTPUT);
}

void loop() {

char caractere = mySerial.read();

//-------------------VELOCITY BATTERY CONTROL ----------------------
 if(caractere == '1')//Velocity 1 = 20%;
{
 POTENCIA=90;
 analogWrite (TURBO_D, POTENCIA); //ajusta o saida do Pino 9 para o novo PWM;
 delay (30);
 analogWrite (TURBO_E, POTENCIA); //ajusta o saida do Pino 10 para o novo PWM
 delay (30);
}

if(caractere == '2')//Velocity 2 = 40%;
{
 POTENCIA=120;
 analogWrite (TURBO_D, POTENCIA); //ajusta o saida do Pino 9 para o novo PWM;
 delay (30);
 analogWrite (TURBO_E, POTENCIA); //ajusta o saida do Pino 10 para o novo PWM
 delay (30);
}

if(caractere == '3')//Velocity 3 = 60%;
{
 POTENCIA=160;
 analogWrite (TURBO_D, POTENCIA); //ajusta o saida do Pino 9 para o novo PWM;
 delay (30);
 analogWrite (TURBO_E, POTENCIA); //ajusta o saida do Pino 10 para o novo PWM
 delay (30);
}

if(caractere == '4')//Velocity 4 = 80%;
{
 POTENCIA=200;
 analogWrite (TURBO_D, POTENCIA); //ajusta o saida do Pino 9 para o novo PWM;
 delay (30);
 analogWrite (TURBO_E, POTENCIA); //ajusta o saida do Pino 10 para o novo PWM
 delay (30);
}

if(caractere == '5')//Velocity 5 = 100%;
{
 POTENCIA=255;
 analogWrite (TURBO_D, POTENCIA); //ajusta o saida do Pino 9 para o novo PWM;
 delay (30);
 analogWrite (TURBO_E, POTENCIA); //ajusta o saida do Pino 10 para o novo PWM
 delay (30);
}
//--------------------------------------------------------------------------

 //-----------Receives and character counts between 1 and 2----------
 if(caractere == 'a')
{
 conta++;
 if(conta>=3)
 {
   conta=1;
 }
}
 if(caractere == 'b')
{
 contb++;
 if(contb>=3)
 {
   contb=1;
 }
}
 if(caractere == 'c')
{
 contc++;
 if(contc>=3)
 {
   contc=1;
 }
}

//-------------------------------------------------------------------------
//Compares the count and triggers the digital and analogic port;

if(conta==1)
{
 digitalWrite(AA0,HIGH);//ON - Frontal Light Button icon Blue Light;
}
 if(conta==2)
{
 digitalWrite(AA0,LOW);//OFF - Frontal Light Button icon Blue Light;
}
//----------------------
if(contb==1)
{
 digitalWrite(AA1,HIGH);//ON - Internal Light Button icon Green Light;
}
 if(contb==2)
{
 digitalWrite(AA1,LOW);//OFF - Internal Light Button icon Green Light;
}
//----------------------
if(contc==1)
{
 digitalWrite(AA2,HIGH);//ON - Back Light Button icon Yellow Light;
}
 if(contc==2)
{
 digitalWrite(AA2,LOW);//OFF - Back Light Button icon Yellow Light;
}
//----------------------------------------
if(caractere == 'd')
{
 digitalWrite(AA3,HIGH);
}

//---------------------------------------------------------------------------
  if(caractere == 'F')
{
 digitalWrite(D4,HIGH);
 digitalWrite(D5,LOW);
 digitalWrite(D6,HIGH);
 digitalWrite(D7,LOW);
}

 if(caractere == 'B')
{
 digitalWrite(D4,LOW);
 digitalWrite(D5,HIGH);
 digitalWrite(D6,LOW);
 digitalWrite(D7,HIGH);
}

//-------------------LEFT-----------------------
if(caractere == 'L')
{
 digitalWrite(D4,HIGH);
 digitalWrite(D5,LOW);
 digitalWrite(D6,LOW);
 digitalWrite(D7,HIGH);
}
//-------------------RIGHT----------------------
if(caractere == 'R')
{
 digitalWrite(D4,LOW);
 digitalWrite(D5,HIGH);
 digitalWrite(D6,HIGH);
 digitalWrite(D7,LOW);
}
//-------------------STOP-----------------------
if(caractere == 'S')
{
digitalWrite(D4,LOW);
digitalWrite(D5,LOW);
digitalWrite(D6,LOW);
digitalWrite(D7,LOW);
digitalWrite(AA3,LOW);//Horn
}

//-------------------FORWARD-LEFT-----------------------
if(caractere == 'X')
{
 digitalWrite(D4,HIGH);
 digitalWrite(D5,LOW);
 //digitalWrite(D6,LOW);
 analogWrite(DriverL,170);//LEFT
 digitalWrite(D7,LOW);
}

//-------------------FORWARD-RIGHT-----------------------
if(caractere == 'Y')
{
 digitalWrite(D4,HIGH);
 analogWrite(DriverR,70);//RIGHT
 digitalWrite(D6, HIGH);
 digitalWrite(D7,LOW);
}
//-------------------BACK-LEFT-----------------------
if(caractere == 'Z')
{
 digitalWrite(D4,LOW);
 digitalWrite(D5,HIGH);
 analogWrite(DriverL,70);//LEFT
 digitalWrite(D7,HIGH);
}
//-------------------BACK-RIGHT-----------------------
if(caractere == 'W')
{
 digitalWrite(D4,LOW);
 analogWrite(DriverR,170);//RIGHT
 digitalWrite(D6,LOW);
 digitalWrite(D7,HIGH);
}

delay(10);


}
       

5)- Lista de Materiais:


Este material é vendido no Ebay, Ali-Express ou Mercado Livre como kit carro robô 2WD para 2 motores, já vem tudo completinho para você montar!
Apenas substituiremos as 4 pilhas AA(6V) pelas de Lipo2S 7,4V/ 2x Ultrafire 18650 7,4V aumentando a Potência  dos motores com uma grande autonomia ou durabilidade das baterias.

Motor com faixa branca maior velocidade, caso você queira deixar seu robô mais esportivo Fast:
Motor com faixa vermelha maior redução 205 rpm, caso você queira reduzir ainda mais a velocidade de seu robô deixá-lo super slow, recomendado para movimentos mais precisos e lentos para uso com sensores, Laser e Câmera:
  • Velocidade: aproximadamente 205 rpm com roda montada mas sem carga (medido com 5V – velocidade varia com a tensão);

smartcar_wheel_kit_IMG_1543_automalabs.com.br

smartcar_wheel_kit_IMG_1546_automalabs.com.br
smartcar_wheel_kit_IMG_1539_automalabs.com.br

Escolha uma bateria com carregador de sua preferencia:



2 x Bateria 18650 de Lipo Ultrafire 3,7V com suporte e plug P4 total = 7,4V.


 Carregador de bateria 18650 Lipo 2 x Ultrafire 3,7V.

Bateria Lipo 2S 7,4V/1000mA/1500mA/2200mA, utilizar com carregador apropriado.





Veja na figura abaixo as 2x Bateria 18650 de Lipo Ultrafire 3,7V com suporte e plug P4 total = 7,4V montadas na parte inferior do Robô:








Placa Arduino Uno R3:




 


 

 

 

 

 

 

 

 

 

 

 

 

 



Ponte H de potência para controle de motor L298N - Serve para motor DC/CC e motor de passo -Ideal para Arduino e PIC



 




Funcionamento:
O módulo Driver L298N, usa o chip da ST L298N para controlar 2 motores com tensão 3-30V de corrente contínua (DC), e possui interface de saída de 5V, pode ser controlado por microcontroladores que trabalhem com 5V ou 3,3V sem problemas, você pode controlar facilmente a velocidade e a direção dos motores, você pode controlar um motor de passo de 2 polós, ideal para controle de carrinhos e outros.
O APP. Robot Mira Laser Shoot HC-SR04 e o programa Arduino fazem toda a operação para você!



Características:

  • Chip Driver: Chip dupla ponte H L298N
  • Tensão de alimentação: +5 V ~ +35 V
  • Pico de corrente de Saída: 2A por porta (Motor)
  • Tensão dos terminais de controle: 4.5~5.5 V
  • Corrente dos terminais de controle: 0~36mA
  • Tensão por nível lógico: Nível alto 4.5~5.5V e 0V para nível baixo
  • Potência máxima: 20W
  • Temperatura de trabalho: -25ºC ~ +130ºC
  • Outras características: Indicador de direção, indicador de Ligado, proteção contra sobre corrente.














      

 Leds de alto brilho Coloridos para representar os acionamentos das saídas Arduino.

Resistores de 220 ohms para interligar com os leds para as saídas Arduino.








  Placa Módulo Bluetooth JY-MCU:



 


 


 




 

 

 

 

 

 

                      





Como funciona o Bluetooth?
O sistema utiliza uma freqüência de rádio de onda curta (2.4 GHz) para criar uma comunicação entre aparelhos habilitados. Como seu alcance é curto e só permite a comunicação entre dispositivos próximos, seu consumo de energia é bem baixo.
O APP. Robot Mira Laser Shoot HC-SR04 e o programa Arduino fazem toda a operação para você!
A comunicação do Bluetooth se dá através de uma rede chamada piconet, que só permite a conexão de até oito dispositivos. Porém, para aumentar essa quantidade, é possível sobrepor mais piconets, capacitando o aumento de conexões pelo método chamado de scatternet.
A configuração do módulo bluetooth se dá por uma série de comandos AT, que vamos enviar pelo serial monitor.
O serial monitor se conecta ao Arduino via porta serial, que por sua vez se conecta ao módulo bluetooth por uma segunda porta (pinos 12 e 13), que chamaremos de MinhaSerial. Essa nova serial foi criada utilizando-se a biblioteca SoftwareSerial, uma biblioteca que permite que você defina outras portas do Arduino como RX e TX.
Bluetooth é um protocolo padrão de comunicação primariamente projetado para baixo consumo de energia com baixo alcance, (dependendo da potência: 1 metro, 10 metros, 100 metros) baseado em microchips transmissores de baixo custo em cada dispositivo.
O Bluetooth possibilita a comunicação desses dispositivos uns com os outros quando estão dentro do raio de alcance. Os dispositivos usam um sistema de comunicação via rádio, por isso não necessitam estar na linha de visão um do outro, e podem estar até em outros ambientes, contanto que a transmissão recebida seja suficientemente potente.
ClassePotência máxima permitidaAlcance (Aproximadamente)
Classe 1100 mW (20 dBm)até 100 metros
Classe 22.5 mW (4 dBm)até 10 metros
Classe 31 mW (0 dBm)~ 1 metro


Exemplo de módulos de relés se necessário para acionamentos de dispositivos de potência como Laser, Farol de led Cree Q5, Magnetos e outros.






 Exemplo de Protoboard/Breadboard:















Jumpers: Macho Macho, Fêmea Fêmea e Macho Fêmea, conforme sua necessidade:
























Cabo USB comunicação para carregar o programa Arduino / Fonte
Alimentação 5V:

 

 










Nenhum comentário:

Postar um comentário