Voiture robot contrôlée par téléphone portable utilisant le module DTMF

Essayez Notre Instrument Pour Éliminer Les Problèmes





Dans ce projet, nous allons contrôler un robot manuel via notre téléphone portable en utilisant le module DTMF et Arduino.

Par: Ankit Negi, Kanishk Godiyal et Navneet Singh sajwan



Voiture robot contrôlée par téléphone portable utilisant le module DTMF

INTRODUCTION

Dans ce projet, deux téléphones portables, un pour appeler et un pour recevoir l'appel sont utilisés. Le téléphone recevant l'appel est connecté au robot via une prise audio.

La personne qui appelle peut contrôler le robot simplement en appuyant sur les touches du clavier. (c'est-à-dire que le robot peut être utilisé de n'importe quel coin du monde).



COMPOSANTS REQUIS

1 - Arduino UNO

2 - Robot manuel

3 à 4 moteurs (ici nous avons utilisé 300 tr / min chacun)

4 - module DTMF

5 - Pilote de moteur

Batterie 6 - 12 volts

7 - Commutateur

8 - Prise casque

9 - Deux téléphones portables

10 - Fils de connexion

À PROPOS DU ROBOT MANUEL

Un robot manuel se compose d'un châssis (corps) dans lequel trois ou quatre moteurs (qui sont vissés avec des pneus) peuvent être attachés selon les besoins.

Les moteurs à utiliser dépendent de nos besoins, c'est-à-dire qu'ils peuvent fournir une vitesse élevée ou un couple élevé ou une bonne combinaison des deux. Des applications comme le quadricoptère nécessitent des moteurs à très haute vitesse pour se soulever contre la gravité, tandis que des applications comme le déplacement d'un bras mécanique ou l'ascension d'une pente raide nécessitent des moteurs à couple élevé.

Les deux moteurs à gauche et à droite du robot sont connectés en parallèle séparément. Habituellement, ils sont connectés à une batterie 12 volts via des commutateurs DPDT (double pin double throw).

Mais dans ce projet, nous utiliserons un téléphone mobile au lieu de DPDT pour contrôler le bot.

À PROPOS DE MOTOR DRIVER

Arduino donne un courant maximal de 40 mA en utilisant les broches GPIO (sortie d'entrée à usage général), tandis qu'il donne 200 mA en utilisant Vcc et la terre.

Les moteurs nécessitent un courant important pour fonctionner. Nous ne pouvons pas utiliser Arduino directement pour alimenter nos moteurs, nous utilisons donc un pilote de moteur.

Le pilote de moteur contient un pont H (qui est une combinaison de transistors). Le CI (L298) du pilote de moteur est entraîné par 5v qui est fourni par arduino.

Pour alimenter les moteurs, il faut une entrée 12v d'arduino qui est finalement alimentée par une batterie 12 V. Ainsi, l'arduino prend juste l'alimentation de la batterie et la donne au pilote du moteur.

Il nous permet de contrôler la vitesse et la direction des moteurs en donnant un courant maximum de 2 ampères.

INTRODUCTION AU MODULE DTMF

DTMF signifie Dual tone multi frequency. Notre pavé numérique est une fréquence multiple à deux toners, c'est-à-dire qu'un bouton donne un mélange de deux tonalités ayant une fréquence différente.

Une tonalité est générée à partir d'un groupe de tonalités à haute fréquence tandis que l'autre à partir d'un groupe à basse fréquence. Il est fait pour qu'aucun type de voix ne puisse imiter les tons.

Ainsi, il décode simplement l’entrée du clavier du téléphone en code binaire à quatre bits. Les fréquences des numéros de clavier que nous avons utilisées dans notre projet sont indiquées dans le tableau ci-dessous

DigitBasse fréquence (hertz) Haute fréquence (hertz) 2697133647701209677014778852133609411336

La séquence décodée binaire des chiffres du pavé numérique est indiquée dans le tableau ci-dessous.

chiffre D3 D2 D1 D0 1 0 0 0 1 deux 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 sept 0 1 1 1 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0

SCHÉMA

CONNEXIONS

Pilote de moteur -

  • Les broches «A» et «B» contrôlent le moteur du côté gauche tandis que les broches «C» et «D» contrôlent le côté droit du moteur. Ces quatre broches sont connectées aux quatre moteurs.
  • La broche «E» sert à alimenter le circuit intégré (L298) qui est tiré d’arduino (5v).
  • la broche «F» est la masse.
  • La broche «G» prend une alimentation de 12 volts de la batterie via la broche Vin de l'arduino.
  • Les broches «H», «I», «J» et «K» reçoivent la logique d'arduino.

DTMF -

  • la broche «a» est connectée à 3,5 volts d’arduino pour alimenter le circuit intégré (SC9270D).
  • La broche «b» est connectée à la terre.
  • L'entrée de DTMF provient du téléphone via la prise.
  • La sortie sous forme de données binaires via les broches (D0 - D3) va à arduino.

ARDUINO -

  • la sortie de DTMF des broches (D0 - D3) arrive aux broches numériques d'arduino. Nous pouvons connecter cette sortie à l'une des quatre broches numériques variant de (2 à 13) dans arduino. Ici, nous avons utilisé les broches 8, 9, 10 et 11.
  • Les broches numériques 2 et 3 d’arduino sont connectées aux broches «H» et «I» du pilote de moteur, tandis que les broches 12 et 13 de l’arduino sont connectées à «J» et «K».
  • L'arduino est connecté à une batterie de 12 volts.

CODE du programme-

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()
}

EXPLICATION DU CODE

  1. Tout d'abord, nous initialisons toutes les variables avant l'installation de void.
  2. Dans une configuration vide, toutes les broches à utiliser sont affectées comme entrée ou sortie en fonction de leur objectif.
  3. Une nouvelle fonction «void decoding ()» est créée. Dans cette fonction, toutes les entrées binaires que nous obtenons de DTMF sont décodées en décimal par arduino. Et la variable affectée pour cette valeur décimale est a.
  4. Une autre fonction «impression vide ()» est effectuée. Cette fonction est utilisée pour imprimer les valeurs d'entrée à partir des broches DTMF.
  5. De même, cinq fonctions sont des fonctions requises pour exécuter la tâche requise. Ces fonctions sont:

void move_left () // le robot tourne à gauche

void move_right () // le robot tourne à droite

void move_forward () // le robot avance

void move_backward () // le robot recule

void halt () // le robot s'arrête

  1. Maintenant, ces fonctions sont utilisées dans la fonction de boucle vide pour faire leur tâche chaque fois qu'elles sont appelées en fonction de l'entrée du clavier du téléphone portable.

Par exemple:::

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

Par conséquent, lorsque le bouton 2 est enfoncé ou que 0010 est reçu sur les broches d'entrée, arduino le décode et donc ces fonctions font leur travail: Avance()

en train de lire()

décodage()

impression()

FONCTIONNEMENT DU CIRCUIT

Les contrôles que nous avons utilisés dans notre projet sont les suivants -

2 - Pour avancer

4 - Tourner à gauche

6 - Tourner à droite

8 - Pour reculer

0 - arrêter

Après avoir appelé le téléphone connecté au robot, la personne ouvre son pavé numérique.

  • Si vous appuyez sur «2». Le DTMF reçoit l’entrée, la décode dans son nombre équivalent binaire, c’est-à-dire «0010», et l’envoie aux broches numériques d’arduino. L'arduino envoie ensuite ce code au pilote du moteur comme nous l'avons programmé lorsque le code sera «0010», les moteurs tourneront dans le sens des aiguilles d'une montre et donc notre robot avancera.
  • Si vous appuyez sur «4», son code équivalent est «0100» et selon la programmation, les moteurs du côté gauche s'arrêteront et seuls les moteurs du côté droit tourneront dans le sens des aiguilles d'une montre et donc notre robot tournera à gauche.
  • Si vous appuyez sur «6», le moteur du côté droit s'arrêtera et seuls les moteurs du côté gauche tourneront dans le sens des aiguilles d'une montre et notre robot tournera à droite.
  • Si «8» est pressé, nos moteurs tourneront dans le sens anti-horaire et ainsi notre robot se déplacera vers l'arrière.
  • Si vous appuyez sur «0», tous nos moteurs s’arrêteront et le robot ne bougera pas.

Dans ce projet, nous avons attribué une fonction à cinq numéros de pavé numérique uniquement. Nous pouvons ajouter n'importe quel type d'autre mécanisme et attribuer un numéro de pavé numérique à ce mécanisme pour créer une version améliorée de ce projet.

POINTS À GARDER À L'ESPRIT

1 - La prise ne doit pas être lâche.

2 - Les tonalités du clavier du téléphone doivent être au maximum.

3 - Internet / Wi-Fi du téléphone récepteur doit être fermé pour éviter les effets d'interférence.

4 - La broche gauche (c'est-à-dire la broche «b») du DTMF est la masse et la broche droite (c'est-à-dire la broche «a») est connectée à 3,3v.

Images prototypes du circuit de voiture robot contrôlé par téléphone portable utilisant DTMF
Démonstration vidéo d'une voiture radiocommandée contrôlée par téléphone portable utilisant DTMF



Précédent: Introduction à l'EEPROM dans Arduino Suivant: Créez ce robot suiveur de ligne pour le projet de foire scientifique