
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51

Сәлеметсіз бе !
Мұнда көңілді жазғы ойын: смартфон басқаратын робот қолы !!
Бейнеде көріп тұрғаныңыздай, сіз смартфондағы джойстиктердің көмегімен қолды басқара аласыз.
Сіз сондай -ақ робот циклде қайталанатын үлгіні сақтай аласыз, мысалы, бірнеше қайталанатын тапсырмаларды орындау үшін. Бірақ бұл үлгі сіз қалағандай модульдендірілген !!!!
Шығармашылық болыңыз!
1 -қадам: материалдар

Мұнда сіз қажетті материалды көре аласыз.
Бұл роботты жасау үшін сізге 50 евро қажет. Бағдарламалық қамтамасыз ету мен құралдарды ауыстыруға болады, бірақ мен оларды осы жоба үшін қолдандым.
2 -қадам: Робот қолын 3D басып шығару



Robotic Arm 3D басып шығарылды (біздің prusa i3 көмегімен).
«HowtoMechatronics.com» веб -сайтының арқасында оның STL файлдары 3D қолын жасау үшін керемет.
Барлық бөліктерді басып шығаруға шамамен 20 сағат кетеді.
3 -қадам: электронды монтаж

Монтаж 2 бөліктен тұрады:
Электрондық бөлік, онда arduino цифрлық түйреуіштермен және Bluetooth құрылғысымен (Rx, Tx) сервоға қосылады.
Қуат бөлігі, онда серво 2 телефон зарядтағышымен қуатталады (5V, 2A max).
4 -қадам: смартфонға қосымша

Қолданба қосымшаның өнертапқышы 2 -де жасалды. Біз соңғы серпімді басқару үшін 4 серво мен тағы 2 түймені басқару үшін 2 джойстикті қолданамыз.
Қол мен смартфонды Bluetooth модулін (HC-06) пайдаланып қосамыз.
Ақырында, үнемдеу режимі пайдаланушыға Arm үшін 9 позицияға дейін сақтауға мүмкіндік береді.
Содан кейін қол автоматты режимге өтеді, онда ол сақталған позицияларды шығарады.
5 -қадам: Arduino коды


// 08/19 - Робот қолмен басқарылатын смартфон
#қосу #ШЫНДЫҚ шындықты анықтау #ЖАЛҒАН жалған // ******************** ДЕКЛАРАЦИЯЛАР ***************** ***********
сөз өкілі; // Arduino немесе смартфонның модульдік моделі
int chiffre_final = 0; int cmd = 3; // ауыспалы командалық қызмет көрсетуші (troisième fil (қызғылт сары, сары)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activate_saving = 0; Серво -мотер; // on définit notre servomoteur Servo moteur1; Серво -мотер 2; Серво моеур3; // Servo moteur4; Қызметші мотер 5 int step_angle_mini = 4; int step_angle = 3; int бұрышы, бұрыш1, бұрыш3, бұрыш5, бұрыш2; // бұрыш int pas; int r, r1, r2, r3; int тіркеуші; логикалық фин = FALSE; логикалық фин1 = ЖАЛҒАН; логикалық фин2 = ЖАЛҒАН; логикалық фин3 = ЖАЛҒАН; логикалық фин4 = ЖАЛҒАН; сөз w; // смартфон немесе модуль 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 бұрышы; // бұрылу бұрышы (0 мен 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 l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.tachach (cmd3); // moteur4.attach (cmd4); moteur5.tachach (cmd5); moteur.write (6); бұрыш = 6; moteur1.write (100); бұрыш1 = 100; moteur2.write (90); moteur3.жазу (90); //moteur4.write(12); moteur5.write (90); бұрыш = 6; бұрыш1 = 100; бұрыш2 = 90; бұрыш3 = 90; бұрыш 5 = 90; Serial.begin (9600); // Bluetooth модулінің хабарлауы} // ******************** БУКЛ ****************** ***************** void loop () {
// Serial.print («бұрыш»);
//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( angle «);
int i; w = recevoir (); // смартфон туралы ақпарат жоқ, ауыспалы w қосқышы (w) {1 -жағдай: TouchDown_Release (); break; 2 -жағдай: TouchDown_Grab (); үзіліс; 3 -жағдай: Base_Rotation (); үзіліс; 4 -жағдай: Base_AntiRotation (); үзіліс; 5 -жағдай: Waist_Rotation (); үзіліс; 6 -жағдай: Waist_AntiRotation (); үзіліс; 7 -жағдай: Third_Arm_Rotation (); үзіліс; 8 -жағдай: Third_Arm_AntiRotation (); үзіліс; 9 -жағдай: Fourth_Arm_Rotation (); үзіліс; 10 -жағдай: Fourth_Arm_AntiRotation (); үзіліс; // 11 жағдай: Fifth_Arm_Rotation (); break; // 12 жағдай: Fifth_Arm_AntiRotation (); break; 21 жағдай: Serial.print («регистр түймесі 1»); chiffre_final = 1; sauvegarde_positions1 [0] = бұрыш; sauvegarde_positions1 [1] = бұрыш1; sauvegarde_positions1 [2] = бұрыш2; sauvegarde_positions1 [3] = бұрыш 3] = бұрыш5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4] үзіліс; жағдай 22: chiffre_final = 2; sauvegarde_positions2 [0] = бұрыш; sauvegarde_pozitions2 [1] = бұрыш1; sauvegarde_pozitions2 [2] = бұрыш2; sauvegarde_pozitions2 [3] = бұрыш3; sauvegarde_positions2 [4] үзіліс; жағдай 23: chiffre_final = 3; sauvegarde_positions3 [0] = бұрыш; sauvegarde_pozitions3 [1] = бұрыш1; sauvegarde_positions3 [2] = бұрыш2; sauvegarde_pozitions3 [3] = бұрыш3; sauvegarde_positions3 [4] жағдай 24: chiffre_final = 4; sauvegarde_positions4 [0] = бұрыш; sauvegarde_pozitions4 [1] = бұрыш1; sauvegarde_positions4 [2] = бұрыш2; sauvegarde_pozitions4 [3] = бұрыш3; sauvegarde_positions4 [4] үзіліс; жағдай 25: chiffre_final = 5; sauvegarde_positions5 [0] = бұрыш; sauvegarde_pozitions5 [1] = бұрыш1; sauvegarde_pozitions5 [2] = бұрыш2; sauvegarde_pozitions5 [3] = бұрыш3; sauvegarde_positions5 [4] үзіліс; 26 -жағдай: chiffre_final = 6; sauvegarde_positions6 [0] = бұрыш; sauvegarde_pozitions6 [1] = бұрыш1; sauvegarde_pozitions6 [2] = бұрыш2; sauvegarde_pozitions6 [3] = бұрыш3; sauvegarde_positions6 [4] үзіліс; жағдай 27: chiffre_final = 7; sauvegarde_positions7 [0] = бұрыш; sauvegarde_pozitions7 [1] = бұрыш1; sauvegarde_positions7 [2] = бұрыш2; sauvegarde_pozitions7 [3] = бұрыш3; sauvegarde_positions7 [4] үзіліс; 28 -жағдай: chiffre_final = 8; sauvegarde_positions8 [0] = бұрыш; sauvegarde_pozitions8 [1] = бұрыш1; sauvegarde_positions8 [2] = бұрыш2; sauvegarde_pozitions8 [3] = бұрыш3; sauvegarde_positions8 [4] үзіліс; 29 -жағдай: chiffre_final = 9; sauvegarde_positions9 [0] = бұрыш; sauvegarde_pozitions9 [1] = бұрыш1; sauvegarde_pozitions9 [2] = бұрыш2; sauvegarde_pozitions9 [3] = бұрыш3; sauvegarde_positions9 [4] үзіліс;
31 -жағдай: Serial.print («31»); activate_saving = 1; chiffre_final = 0; үзіліс; // БАСТА
33 -жағдай: Serial.print («33»); activate_saving = 0; break; // BUTTON SAVE әдепкі: break; } if (w == 32) {Serial.print («\ nҚайта шығару / nChiffre финалы:»); Serial.print (chiffre_final); Serial.print («\ n Sauvegarde позициясы 1: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print («\ t»);} Serial.print («\ n Sauvegarde позициясы 2: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print («\ t»);} Serial.print («\ n Sauvegarde позициясы 3: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print («\ t»);} for (i = 1; i <= chiffre_final; i ++) {Сериялық. басып шығару («\ n / n БАСТАУ / nҚайталау:»); Serial.print (i); Serial.print («\ n»); switch (i) {1 -жағдай: goto_moteur (*(sauvegarde_positions1)); кешігу (200); goto_moteur1 (*(sauvegarde_positions1+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions1+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions1+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions1+4)); кешіктіру (200); үзіліс; 2 -жағдай: goto_moteur (*(sauvegarde_positions2)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions2+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions2+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions2+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions2+4)); кешіктіру (200); үзіліс; 3 -жағдай: goto_moteur (*(sauvegarde_positions3)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions3+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions3+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions3+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions3+4)); кешіктіру (200); үзіліс; 4 -жағдай: goto_moteur (*(sauvegarde_positions4)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions4+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions4+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions4+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions4+4)); кешіктіру (200); үзіліс; 5 -жағдай: goto_moteur (*(sauvegarde_positions5)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions5+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions5+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions5+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions5+4)); кешіктіру (200); үзіліс; 6 -жағдай: goto_moteur (*(sauvegarde_positions6)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions6+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions6+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions6+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions6+4)); кешіктіру (200); үзіліс; 7 -жағдай: goto_moteur (*(sauvegarde_positions7)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions7+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions7+2)); кешігу (200); goto_moteur3 (*(sauvegarde_positions7+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions7+4)); кешігу (200); үзіліс; 8 -жағдай: goto_moteur (*(sauvegarde_positions8)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions8+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions8+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions8+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions8+4)); кешіктіру (200); үзіліс; 9 -жағдай: goto_moteur (*(sauvegarde_positions9)); кешігу (200); goto_moteur1 (*(sauvegarde_positions9+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions9+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions9+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions9+4)); кешіктіру (200); үзіліс; } Serial.print («\ n *********************** ҚАРЫПТЫ ҚАЙТА ӨНДІРУ ***************** / n «); кешіктіру (500); }} /*Serial.print («дебют / 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 («\ nфин / n»);*/
кешіктіру (100); } // **************************** ФУНКЦИЯЛАР ****************** ******************
word recevoir () {// fonction permettant de recevoir l'in information смартфон
if (Serial.available ()) {w = Serial.read ();
Serial.flush ();
w қайтару; }}
void goto_moteur (int angle_destination)
{while (бұрыш_мақсат бұрышы+қадам_бұрышы) {Serial.print («\ n -------------- * * * * * * -------------- ---- / n «); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle1 = / t»); Serial.print (бұрыш); if (бұрыштық_бақылау бұрышы + қадамдық_бұрыш) {бұрыш = бұрыш + қадам_бұрыш; moteur.write (бұрыш);} кешіктіру (100); } moteur.write (бұрыш_мақсаты); } void goto_moteur1 (int angle_destination) {while (бұрыштың_ойлану бұрышы1+қадам_бұрышы) {Serial.print («\ n -------------- * * * * * * ------- ----------- / n «); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle2 = / t»); Serial.print (бұрыш1); егер (бұрыштың тағайындалу бұрышы1 +қадамның бұрышы) {бұрышы1 += қадамдық бұрышы; moteur1.жазу (бұрыш1);;} кешіктіру (100); } moteur1.write (бұрыш_мақсаты); } void goto_moteur2 (int angle_destination) {
while (бұрыштың тағайындалу бұрышы2+қадамның бұрышы)
{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle3 = / t»); Serial.print (бұрыш2); егер (бұрыштың тағайындалу бұрышы2 +қадамның бұрышы) {бұрышы2 += қадамдық бұрышы; moteur2.write (бұрыш2);} кешіктіру (100); } moteur2.write (бұрыш_мақсаты); } void goto_moteur3 (int angle_destination) {
while (бұрыштың тағайындалу бұрышы3+қадамның бұрышы)
{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle4 = / t»); Serial.print (angle3); if (бұрыштың тағайындалу бұрышы3 +қадамның бұрышы) {бұрышы3 += қадамның бұрышы; moteur3.жазу (бұрыш3);} кешіктіру (100); } moteur3.write (бұрыштық_мақсат); } void goto_moteur5 (int angle_destination) {
while (бұрыштың_айналу бұрышы5+қадамның бұрышы)
{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle5 = / t»); Serial.print (бұрыш5); егер (бұрыш_мақсат бұрышы5 +қадам_бұрыш) {бұрыш5 += қадам_бұрыш; moteur5.write (бұрыш5);} кешіктіру (100); } moteur5.write (бұрыш_мақсаты); }
жарамсыз TouchDown_Release () // TouchDown түймесін босату
{егер (бұрыш5 <180) {бұрыш5 = бұрыш5+қадам_бұрыш_мини; } moteur5.write (бұрыш5); }
TouchDown_Grab () // TouchDown түймесін алудың күші жоқ
{егер (бұрыш5> 0) {бұрыш5 = бұрыш5-қадам_ұңқыр_мини; } moteur5.write (бұрыш5); } void Base_Rotation () {if (0 бұрышы) {бұрыш = бұрыш-қадам_бұрышы; } else бұрышы = 0; moteur.write (бұрыш); } жарамсыз Waist_Rotation () {if (бұрыш1 20) {бұрыш1 = бұрыш1-қадам_бұрыш; } else бұрышы1 = 20; moteur1.жазу (бұрыш1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.write (бұрыш2); } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.write (бұрыш3); }
6 -қадам: Міне
Қарағандарыңызға рахмет, бағаладыңыз деп сенемін!
Егер сізге осы нұсқаулық ұнаған болса, бізге келуге болатынын біле аласыз! =)
Ұсынылған:
Роботтық қол: 3 қадам

Роботтық қол: Ciao a tutti! Робототехника басқарылатын роботты басқаруға мүмкіндік береді
3D басып шығарылған роботтық қол: 6 қадам (суреттермен)

3D басып шығарылған роботтық қол: Бұл Райан Гросс жасаған робот қолының ремиксі: https://www.myminifactory.com/object/3d-print-humanoid-robotic-hand-34508
Ардуино мен ДК басқаратын роботтық қол: 10 қадам

Ардуино мен ДК басқаратын роботтық қол: Роботтық қару өнеркәсіпте кеңінен қолданылады. Мейлі монтаждау, дәнекерлеу болсын, мейлі ХҒС -қа (Халықаралық ғарыш стансасына) қондыру үшін қолданылса да, олар адамдарға жұмыста көмектеседі немесе адамды толығымен алмастырады. Мен жасаған қол кішірек
Arduino басқарылатын роботтық қол W/ 6 еркіндік дәрежесі: 5 қадам (суреттермен)

Arduino басқарылатын роботтық қол W/ 6 еркіндік дәрежесі: Мен робототехника тобының мүшесімін және жыл сайын біздің топ жыл сайынғы Mini Maker жәрмеңкесіне қатысады. 2014 жылдан бастап мен жыл сайынғы іс -шараға жаңа жоба құруды шештім. Ол кезде менде оқиғаға бір ай қалғанда бірдеңе жинау керек еді
Zio модульдері бар роботтық қол 3 -бөлім: 4 қадам

Zio модульдері бар роботтық қол 3 -бөлім: Бұл блог Zio Robotics сериясының бөлігі болып табылады. Кіріспе Біздің алдыңғы блогымызда біз Zio модульдерін қолдана отырып, роботтық қолды қалай басқаруға болатындығы туралы 1 және 2 -бөлімдегі оқулықтарды орналастырдық. 1 -бөлім негізінен сіздің робот қолыңыздың тырнағын автоматты түрде басқаруға бағытталған