Автомобиль-робот, управляемый мобильным телефоном, с использованием модуля DTMF

Попробуйте наш инструмент устранения неполадок





В этом проекте мы собираемся управлять ручным роботом через наш мобильный телефон, используя модуль DTMF и Arduino.

Авторы: Анкит Неги, Канишк Годиял и Навнит Сингх Саджван



Автомобиль-робот, управляемый мобильным телефоном, с использованием модуля DTMF

ВСТУПЛЕНИЕ

В этом проекте используются два сотовых телефона: один для звонков, а другой - для приема звонков. Телефон, принимающий звонок, подключается к роботу через аудиоразъем.

Звонящий может управлять роботом, просто нажимая клавиши панели набора номера. (т.е. роботом можно управлять из любого уголка мира).



НЕОБХОДИМЫЕ КОМПОНЕНТЫ

1 - Arduino UNO

2 - Ручной робот

3-4 мотора (здесь мы использовали 300 об / мин каждый)

4 - модуль DTMF

5 - Драйвер двигателя

6 - 12 вольт аккумулятор

7 - Переключатель

8 - Разъем для наушников

9 - Два сотовых телефона

10 - Соединительные провода

О РУЧНОМ РОБОТЕ

Ручной робот состоит из шасси (корпуса), к которому могут быть прикреплены три или четыре мотора (которые прикручены шинами) в зависимости от требований.

Используемые двигатели зависят от наших требований, т.е. они могут обеспечивать либо высокую скорость, либо высокий крутящий момент, либо хорошее сочетание того и другого. Такие приложения, как квадрокоптер, требуют очень высокоскоростных двигателей для подъема против силы тяжести, в то время как такие приложения, как перемещение механической руки или подъем по крутому склону, требуют двигателей с высоким крутящим моментом.

Оба двигателя на левой и правой стороне робота подключены параллельно по отдельности. Обычно они подключаются к 12-вольтовой батарее через переключатели DPDT (двухконтактный, двойной ход).

Но в этом проекте мы будем использовать мобильный телефон вместо DPDT для управления ботом.

О АВТОМОБИЛЕ

Arduino выдает максимальный ток 40 мА при использовании контактов GPIO (вход-выход общего назначения), в то время как он дает 200 мА при использовании Vcc и заземления.

Двигателям для работы требуется большой ток. Мы не можем использовать Arduino напрямую для питания наших двигателей, поэтому мы используем драйвер двигателя.

Драйвер двигателя содержит Н-мост (который представляет собой комбинацию транзисторов). Микросхема драйвера двигателя (L298) питается от напряжения 5 В, поступающего от Arduino.

Для питания двигателей требуется входное напряжение 12 В от Arduino, которое в конечном итоге получает питание от батареи на 12 В. Таким образом, Arduino просто берет питание от батареи и передает его драйверу двигателя.

Это позволяет нам контролировать скорость и направление двигателей, давая максимальный ток 2 ампера.

ВВЕДЕНИЕ В МОДУЛЬ DTMF

DTMF означает двухтональный многочастотный режим. Наша панель набора номера - это двухчастотный тонер, то есть одна кнопка дает смесь двух тонов с разной частотой.

Один тон создается из высокочастотной группы тонов, а другой - из низкочастотной. Это сделано для того, чтобы любой голос не мог имитировать тона.

Таким образом, он просто декодирует ввод с клавиатуры телефона в четырехбитный двоичный код. Частоты номеров клавиатуры, которые мы использовали в нашем проекте, показаны в таблице ниже.

Цифры Низкая частота (герцы) Высокая частота (герцы) 2697133647701209677014778852133609411336

Последовательность цифр цифровой клавиатуры в двоичном коде показана в таблице ниже.

цифра D3 D2 D1 D0 1 0 0 0 1 два 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 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

ПРИНЦИПИАЛЬНАЯ ЭЛЕКТРИЧЕСКАЯ СХЕМА

СОЕДИНЕНИЯ

Драйвер мотора -

  • Контакты «A» и «B» управляют двигателем с левой стороны, а контакты «C» и «D» - с правой стороны двигателя. Эти четыре контакта подключены к четырем двигателям.
  • Контакт «E» предназначен для питания микросхемы IC (L298), взятой от Arduino (5 В).
  • штифт «F» заземлен.
  • Контакт «G» потребляет 12 В от батареи через контакт Vin Arduino.
  • Контакты «H», «I», «J» и «K» получают логику от Arduino.

DTMF -

  • контакт «a» подключен к 3,5 В Arduino для питания IC (SC9270D).
  • Контакт «b» подключен к земле.
  • Ввод DTMF осуществляется с телефона через разъем.
  • Вывод в виде двоичных данных через контакты (D0 - D3) поступает на Arduino.

АРДУИНО -

  • вывод DTMF с выводов (D0 - D3) поступает на цифровые выводы arduino. Мы можем подключить этот выход к любому из четырех цифровых контактов, от (2 до 13) в Arduino. Здесь мы использовали контакты 8, 9, 10 и 11.
  • Цифровые контакты 2 и 3 Arduino подключены к контактам с номерами «H» и «I» драйвера двигателя, а контакты 12 и 13 Arduino подключены к контактам «J» и «K».
  • Ардуино подключается к батарее на 12 В.

КОД программы-

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

КОД ОБЪЯСНЕНИЕ

  1. Прежде всего, мы инициализируем все переменные перед установкой void.
  2. При настройке void все используемые контакты назначаются как вход или выход в соответствии с их назначением.
  3. Сделана новая функция «void decoding ()». В этой функции весь двоичный ввод, который мы получаем от DTMF, декодируется в десятичное с помощью arduino. И переменная, назначенная для этого десятичного значения, - это.
  4. Сделана еще одна функция «пустая печать ()». Эта функция используется для печати входных значений с контактов DTMF.
  5. Точно так же пять функций являются обязательными функциями, необходимыми для выполнения требуемой задачи. Эти функции:

void move_left () // робот поворачивает налево

void move_right () // робот поворачивает направо

void move_forward () // робот движется вперед

void move_backward () // робот движется назад

void halt () // робот останавливается

  1. Теперь эти функции используются в функции void loop для выполнения своей задачи всякий раз, когда они вызываются в соответствии с вводом с панели набора номера мобильного телефона.

Например:::

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

следовательно, когда нажата кнопка 2 или получено 0010 на входных контактах, Arduino декодирует это, и, таким образом, эти функции выполняют свою работу: двигаться вперед()

чтение ()

декодирование ()

печать ()

ЦЕПЬ РАБОТАЕТ

Элементы управления, которые мы использовали в нашем проекте, следующие:

2 - Движение вперед

4 - повернуть налево

6 - повернуть направо

8 - Движение назад

0 - остановить

После звонка на телефон, подключенный к роботу, человек открывает панель набора номера.

  • Если нажата «2». DTMF принимает входные данные, декодирует их в двоичном эквиваленте, то есть «0010», и отправляет их на цифровые выводы Arduino. Затем Arduino отправляет этот код драйверу двигателя, как мы запрограммировали, когда код будет '0010', двигатели будут вращаться по часовой стрелке, и, следовательно, наш робот будет двигаться вперед.
  • Если нажать «4», то его эквивалентный код - «0100», и в соответствии с программированием моторы левой стороны остановятся, и только моторы правой стороны будут вращаться по часовой стрелке, и, следовательно, наш робот повернется влево.
  • Если нажать «6», то правый мотор остановится, и только левые моторы будут вращаться по часовой стрелке, и, следовательно, наш робот повернется вправо.
  • Если нажать «8», наши двигатели будут вращаться против часовой стрелки, и, таким образом, наш робот будет двигаться назад.
  • Если нажать «0», все наши двигатели остановятся, и робот не будет двигаться.

В этом проекте мы назначили функцию только пяти телефонным номерам. Мы можем добавить любой другой механизм и назначить этому механизму номер панели набора, чтобы создать обновленную версию этого проекта.

ЧТО СЛЕДУЕТ СОХРАНИТЬ

1 - Домкрат не должен болтаться.

2 - Тоны клавиатуры телефона должны быть максимальными.

3 - Интернет / Wi-Fi на принимающем телефоне должен быть закрыт во избежание помех.

4 - Левый вывод (т.е. вывод «b») DTMF является заземлением, а правый вывод (т.е. вывод «a») подключен к 3,3 В.

Прототип изображения автомобильной схемы робота, управляемого мобильным телефоном, с использованием DTMF
Видео демонстрация радиоуправляемой машины, управляемой мобильным телефоном, с использованием DTMF



Предыдущая: Введение в EEPROM в Arduino Далее: Сделайте этого робота-последователя линии для проекта Science Fair