Mục lục:

Ô tô không dây điều khiển bằng cử chỉ: 7 bước
Ô tô không dây điều khiển bằng cử chỉ: 7 bước

Video: Ô tô không dây điều khiển bằng cử chỉ: 7 bước

Video: Ô tô không dây điều khiển bằng cử chỉ: 7 bước
Video: Xe điều khiển từ xa bằng cử chỉ tay #shorts 2024, Tháng mười hai
Anonim
Ô tô không dây điều khiển bằng cử chỉ
Ô tô không dây điều khiển bằng cử chỉ

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chế tạo ô tô được điều khiển bằng cử chỉ hoặc bất kỳ rô bốt nào. Dự án này có hai phần, một phần là thiết bị phát và phần khác là thiết bị thu. Bộ phận phát thực sự được gắn trên găng tay và bộ phận thu được đặt bên trong ô tô hoặc bất kỳ rô bốt nào. Bây giờ là lúc để tạo ra một chiếc xe đẹp. Đi nào!

Bước 1: Thiết bị

Bộ phát

1. Arduino Nano.

2. Mô-đun cảm biến MPU6050.

3. Máy phát RF 433 MHz.

4. Bất kỳ loại pin 3 cell, 11,1 volt nào (Ở đây tôi đã sử dụng pin đồng xu).

5. Vero-Board.

6. Găng tay.

Bộ thu

1. Arduino Nano hoặc Arduino Uno.

2. Mô-đun điều khiển động cơ L298N.

3. Khung robot 4 bánh bao gồm các động cơ.

4. Bộ thu RF 433 RF.

5. Pin Li-po 3 cell, 11,1 volt.

6. Vero-board.

Khác

1. Keo dính và súng.

2. Dây nhảy.

3. Trình điều khiển trục vít

4. Bộ hàn.

Vân vân.

Bước 2: Tệp hình ảnh sơ đồ mạch

Tệp hình ảnh sơ đồ mạch
Tệp hình ảnh sơ đồ mạch

Bước 3: Fritzing File Sơ đồ mạch

Bước 4: Mã máy phát

#bao gồm

#bao gồm

#bao gồm

MPU6050 mpu6050 (Dây điện);

hẹn giờ dài = 0;

bộ điều khiển char *;

void setup ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // tốc độ truyền dữ liệu Kbps

}

void loop ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.update ();

if (millis () - timer> 1000)

{Serial.println ("================================================== =========== "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("\ taccY:"); Serial.print (mpu6050.getAccY ()); Serial.print ("\ taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("\ tgyroY:"); Serial.print (mpu6050.getGyroY ()); Serial.print ("\ tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.print ("\ taccAngleY:"); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("\ tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); Serial.print ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("============================================= ========== / n "); bộ đếm thời gian = mili (); }

/////////////////////////////////////////////////////////////////////////////////////

if (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Chờ cho đến khi hết toàn bộ thư Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Chờ cho đến khi hết toàn bộ thư Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <- 40) {controller = "Y2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Chờ cho đến khi hết toàn bộ thư Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX () - 10 && mpu6050.getAccAngleY () - 10) {controller = "A1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Chờ cho đến khi hết toàn bộ thư Serial.println ("STOP"); }}

Bước 5: Mã người nhận

#bao gồm

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Bắt buộc đối với DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bit trên giây pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Khởi động PLL bộ thu chạy Serial.println ("Tất cả đều OK");

}

void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Không chặn

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); phía sau(); chậm trễ (100); //tắt(); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); phía trước(); chậm trễ (100); //tắt(); }

else if ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("TRÁI"); bên trái(); chậm trễ (100); //tắt(); }

else if ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("PHẢI"); đúng(); chậm trễ (100); //tắt(); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); tắt(); chậm trễ (100); }} else {Serial.println ("Không nhận được tín hiệu"); }}

vô hiệu về phía trước ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

void back ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

void left ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }

void right ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

void off ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

Bước 6: Tệp INO

Bước 7: Liên kết các thư viện

Thư viện dây ảo:

MPU6050_tockn Libraby:

Thư viện Wire:

Đề xuất: