Isi kandungan:

Kereta Tanpa Wayar Dikawal Gerakan: 7 Langkah
Kereta Tanpa Wayar Dikawal Gerakan: 7 Langkah

Video: Kereta Tanpa Wayar Dikawal Gerakan: 7 Langkah

Video: Kereta Tanpa Wayar Dikawal Gerakan: 7 Langkah
Video: ZAHRAN ENGINEERING: Teknik Tarik Kabel Tanpa Batuan|Selamat,Cepat,Dan Pantas 2024, Disember
Anonim
Kereta Tanpa Wayar Dikawal Gerakan
Kereta Tanpa Wayar Dikawal Gerakan

Dalam tutorial ini kita akan belajar, bagaimana membuat kereta terkawal gerak isyarat atau robot apa pun. Projek ini mempunyai dua bahagian, satu bahagian adalah unit pemancar dan bahagian lain adalah unit penerima. Unit pemancar sebenarnya dipasang pada sarung tangan dan unit penerima diletakkan di dalam kereta atau robot apa pun. Sekarang masanya untuk membuat kereta yang bagus. Mari pergi!

Langkah 1: Peralatan

Unit Pemancar

1. Arduino Nano.

2. Modul Sensor MPU6050.

3. Pemancar RF 433 MHz.

4. Sebarang jenis 3 sel, Bateri 11.1 volt (Di sini saya telah menggunakan sel duit syiling).

5. Papan Vero.

6. Sarung Tangan Tangan.

Unit Penerima

1. Arduino Nano atau Arduino Uno.

2. Modul Pemandu Motor L298N.

3. Rangka robot 4 roda termasuk motor.

4. Penerima RF 433 RF.

5. 3 sel, Bateri Li-po 11.1 volt.

6. Papan Vero.

Yang lain

1. Tongkat gam dan pistol.

2. Wayar pelompat.

3. Pemacu Skru

4. Kit Pematerian.

dan lain-lain.

Langkah 2: Fail Gambar Diagram Litar

Fail Gambar Diagram Litar
Fail Gambar Diagram Litar

Langkah 3: Fritzing File Circuit Diagram

Langkah 4: Kod Pemancar

#sertakan

#sertakan

#sertakan

MPU6050 mpu6050 (Kawat);

pemasa panjang = 0;

pengawal char *;

persediaan tidak sah ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (benar); vw_set_ptt_inverted (benar); // vw_set_tx_pin (10); vw_setup (4000); // kelajuan pemindahan data Kbps

}

gelung kosong ()

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

mpu6050.update ();

jika (milis () - pemasa> 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 "); pemasa = milis (); }

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

jika (mpu6050.getAccAngleX () 30) {pengawal = "X2"; pengawal vw_send ((uint8_t *), strlen (pengawal)); vw_wait_tx (); // Tunggu sehingga keseluruhan mesej hilang Serial.println ("FORWARD"); } lain jika (mpu6050.getAccAngleY ()> 40) {pengawal = "Y1"; pengawal vw_send ((uint8_t *), strlen (pengawal)); vw_wait_tx (); // Tunggu sehingga keseluruhan mesej hilang Serial.println ("KIRI"); } lain jika (mpu6050.getAccAngleY () <- 40) {pengawal = "Y2"; pengawal vw_send ((uint8_t *), strlen (pengawal)); vw_wait_tx (); // Tunggu sehingga keseluruhan mesej hilang Serial.println ("KANAN"); } lain jika (mpu6050.getAccAngleX () - 10 && mpu6050.getAccAngleY () - 10) {pengawal = "A1"; pengawal vw_send ((uint8_t *), strlen (pengawal)); vw_wait_tx (); // Tunggu sehingga keseluruhan mesej hilang Serial.println ("STOP"); }}

Langkah 5: Kod Penerima

#sertakan

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; batal persediaan () {Serial.begin (9600); vw_set_ptt_inverted (benar); // Diperlukan untuk DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bit per saat pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Mulakan penerima PLL menjalankan Serial.println ("Semua OK");

}

gelung kosong () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Tidak menyekat

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); ke belakang(); kelewatan (100); // mati (); } lain jika ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); ke hadapan (); kelewatan (100); // mati (); }

lain jika ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("KIRI"); meninggalkan(); kelewatan (100); // mati (); }

lain jika ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("KANAN"); betul (); kelewatan (100); // mati (); } lain jika ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); mati (); kelewatan (100); }} lain {Serial.println ("Tiada Isyarat Diterima"); }}

batal ke hadapan ()

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

kekosongan ke belakang ()

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

kosongkan kiri ()

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

batal ke kanan ()

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

terbatal ()

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

Langkah 6: Fail INO

Langkah 7: Pautan Perpustakaan

Perpustakaan Kawat Maya:

MPU6050_tockn Libraby:

Perpustakaan Kawat:

Disyorkan: