Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kagamitan
- Hakbang 2: 3D I-print ang Robotic Arm
- Hakbang 3: Electronic Montage
- Hakbang 4: Application ng Smartphone
- Hakbang 5: Ang Arduino Code
- Hakbang 6: Iyon Ito
Video: Robotic Arm Game - Controller ng Smartphone: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Kamusta !
Narito ang isang masayang laro sa tag-init: Ang robotic Arm na kinokontrol ng Smartphone !!
Tulad ng nakikita mo sa Video, makokontrol mo ang Arm sa ilang mga Joystick sa iyong smartphone.
Maaari mo ring i-save ang isang pattern, na ang robot ay magpaparami sa isang loop, upang makagawa ng ilang mga paulit-ulit na gawain bilang exemple. Ngunit ang pattern na ito ay nababago ayon sa nais mo !!!!
Maging malikhain !
Hakbang 1: Mga Kagamitan
Makikita mo rito ang materyal na kailangan mo.
Gagastos ka sa paligid ng 50 € upang maitayo ang robotic Arm na ito. Ang Software at mga tool ay maaaring mapalitan, ngunit ginamit ko ang mga para sa proyektong ito.
Hakbang 2: 3D I-print ang Robotic Arm
Ang Robotic Arm ay naka-print sa 3D (kasama ang aming prusa i3).
Salamat sa website na "HowtoMechatronics.com", ang kanyang STL Files ay kahanga-hanga upang makabuo ng isang 3D arm.
Aabutin ng halos 20 oras upang mai-print ang lahat ng mga piraso.
Hakbang 3: Electronic Montage
Ang montage ay hiwalay sa 2 bahagi:
Isang elektronikong bahagi, kung saan ang arduino ay konektado sa mga servo ng mga Digital Pins, at sa aparato ng Bluetooth (Rx, Tx).
Isang bahagi ng Lakas, kung saan pinapatakbo ang mga servos na may 2 charger ng telepono (5V, 2A max).
Hakbang 4: Application ng Smartphone
Ang Application ay ginawa sa App imbentor 2. Gumagamit kami ng 2 Joystick upang makontrol ang 4 na Mga Serbisyo at 2 pang mga Pindutan upang makontrol ang huling Grip.
Ikinonekta namin ang Arm at Smartphone nang magkasama sa pamamagitan ng paggamit ng isang Bluetooth module (HC-06).
Sa wakas, pinapayagan ng isang mode sa pag-save ang gumagamit na makatipid ng hanggang sa 9 na posisyon para sa Arm.
Pagkatapos ay ang braso ay pupunta sa isang awtomatikong mode, kung saan gagamitin niya ang mga nai-save na posisyon.
Hakbang 5: Ang Arduino Code
// 08/19 - Kinokontrol ang Robotic Arm Smartphone
# isama ang # tukuyin ang TUNAY na totoong # tukuyin ang MALI na maling // ******************** NA DEKLARASYON ***** **** *****
salitang rep; // mot envoyé du module Arduino au smartphone
int chiffre_final = 0; int cmd = 3; // variable commande du servo moteur (troisième fil (orange, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activ_saving = 0; Servo moteur; // on définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int step_angle = 3; int anggulo, anggulo1, anggulo3, anggulo5, anggulo2; // anggulo int pas; int r, r1, r2, r3; int enregistrer; boolean fin = MALI; boolean fin1 = MALI; boolean fin2 = MALI; boolean fin3 = MALI; boolean fin4 = MALI; salitang w; // variable envoyé du smartphone au module Arduino int sauvegarde_positions1 [5]; int sauvegarde_positions2 [5]; int sauvegarde_positions3 [5]; int sauvegarde_positions4 [5]; int sauvegarde_positions5 [5]; int sauvegarde_positions6 [5]; int sauvegarde_positions7 [5]; int sauvegarde_positions8 [5]; int sauvegarde_positions9 [5];
// int anggulo; // anggulo de pag-ikot (0 a 180)
// ***** ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; sauvegarde_positions2 [0] = sauvegarde_positions2 [1] = sauvegarde_positions2 [2] = sauvegarde_positions2 [3] = sauvegarde_positions2 [4] = 0; sauvegarde_positions3 [0] = sauvegarde_positions3 [1] = sauvegarde_positions3 [2] = sauvegarde_positions3 [3] = sauvegarde_positions3 [4] = 0; sauvegarde_positions4 [0] = sauvegarde_positions4 [1] = sauvegarde_positions4 [2] = sauvegarde_positions4 [3] = sauvegarde_positions4 [4] = 0; sauvegarde_positions5 [0] = sauvegarde_positions5 [1] = sauvegarde_positions5 [2] = sauvegarde_positions5 [3] = sauvegarde_positions5 [4] = 0; sauvegarde_positions6 [0] = sauvegarde_positions6 [1] = sauvegarde_positions6 [2] = sauvegarde_positions6 [3] = sauvegarde_positions6 [4] = 0; sauvegarde_positions7 [0] = sauvegarde_positions7 [1] = sauvegarde_positions7 [2] = sauvegarde_positions7 [3] = sauvegarde_positions7 [4] = 0; sauvegarde_positions8 [0] = sauvegarde_positions8 [1] = sauvegarde_positions8 [2] = sauvegarde_positions8 [3] = sauvegarde_positions8 [4] = 0; sauvegarde_positions9 [0] = sauvegarde_positions9 [1] = sauvegarde_positions9 [2] = sauvegarde_positions9 [3] = sauvegarde_positions9 [4] = 0; moteur.attach (cmd); // on relief l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); anggulo = 6; moteur1.write (100); anggulo1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write(12); moteur5.write (90); anggulo = 6; anggulo1 = 100; anggulo2 = 90; anggulo3 = 90; anggulo5 = 90; Serial.begin (9600); // permettra de communiquer au module Bluetooth} // ***** ***************** void loop () {
// Serial.print ("anggulo");
//Serial.print(angle);Serial.print ("\ t"); Serial.print (anggulo1); Serial.print ("\ t"); Serial.print (anggulo2); Serial.print ("\ t "); Serial.print (anggulo3); Serial.print (" / t "); Serial.print (anggulo5); Serial.print (" / n ");
//Serial.print("angle ");
int i; w = reseta (); // on va resvoir une information du smartphone, la variable w switch (w) {case 1: TouchDown_Release (); break; kaso 2: TouchDown_Grab (); masira; kaso 3: Base_Rotation (); masira; kaso 4: Base_AntiRotation (); masira; kaso 5: Waist_Rotation (); break; kaso 6: Waist_AntiRotation (); break; kaso 7: Third_Arm_Rotation (); break; case 8: Third_Arm_AntiRotation (); break; kaso 9: Pang-apat_Arm_Rotation (); masira; kaso 10: Pang-apat_Arm_AntiRotation (); masira; // case 11: Fifth_Arm_Rotation (); break; // case 12: Fifth_Arm_AntiRotation (); break; case 21: Serial.print ("case button 1"); chiffre_final = 1; sauvegarde_positions1 [0] = anggulo; sauvegarde_positions1 [1] = anggulo1; sauvegarde_positions1 [2] = anggulo2; sauvegarde_positions1 [3] = anggulo3; sauvegarde_positions1 [3] = anggulo3; sauvegarde_positions1 [3] = anggulo3; sauvegarde_positions1 = angle5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); pahinga; case 22: chiffre_final = 2; sauvegarde_positions2 [0] = anggulo; sauvegarde_positions2 [1] = anggulo1; sauvegarde_positions2 [2] = anggulo2; sauvegarde_positions2 [3] = anggulo3; sauvegarde_positions2 [4] = anggulo5; pahinga; case 23: chiffre_final = 3; sauvegarde_positions3 [0] = anggulo; sauvegarde_positions3 [1] = anggulo1; sauvegarde_positions3 [2] = anggulo2; sauvegarde_positions3 [3] = anggulo3; sauvegarde_positions3 [4] = anggulo5; putol; case 24: chiffre_final = 4; sauvegarde_positions4 [0] = anggulo; sauvegarde_positions4 [1] = anggulo1; sauvegarde_positions4 [2] = anggulo2; sauvegarde_positions4 [3] = anggulo3; sauvegarde_positions4 [4] = anggulo5; pahinga; case 25: chiffre_final = 5; sauvegarde_positions5 [0] = anggulo; sauvegarde_positions5 [1] = anggulo1; sauvegarde_positions5 [2] = anggulo2; sauvegarde_positions5 [3] = anggulo3; sauvegarde_positions5 [4] = anggulo5; pahinga; case 26: chiffre_final = 6; sauvegarde_positions6 [0] = anggulo; sauvegarde_positions6 [1] = anggulo1; sauvegarde_positions6 [2] = anggulo2; sauvegarde_positions6 [3] = anggulo3; sauvegarde_positions6 [4] = anggulo5; pahinga; case 27: chiffre_final = 7; sauvegarde_positions7 [0] = anggulo; sauvegarde_positions7 [1] = anggulo1; sauvegarde_positions7 [2] = anggulo2; sauvegarde_positions7 [3] = anggulo3; sauvegarde_positions7 [4] = anggulo5; pahinga; case 28: chiffre_final = 8; sauvegarde_positions8 [0] = anggulo; sauvegarde_positions8 [1] = anggulo1; sauvegarde_positions8 [2] = anggulo2; sauvegarde_positions8 [3] = anggulo3; sauvegarde_positions8 [4] = anggulo5; pahinga; case 29: chiffre_final = 9; sauvegarde_positions9 [0] = anggulo; sauvegarde_positions9 [1] = anggulo1; sauvegarde_positions9 [2] = anggulo2; sauvegarde_positions9 [3] = anggulo3; sauvegarde_positions9 [4] = anggulo5; pahinga;
kaso 31: Serial.print ("31"); buhayin_save = 1; chiffre_final = 0; masira; // MAGSIMULA
kaso 33: Serial.print ("33"); buhayin ang pagtipid = 0; masira; // BUTTON SAVE default: break; } kung (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde posisyon 1: / n"); para sa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde posisyon 2: / n"); para sa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde posisyon 3: / n"); para sa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} para sa (i = 1; i <= chiffre_final; i ++) {Serial. i-print ("\ n / n BEGIN / nLoop:"); Serial.print (i); Serial.print ("\ n"); switch (i) {case 1: goto_moteur (* (sauvegarde_positions1)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions1 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions1 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions1 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions1 + 4)); pagkaantala (200); pahinga; kaso 2: goto_moteur (* (sauvegarde_positions2)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions2 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions2 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions2 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions2 + 4)); pagkaantala (200); pahinga; kaso 3: goto_moteur (* (sauvegarde_positions3)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions3 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions3 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions3 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions3 + 4)); pagkaantala (200); pahinga; kaso 4: goto_moteur (* (sauvegarde_positions4)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions4 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions4 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions4 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions4 + 4)); pagkaantala (200); pahinga; kaso 5: goto_moteur (* (sauvegarde_positions5)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions5 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions5 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions5 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions5 + 4)); pagkaantala (200); pahinga; kaso 6: goto_moteur (* (sauvegarde_positions6)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions6 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions6 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions6 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions6 + 4)); pagkaantala (200); pahinga; kaso 7: goto_moteur (* (sauvegarde_positions7)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions7 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions7 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions7 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions7 + 4)); pagkaantala (200); pahinga; case 8: goto_moteur (* (sauvegarde_positions8)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions8 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions8 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions8 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions8 + 4)); pagkaantala (200); pahinga; kaso 9: goto_moteur (* (sauvegarde_positions9)); pagkaantala (200); goto_moteur1 (* (sauvegarde_positions9 + 1)); pagkaantala (200); goto_moteur2 (* (sauvegarde_positions9 + 2)); pagkaantala (200); goto_moteur3 (* (sauvegarde_positions9 + 3)); pagkaantala (200); goto_moteur5 (* (sauvegarde_positions9 + 4)); pagkaantala (200); pahinga; } Serial.print ("\ n ***** / n "); pagkaantala (500); }} /*Serial.print ("debut / n"); Serial.print (sauvegarde_positions1 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions2 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions3 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions4 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [4]); Serial.print ("\ n");
Serial.print ("\ nfin / n"); * /
pagkaantala (100); } // ***** ***** ***** **** FONCTIONS ***** ***** ***** *****
salitang tatanggapin () {// fonction permettant de recevoir l'information du smartphone
kung (Serial.available ()) {w = Serial.read ();
Serial.flush ();
bumalik w; }}
walang bisa goto_moteur (int anggulo_destinasyon)
{habang (anggulo ng anggulo_destinasyon + step_angle) {Serial.print ("\ n ---------------- * * * * * * ---------------- ---- / n "); Serial.print ("anggulo_destinasyon = / t"); Serial.print (anggulo_destinasyon); Serial.print ("\ n anggulo1 = / t"); Serial.print (anggulo); kung (anggulo_dulo ng anggulo + step_angle) {anggulo = anggulo + step_angle; moteur.write (anggulo);} antala (100); } moteur.write (anggulo_destinasyon); } void goto_moteur1 (int anggulo_destinasyon) {habang (anggulo_destinasyonulo1 + step_angle) {Serial.print ("\ n ---------------- * * * * * ------- ------- ----------- / n "); Serial.print ("anggulo_destinasyon = / t"); Serial.print (anggulo_destinasyon); Serial.print ("\ n anggulo2 = / t"); Serial.print (anggulo1); kung (anggulo_destinasyonulo1 + step_angle) {anggulo1 + = step_angle; moteur1.write (anggulo1);;} pagkaantala (100); } moteur1.write (anggulo_destinasyon); } void goto_moteur2 (int anggulo_destinasyon) {
habang (anggulo_dulo ng anggulo2 + step_angle)
{Serial.print ("\ n ---------------- * * * * * * ----------------- n"); Serial.print ("anggulo_destinasyon = / t"); Serial.print (anggulo_destinasyon); Serial.print ("\ n anggulo3 = / t"); Serial.print (anggulo2); kung (anggulo_destinasyonulo2 + step_angle) {anggulo2 + = step_angle; moteur2.write (anggulo2);} pagkaantala (100); } moteur2.write (anggulo_destinasyon); } void goto_moteur3 (int anggulo_destinasyon) {
habang (anggulo_destinasyonulo3 + step_angle)
{Serial.print ("\ n ---------------- * * * * * * ----------------- n"); Serial.print ("anggulo_destinasyon = / t"); Serial.print (anggulo_destinasyon); Serial.print ("\ n anggulo4 = / t"); Serial.print (anggulo3); kung (anggulo_destinasyonulo3 + step_angle) {anggulo3 + = step_angle; moteur3.write (anggulo3);} pagkaantala (100); } moteur3.write (anggulo_destinasyon); } void goto_moteur5 (int anggulo_destinasyon) {
habang (anggulo_dulo ng anggulo5 + step_angle)
{Serial.print ("\ n ---------------- * * * * * * ----------------- n"); Serial.print ("anggulo_destinasyon = / t"); Serial.print (anggulo_destinasyon); Serial.print ("\ n anggulo5 = / t"); Serial.print (anggulo5); kung (anggulo_destinasyonulo5 + step_angle) {anggulo5 + = step_angle; moteur5.write (anggulo5);} pagkaantala (100); } moteur5.write (anggulo_destinasyon); }
walang bisa ang TouchDown_Release () // Paglabas ng Button ng TouchDown
{kung (anggulo5 <180) {anggulo5 = anggulo5 + step_angle_mini; } moteur5.write (anggulo5); }
walang bisa ang TouchDown_Grab () // TouchDown Button Grab
{kung (anggulo5> 0) {anggulo5 = anggulo5-hakbang_angle_mini; } moteur5.write (anggulo5); } walang bisa Base_Rotation () {kung (anggulo 0) {anggulo = anggulo-hakbang_angle; } ibang anggulo = 0; moteur.write (anggulo); } void Waist_Rotation () {kung (anggulo1 20) {anggulo1 = anggulo1-hakbang_angle; } ibang anggulo1 = 20; moteur1.write (anggulo1); } walang bisa Third_Arm_Rotation () {kung (anggulo2 0) {anggulo2 = anggulo2-hakbang_angle; } moteur2.write (anggulo2); } walang bisa Fourth_Arm_Rotation () {kung (anggulo3 = 0) {anggulo3 = anggulo3-hakbang_angle_mini; } moteur3.write (anggulo3); }
Hakbang 6: Iyon Ito
Salamat sa panonood, sana ay pahalagahan mo!
Kung nagustuhan mo ang Instructable na ito, maaari mong tiyakin na bisitahin kami para sa higit pa! =)
Inirerekumendang:
Robotic Arm Sa Gripper: 9 Mga Hakbang (na may Mga Larawan)
Robotic Arm With Gripper: Ang pag-aani ng mga puno ng lemon ay itinuturing na masipag, dahil sa malaking sukat ng mga puno at dahil na rin sa maiinit na klima ng mga rehiyon kung saan nakatanim ang mga puno ng lemon. Iyon ang dahilan kung bakit kailangan namin ng ibang bagay upang matulungan ang mga manggagawa sa agrikultura upang makumpleto ang kanilang trabaho nang higit pa
3D Robotic Arm Na May Kinokontrol na Stepper Motors ng Bluetooth: 12 Mga Hakbang
3D Robotic Arm Sa Mga Kinokontrol na Stepper Motors ng Bluetooth: Sa tutorial na ito makikita natin kung paano gumawa ng isang 3D robotic arm, na may 28byj-48 stepper motors, isang servo motor at 3D na naka-print na bahagi. Ang naka-print na circuit board, source code, electrical diagram, source code at maraming impormasyon ay kasama sa aking website
Ang Pagdating ng Matalinong Robotic Arm: 3 Mga Hakbang
Ang Pagdating ng Matalinong Robotic Arm: Nakikipagkamay sa mga panauhin, nagsasalita ng mga bagay, kumakain at iba pa sa mga ordinaryong bagay na ito, para sa kalusugan ng ating buhay ay nasa mga ordinaryong bagay, ngunit para sa ilang mga espesyal na tao, ito ay isang pangarap. Ang ilang mga espesyal na tao na nabanggit ko ay mga taong may kapansanan na nawala
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 Hakbang
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM:
DIY Arduino Robotic Arm, Hakbang sa Hakbang: 9 Mga Hakbang
DIY Arduino Robotic Arm, Hakbang-Hakbang: Ang tutorial na ito ay magtuturo sa iyo kung paano bumuo ng isang Robot Arm sa pamamagitan ng iyong sarili