Xe rô bốt điều khiển bằng điện thoại di động sử dụng mô-đun DTMF

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong dự án này, chúng tôi sẽ điều khiển một robot bằng tay thông qua điện thoại di động của mình bằng mô-đun DTMF và Arduino.

Bởi: Ankit Negi, Kanishk Godiyal và Navneet Singh sajwan



Xe rô bốt điều khiển bằng điện thoại di động sử dụng mô-đun DTMF

GIỚI THIỆU

Trong dự án này, hai điện thoại di động, một để gọi và một để nhận cuộc gọi được sử dụng. Điện thoại nhận cuộc gọi được kết nối với robot thông qua giắc cắm âm thanh.

Người đang gọi điện có thể điều khiển robot chỉ bằng cách nhấn các phím trên bàn phím quay số. (tức là robot có thể được vận hành từ bất kỳ nơi nào trên thế giới).



CÁC THÀNH PHẦN YÊU CẦU

1 - Arduino UNO

2 - Robot bằng tay

3 - 4 động cơ (ở đây chúng tôi sử dụng 300 vòng / phút mỗi động cơ)

4 - Mô-đun DTMF

5 - Trình điều khiển động cơ

Pin 6 - 12 volt

7 - Chuyển đổi

8 - Giắc cắm tai nghe

9 - Hai điện thoại di động

10 - Kết nối dây

GIỚI THIỆU ROBOT HƯỚNG DẪN

Robot điều khiển bằng tay bao gồm khung (thân) trong đó có thể gắn ba hoặc bốn động cơ (được vặn bằng lốp) tùy theo yêu cầu.

Động cơ được sử dụng tùy thuộc vào yêu cầu của chúng tôi, tức là chúng có thể cung cấp tốc độ cao hoặc mô-men xoắn cao hoặc kết hợp tốt cả hai. Các ứng dụng như quad copter yêu cầu động cơ tốc độ rất cao để nâng chống lại trọng lực trong khi ứng dụng như di chuyển một cánh tay cơ khí hoặc leo dốc đòi hỏi động cơ mô-men xoắn cao.

Cả hai động cơ bên trái và bên phải của robot được kết nối song song riêng biệt. Thông thường chúng được kết nối với pin 12volt thông qua công tắc DPDT (đôi pin kép).

Nhưng trong dự án này, chúng tôi sẽ sử dụng điện thoại di động thay vì DPDT để điều khiển bot.

GIỚI THIỆU VỀ LÁI XE ĐỘNG CƠ

Arduino cung cấp dòng điện tối đa 40mA bằng cách sử dụng chân GPIO (đầu ra đầu vào mục đích chung), trong khi nó cung cấp 200mA sử dụng Vcc và nối đất.

Động cơ yêu cầu dòng điện lớn để hoạt động. Chúng tôi không thể sử dụng arduino trực tiếp để cung cấp năng lượng cho động cơ của mình nên chúng tôi sử dụng trình điều khiển động cơ.

Trình điều khiển động cơ chứa cầu H (là sự kết hợp của các bóng bán dẫn). IC (L298) của trình điều khiển động cơ được điều khiển bởi 5v được cung cấp bởi arduino.

Để cung cấp năng lượng cho động cơ, cần có đầu vào 12v từ arduino, nguồn cuối cùng được cung cấp bởi pin 12 v. Vì vậy, arduino chỉ lấy năng lượng từ pin và cung cấp cho trình điều khiển động cơ.

Nó cho phép chúng ta điều khiển tốc độ và hướng của động cơ bằng cách cho dòng điện tối đa là 2 ampe.

GIỚI THIỆU VỀ MÔ ĐUN DTMF

DTMF là viết tắt của Dual tone multi frequency. Bàn phím quay số của chúng tôi là một bàn phím hai mực nhiều tần số, tức là một nút cung cấp hỗn hợp của hai âm có tần số khác nhau.

Một âm được tạo ra từ nhóm âm tần cao trong khi âm khác từ nhóm tần số thấp. Nó được thực hiện để bất kỳ loại giọng nói nào cũng không thể bắt chước âm sắc.

Vì vậy, nó chỉ đơn giản là giải mã đầu vào của bàn phím điện thoại thành mã nhị phân bốn bit. Tần suất của số bàn phím mà chúng tôi đã sử dụng trong dự án của mình được hiển thị trong bảng dưới đây

Số tần số thấp (hertz) Tần số cao (hertz) 2697133647701209677014778852133609411336

Trình tự được giải mã nhị phân của các chữ số trên bàn phím quay số được hiển thị trong bảng bên dưới.

chữ số D3 D2 D1 D0 1 0 0 0 1 hai 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 số 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0

SƠ ĐỒ MẠCH

KẾT NỐI

Người điều khiển động cơ -

  • Pin ‘A’ và ‘B’ điều khiển động cơ bên trái trong khi Pin ‘C’ và ‘D’ điều khiển bên phải động cơ. Bốn chân này được kết nối với bốn động cơ.
  • Chân ‘E’ là cấp nguồn cho IC (L298) được lấy từ arduino (5v).
  • chân ‘F’ là nối đất.
  • Pin ‘G’ lấy nguồn 12 volt từ pin thông qua chân Vin của arduino.
  • Các chân ‘H’, ‘I’, ‘J’ và ‘K’ nhận logic từ arduino.

DTMF -

  • chân ‘a’ được kết nối với 3,5 volt của arduino để cấp nguồn cho IC (SC9270D).
  • Chân ‘b’ được kết nối với đất.
  • Đầu vào của DTMF được lấy từ điện thoại thông qua giắc cắm.
  • Đầu ra dưới dạng dữ liệu nhị phân thông qua các chân (D0 - D3) đi đến arduino.

ARDUINO -

  • đầu ra của DTMF từ các chân (D0 - D3) đến các chân kỹ thuật số của arduino. Chúng ta có thể kết nối đầu ra này với bất kỳ chân nào trong số bốn chân kỹ thuật số khác nhau từ (2 - 13) trong arduino. Ở đây chúng tôi đã sử dụng các chân 8, 9, 10 và 11.
  • Chân kỹ thuật số 2 và 3 của arduino được kết nối với chân số ‘H’ và ‘I’ của trình điều khiển động cơ trong khi chân 12 và 13 của arduino được kết nối với ‘J’ và ‘K’.
  • Arduino được kết nối với pin 12 volt.

Mã chương trình-

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

GIẢI THÍCH MÃ

  1. Trước hết, chúng tôi khởi tạo tất cả các biến trước khi thiết lập void.
  2. Trong thiết lập void, tất cả các chân được sử dụng được chỉ định làm đầu vào hoặc đầu ra tùy theo mục đích của chúng.
  3. Một hàm mới “void decoding ()” được tạo. Trong hàm này, tất cả đầu vào nhị phân mà chúng ta nhận được từ DTMF được giải mã thành thập phân bởi arduino. Và biến được gán cho giá trị thập phân này là a.
  4. Một hàm khác “void print ()” được thực hiện. Chức năng này được sử dụng để in các giá trị đầu vào từ các chân DTMF.
  5. Tương tự, năm chức năng là các chức năng bắt buộc phải có để thực hiện nhiệm vụ được yêu cầu. Các chức năng này là:

void move_left () // robot rẽ trái

void move_right () // robot rẽ phải

void move_ntic () // rô bốt di chuyển về phía trước

void move_backward () // rô bốt di chuyển lùi

void halt () // rô bốt dừng

  1. Bây giờ các hàm này được sử dụng trong hàm void loop để thực hiện nhiệm vụ của chúng bất cứ khi nào chúng được gọi theo đầu vào từ bàn phím quay số của điện thoại di động.

Ví dụ:::

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

do đó khi nút 2 được nhấn hoặc 0010 được nhận trên các chân đầu vào, arduino sẽ giải mã điều này và do đó các chức năng này thực hiện công việc của chúng: tiến về phía trước()

đọc hiểu()

giải mã ()

in ấn ()

MẠCH LÀM VIỆC

Các điều khiển mà chúng tôi đã sử dụng trong dự án của mình như sau:

2 - Để tiến lên

4 - Để rẽ trái

6 - Để rẽ phải

8 - Để lùi về phía sau

0 - dừng lại

Sau khi thực hiện cuộc gọi đến điện thoại được kết nối với robot, người này sẽ mở bàn phím quay số của mình.

  • Nếu ‘2’ được nhấn. DTMF nhận đầu vào, giải mã nó bằng số tương đương nhị phân của nó, tức là '0010' và gửi nó đến các chân kỹ thuật số của arduino. Sau đó, arduino sẽ gửi mã này đến trình điều khiển động cơ như chúng tôi đã lập trình khi mã sẽ là '0010', động cơ sẽ quay theo chiều kim đồng hồ và do đó rô bốt của chúng ta sẽ di chuyển về phía trước.
  • Nếu nhấn ‘4’ thì mã tương đương của nó là ‘0100’ và theo lập trình, động cơ bên trái sẽ dừng và chỉ động cơ bên phải sẽ quay theo chiều kim đồng hồ và do đó robot của chúng ta sẽ quay sang trái.
  • Nếu nhấn ‘6’ thì động cơ bên phải sẽ dừng và chỉ động cơ bên trái quay theo chiều kim đồng hồ và do đó robot của chúng ta sẽ quay sang phải.
  • Nếu nhấn ‘8’ thì động cơ của chúng tôi sẽ quay theo hướng ngược chiều kim đồng hồ và do đó rô bốt của chúng tôi sẽ di chuyển ngược lại.
  • Nếu nhấn ‘0’ thì tất cả các động cơ của chúng ta sẽ dừng và rô bốt sẽ không di chuyển.

Trong dự án này, chúng tôi đã chỉ định một chức năng cho năm số bàn phím quay số. Chúng tôi có thể thêm bất kỳ loại cơ chế nào khác và chỉ định số bàn phím quay số cho cơ chế đó để tạo phiên bản nâng cấp của dự án này.

NHỮNG ĐIỂM CẦN GIỮ TRONG TÂM

1 - Giắc cắm không được lỏng lẻo.

2 - Âm bàn phím điện thoại phải ở mức tối đa.

3 - Cần đóng Internet / Wi-Fi của điện thoại nhận để tránh ảnh hưởng nhiễu.

4 - Chân trái (tức là chân ‘b’) của DTMF được nối đất và chân phải (tức là chân ‘a’) được kết nối với 3.3v.

Hình ảnh nguyên mẫu của mạch xe rô bốt điều khiển bằng điện thoại di động sử dụng DTMF
Video trình diễn xe RC điều khiển bằng điện thoại di động sử dụng DTMF



Trước: Giới thiệu về EEPROM trong Arduino Tiếp theo: Chế tạo Robot theo dòng này cho Dự án Hội chợ Khoa học