Talaan ng mga Nilalaman:

Robotic Arm Game - Controller ng Smartphone: 6 na Hakbang
Robotic Arm Game - Controller ng Smartphone: 6 na Hakbang

Video: Robotic Arm Game - Controller ng Smartphone: 6 na Hakbang

Video: Robotic Arm Game - Controller ng Smartphone: 6 na Hakbang
Video: Fortress Android: Building an Unbreakable Mobile Defense 2024, Nobyembre
Anonim
Robotic Arm Game - Smartphone Controller
Robotic Arm Game - Smartphone Controller

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

Mga Kagamitan
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

3D I-print ang Robotic Arm
3D I-print ang Robotic Arm
3D I-print ang Robotic Arm
3D I-print ang Robotic Arm
3D I-print ang Robotic Arm
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

Electronic Montage
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

Application ng Smartphone
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

Ang Arduino Code
Ang Arduino Code
Ang Arduino Code
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: