Daftar Isi:

Lengan Robot Sederhana & Cerdas Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)
Lengan Robot Sederhana & Cerdas Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)

Video: Lengan Robot Sederhana & Cerdas Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)

Video: Lengan Robot Sederhana & Cerdas Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)
Video: Robot Lengan (ARM ROBOT) ARDUINO 2024, Juni
Anonim
Image
Image
Hal-hal yang Anda Butuhkan
Hal-hal yang Anda Butuhkan

Dalam instruksi ini saya akan membuat lengan robot sederhana. Itu akan dikendalikan menggunakan lengan master. Lengan akan mengingat gerakan dan bermain secara berurutan. Konsepnya tidak baru. Saya mendapat Ide dari "lengan robot mini -oleh Stoerpeak" Saya ingin membuat ini untuk waktu yang lama, tetapi saat itu saya benar-benar noob dan tidak memiliki pengetahuan tentang pemrograman. Sekarang akhirnya saya membangun satu, Tetap sederhana, murah dan berbagi dengan Anda semua.

Jadi mari kita mulai….

Langkah 1: Hal-hal yang Anda Butuhkan:-

Hal-hal yang Anda Butuhkan
Hal-hal yang Anda Butuhkan
Hal-hal yang Anda Butuhkan
Hal-hal yang Anda Butuhkan

Berikut adalah daftar hal-hal yang Anda perlukan: -

1. Motor servo x 5 Link untuk AS:- https://amzn.to/2OxbSH7Link untuk Eropa:-

2. Potensiometer x 5 (Saya telah menggunakan 100k.)Tautan untuk AS:- https://amzn.to/2ROjhDMTautan untuk Eropa:-

3. Arduino UNO. (Anda juga dapat menggunakan Arduino Nano) Tautan untuk AS:- https://amzn.to/2DBbENWLink untuk Eropa:-

4. Papan tempat memotong roti. (Saya menyarankan kit ini) Tautan untuk AS:- https://amzn.to/2Dy86w4Link untuk Eropa:-

5. Baterai. (opsional, saya menggunakan adaptor 5v)

6. Karton/Kayu/Sun-board/acrylic apa pun yang tersedia atau mudah ditemukan.

Dan Anda juga perlu menginstal Arduino IDE.

Langkah 2: Membuat Lengan: -

Membuat Lengan
Membuat Lengan
Membuat Lengan
Membuat Lengan

Disini saya menggunakan stik es krim untuk membuat lengannya. Anda dapat menggunakan bahan apa pun yang tersedia untuk Anda. Dan Anda dapat mencoba desain mekanis yang berbeda untuk membuat lengan yang lebih baik. desain saya tidak terlalu stabil.

Saya hanya menggunakan selotip dua sisi untuk menempelkan servos ke stik es krim dan mengencangkannya menggunakan sekrup.

Untuk lengan Master saya menempelkan potensiometer ke stik es krim dan membuat lengan.

Mengacu pada gambar akan memberi Anda Ide yang lebih baik.

Saya telah memasang semuanya pada papan kanvas ukuran A4 yang digunakan sebagai alas.

Langkah 3: Membuat Koneksi: -

Membuat Koneksi
Membuat Koneksi
Membuat Koneksi
Membuat Koneksi
Membuat Koneksi
Membuat Koneksi

Pada langkah ini kita akan membuat semua koneksi yang diperlukan, Lihat gambar di atas.

  • Pertama-tama sambungkan semua servo secara paralel ke catu daya (Kabel Merah ke +ve dan Kabel Hitam atau Coklat ke Gnd)
  • Selanjutnya sambungkan kabel sinyal yaitu kabel Kuning atau Oranye ke pin PWM arduino.
  • Sekarang hubungkan potensiometer ke +5v dan Gnd arduino secara paralel.
  • Hubungkan terminal tengah ke pin Analog ardunio.

Di sini Pin Digital 3, 5, 6, 9 & 10 digunakan untuk mengontrol servos

Pin Analog A0 hingga A4 digunakan untuk Input dari Potensiometer.

Servo yang terhubung ke pin 3 akan dikontrol oleh potensiometer yang terhubung ke A0

Servo yang terhubung ke pin 5 akan dikendalikan oleh pot di A1, dan seterusnya….

Catatan: - Meskipun Servo tidak ditenagai oleh arduino, Pastikan untuk menghubungkan Gnd servos ke arduino atau lengan tidak akan berfungsi.

Langkah 4: Pengkodean: -

Pengkodean
Pengkodean

Logika kode ini cukup sederhana, nilai potensiometer disimpan dalam array, catatan kemudian dilalui menggunakan loop for dan servos melakukan langkah-langkah sesuai nilai. Anda dapat melihat tutorial ini yang saya gunakan untuk referensi "Kontrol & Memori Servo Potensiometer Arduino"

Kode:- (File yang dapat diunduh terlampir di bawah.)

Pertama kita akan mendeklarasikan semua variabel yang diperlukan secara global sehingga kita dapat menggunakannya di seluruh program. Tidak diperlukan penjelasan khusus untuk ini

#termasuk

//Objek Servo Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; //Objek Potensiometer int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; //Variabel untuk menyimpan Posisi Servo int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; //Variabel untuk menyimpan nilai posisi sebelumnya int Prev_0_Pos; int Sebelumnya_1_Pos; int Sebelumnya_2_Pos; int Sebelumnya_3_Pos; int Sebelumnya_4_Pos; //Variabel untuk menyimpan nilai posisi saat ini int Current_0_Pos; int Current_1_Pos; int Saat Ini_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; //Menyimpan sudut int Servo_Number; //Tidak menyimpan servo int Storage[600]; //Array untuk menyimpan data (Meningkatkan ukuran array akan menghabiskan lebih banyak memori) int Index = 0; // Indeks array dimulai dari posisi 0 data char = 0; //variabel untuk menyimpan data dari input serial.

Sekarang kita akan menulis fungsi setup, di mana kita mengatur pin dan fungsinya. Ini adalah fungsi utama yang dijalankan terlebih dahulu

batalkan pengaturan()

{ Serial.begin(9600); //Untuk komunikasi serial antara arduino dan IDE. // Objek servo dilampirkan ke pin PWM. Servo_0.attach(3); Servo_1.attach(5); Servo_2.attach(6); Servo_3.attach (9); Servo_4.attach(10); //Servo diatur ke posisi 100 saat inisialisasi. Servo_0.write(100); Servo_1.write(100); Servo_2.write(100); Servo_3.write(100); Servo_4.write(100); Serial.println("Tekan 'R' untuk Merekam dan 'P' untuk memutar"); }

Sekarang kita harus membaca nilai potensiometer menggunakan pin Input Analog dan memetakannya untuk mengontrol servos. Untuk ini kita akan mendefinisikan sebuah fungsi dan menamakannya Map_Pot();, Anda dapat memberi nama apa pun yang Anda inginkan itu adalah fungsi yang ditentukan pengguna

batalkan Map_Pot()

{ /* Servo berputar pada 180 derajat tetapi menggunakannya untuk membatasi bukanlah ide yang baik karena membuat servos berdengung terus menerus yang mengganggu sehingga kami membatasi servo untuk bergerak antara: 1-179 */ Pot_0 = analogRead(A0); // Baca input dari pot dan simpan di Variabel Pot_0. Servo_0_Pos = peta(Pot_0, 0, 1023, 1, 179); //Peta servo sesuai nilai antara 0 hingga 1023 Servo_0.write(Servo_0_Pos); //Pindahkan servo ke posisi itu. Pot_1 = analogRead(A1); Servo_1_Pos = peta(Pot_1, 0, 1023, 1, 179); Servo_1.write(Servo_1_Pos); Pot_2 = analogBaca(A2); Servo_2_Pos = peta(Pot_2, 0, 1023, 1, 179); Servo_2.write(Servo_2_Pos); Pot_3 = analogBaca(A3); Servo_3_Pos = peta(Pot_3, 0, 1023, 1, 179); Servo_3.write(Servo_3_Pos); Pot_4 = analogBaca(A4); Servo_4_Pos = peta(Pot_4, 0, 1023, 1, 179); Servo_4.write(Servo_4_Pos); }

Sekarang kita akan menulis fungsi loop:

lingkaran kosong()

{ Pot_Peta(); //Fungsi panggilan untuk membaca nilai pot while (Serial.available() > 0) { data = Serial.read(); if (data == 'R') Serial.println("Merekam Pergerakan…"); if (data == 'P') Serial.println("Memainkan Gerakan yang Direkam…"); } if (data == 'R') //Jika 'R' dimasukkan, mulailah merekam. { //Menyimpan nilai dalam variabel Prev_0_Pos = Servo_0_Pos; Sebelumnya_1_Pos = Servo_1_Pos; Sebelumnya_2_Pos = Servo_2_Pos; Sebelumnya_3_Pos = Servo_3_Pos; Sebelumnya_4_Pos = Servo_4_Pos; Peta_Pot(); // Fungsi peta dipanggil kembali untuk perbandingan jika (abs(Prev_0_Pos == Servo_0_Pos)) // nilai absolut diperoleh dengan membandingkan { Servo_0.write(Servo_0_Pos); // Jika nilai cocok servo direposisi jika (Current_0_Pos != Servo_0_Pos) // Jika nilai tidak cocok { Storage[Index] = Servo_0_Pos + 0; // Nilai ditambahkan ke array Indeks++; // Nilai indeks bertambah 1 } Current_0_Pos = Servo_0_Pos; } /* Demikian pula perbandingan nilai dilakukan untuk semua servo, +100 ditambahkan setiap entri sebagai nilai diferensial. */ if (abs(Sebelumnya_1_Pos == Servo_1_Pos)) { Servo_1.write(Servo_1_Pos); if (Current_1_Pos != Servo_1_Pos) { Penyimpanan[Indeks] = Servo_1_Pos + 100; Indeks++; } Current_1_Pos = Servo_1_Pos; } if (abs(Sebelumnya_2_Pos == Servo_2_Pos)) { Servo_2.write(Servo_2_Pos); if (Current_2_Pos != Servo_2_Pos) { Penyimpanan[Indeks] = Servo_2_Pos + 200; Indeks++; } Current_2_Pos = Servo_2_Pos; } if (abs(Prev_3_Pos == Servo_3_Pos)) { Servo_3.write(Servo_3_Pos); if (Current_3_Pos != Servo_3_Pos) { Penyimpanan[Indeks] = Servo_3_Pos + 300; Indeks++; } Current_3_Pos = Servo_3_Pos; } if (abs(Sebelumnya_4_Pos == Servo_4_Pos)) { Servo_4.write(Servo_4_Pos); if (Current_4_Pos != Servo_4_Pos) { Penyimpanan[Indeks] = Servo_4_Pos + 400; Indeks++; } Current_4_Pos = Servo_4_Pos; } /* Nilai dicetak pada monitor serial, '\t' untuk menampilkan nilai dalam format tabel */ Serial.print(Servo_0_Pos); Serial.print("\t"); Serial.print(Servo_1_Pos); Serial.print("\t"); Serial.print(Servo_2_Pos); Serial.print("\t"); Serial.print(Servo_3_Pos); Serial.print("\t"); Serial.println(Servo_4_Pos); Serial.print("Indeks = "); Serial.println(Indeks); penundaan (50); } if (data == 'P') //JIKA 'P' dimasukkan, Mulai mainkan gerakan yang direkam. { for (int i = 0; i < Index; i++) //Melintasi larik menggunakan for loop { Servo_Number = Storage / 100; // Mencari jumlah servo Servo_Position = Storage % 100; // Menemukan posisi sakelar servo(Servo_Number) { case 0: Servo_0.write(Servo_Position); merusak; kasus 1: Servo_1.write(Servo_Position); merusak; kasus 2: Servo_2.write(Servo_Position); merusak; kasus 3: Servo_3.write(Servo_Position); merusak; kasus 4: Servo_4.write(Servo_Position); merusak; } penundaan(50); } } }

Setelah kode siap, Sekarang unggah ke papan arduino

Lengan Pintar siap bekerja. Fungsinya memang belum semulus yang dibuat Stoerpeak.

Jika Anda dapat membuat kode lebih baik atau memiliki saran untuk saya, beri tahu saya di bagian komentar.

Dengan itu, mari kita lanjutkan ke pengujian….

Langkah 5: Pengujian: -

Setelah berhasil mengupload kode ke board, Buka 'Serial Monitor' Anda dapat menemukannya di opsi Tools. Ketika Serial monitor dimulai, arduino akan mengatur ulang. Sekarang Anda dapat mengontrol lengan robot menggunakan lengan master. Tapi tidak ada yang direkam.

Untuk mulai merekam, Masukkan 'R' di monitor sekarang Anda dapat melakukan gerakan yang ingin Anda rekam.

Setelah gerakan selesai, Anda harus memasukkan 'P' untuk memainkan gerakan yang direkam. Servo akan terus melakukan gerakan selama papan tidak diatur ulang.

Direkomendasikan: