Robot samochodowy sterowany telefonem komórkowym za pomocą modułu DTMF

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym projekcie zamierzamy sterować robotem manualnym za pośrednictwem naszego telefonu komórkowego z wykorzystaniem modułu DTMF i Arduino.

Autorzy: Ankit Negi, Kanishk Godiyal i Navneet Singh sajwan



Robot samochodowy sterowany telefonem komórkowym za pomocą modułu DTMF

WPROWADZENIE

W tym projekcie używane są dwa telefony komórkowe, jeden do dzwonienia i jeden do odbierania połączenia. Telefon odbierający połączenie jest podłączony do robota za pośrednictwem gniazda audio.

Osoba dzwoniąca może sterować robotem po prostu naciskając klawisze klawiatury. (czyli robot może być obsługiwany z dowolnego zakątka świata).



WYMAGANE SKŁADNIKI

1 - Arduino UNO

2 - Robot ręczny

3 - 4 silniki (tutaj użyliśmy 300 obr / min każdy)

4 - moduł DTMF

5 - Sterownik silnika

Akumulator 6-12 V.

7 - Przełącznik

8 - Gniazdo słuchawkowe

9 - Dwa telefony komórkowe

10 - Przewody połączeniowe

O ROBOCIE RĘCZNYM

Robot ręczny składa się z podwozia (nadwozia), do którego w zależności od wymagań można przymocować trzy lub cztery silniki (do których przykręcone są opony).

Stosowane silniki zależą od naszych wymagań, tj. Mogą zapewniać dużą prędkość lub wysoki moment obrotowy lub dobre połączenie obu. Aplikacje takie jak quad copter wymagają bardzo szybkich silników do podnoszenia wbrew grawitacji, podczas gdy zastosowania takie jak przesuwanie ramienia mechanicznego lub wspinaczka po stromym zboczu wymagają silników o wysokim momencie obrotowym.

Oba silniki po lewej i prawej stronie robota są połączone równolegle oddzielnie. Zwykle są one podłączone do akumulatora 12 V za pomocą przełączników DPDT (dwubiegunowych).

Ale w tym projekcie użyjemy telefonu komórkowego zamiast DPDT do kontrolowania bota.

O STEROWNIKU SILNIKOWYM

Arduino daje maksymalny prąd 40 mA za pomocą pinów GPIO (wyjście wejściowe ogólnego przeznaczenia), podczas gdy daje 200 mA przy użyciu Vcc i masy.

Silniki wymagają do działania dużego prądu. Nie możemy używać arduino bezpośrednio do zasilania naszych silników, więc używamy sterownika silnika.

Sterownik silnika zawiera mostek H (będący kombinacją tranzystorów). Układ scalony (L298) sterownika silnika jest napędzany napięciem 5 V, które jest dostarczane przez arduino.

Do zasilania silników potrzebne jest wejście 12 V z arduino, które jest ostatecznie zasilane przez akumulator 12 V. Tak więc arduino po prostu pobiera energię z akumulatora i przekazuje sterownikowi silnika.

Pozwala nam sterować prędkością i kierunkiem pracy silników podając maksymalny prąd 2 amperów.

WPROWADZENIE DO MODUŁU DTMF

DTMF to skrót od Dual tone multi frequency. Nasza klawiatura wybierania numerów to dwa tonery o wielu częstotliwościach, czyli jeden przycisk daje mieszaninę dwóch tonów o różnej częstotliwości.

Jeden ton jest generowany z grupy tonów o wysokiej częstotliwości, a drugi z grupy o niskiej częstotliwości. Dzieje się tak, aby żaden rodzaj głosu nie mógł imitować tonów.

Dlatego po prostu dekoduje dane wprowadzane z klawiatury telefonu do czterobitowego kodu binarnego. Częstotliwości numerów manipulatorów, które wykorzystaliśmy w naszym projekcie przedstawia poniższa tabela

Cyfra Niska częstotliwość (Hz) Wysoka częstotliwość (Hz) 2697133647701209677014778852133609411336

Poniższa tabela przedstawia zdekodowaną binarnie sekwencję cyfr klawiatury numerycznej.

cyfra D3 D2 D1 D0 1 0 0 0 1 dwa 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

SCHEMAT OBWODU

ZNAJOMOŚCI

Kierowca motocyklu -

  • Szpilki „A” i „B” sterują silnikiem po lewej stronie, a styki „C” i „D” sterują prawą stroną silnika. Te cztery piny są połączone z czterema silnikami.
  • Pin „E” służy do zasilania układu scalonego (L298), który pochodzi z arduino (5v).
  • pin „F” jest uziemiony.
  • Pin „G” pobiera napięcie 12 V z baterii przez pin Vin arduino.
  • Piny „H”, „I”, „J” i „K” otrzymują logikę od arduino.

DTMF -

  • pin „a” jest podłączony do 3,5 V arduino do zasilania układu scalonego (SC9270D).
  • Pin „b” jest połączony z masą.
  • Sygnał DTMF jest pobierany z telefonu przez gniazdo.
  • Wyjście w postaci danych binarnych poprzez piny (D0 - D3) trafia do arduino.

ARDUINO -

  • wyjście DTMF z pinów (D0 - D3) dochodzi do pinów cyfrowych arduino. Możemy podłączyć to wyjście do dowolnego z czterech pinów cyfrowych różniących się od (2 - 13) w arduino. Tutaj użyliśmy pinów 8, 9, 10 i 11.
  • Cyfrowe piny 2 i 3 arduino są podłączone do pinów „H” i „I” sterownika silnika, podczas gdy piny 12 i 13 arduino są połączone z „J” i „K”.
  • Arduino jest podłączone do akumulatora 12 V.

KOD programu-

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

WYJAŚNIENIE KODU

  1. Przede wszystkim inicjalizujemy wszystkie zmienne przed void setup.
  2. W konfiguracji pustej wszystkie używane piny są przypisane jako wejście lub wyjście zgodnie z ich przeznaczeniem.
  3. Utworzono nową funkcję „void decoding ()”. W tej funkcji wszystkie binarne dane wejściowe, które otrzymujemy z DTMF, są dekodowane do dziesiętnego przez arduino. Zmienna przypisana do tej wartości dziesiętnej to a.
  4. Wykonywana jest kolejna funkcja „void printing ()”. Ta funkcja jest używana do drukowania wartości wejściowych z pinów DTMF.
  5. Podobnie, pięć funkcji jest wymaganych, aby wykonać wymagane zadanie. Te funkcje to:

void move_left () // robot skręca w lewo

void move_right () // robot skręca w prawo

void move_forward () // robot porusza się do przodu

void move_backward () // robot porusza się do tyłu

void halt () // robot zatrzymuje się

  1. Teraz te funkcje są używane w funkcji void loop do wykonywania swoich zadań, gdy są wywoływane zgodnie z danymi wejściowymi z klawiatury telefonu komórkowego.

Na przykład:::

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

stąd po naciśnięciu przycisku 2 lub odebraniu 0010 na pinach wejściowych arduino dekoduje to i tym samym te funkcje wykonują swoją pracę: ruszaj naprzód()

czytanie()

rozszyfrowanie()

druk()

OBWÓD PRACY

Kontrolki, których użyliśmy w naszym projekcie, są następujące -

2 - Aby iść do przodu

4 - Skręcić w lewo

6 - Skręcić w prawo

8 - Aby cofnąć się

0 - aby zatrzymać

Po nawiązaniu połączenia z telefonem podłączonym do robota, osoba otwiera swoją klawiaturę.

  • Jeśli zostanie wciśnięty „2”. DTMF odbiera dane wejściowe, dekoduje je w binarnym numerze równoważnym, tj. „0010” i wysyła do cyfrowych pinów arduino. Następnie arduino wysyła ten kod do sterownika silnika, tak jak zaprogramowaliśmy, kiedy kod będzie „0010”, silniki będą się obracać w kierunku zgodnym z ruchem wskazówek zegara, a zatem nasz robot będzie poruszał się do przodu.
  • Jeśli zostanie wciśnięty „4”, to jego odpowiednik to „0100” i zgodnie z zaprogramowaniem silniki po lewej stronie zatrzymają się i tylko silniki po prawej stronie będą się obracać zgodnie z ruchem wskazówek zegara, a zatem nasz robot skręci w lewo.
  • Jeśli naciśniesz „6”, silnik po prawej stronie zatrzyma się i tylko silniki z lewej strony będą się obracać zgodnie z ruchem wskazówek zegara, a zatem nasz robot skręci w prawo.
  • Jeśli naciśniesz „8”, nasze silniki będą się obracać w kierunku przeciwnym do ruchu wskazówek zegara, a tym samym nasz robot będzie się cofał.
  • Jeśli naciśniesz „0”, wszystkie nasze silniki zatrzymają się i robot nie będzie się poruszał.

W tym projekcie przypisaliśmy funkcję tylko do pięciu numerów z klawiatury. Możemy dodać dowolny inny mechanizm i przypisać numer klawiatury do tego mechanizmu, aby stworzyć ulepszoną wersję tego projektu.

PUNKTY, NA KTÓRE NALEŻY PAMIĘTAĆ

1 - Podnośnik nie powinien być luźny.

2 - Dźwięki klawiszy telefonu powinny być maksymalne.

3 - Internet / Wi-Fi telefonu odbierającego powinien być zamknięty, aby uniknąć efektów zakłóceń.

4 - Lewy pin (tj. Pin „b”) DTMF jest masą, a prawy pin (tj. Pin „a”) jest podłączony do 3,3V.

Prototypowe obrazy obwodu samochodu robota sterowanego telefonem komórkowym przy użyciu DTMF
Demonstracja wideo samochodu RC sterowanego telefonem komórkowym za pomocą DTMF



Poprzedni: Wprowadzenie do EEPROM w Arduino Dalej: Stwórz robota podążającego za linią do projektu Science Fair