Sisukord:
- Samm: materjalid
- Samm: printige robotkäsi 3D -vormingus
- 3. samm: elektrooniline montaaž
- Samm: nutitelefonirakendus
- Samm: Arduino kood
- 6. samm: see on kõik
Video: Robotkäe mäng - nutitelefoni kontroller: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Tere !
Siin on lõbus suvemäng: nutitelefoniga juhitav robotkäsi !!
Nagu videost näete, saate käsivart juhtida mõne nutitelefoni juhtkangi abil.
Samuti saate salvestada mustri, mida robot kordab, et teha näiteks korduvaid ülesandeid. Kuid see muster on modifitseeritav vastavalt soovile !!!!
Ole loominguline!
Samm: materjalid
Siin näete vajalikku materjali.
Selle robotkäe ehitamine maksab teile umbes 50 eurot. Tarkvara ja tööriistu saab asendada, kuid ma kasutasin neid selle projekti jaoks.
Samm: printige robotkäsi 3D -vormingus
Robotkäsi trükiti 3D -ga (meie prusa i3 -ga).
Tänu veebisaidile "HowtoMechatronics.com" on tema STL -failid 3D -käe loomiseks suurepärased.
Kõigi tükkide printimiseks kulub umbes 20 tundi.
3. samm: elektrooniline montaaž
Montaaž on jagatud kaheks osaks:
Elektrooniline osa, kus arduino on servodega ühendatud digitaalsete kontaktide abil ja Bluetooth -seadmega (Rx, Tx).
Toiteosa, kus servod saavad toite 2 telefonilaadijaga (5V, max 2A).
Samm: nutitelefonirakendus
Rakendus tehti rakenduse leiutajal 2. Me kasutame 2 juhtkangi 4 servo juhtimiseks ja veel 2 nuppu viimase haarde juhtimiseks.
Ühendame Arm ja nutitelefoni Bluetooth-mooduli (HC-06) abil.
Lõpuks võimaldab salvestusrežiim kasutajal salvestada käe jaoks kuni 9 asendit.
Seejärel läheb käsi automaatrežiimi, kus ta kordab salvestatud positsioone.
Samm: Arduino kood
// 08/19 - Robotkäega nutitelefoniga juhitav
#sisalda #define TRUE true #define FALSE false // ******************** Deklaratsioonid **************** ***********
sõna rep; // mot envoyé du moodul Arduino au smartphone
int chiffre_final = 0; int cmd = 3; // muutuja commande du servo moteur (troisième fil (oranž, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int enable_saving = 0; Servomootor; // on définit notre servomoteur Servo moteur1; Servomootor2; Servomootor3; // Servomootor4; Servomootor5; int samm_nurk_mini = 4; int samm_nurk = 3; int nurk, nurk1, nurk3, nurk5, nurk2; // nurk int pas; int r, r1, r2, r3; int registreerija; boolean fin = FALSE; boolean fin1 = VÄÄR; boolean fin2 = VÄÄR; boolean fin3 = VÄÄR; boolean fin4 = VÄÄR; sõna w; // muutuja envoyé du nutitelefon 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 nurk; // pöördenurk (0 kuni 180)
// ******************** SEADISTUS *************************** ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; sauvegarde_positsioonid2 [0] = sauvegarde_positsioonid2 [1] = sauvegarde_positsioonid2 [2] = sauvegarde_positsioonid2 [3] = sauvegarde_positsioonid2 [4] = 0; sauvegarde_positsioonid3 [0] = sauvegarde_positsioonid3 [1] = sauvegarde_positsioonid3 [2] = sauvegarde_positsioonid3 [3] = sauvegarde_positsioonid3 [4] = 0; sauvegarde_positsioonid4 [0] = sauvegarde_positsioonid4 [1] = sauvegarde_positsioonid4 [2] = sauvegarde_positsioonid4 [3] = sauvegarde_positsioonid4 [4] = 0; sauvegarde_positsioonid5 [0] = sauvegarde_positsioonid5 [1] = sauvegarde_positsioonid5 [2] = sauvegarde_positsioonid5 [3] = sauvegarde_positsioonid5 [4] = 0; sauvegarde_positsioonid6 [0] = sauvegarde_positsioonid6 [1] = sauvegarde_positsioonid6 [2] = sauvegarde_positsioonid6 [3] = sauvegarde_positsioonid6 [4] = 0; sauvegarde_positsioonid7 [0] = sauvegarde_positsioonid7 [1] = sauvegarde_positsioonid7 [2] = sauvegarde_positsioonid7 [3] = sauvegarde_positsioonid7 [4] = 0; sauvegarde_positsioonid8 [0] = sauvegarde_positsioonid8 [1] = sauvegarde_positsioonid8 [2] = sauvegarde_positsioonid8 [3] = sauvegarde_positsioonid8 [4] = 0; sauvegarde_positsioonid9 [0] = sauvegarde_positsioonid9 [1] = sauvegarde_positsioonid9 [2] = sauvegarde_positsioonid9 [3] = sauvegarde_positsioonid9 [4] = 0; moteur.attach (cmd); // relie l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); nurk = 6; moteur1.write (100); nurk1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write (12); moteur5.write (90); nurk = 6; nurk1 = 100; nurk2 = 90; nurk3 = 90; nurk5 = 90; Seriaalne algus (9600); // Bluetoothi mooduli kommunikeerija} // ******************* BOUCLE ****************** ***************** void loop () {
// Serial.print ("nurk");
//Seriaalneprint (nurk);Seriaalne trükk ("\ t"); Seeria.print (nurk1); Seeriaprint ("\ t"); Seeria.print (nurk2); Seeriaprint ("\ t "); Jadatrükk (nurk3); jadatrükk (" / t "); jadatrükk (nurk5); jadatrükk (" / n ");
//Sarja.print ("nurk ");
int i; w = tagasivõtmine (); // nutitelefoni kohta saate teavet, muutuva lüliti (w) {juhtum 1: TouchDown_Release (); break; juhtum 2: TouchDown_Grab (); break; juhtum 3: Base_Rotation (); break; juhtum 4: Base_AntiRotation (); break; juhtum 5: Waist_Rotation (); break; juhtum 6: Waist_AntiRotation (); murda; juhtum 7: Third_Arm_Rotation (); break; juhtum 8: Third_Arm_AntiRotation (); break; juhtum 9: Fourth_Arm_Rotation (); break; juhtum 10: Fourth_Arm_AntiRotation (); break; // juhtum 11: Fifth_Arm_Rotation (); break; // juhtum 12: Fifth_Arm_AntiRotation (); break; juhtum 21: Serial.print ("juhtnupp 1"); chiffre_final = 1; sauvegarde_positions1 [0] = nurk; sauvegarde_positions1 [1] = nurk1; sauvegarde_positions1 [2] = nurk2; sauvegarde_positions1 [3] = nurk3; sauvegarde_positions1 [4] = nurk5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); murda; juhtum 22: chiffre_final = 2; sauvegarde_positions2 [0] = nurk; sauvegarde_positions2 [1] = nurk1; sauvegarde_positsioonid2 [2] = nurk2; sauvegarde_positsioonid2 [3] = nurk3; sauvegarde_positsioonid2 [4] = nurk5; murda; juhtum 23: chiffre_final = 3; sauvegarde_positions3 [0] = nurk; sauvegarde_positions3 [1] = nurk1; sauvegarde_positsioonid3 [2] = nurk2; sauvegarde_positsioonid3 [3] = nurk3; sauvegarde_positsioonid3 [4] = nurk5; vaheaeg; juhtum 24: chiffre_final = 4; sauvegarde_positions4 [0] = nurk; sauvegarde_positions4 [1] = nurk1; sauvegarde_positsioonid4 [2] = nurk2; sauvegarde_positsioonid4 [3] = nurk3; sauvegarde_positsioonid4 [4] = nurk5; murda; juhtum 25: chiffre_final = 5; sauvegarde_positions5 [0] = nurk; sauvegarde_positions5 [1] = nurk1; sauvegarde_positsioonid5 [2] = nurk2; sauvegarde_positsioonid5 [3] = nurk3; sauvegarde_positsioonid5 [4] = nurk5; murda; juhtum 26: chiffre_final = 6; sauvegarde_positions6 [0] = nurk; sauvegarde_positions6 [1] = nurk1; sauvegarde_positsioonid6 [2] = nurk2; sauvegarde_positsioonid6 [3] = nurk3; sauvegarde_positsioonid6 [4] = nurk5; murda; juhtum 27: chiffre_final = 7; sauvegarde_positions7 [0] = nurk; sauvegarde_positions7 [1] = nurk1; sauvegarde_positsioonid7 [2] = nurk2; sauvegarde_positsioonid7 [3] = nurk3; sauvegarde_positsioonid7 [4] = nurk5; murda; juhtum 28: chiffre_final = 8; sauvegarde_positions8 [0] = nurk; sauvegarde_positions8 [1] = nurk1; sauvegarde_positsioonid8 [2] = nurk2; sauvegarde_positsioonid8 [3] = nurk3; sauvegarde_positsioonid8 [4] = nurk5; murda; juhtum 29: chiffre_final = 9; sauvegarde_positions9 [0] = nurk; sauvegarde_positions9 [1] = nurk1; sauvegarde_positsioonid9 [2] = nurk2; sauvegarde_positsioonid9 [3] = nurk3; sauvegarde_positsioonid9 [4] = nurk5; murda;
juhtum 31: Serial.print ("31"); aktiveeri_säästmine = 1; chiffre_final = 0; murda; // ALUSTA
juhtum 33: Serial.print ("33"); enable_saving = 0; break; // BUTTON SAVE vaikimisi: break; } if (w == 32) {Serial.print ("\ nTootmine / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde positsioon 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde positsioon 2: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde positsioon 3: / n"); jaoks (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Serial. print ("\ n / n BEGIN / nSilm:"); Seeriatrükk (i); Seeriatrükk ("\ n"); lüliti (i) {juhtum 1: goto_moteur (*(sauvegarde_positions1)); viivitus (200); goto_moteur1 (*(sauvegarde_positions1+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions1+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions1+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions1+4)); delay (200); murda; juhtum 2: goto_moteur (*(sauvegarde_positions2)); viivitus (200); goto_moteur1 (*(sauvegarde_positions2+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions2+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions2+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions2+4)); delay (200); murda; juhtum 3: goto_moteur (*(sauvegarde_positions3)); viivitus (200); goto_moteur1 (*(sauvegarde_positions3+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions3+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions3+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions3+4)); viivitus (200); murda; juhtum 4: goto_moteur (*(sauvegarde_positions4)); viivitus (200); goto_moteur1 (*(sauvegarde_positions4+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions4+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions4+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions4+4)); viivitus (200); murda; juhtum 5: goto_moteur (*(sauvegarde_positions5)); viivitus (200); goto_moteur1 (*(sauvegarde_positions5+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions5+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions5+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions5+4)); viivitus (200); murda; juhtum 6: goto_moteur (*(sauvegarde_positions6)); viivitus (200); goto_moteur1 (*(sauvegarde_positions6+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions6+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions6+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions6+4)); viivitus (200); murda; juhtum 7: goto_moteur (*(sauvegarde_positions7)); viivitus (200); goto_moteur1 (*(sauvegarde_positions7+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions7+2)); viivitus (200); goto_moteur3 (*(sauvegarde_positions7+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions7+4)); viivitus (200); murda; juhtum 8: goto_moteur (*(sauvegarde_positions8)); viivitus (200); goto_moteur1 (*(sauvegarde_positions8+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions8+2)); delay (200); goto_moteur3 (*(sauvegarde_positions8+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions8+4)); delay (200); murda; juhtum 9: goto_moteur (*(sauvegarde_positions9)); viivitus (200); goto_moteur1 (*(sauvegarde_positions9+1)); viivitus (200); goto_moteur2 (*(sauvegarde_positions9+2)); delay (200); goto_moteur3 (*(sauvegarde_positions9+3)); viivitus (200); goto_moteur5 (*(sauvegarde_positions9+4)); delay (200); murda; } Serial.print ("\ n ************************ FIN REPRODUCE ***************** / n "); viivitus (500); }} /*Serial.print ("debüüt / 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");*/
viivitus (100); } // **************************** FONCTIONS ****************** *******************
sõna recevoir () {// fonction permettant de recevoir l'information du smartphone
if (Serial.available ()) {w = Serial.read ();
Serial.flush ();
tagasitulek w; }}
void goto_moteur (int nurga_sihtkoht)
{while (nurga sihtkoha nurk+sammunurk) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("nurga_sihtkoht = / t"); Serial.print (nurga_sihtkoht); Serial.print ("\ n nurk1 = / t"); Seeria.print (nurk); if (nurga_sihtnurk + sammunurk) {nurk = nurk + sammunurk; moteur.write (nurk);} viivitus (100); } moteur.write (nurga_siht); } void goto_moteur1 (int nurga_sihtkoht) {while (nurga_sihtnurk1+sammunurk) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("nurga_sihtkoht = / t"); Serial.print (nurga_sihtkoht); Serial.print ("\ n nurk2 = / t"); Jadajälg (nurk1); if (nurga_sihtnurk1 +sammunurk) {nurk1 += sammunurk; moteur1.write (nurk1);;} viivitus (100); } moteur1.write (nurga_sihtkoht); } void goto_moteur2 (int nurga_sihtkoht) {
samas (nurga_sihtnurk2+sammunurk)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("nurga_sihtkoht = / t"); Serial.print (nurga_sihtkoht); Serial.print ("\ n nurk3 = / t"); Jadajälg (nurk2); if (nurga_sihtnurk2 +sammunurk) {nurk2 += sammunurk; moteur2.write (nurk2);} viivitus (100); } moteur2.write (nurga_sihtkoht); } tühine goto_moteur3 (int nurga_sihtkoht) {
samas (nurga_sihtnurk3+sammunurk)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("nurga_sihtkoht = / t"); Serial.print (nurga_sihtkoht); Serial.print ("\ n nurk4 = / t"); Jadajälg (nurk3); if (nurga_sihtnurk3 +sammunurk) {nurk3 += sammunurk; moteur3.write (nurk3);} viivitus (100); } moteur3.write (nurga_sihtkoht); } void goto_moteur5 (int nurga_sihtkoht) {
samas (nurga_sihtnurk5+sammunurk)
{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("nurga_sihtkoht = / t"); Serial.print (nurga_sihtkoht); Serial.print ("\ n nurk5 = / t"); Jadajälg (nurk5); if (nurga_sihtnurk5 +sammunurk) {nurk5 += sammunurk; moteur5.write (nurk5);} viivitus (100); } moteur5.write (nurga_sihtkoht); }
void TouchDown_Release () // Nupu puudutamise vabastamine
{if (nurk5 <180) {nurk5 = nurk5+samm_nurk_min; } moteur5.write (nurk5); }
void TouchDown_Grab () // Puudutamisnupu nupp
{if (nurk5> 0) {nurk5 = nurk5-sammuline_nurk_mini; } moteur5.write (nurk5); } void Base_Rotation () {if (nurk 0) {nurk = nurga-astme_nurk; } muu nurk = 0; moteur.write (nurk); } void Waist_Rotation () {if (nurk1 20) {nurk1 = nurk1-samm_nurk; } muu nurk1 = 20; moteur1.write (nurk1); } tühine Third_Arm_Rotation () {if (nurk2 0) {nurk2 = nurk2-sammuline_nurk; } moteur2.write (nurk2); } void Fourth_Arm_Rotation () {if (nurk3 = 0) {nurk3 = nurk3-astmeline_nurk_mini; } moteur3.write (nurk3); }
6. samm: see on kõik
Aitäh vaatamast, loodan, et hindasite!
Kui teile see juhendamine meeldis, võite kindlasti meid rohkem külastada! =)
Soovitan:
Intelligentse robotkäe saabumine: 3 sammu
Intelligentse robotkäe saabumine: külalistega kätlemine, asjade rääkimine, söömine ja nii edasi need tavalised asjad, sest meie elu tervis on tavalistes asjades, kuid mõne erilise inimese jaoks on see unistus. Mõned minu mainitud erilised inimesed on puudega inimesed, kes on kaotanud
Simoni mäng - lõbus mäng!: 5 sammu
Simoni mäng - lõbus mäng !: Viide: siinPärast pikka nädalavahetust peate kindlasti kõvasti proovima, et täita kõik ülesanded ja töö, mille eest vastutate. Meil on aeg oma aju treenida, kas pole? Peale nende igavate ja mõttetute mängude on olemas ka mäng nimega Simon Game
OWI robotkäe juhtimiseks viipake käega Ei mingeid nööre: 10 sammu (piltidega)
Veenduge käega, et juhtida OWI robotkätt … Ei mingeid sidemeid: IDEE: Instructables.com -is on vähemalt 4 muud projekti (13. mai 2015 seisuga), mis on seotud OWI robotkäe muutmise või juhtimisega. Pole üllatav, sest see on nii suurepärane ja odav robotikomplekt, millega mängida. See projekt on sarnane ka
Arbotixi reaktori robotkäe ja Pixycami demonstratsioon: 11 sammu
Arbotixi reaktori robotkäe ja Pixycami demonstratsioon: Oleme 2 üliõpilast Taani UCN kolledžist. Meile tehti ülesandeks teha oma klassi, roboti ja nägemise hindamise osana uurimatu. Projekti nõuded olid kaasata üks või mitu robotit arbotixist ja täita ülesanne. Proj
Robotkäe juhtimine Zio abil PS2 kontrolleri abil: 4 sammu
Robotkäe juhtimine Zio abil PS2 kontrolleri abil: see ajaveebi postitus on osa Zio Robotics seeriast. Sissejuhatus See on postituse „Juhtige robotkätt Zioga” viimane osa. Selles õpetuses lisame oma robotkäele veel ühe osa. Varasemad õpetused ei sisalda alust