Orodha ya maudhui:
- Hatua ya 1: Vifaa
- Hatua ya 2: 3D Chapisha Arm Robotic
- Hatua ya 3: Montage ya Elektroniki
- Hatua ya 4: Maombi ya Smartphone
- Hatua ya 5: Nambari ya Arduino
- Hatua ya 6: Hiyo ndio
Video: Mchezo wa mkono wa Robotic - Mdhibiti wa Smartphone: Hatua 6
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Halo!
Hapa kuna mchezo wa kufurahisha wa majira ya joto: Mkono wa roboti unaodhibitiwa na Smartphone !!
Kama unavyoona kwenye Video, unaweza kudhibiti Mkono na Vifungo vingine kwenye simu yako mahiri.
Unaweza pia kuokoa muundo, kwamba roboti itazaa tena kwa kitanzi, ili kufanya kazi kadhaa za kurudia kama mfano. Lakini muundo huu unaweza kubadilika unavyotaka !!!!
Kuwa mbunifu !
Hatua ya 1: Vifaa
Hapa unaweza kuona nyenzo ambazo unahitaji.
Itakugharimu karibu 50 € kujenga hii Arm roboti. Programu na zana zinaweza kubadilishwa, lakini nilitumia zile za mradi huu.
Hatua ya 2: 3D Chapisha Arm Robotic
Arm Robotic ilichapishwa 3D (na prusa i3 yetu).
Shukrani kwa wavuti "HowtoMechatronics.com", Faili zake za STL ni za kushangaza ili kujenga mkono wa 3D.
Itachukua karibu masaa 20 kuchapisha vipande vyote.
Hatua ya 3: Montage ya Elektroniki
Montage ni tofauti katika sehemu 2:
Sehemu ya elektroniki, ambapo arduino imeunganishwa na servos na Pini za Dijiti, na na kifaa cha Bluetooth (Rx, Tx).
Sehemu ya Nguvu, ambapo servos zinaendeshwa na chaja 2 ya simu (5V, 2A max).
Hatua ya 4: Maombi ya Smartphone
Maombi yalifanywa kwa mvumbuzi wa App 2. Tunatumia Joystick 2 kudhibiti 4 Servos na vifungo 2 zaidi kudhibiti mtego wa mwisho.
Tunaunganisha Arm na Smartphone pamoja kwa kutumia moduli ya Bluetooth (HC-06).
Mwishowe, hali ya kuokoa inaruhusu mtumiaji kuokoa hadi nafasi 9 za Arm.
Kisha mkono utaingia katika hali ya kiotomatiki, ambapo atazalisha nafasi zilizohifadhiwa.
Hatua ya 5: Nambari ya Arduino
// 08/19 - Smartphone ya Smart Robotic inadhibitiwa
#jumuisha #ufasili kweli ***********
neno rep; // mot mjumbe du moduli Arduino au smartphone
int chiffre_final = 0; int cmd = 3; // variable commande du servo moteur (troisième fil (machungwa, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activate_saving = 0; Mtaalam wa Servo; // kwenye définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int step_angle = 3; int angle, angle1, angle3, angle5, angle2; // angle int pas; int r, r1, r2, r3; muandikishaji; boolean fin = UONGO; boolean fin1 = UONGO; boolean fin2 = UONGO; boolean fin3 = UONGO; boolean fin4 = UONGO; neno w; // mjumbe anayebadilika wa du smartphone au moduli 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 pembe; // angle de mzunguko (0 a 180)
// ******************** KUWEKA ******************************* ******** usanidi batili () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; nafasi za sauvegarde2 [0] = sauvegarde_positions2 [1] = sauvegarde_positions2 [2] = sauvegarde_positions2 [3] = sauvegarde_positions2 [4] = 0; nafasi za sauvegarde3 [0] = sauvegarde_positions3 [1] = sauvegarde_positions3 [2] = sauvegarde_positions3 [3] = sauvegarde_positions3 [4] = 0; nafasi za sauvegarde4 [0] = sauvegarde_positions4 [1] = sauvegarde_positions4 [2] = sauvegarde_positions4 [3] = sauvegarde_positions4 [4] = 0; nafasi za sauvegarde5 [0] = sauvegarde_positions5 [1] = sauvegarde_positions5 [2] = sauvegarde_positions5 [3] = sauvegarde_positions5 [4] = 0; nafasi za sauvegarde6 [0] = sauvegarde_positions6 [1] = sauvegarde_positions6 [2] = sauvegarde_positions6 [3] = sauvegarde_positions6 [4] = 0; nafasi za sauvegarde7 [0] = sauvegarde_positions7 [1] = sauvegarde_positions7 [2] = sauvegarde_positions7 [3] = sauvegarde_positions7 [4] = 0; nafasi za sauvegarde8 [0] = sauvegarde_positions8 [1] = sauvegarde_positions8 [2] = sauvegarde_positions8 [3] = sauvegarde_positions8 [4] = 0; nafasi za sauvegarde9 [0] = sauvegarde_positions9 [1] = sauvegarde_positions9 [2] = sauvegarde_positions9 [3] = sauvegarde_positions9 [4] = 0; moteur. ambatisha (cmd); // kwenye relie l'objet au pin de commande moteur1. ambatisha (cmd1); moteur2. ambatisha (cmd2); moteur3. ambatisha (cmd3); // moteur4. ambatisha (cmd4); moteur5. ambatisha (cmd5); mwandishi. mwandishi (6); pembe = 6; moteur1. andika (100); angle1 = 100; moteur2.andika (90); moteur3. andika (90); //moteur4.andika (12); moteur5.andika (90); pembe = 6; angle1 = 100; angle2 = 90; angle3 = 90; angle5 = 90; Kuanzia Serial (9600); // kibali cha communiquer au moduli ya Bluetooth} // ******************** BOUCLE ****************** ***************** kitanzi batili () {
// Serial.print ("angle");
//Serial.print (angle);Serial.print ("\ t"); Serial.print (angle1); Serial.print ("\ t"); Serial.print (angle2); Serial.print ("\ t Serial.print (angle3); Serial.print ("\ t"); Serial.print (angle5); Serial.print ("\ n");
//Serial.print ("pembetatu");
int i; w = kupokea (); // juu ya kupokea habari ya smartphone, la swichi w (w) {kesi 1: TouchDown_Release (); kuvunja; kesi 2: TouchDown_Grab (); kuvunja; kesi 3: Base_Rotation (); kuvunja; kesi 4: Base_AntiRotation (); kuvunja; kesi 5: Kiuno_Rotation (); kuvunja; kesi ya 6: Kiuno_AntiRotation (); kuvunja; kesi 7: Tatu_Arm_Rotation (); kuvunja; kesi ya 8: Tatu_Arm_AntiRotation (); kuvunja; kesi 9: Nne_Arm_Rotation (); kuvunja; kesi ya 10: Nne_Arm_AntiRotation (); kuvunja; // kesi ya 11: Tano_Arm_Rotation (); kuvunja; // kesi ya 12: ya tano_Arm_AntiRotation (); kuvunja; kesi 21: Serial.print ("kesi ya 1"); chiffre_final = 1; sauvegarde_positions1 [0] = angle; sauvegarde_positions1 [1] = angle1; sauvegarde_positions1 [2] = angle2; sauvegarde_positions1 [3] = angle3; 4 = angle5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); kuvunja; kesi 22: chiffre_final = 2; sauvegarde_positions2 [0] = angle; sauvegarde_positions2 [1] = angle1; sauvegarde_positions2 [2] = angle2; sauvegarde_positions2 [3] = angle3; sauvegarde_positions2 [4] = kuvunja; kesi 23: chiffre_final = 3; sauvegarde_positions3 [0] = angle; sauvegarde_positions3 [1] = angle1; sauvegarde_positions3 [2] = angle2; sauvegarde_positions3 [3] = angle3; sauvegarde_positions3 [4] = angle; kesi 24: chiffre_final = 4; sauvegarde_positions4 [0] = angle; sauvegarde_positions4 [1] = angle1; sauvegarde_positions4 [2] = angle2; sauvegarde_positions4 [3] = angle3; sauvegarde_positions4 [4] = kuvunja; kesi 25: chiffre_final = 5; sauvegarde_positions5 [0] = angle; sauvegarde_positions5 [1] = angle1; sauvegarde_positions5 [2] = angle2; sauvegarde_positions5 [3] = angle3; sauvegarde_positions5 [4] = kuvunja; kesi 26: chiffre_final = 6; sauvegarde_positions6 [0] = angle; sauvegarde_positions6 [1] = angle1; sauvegarde_positions6 [2] = angle2; sauvegarde_positions6 [3] = angle3; sauvegarde_positions6 [4] = kuvunja; kesi 27: chiffre_final = 7; sauvegarde_positions7 [0] = angle; sauvegarde_positions7 [1] = angle1; sauvegarde_positions7 [2] = angle2; sauvegarde_positions7 [3] = angle3; sauvegarde_positions7 [4] = kuvunja; kesi 28: chiffre_final = 8; sauvegarde_positions8 [0] = angle; sauvegarde_positions8 [1] = angle1; sauvegarde_positions8 [2] = angle2; sauvegarde_positions8 [3] = angle3; sauvegarde_positions8 [4] = kuvunja; kesi 29: chiffre_final = 9; sauvegarde_positions9 [0] = angle; sauvegarde_positions9 [1] = angle1; sauvegarde_positions9 [2] = angle2; sauvegarde_positions9 [3] = angle3; sauvegarde_positions9 [4] = kuvunja;
kesi 31: Serial.print ("31"); activate_saving = 1; chiffre_final = 0; kuvunja; // ANZA
kesi 33: Serial.print ("33"); activate_saving = 0; kuvunja; // BUTTON SAVE default: kuvunja; } ikiwa (w == 32) {Serial.print ("\ nZalisha / nChiffre mwisho:"); Printa ya serial (chiffre_final); Serial.print ("\ n Sauvegarde nafasi 1: / n"); kwa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde nafasi 2: / n"); kwa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde nafasi 3: / n"); kwa (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} kwa (i = 1; i <= chiffre_final; i ++) {Serial. chapisha ("\ n / n BEGIN / n Kitanzi:"); Serial.print (i); Serial.print ("\ n"); kubadili (i) {kesi 1: goto_moteur (* (sauvegarde_positions1)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions1 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions1 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions1 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions1 + 4)); kuchelewesha (200); kuvunja; kesi 2: goto_moteur (* (sauvegarde_positions2)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions2 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions2 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions2 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions2 + 4)); kuchelewesha (200); kuvunja; kesi 3: goto_moteur (* (sauvegarde_positions3)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions3 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions3 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions3 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions3 + 4)); kuchelewesha (200); kuvunja; kesi 4: goto_moteur (* (sauvegarde_positions4)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions4 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions4 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions4 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions4 + 4)); kuchelewesha (200); kuvunja; kesi 5: goto_moteur (* (sauvegarde_positions5)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions5 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions5 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions5 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions5 + 4)); kuchelewesha (200); kuvunja; kesi ya 6: goto_moteur (* (sauvegarde_positions6)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions6 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions6 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions6 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions6 + 4)); kuchelewesha (200); kuvunja; kesi 7: goto_moteur (* (sauvegarde_positions7)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions7 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions7 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions7 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions7 + 4)); kuchelewesha (200); kuvunja; kesi ya 8: goto_moteur (* (sauvegarde_positions8)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions8 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions8 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions8 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions8 + 4)); kuchelewesha (200); kuvunja; kesi 9: goto_moteur (* (sauvegarde_positions9)); kuchelewesha (200); goto_moteur1 (* (sauvegarde_positions9 + 1)); kuchelewesha (200); goto_moteur2 (* (sauvegarde_positions9 + 2)); kuchelewesha (200); goto_moteur3 (* (sauvegarde_positions9 + 3)); kuchelewesha (200); goto_moteur5 (* (sauvegarde_positions9 + 4)); kuchelewesha (200); kuvunja; } Serial.print ("\ n *********************** UZAZI WA FINZI ***************** / n "); kuchelewesha (500); }} /*Serial.print ("kwanza / 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"); * /
kuchelewesha (100); } // **************************** FONCTIONS ****************** ******************
kupokea neno () {// fonction permettant de recevoir l'information du smartphone
ikiwa (Serial haipatikani ()) {w = Serial.read ();
Serial.flush ();
kurudi w; }}
batili goto_moteur (int angle_destination)
{wakati (pembe ya pembe-upangiliaji + pembetatu) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Printa ya serial ("\ n angle1 = / t"); serial.print (pembe); ikiwa (angle_mwisho wa pembe / pembe_ya hatua) {angle = pembe + pembetatu; moteur. andika (pembe);} kuchelewesha (100); } moteur.andika (angle_destination); } batili goto_moteur1 (int angle_destination) {wakati (angle_destination angle1 + step_angle) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Printa ya serial ("\ n angle2 = / t"); serial.print (angle1); ikiwa (angle_destination angle1 + step_angle) {angle1 + = step_angle; moteur1. andika (angle1);;} kuchelewa (100); } moteur1. andika (uamuzi wa pembe); } batili goto_moteur2 (int angle_destination) {
wakati (angle_destination angle2 + step_angle)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Printa ya serial ("\ n angle3 = / t"); serial.print (angle2); ikiwa (angle_destination angle2 + step_angle) {angle2 + = step_angle; moteur2. andika (angle2);} kuchelewesha (100); } moteur2.write (angle_destination); } batili goto_moteur3 (int angle_destination) {
wakati (angle_destination angle3 + step_angle)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Printa ya serial ("\ n angle4 = / t"); Printa ya serial (angle3); ikiwa (angle_destination angle3 + step_angle) {angle3 + = step_angle; moteur3. andika (angle3);} kuchelewesha (100); } moteur3. andika (uamuzi wa pembe); } batili goto_moteur5 (int angle_destination) {
wakati (angle_destination angle5 + step_angle)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Rekodi ya serial ("\ n angle5 = / t"); serial.print (angle5); ikiwa (angle_destination angle5 + step_angle) {angle5 + = step_angle; moteur5. andika (angle5);} kuchelewesha (100); } moteur5. andika (kuamuliwa kwa pembe); }
batili TouchDown_Release () // Kitufe cha TouchDown
{ikiwa (angle5 <180) {angle5 = angle5 + step_angle_mini; } moteur5. andika (angle5); }
batili TouchDown_Grab () // Kunyakua Kitufe cha TouchDown
{ikiwa (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5. andika (angle5); } batili Base_Rotation () {if (angle 0) {angle = angle-step_angle; } pembe nyingine = 0; moteur. andika (pembe); } batili Kiuno_Rotation () {ikiwa (angle1 20) {angle1 = angle1-step_angle; } pembe nyingine1 = 20; moteur1. andika (angle1); } batili_Arm_Rotation () {ikiwa (angle2 0) {angle2 = angle2-step_angle; } moteur2. andika (angle2); } batili ya Nne_Arm_Rotation () {ikiwa (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3. andika (angle3); }
Hatua ya 6: Hiyo ndio
Asante kwa kutazama, natumai umethamini!
Ikiwa ulipenda Agizo hili, kwa hakika unaweza kututembelea kwa zaidi! =)
Ilipendekeza:
Mkono wa Robotic uliochapishwa wa Moslty 3D ambao Udhibiti wa Puppet wa Mimics: Hatua 11 (na Picha)
Mkono wa Robotic uliochapishwa wa Moslty 3D Mdhibiti wa vibonzo: Mimi ni mwanafunzi wa Uhandisi wa Uhandisi kutoka India na huu ni mradi wangu wa digrii ya Undergrad. mtego. Mkono wa roboti unadhibitiwa
Mkono wa Povu wa Robotic: Hatua 7
Mkono wa Povu wa Robotic: Hii ndio njia ya kutengeneza pombe ya mkono wa roboti kwa kutumia povu. Mradi huu ulifanywa kwa Humanoids 16-264, kwa shukrani kwa Profesa Chris Atkeson na TA Jonathan King
Mchezo thabiti wa mkono: Hatua 6
Mchezo Mkamilifu wa Mkono: Katika mradi huu nitakuonyesha jinsi ya kujenga mchezo thabiti wa mikono. Inatumia mzunguko rahisi sana na imetengenezwa na waya thabiti ya msingi ambayo unaweza kuinama kuwa sura yoyote unayopenda
Mchezo wa Kriketi isiyo ya kawaida au hata ya mkono Vs Intelligence Imeongeza Kompyuta katika C ++: 4 Hatua
Mchezo wa Kriketi isiyo ya kawaida au hata ya mkono Vs Intelligence Imeongeza Kompyuta katika C ++: Cricket ya mkono / isiyo ya kawaida au Hata ni mchezo maarufu kati yetu kuanzia siku za shule. Katika hii inayoweza kufundishwa, tunaendeleza mchezo huu katika C ++. Ni mchezo mmoja wa wachezaji ambao unapaswa kucheza dhidi ya kompyuta, ambaye sio bubu. Kompyuta haina kuweka numbe bila mpangilio
Tikisa Mkono Wako Kudhibiti Mkono wa Roboti wa OWI Hakuna Kamba Zilizoshirikishwa: Hatua 10 (na Picha)
Tikisa Mkono Wako Kudhibiti Mkono wa Roboti wa OWI … Hakuna Kamba Iliyoambatanishwa: WAZO: Kuna angalau miradi mingine 4 kwenye Instructables.com (kuanzia Mei 13, 2015) karibu na kurekebisha au kudhibiti Arm Robotic Arm. Haishangazi, kwa kuwa ni kitanda kizuri sana na cha bei rahisi cha kucheza nacho. Mradi huu ni sawa katika s