Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Littlearm 2C:Membangun Lengan Robot Arduino Cetak 3D

Komponen dan persediaan

Arduino Nano R3
× 1
Servo (Tower Pro MG996R)
Servo MG90S
× 4
Papan Meped
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)

Tentang proyek ini

LittleArm 2C dirancang untuk menjadi perangkat yang dapat digunakan anak-anak dengan mudah sehingga kelas STEM dapat menerapkan lebih banyak kurikulum robotika. Dibuat lebih kokoh dan lebih mudah dipasang, sehingga mudah digunakan oleh anak-anak.

Semua bagian dapat dengan mudah dicetak 3D, dan dirancang untuk menjaga lengan tetap ramping dan sederhana. Seluruh desain memiliki kurang dari 15 sekrup.

Untuk mengontrol lengan Anda dapat menggunakan aplikasi Windows kami (yang aslinya ditulis dalam kode Python di sini) atau melalui Bluetooth dengan Aplikasi Android yang kami buat untuk itu.

Petunjuk lengkap untuk merakit LittleArm 2C dapat ditemukan di sini.

File Pencetakan 3D dapat diunduh dari sini.

Kode

  • Sketsa Arduino LittleArm 2C
Sketsa Arduino LittleArm 2CC/C++
// Kode arduino LittleArm 2C// Memungkinkan kontrol serial lengan robot cetak 3D LittleArm 2C // Dibuat oleh Konsep Miring#include  //perpustakaan arduino#include  //standard c library#define PI 3.141Servo basisServo; Servo bahuServo; Servo sikuServo; Servo gripperServo;//++++++++++++++++Variabel Global++++++++++++++++++++++++++ +++struct jointAngle{ //a struct adalah cara untuk mengatur variabel ke dalam grup int base; int bahu; int elbow;};struct jointSudut sudut yang diinginkan; //sudut yang diinginkan dari servosint yang diinginkanGrip; // posisi yang diinginkan dari gripperint gripperPos; //posisi saat ini dari perintah gripperint; // himpunan sudut bersama dalam penundaan yang diinginkan; // penundaan yang dilakukan servo antara langkah-langkah//int ready =0; // penanda yang digunakan untuk menandakan suatu proses telah selesai//+++++++++++++++FUNGSI DEKLARASI+++++++++++++++++++ ++++++++int servoParallelControl (int thePos, Servo theServo ); //Ini adalah fungsi untuk mengontrol servos//++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++void setup() // Setup menyiapkan board Arduino untuk operasi{ Serial.begin(9600); // Hidupkan komunikasi USB (Port Serial) dan komunikasikan pada 9600 bit per detik baseServo.attach(5); // menempelkan servo pada pin 5 ke objek servo shoulderServo.attach(4); // menempelkan servo pada pin 4 ke objek servo elbowServo.attach(3); // menempelkan servo pada pin 3 ke objek servo gripperServo.attach(2); // menempelkan servo pada pin 2 ke objek servo Serial.setTimeout(50); // Berhenti mencoba berbicara dengan komputer tidak ada respon setelah 50 milisenconds. Memastikan arduino tidak membaca serial terlalu lama Serial.println("started"); // Cetak ke komputer "Started" baseServo.write(90); //posisi awal servos shoulderServo.write(100); elbowServo.write(110);// ready =0;} //loop arduino primer. Di sinilah program utama Anda semua harus ditempatkan.void loop() { if (Serial.available()){ // Jika data masuk melalui port USB ke arduino maka...// ready =1; // Siap diatur ke 1 untuk menunjukkan bahwa perintah sedang dieksekusi // Perintah dikirim dari komputer dalam bentuk "#,#,#,#,#,\n" // Kode di bawah "mem-parsing" perintah itu menjadi bilangan bulat yang sesuai dengan // sudut dasar, sudut bahu, sudut siku, sudut pegangan, dan penundaan di servos, masing-masing. diinginkanAngle.base =Serial.parseInt(); diinginkanAngle.shoulder =Serial.parseInt(); diinginkanAngle.elbow =Serial.parseInt(); diinginkanGrip =Serial.parseInt(); diinginkanDelay =Serial.parseInt(); if(Serial.read() =='\n'){ // jika byte terakhir adalah '\n' maka berhenti membaca dan jalankan perintah '\n' singkatan dari 'done' Serial.flush(); //hapus semua perintah lain yang menumpuk di buffer Serial.print('d'); //send complete command "d" singkatan dari "done execution" } } // Nilai-nilai ini adalah status apakah joint telah mencapai posisinya atau belum // variabel yang dideklarasikan di dalam beberapa bagian program, seperti ini , disebut "Variabel lokal" int status1 =0; //status dasar int status2 =0; // status bahu int status3 =0; // status siku int status4 =0; // status gripper int selesai =0; // nilai ini memberitahu ketika semua sendi telah mencapai posisi mereka while(selesai ==0){ // Loop sampai semua sendi telah mencapai posisi mereka &&siap ==1 //pindahkan servo ke posisi yang diinginkan //Blok ini kode menggunakan "Fungsi" untuk membuat lebih kental. status1 =servoParallelControl(desiredAngle.base, baseServo,DesiredDelay); status2 =servoParallelControl(desiredAngle.shoulder, ShoulderServo,DesiredDelay); status3 =servoParallelControl(desiredAngle.elbow, elbowServo,DesiredDelay); status4 =servoParallelControl(diinginkanGrip, gripperServo, Delay yang diinginkan); // Periksa apakah semua sendi telah mencapai posisinya jika (status1 ==1 &status2 ==1 &status3 ==1 &status4 ==1){ done =1; //Jika selesai =1 maka loop akan berhenti } }// end of while}//+++++++++++++++++++++++++++ +DEFINISI FUNGSI++++++++++++++++++++++++++++++++++++++++ int servoParallelControl (int thePos , Servo theServo, int theSpeed ​​){ //Function Form:outputType FunctionName (inputType localInputName) //Fungsi ini menggerakkan servo sejumlah langkah ke posisi yang diinginkan dan mengembalikan apakah itu dekat atau telah mengulangi posisi itu // thePos - posisi yang diinginkan // thServo - pin alamat servo yang ingin kita pindahkan // theSpeed ​​- penundaan antara langkah-langkah servo int startPos =theServo.read(); //membaca posisi servo saat ini yang sedang kita kerjakan. int pos baru =startPos; // newPos menahan posisi servo saat bergerak //menentukan posisi pos terhadap perintah // jika posisi saat ini kurang dari yang diinginkan, pindahkan posisi ke atas if (startPos <(thePos-5)){ pos baru =pos baru + 1; theServo.write(newPos); tunda (Kecepatan); kembali 0; // Memberi tahu program utama bahwa servo belum mencapai posisinya } // Lain jika posisi saat ini lebih besar dari yang diinginkan pindahkan servo ke bawah else if (newPos> (thePos + 5)){ newPos =newPos - 1; theServo.write(newPos); tunda (Kecepatan); kembali 0; } // Jika servo +-5 dalam rentang yang diinginkan, beri tahu program utama bahwa servo telah mencapai posisi yang diinginkan. lain { kembali 1; } } //akhiri kontrol paralel servo

Skema

Hanya ada empat koneksi jika Anda menggunakan Papan Meped yang dirancang untuk Littlearm.

Proses manufaktur

  1. Robot Raspberry Pi dikendalikan melalui Bluetooth
  2. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi
  3. Lengan Robot Cetak 3D Sumber Terbuka dari Haddington Dynamics
  4. Robot SCARA Lengan Ganda
  5. MeArm Robot Arm - Robot Anda - V1.0
  6. Robot Pengikut Baris
  7. Arduino 3D-Printed Robotic Arm
  8. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  9. Robot yang Dikendalikan Bicara
  10. Robot Arm Dikendalikan Melalui Ethernet