Mobilā tālruņa vadīta robotu automašīna, izmantojot DTMF moduli

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā projektā mēs vadīsim manuālu robotu caur mūsu mobilo tālruni, izmantojot DTMF moduli un Arduino.

Autori: Ankit Negi, Kanishk Godiyal un Navneet Singh sajwan



Mobilā tālruņa vadīta robotu automašīna, izmantojot DTMF moduli

IEVADS

Šajā projektā tiek izmantoti divi mobilie tālruņi, viens zvana veikšanai un otrs zvana saņemšanai. Tālrunis, kas saņem zvanu, ir savienots ar robotu, izmantojot audio ligzdu.

Persona, kas zvana, var vadīt robotu, vienkārši nospiežot numuru sastādīšanas tastatūras taustiņus. (t.i., robotu var darbināt no jebkura pasaules stūra).



NEPIECIEŠAMĀS SASTĀVDAĻAS

1 - Arduino UNO

2 - Manuāls robots

3 - 4 motori (šeit mēs izmantojām 300 apgriezienus minūtē)

4 - DTMF modulis

5 - Motora vadītājs

6 - 12 voltu akumulators

7 - slēdzis

8 - austiņu ligzda

9 - divi mobilie tālruņi

10 - Savienojošie vadi

PAR MANUĀLO ROBOTU

Manuālais robots sastāv no šasijas (virsbūves), kurā atkarībā no prasības var piestiprināt trīs vai četrus motorus (kas ir pieskrūvēti ar riepām).

Izmantojamie motori ir atkarīgi no mūsu prasībām, t.i., tie var vai nu nodrošināt lielu ātrumu, vai lielu griezes momentu, vai arī labu abu kombināciju. Tādām lietojumprogrammām kā kvadracikls, lai paceltu pret gravitāciju, ir nepieciešami ļoti liela ātruma motori, savukārt, piemēram, mehāniskas sviras kustībai vai kāpšanai stāvā nogāzē ir vajadzīgi lieli griezes momenta motori.

Abi robota kreisajā un labajā pusē esošie motori ir savienoti paralēli atsevišķi. Parasti tos savieno ar 12 voltu akumulatoru, izmantojot DPDT (dubultās tapas dubultmetiena) slēdžus.

Bet šajā projektā robota kontrolei mēs izmantosim mobilo tālruni, nevis DPDT.

PAR MOTORA VADĪTĀJU

Arduino nodrošina maksimālo strāvu 40mA, izmantojot GPIO (vispārējas nozīmes ievades izejas) tapas, bet tas nodrošina 200mA, izmantojot Vcc un zemi.

Motoru darbībai nepieciešama liela strāva. Mēs nevaram tieši izmantot arduino, lai darbinātu mūsu motorus, tāpēc mēs izmantojam motora vadītāju.

Motora draiveris satur H Bridge (kas ir tranzistoru kombinācija). Motora vadītāja IC (L298) vada 5v, ko piegādā arduino.

Lai darbinātu motorus, no arduino nepieciešama 12 V ieeja, ko galu galā piegādā 12 V akumulators. Tātad arduino vienkārši ņem enerģiju no akumulatora un dod motora vadītājam.

Tas ļauj mums kontrolēt motoru ātrumu un virzienu, dodot maksimālo strāvu 2 ampēri.

IEVADS DTMF MODULĪ

DTMF nozīmē Dual tone multi frequency. Mūsu zvanu spilventiņš ir divu toneru vairākkārtēja frekvence, t.i., viena poga dod divu toņu sajaukumu ar atšķirīgu frekvenci.

Viens signāls tiek ģenerēts no augstas frekvences toņu grupas, bet otrs - no zemas frekvences grupas. Tas tiek darīts tā, lai jebkura veida balss nevarētu atdarināt toņus.

Tātad, tas vienkārši dekodē tālruņa tastatūras ievadi četru bitu binārā kodā. Tastatūras numuru frekvences, kuras mēs esam izmantojuši mūsu projektā, ir parādīti zemāk esošajā tabulā

Cipars Zema frekvence (herts) Augstas frekvence (herts) 2697133647701209677014778852133609411336

Numuru sastādīšanas ciparu binārā dekodētā secība ir parādīta zemāk esošajā tabulā.

cipars D3 D2 D1 D0 1 0 0 0 1 divi 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

APKURES DIAGRAMMA

SAVIENOJUMI

Motora vadītājs -

  • Tapas “A” un “B” kontrolē kreisās puses motoru, bet “C” un “D” - motora labo pusi. Šīs četras tapas ir savienotas ar četriem motoriem.
  • Spraudnis “E” ir paredzēts IC (L298) darbināšanai, kas tiek ņemts no arduino (5v).
  • tapa ‘F’ ir noslīpēta.
  • Spraudnis ‘G’ paņem 12 voltu strāvu no akumulatora, izmantojot arduino Vin spraudni.
  • Pins ‘H’, ‘I’, ‘J’ un ‘K’ saņem loģiku no arduino.

DTMF -

  • tapa ‘a’ ir savienota ar 3,5 voltu arduino, lai darbinātu mikroshēmu (SC9270D).
  • Tapa ‘b’ ir savienota ar zemi.
  • DTMF ievade tiek ņemta no tālruņa, izmantojot domkratu.
  • Izvade bināro datu veidā, izmantojot (D0 - D3) tapas, nonāk arduino.

ARDUINO -

  • DTMF izeja no (D0 - D3) tapām nāk uz arduino digitālajām tapām. Mēs varam savienot šo izvadi ar jebkuru no četrām digitālajām tapām, kas arduino mainās no (2 - 13). Šeit mēs izmantojām 8., 9., 10. un 11. tapu.
  • Arduino digitālās tapas 2 un 3 ir savienotas ar motora draivera tapu numuriem “H” un “I”, savukārt arduino tapas 12 un 13 ir savienotas ar “J” un “K”.
  • Arduino ir savienots ar 12 voltu akumulatoru.

Programmas KODS

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

KODA PASKAIDROJUMS

  1. Pirmkārt, mēs inicializējam visus mainīgos pirms iestatīšanas anulēšanas.
  2. Tukšā iestatījumā visas izmantojamās tapas tiek piešķirtas kā ievade vai izeja atbilstoši to mērķim.
  3. Tiek izveidota jauna funkcija “void decoding ()”. Šajā funkcijā visu bināro ievadi, ko iegūstam no DTMF, arduino dekodē līdz decimāldaļai. Un šai decimāldaļai piešķirtais mainīgais ir a.
  4. Tiek veikta vēl viena funkcija “void printing ()”. Šo funkciju izmanto, lai drukātu ievades vērtības no DTMF tapām.
  5. Tāpat piecas funkcijas ir nepieciešamas funkcijas ir nepieciešamas, lai veiktu nepieciešamo uzdevumu. Šīs funkcijas ir:

void move_left () // robots pagriežas pa kreisi

void move_right () // robots pagriežas pa labi

void move_forward () // robots virzās uz priekšu

void move_backward () // robots pārvietojas atpakaļ

void halt () // robots apstājas

  1. Tagad šīs funkcijas tiek izmantotas tukšās cilpas funkcijās, lai veiktu savu uzdevumu ikreiz, kad tās tiek izsauktas saskaņā ar ievadi no mobilā tālruņa tastatūras.

Piemēram:::

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

tādējādi, nospiežot pogu 2 vai saņemot 0010 uz ievades tapām, Arduino to atšifrē un tādējādi šīs funkcijas veic savu darbu: virzīties uz priekšu ()

lasījums ()

dekodēšana ()

druka ()

APKURES DARBS

Projektā izmantotās vadības ierīces ir šādas -

2 - virzīties uz priekšu

4 - pagriezties pa kreisi

6 - pagriezties pa labi

8 - Lai pārvietotos atpakaļ

0 - apstāties

Pēc tam, kad esat piezvanījis uz tālruni, kas savienots ar robotu, persona atver savu zvana tastatūru.

  • Ja tiek nospiests ‘2’. DTMF saņem ievadi, atšifrē to binārā ekvivalenta skaitā, t.i., “0010”, un nosūta to arduino digitālajām tapām. Pēc tam arduino nosūta šo kodu motora vadītājam, kā mēs esam ieprogrammējuši, kad kods būs “0010”, motori griezīsies pulksteņrādītāja kustības virzienā un līdz ar to mūsu robots virzīsies uz priekšu.
  • Ja tiek nospiests “4”, tā ekvivalents kods ir “0100”, un saskaņā ar programmēšanu kreisās puses motori apstāsies un tikai labās puses motori griezīsies pulksteņrādītāja kustības virzienā, līdz ar to mūsu robots pagriezīsies pa kreisi.
  • Ja tiek nospiests ‘6’, labās puses motors apstāsies un tikai kreisās puses motori griezīsies pulksteņrādītāja virzienā, līdz ar to mūsu robots pagriezīsies pa labi.
  • Ja tiek nospiests ‘8’, mūsu motori griezīsies pretēji pulksteņrādītāja kustības virzienam un tādējādi mūsu robots pārvietosies atpakaļ.
  • Ja tiek nospiests “0”, visi mūsu motori apstāsies un robots nekustēsies.

Šajā projektā esam piešķīruši funkciju tikai pieciem numuru sastādīšanas tastatūras numuriem. Mēs varam pievienot jebkura veida citus mehānismus un piešķirt šim mehānismam numuru sastādīšanas tastatūru, lai izveidotu jauninātu šī projekta versiju.

PUNKTI, KAS JĀGlabā

1 - domkrats nedrīkst būt vaļīgs.

2 - tālruņa tastatūras signāliem jābūt maksimāliem.

3 - lai izvairītos no traucējumiem, uztverošā tālruņa internetam / Wi-Fi jābūt aizvērtam.

4 - DTMF kreisā tapa (t.i., tapa ‘b’) ir iezemēta, un labā tapa (t.i. tapa ‘a’) ir savienota ar 3.3v.

Mobilā tālruņa vadāmās robotu automašīnas ķēdes attēlu prototips, izmantojot DTMF
Video demonstrēšana ar mobilo tālruni vadāmā RC automašīnā, izmantojot DTMF



Iepriekšējais: Ievads EEPROM vietnē Arduino Nākamais: izveidojiet šo līnijas sekotāja robotu zinātnes izstādes projektam