Projetos de circuito eletrônicoProjetos de engenharia do ArduinoCarro robô controlado por telefone celular usando módulo DTMF

Carro robô controlado por telefone celular usando módulo DTMF

Relacionados

Neste projeto vamos controlar um robô manual através do nosso celular utilizando módulo DTMF e Arduino.

Por: Ankit Negi, Kanishk Godiyal e Navneet Singh sajwan

CARRO ROBÔ CONTROLADO POR TELEFONE CELULAR USANDO MÓDULO DTMF

INTRODUÇÃO

Neste projeto são utilizados dois telefones celulares, um para ligar e outro para receber a chamada. O telefone que recebe a chamada é conectado ao robô através do conector de áudio.

A pessoa que está ligando pode controlar o robô apenas pressionando as teclas do teclado de discagem. (ou seja, o robô pode ser operado de qualquer canto do mundo).

COMPONENTES NECESSÁRIOS

1 – Arduino UNO

2 – Robô manual

3 – 4 motores (aqui usamos 300 rpm cada)

4 – Módulo DTMF

5 – Motorista

Bateria de 6 – 12 volts

7 – Interruptor

8 – Entrada para fone de ouvido

9 – Dois Celulares

10 – Fios de conexão

SOBRE O ROBÔ MANUAL

Um robô manual consiste em chassis (corpo) no qual três ou quatro motores (que são aparafusados ​​com pneus) podem ser acoplados dependendo da necessidade.

Os motores a serem usados ​​dependem de nossa necessidade, ou seja, eles podem fornecer alta velocidade ou alto torque ou uma boa combinação de ambos. Aplicações como quadricóptero requerem motores de alta velocidade para levantar contra a gravidade, enquanto aplicações como mover um braço mecânico ou subir uma ladeira íngreme requerem motores de alto torque.

Ambos os motores no lado esquerdo e direito do robô são conectados em paralelo separadamente. Normalmente eles são conectados a uma bateria de 12 volts através de interruptores DPDT (double pin double throw).

Mas neste projeto usaremos o celular em vez de DPDTs para controlar o bot.

SOBRE O MOTORISTA

IMG 6244E29F361D2

O Arduino fornece corrente máxima de 40mA usando pinos GPIO (general Purpose input output), enquanto fornece 200mA usando Vcc e terra.

Motores requerem grande corrente para operar. Não podemos usar o arduino diretamente para alimentar nossos motores, então usamos um driver de motor.

Motor driver contém H Bridge (que é uma combinação de transistores). O IC (L298) do driver do motor é acionado por 5v que é fornecido pelo arduino.

Para alimentar os motores, é necessária uma entrada de 12v do arduino, que é fornecida por uma bateria de 12v. Então o arduino apenas pega energia da bateria e dá ao motorista do motor.

Permite-nos controlar a velocidade e a direção dos motores fornecendo uma corrente máxima de 2 amperes.

INTRODUÇÃO AO MÓDULO DTMF

IMG 6244E29F63557

DTMF significa multifrequência de tom duplo. Nosso teclado de discagem é uma frequência múltipla de dois toners, ou seja, um botão fornece uma mistura de dois tons com frequências diferentes.

Um tom é gerado a partir de um grupo de tons de alta frequência enquanto outro de um grupo de baixa frequência. É feito para que qualquer tipo de voz não possa imitar os tons.

Então, ele simplesmente decodifica a entrada do teclado do telefone em código binário de quatro bits. As frequências dos números do teclado que usamos em nosso projeto são mostradas na tabela abaixo

DígitoBaixa frequência (hertz)Alta frequência (hertz)2697133647701209677014778852133609411336

A sequência binária decodificada dos dígitos do teclado de discagem é mostrada na tabela abaixo.

dígitoD3D2D1D010001200103001140100501016011070111810009100101010*1011#1100

DIAGRAMA DE CIRCUITO

IMG 6244E29F985E1

CONEXÕES

Motorista –

  • Os pinos ‘A’ e ‘B’ controlam o motor do lado esquerdo, enquanto os pinos ‘C’ e ‘D’ controlam o lado direito do motor. Esses quatro pinos estão conectados aos quatro motores.
  • O pino ‘E’ é para alimentar o IC (L298) que é retirado do arduino (5v).
  • pino ‘F’ é aterrado.
  • O pino ‘G’ recebe energia de 12 volts da bateria via pino Vin do arduino.
  • Os pinos ‘H’, ‘I’, ‘J’ e ‘K’ recebem lógica do arduino.

DTMF –

  • pino ‘a’ está conectado a 3,5 volts do arduino para alimentar o IC (SC9270D).
  • O pino ‘b’ está conectado ao terra.
  • A entrada de DTMF é obtida do telefone via jack.
  • A saída na forma de dados binários via pinos (D0 – D3) vai para o arduino.

ARDUINO –

  • a saída do DTMF dos pinos (D0 – D3) chega aos pinos digitais do arduino. Podemos conectar esta saída a qualquer um dos quatro pinos digitais variando de (2 – 13) no arduino. Aqui usamos os pinos 8, 9, 10 e 11.
  • Os pinos digitais 2 e 3 do arduino são conectados ao pino número ‘H’ e ‘I’ do driver do motor, enquanto os pinos 12 e 13 do arduino são conectados a ‘J’ e ‘K’.
  • O arduino está conectado a uma bateria de 12 volts.

CÓDIGO do programa-

int x ; // initialising variables
int y ;
int z ;
int w ;
int a=20 ;
void setup()
{
pinMode(2,OUTPUT) ; //left motor
pinMode(3,OUTPUT) ; //left
pinMode(8,INPUT) ; // output from DO pin of DTMF
pinMode(9,INPUT) ; //output from D1 pin of DTMF
pinMode(10,INPUT) ; //output from D2 pin of DTMF
pinMode(11,INPUT) ; // output from D3 pin of DTMF
pinMode(12,OUTPUT) ; //right motor
pinMode(13,OUTPUT) ; //right
Serial.begin(9600);// begin serial communication between arduino and laptop
}
void decoding()// decodes the 4 bit binary number into decimal number
{
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
a=0;
}
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
a=2;
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
a=4;
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
a=6;
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
a=8;
}
}
void printing()// prints the value received from input pins 8,9,10 and 11 respectively
{
Serial.print(" x ");
Serial.print( x );
Serial.print(" y ");
Serial.print( y );
Serial.print(" z ");
Serial.print( z );
Serial.print(" w ");
Serial.print( w );
Serial.print(" a ");
Serial.print(a);
Serial.println();
}
void move_forward()// both side tyres of bot moves forward
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
}
void move_backward()//both side tyres of bot moves backward
{
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
}
void move_left()// only left side tyres move forward
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
}
void move_right()//only right side tyres move forward
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
}
void halt()// all motor stops
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
void reading()// take readings from input pins that are connected to DTMF D0, D1, D2 and D3 PINS.
{
x=digitalRead(8);
y=digitalRead(9);
z=digitalRead(10);
w=digitalRead(11);
}
void loop()
{
reading();
decoding();
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward();
reading();
decoding();
printing();
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
move_backward();
reading();
decoding();
printing();
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
move_left();
reading();
decoding();
printing();
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
move_right();
reading();
decoding();
printing();
}
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
halt();
reading();
decoding();
printing();
}
a=20;
printing();
}

EXPLICAÇÃO DO CÓDIGO

  1. Em primeiro lugar, inicializamos todas as variáveis ​​antes da configuração do void.
  2. Na configuração void, todos os pinos a serem usados ​​são atribuídos como entrada ou saída de acordo com sua finalidade.
  3. Uma nova função “void decoding()” é criada. Nesta função toda a entrada binária que obtemos do DTMF é decodificada para decimal pelo arduino. E a variável atribuída para este valor decimal é a.
  4. Outra função “void printing()” é feita. Esta função é usada para imprimir valores de entrada de pinos DTMF.
  5. Da mesma forma, cinco funções são necessárias para executar a tarefa necessária. Essas funções são:

void move_left(); // robô vira à esquerda

void move_right() ; // robô vira à direita

void move_forward(); // robô avança

void move_backward() ; // robô se move para trás

void parar(); // robô para

  1. Agora, essas funções são usadas na função void loop para fazer sua tarefa sempre que são chamadas de acordo com a entrada do teclado de discagem do celular.

Por exemplo:::

if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward();
reading();
decoding();
printing();
}

portanto, quando o botão 2 é pressionado ou 0010 é recebido nos pinos de entrada, o arduino decodifica isso e, assim, essas funções fazem seu trabalho: Siga em frente();

leitura();

decodificar();

impressão();

FUNCIONAMENTO DO CIRCUITO

Os controles que usamos em nosso projeto são os seguintes –

2 – Para avançar

4 – Virar à esquerda

6 – Virar à direita

8 – Para retroceder

0 – parar

Depois de fazer uma chamada para o telefone conectado ao robô, a pessoa abre seu teclado de discagem.

  • Se ‘2’ for pressionado. O DTMF recebe a entrada, a decodifica em seu número equivalente binário ou seja, ‘0010’ e a envia para os pinos digitais do arduino. O arduino então envia este código para o driver do motor, pois programamos quando o código será ‘0010’, os motores girarão no sentido horário e, portanto, nosso robô avançará.
  • Se ‘4’ for pressionado então seu código equivalente é ‘0100’ e de acordo com a programação os motores do lado esquerdo irão parar e somente os motores do lado direito irão girar no sentido horário e assim nosso robô irá virar para a esquerda.
  • Se ‘6’ for pressionado, o motor do lado direito irá parar e apenas os motores do lado esquerdo irão girar no sentido horário e, portanto, nosso robô irá girar para a direita.
  • Se ‘8’ for pressionado, nossos motores girarão no sentido anti-horário e, portanto, nosso robô se moverá para trás.
  • Se ‘0’ for pressionado, todos os nossos motores pararão e o robô não se moverá.

Neste projeto, atribuímos uma função apenas a cinco números do teclado de discagem. Podemos adicionar qualquer tipo de outro mecanismo e atribuir um número de teclado a esse mecanismo para fazer uma versão atualizada deste projeto.

PONTOS A TER EM MENTE

1 – O macaco não deve ficar solto.

2 – Os tons do teclado do telefone devem ser máximos.

3 – Internet/Wi-Fi do telefone receptor deve ser fechado para evitar efeitos de interferência.

4 – O pino esquerdo (ou seja, o pino ‘b’) do DTMF é terra e o pino direito (ou seja, o pino ‘a’) está conectado a 3,3v.

Imagens de protótipo do circuito de carro robô controlado por celular usando DTMF
IMG 6244E29FC578A
IMG 6244E2A000733
IMG 6244E2A03CB61
IMG 6244E2A07F026
IMG 6244E2A0C6891
IMG 6244E2A111182
Demonstração em vídeo do carro RC controlado por celular usando DTMF
YouTube video

Hashtags: #Carro #robô #controlado #por #telefone #celular #usando #módulo #DTMF
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados