Mündəricat:
- Addım 1: Ehtiyac duyacağınız şeylər:-
- Addım 2: Qol hazırlamaq:-
- Addım 3: Bağlantıların qurulması:-
- Addım 4: Kodlaşdırma:-
- Addım 5: Test:-
Video: Arduino istifadə edərək sadə və ağıllı robot qolu !!!: 5 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu təlimatda sadə bir robot qolu hazırlayacağam. Bu bir usta qolu ilə idarə olunacaq. Qol hərəkətləri xatırlayacaq və ardıcıllıqla oynayacaq. Fikir "Stoerpeak tərəfindən hazırlanmış mini robot qolundan" ideyanı aldığım üçün yeni deyil, uzun müddətdir bunu etmək istəyirdim, amma o vaxtlar heç bir şey yox idi və proqramlaşdırma haqqında heç bir məlumatım yox idi. İndi nəhayət birini qururam, sadə, ucuz saxlayıram və hamınızla paylaşıram.
Beləliklə, başlayaq ….
Addım 1: Ehtiyac duyacağınız şeylər:-
İşdə sizə lazım olacaq şeylərin siyahısı:-
1. Servo motorlar x 5 ABŞ üçün bağlantı:- https://amzn.to/2OxbSH7Link for Europe:-
2. Potensiometrlər x 5 (100k istifadə etdim.) ABŞ üçün bağlantı:- https://amzn.to/2ROjhDMLAvropa üçün:-
3. Arduino UNO. (Arduino Nano'dan da istifadə edə bilərsiniz) ABŞ üçün bağlantı:- https://amzn.to/2DBbENWLink for Europe:-
4. Çörək lövhəsi. (Bu kiti təklif edirəm) ABŞ üçün link:- https://amzn.to/2Dy86w4Link for Europe:-
5. Batareya. (isteğe bağlı olaraq 5v adapter istifadə edirəm)
6. Karton/Taxta/Günəş lövhəsi/akrilik indiyə qədər mövcud olan və ya tapılması asan olan şeylər.
Həm də Arduino IDE quraşdırmalısınız.
Addım 2: Qol hazırlamaq:-
Burada qol hazırlamaq üçün Popsicle çubuqlarından istifadə etdim. Əlinizdə olan hər hansı bir materialdan istifadə edə bilərsiniz. Və daha yaxşı bir qol etmək üçün fərqli mexaniki dizaynları sınaya bilərsiniz. dizaynım çox sabit deyil.
Servoları Popsicle çubuğuna yapışdırmaq və vintlər ilə bağlamaq üçün sadəcə iki tərəfli lentdən istifadə etdim.
Usta qolu üçün potsiometrləri çubuq çubuqlarına yapışdırdım və qol hazırladım.
Şəkillərə istinad edərək daha yaxşı bir fikir əldə edəcəksiniz.
Hər şeyi əsas kimi istifadə olunan A4 ölçülü kətan lövhəsinə quraşdırdım.
Addım 3: Bağlantıların qurulması:-
Bu addımda bütün lazımi əlaqələri quracağıq, yuxarıdakı şəkillərə baxın.
- Əvvəlcə bütün servoları enerji təchizatına paralel olaraq bağlayın (Qırmızı tel +ve Qara və ya Qəhvəyi Tel Gnd)
- Sonra siqnal tellərini, yəni sarı və ya narıncı telləri arduinonun PWM pininə bağlayın.
- İndi potensialiometrləri paralel olaraq +5v və Gnd arduino'ya bağlayın.
- Orta terminali ardunio analog pininə qoşun.
Burada rəqəmsal pinlər 3, 5, 6, 9 və 10 servoları idarə etmək üçün istifadə olunur
Potensialiometrlərdən giriş üçün A0 - A4 analog pinləri istifadə olunur.
Pin 3 -ə qoşulan servo A0 -a qoşulmuş potensiometr tərəfindən idarə olunacaq
5 -ci pinlə əlaqəli servo A1 üzərindəki qazanla idarə olunacaq və s.
Qeyd:- Servolar arduino ilə təchiz olunmasa da, servoların Gnd-ini arduino-ya bağladığınızdan əmin olun, yoxsa qol işləməyəcək.
Addım 4: Kodlaşdırma:-
Bu kodun məntiqi olduqca sadədir, potansiyometrlərin dəyərləri bir sıra olaraq saxlanılır, sonra qeydlər for loop istifadə olunur və servolar dəyərlərə uyğun olaraq addımlar atılır. "Arduino Potentiometer Servo İdarəetmə və Yaddaş" arayış üçün istifadə etdiyim bu təlimatı yoxlaya bilərsiniz.
Kod:- (Yüklənə bilən fayl aşağıda verilmişdir.)
Əvvəlcə bütün lazımi dəyişənləri bütün dünyada elan edəcəyik ki, bunları proqram boyunca istifadə edək. Bunun üçün xüsusi bir şərhə ehtiyac yoxdur
#daxil edin
// Servo Obyektləri Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potentiometr obyektləri int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Servo mövqeyini saxlamaq üçün dəyişən int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Əvvəlki mövqe dəyərlərini saxlamaq üçün dəyişən int int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Cari mövqe dəyərlərini saxlamaq üçün dəyişən int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // Bucağı int Servo_Number saxlayır; // heç bir servo int Storage saxlamır [600]; // Məlumatların saxlanılması üçün massiv (Array massivinin artırılması daha çox yaddaş sərf edəcək) int Index = 0; // Array indeksi 0 -cı mövqedən başlayır char data = 0; // serial girişindən məlumatları saxlamaq üçün dəyişən.
İndi pinləri və funksiyalarını təyin etdiyimiz bir quraşdırma funksiyası yazacağıq. Bu, ilk olaraq yerinə yetirən əsas funksiyadır
boş quraşdırma ()
{Serial.begin (9600); // Arduino və IDE arasında serial ünsiyyət üçün. // Servo obyektləri PWM sancaqlarına yapışdırılır. Servo_0. əlavə (3); Servo_1. əlavə et (5); Servo_2.tach (6); Servo_3. əlavə et (9); Servo_4. əlavə et (10); // Servolar başlanğıcda 100 mövqeyə qoyulur. Servo_0.write (100); Servo_1.write (100); Servo_2. yazmaq (100); Servo_3 yazın (100); Servo_4.write (100); Serial.println ( Yazmaq üçün 'R' düyməsinə və oynamaq üçün 'P' düyməsinə basın); }
İndi Analog Giriş pinlərindən istifadə edərək potensialiometrlərin dəyərlərini oxumalı və onları servoları idarə etmək üçün xəritələməliyik. Bunun üçün bir funksiya təyin edəcəyik və Map_Pot () adlandıracağıq; İstifadəçi tərəfindən təyin edilmiş bir funksiyadır
boşluq Map_Pot ()
{ / * Servo 180 dərəcə fırlanır, lakin onu məhdudlaşdırmaq üçün istifadə etmək yaxşı bir fikir deyil, çünki servoları daim narahat edir və bu səbəbdən servo arasında hərəkət etməyi məhdudlaşdırırıq: 1-179 * / Pot_0 = analogRead (A0); // Qazandakı girişi oxuyun və Dəyişən Pot_0 -da saxlayın. Servo_0_Pos = xəritə (Pot_0, 0, 1023, 1, 179); // 0 -dan 1023 -ə qədər Servo_0.write (Servo_0_Pos) arasındakı servoları eşleyin; // Servonu həmin mövqeyə aparın. Pot_1 = analogOxu (A1); Servo_1_Pos = xəritə (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogOxu (A2); Servo_2_Pos = xəritə (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogOxu (A3); Servo_3_Pos = xəritə (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogOxu (A4); Servo_4_Pos = xəritə (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
İndi loop funksiyasını yazacağıq:
boşluq döngəsi ()
{Map_Pot (); // (Serial.available ()> 0) {data = Serial.read (); əgər (data == 'R') Serial.println ("Hərəkətlərin qeyd edilməsi …"); if (data == 'P') Serial.println ("Qeydə alınmış Hərəkətlərin Çalınması …"); } if (data == 'R') // 'R' daxil edilirsə, yazmağa başlayın. {// Dəyərləri Prev_0_Pos = Servo_0_Pos dəyişənində saxlayın; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // Xəritə funksiyası müqayisə üçün geri çağırılırsa (abs (Prev_0_Pos == Servo_0_Pos)) // mütləq dəyər {Servo_0.write (Servo_0_Pos) müqayisə olunmaqla əldə edilir; // Əgər dəyərlər servo ilə uyğun gəlirsə (Current_0_Pos! = Servo_0_Pos) yenidən yerləşdirilirsə // Dəyərlər uyğun gəlmirsə {Storage [Index] = Servo_0_Pos + 0; // Index ++ massivinə dəyər əlavə olunur; // 1} Current_0_Pos = Servo_0_Pos; } /* Eynilə bütün servolar üçün dəyər müqayisə edilir, hər bir giriş üçün +100 fərqli bir dəyər olaraq əlavə olunur. */ if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Current_1_Pos! = Servo_1_Pos) {Saxlama [İndeks] = Servo_1_Pos + 100; İndeks ++; } Current_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); if (Current_2_Pos! = Servo_2_Pos) {Saxlama [İndeks] = Servo_2_Pos + 200; İndeks ++; } Current_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); if (Current_3_Pos! = Servo_3_Pos) {Saxlama [İndeks] = Servo_3_Pos + 300; İndeks ++; } Current_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); if (Current_4_Pos! = Servo_4_Pos) {Saxlama [İndeks] = Servo_4_Pos + 400; İndeks ++; } Current_4_Pos = Servo_4_Pos; } / * Dəyərlər seriyalı monitorda çap olunur, '\ t' dəyərləri cədvəl formatında göstərmək üçündür * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("İndeks ="); Serial.println (İndeks); gecikmə (50); } əgər (data == 'P') // IF 'P' daxil edilsə, qeydə alınan hərəkətləri oynamağa başlayın. {for (int i = 0; i <Index; i ++) // Döngəni istifadə etməklə {Servo_Number = Storage /100; // Servo sayını tapır Servo_Position = Saxlama % 100; // Servo keçidinin mövqeyini tapır (Servo_Sayı) {hal 0: Servo_0.write (Servo_Mövqe); fasilə; hal 1: Servo_1.write (Servo_Position); fasilə; hal 2: Servo_2.write (Servo_Position); fasilə; hal 3: Servo_3.write (Servo_Position); fasilə; hal 4: Servo_4.write (Servo_Mövqe); fasilə; } gecikmə (50); }}}
Kod hazır olduqdan sonra onu arduino lövhəsinə yükləyin
Ağıllı qol işə hazırdır. Funksiya hələ Stoerpeak tərəfindən yaradılan qədər hamar deyil.
Kodu daha yaxşı edə bilirsinizsə və ya mənim üçün hər hansı bir təklifiniz varsa, şərh bölməsində mənə bildirin.
Bunu söyləyərək sınağa keçək ….
Addım 5: Test:-
Kodu lövhəyə uğurla yüklədikdən sonra 'Serial Monitoru' açın, onu Alətlər seçimində tapa bilərsiniz. Serial monitor başlayanda arduino sıfırlanır. İndi əsas qolu istifadə edərək robot qolunu idarə edə bilərsiniz. Amma heç nə qeydə alınmır.
Qeydə almağa başlamaq üçün monitora 'R' daxil edin, indi qeyd etmək istədiyiniz hərəkətləri edə bilərsiniz.
Hərəkətlər bitdikdən sonra qeydə alınan hərəkətləri oynamaq üçün 'P' daxil etməlisiniz. Lövhə sıfırlanmadığı müddətcə servolar hərəkətləri etməyə davam edəcək.
Tövsiyə:
Arduino Nəzarət Rölesi Modulundan istifadə edərək Ağıllı Evi necə etmək olar - Ev avtomatlaşdırma fikirləri: 15 addım (şəkillərlə)
Arduino Nəzarət Rölesi Modulundan istifadə edərək Ağıllı Evi necə etmək olar | Ev Avtomatlaşdırma Fikirləri: Bu ev avtomatlaşdırma layihəsində 5 ev texnikasını idarə edə biləcək ağıllı bir ev rölesi modulu dizayn edəcəyik. Bu röle modulu Mobil və ya ağıllı telefondan, IR uzaqdan və ya TV uzaqdan, Manuel keçiddən idarə oluna bilər. Bu ağıllı röle həm də hiss edə bilər
ESP32: 7 addımlardan istifadə edərək IoT əsaslı Ağıllı Bağçılıq və Ağıllı Kənd Təsərrüfatı
ESP32 istifadə edərək IoT əsaslı Ağıllı Bağçılıq və Ağıllı Kənd Təsərrüfatı: Dünya zaman keçdikcə kənd təsərrüfatı kimi dəyişir. Hazırda insanlar hər sahədə elektronikanı birləşdirir və kənd təsərrüfatı bunun üçün istisna deyil. Kənd təsərrüfatında elektronikanın bu birləşməsi fermerlərə və bağları idarə edən insanlara kömək edir
Arduino UNO istifadə edərək pilotsuz təyyarə necə etmək olar - Mikrokontrolördən istifadə edərək bir Quadcopter hazırlayın: 8 addım (şəkillərlə)
Arduino UNO istifadə edərək pilotsuz təyyarə necə etmək olar | Mikrokontrolördən istifadə edərək Quadcopter hazırlayın: Giriş Youtube Kanalımı Ziyarət Edin Drone almaq üçün çox bahalı bir gadget (məhsul) təşkil edir. Bu yazıda necə ucuz satacağımı müzakirə edəcəyəm? Ucuz qiymətə öz əlinizlə bunu necə edə bilərsiniz … Yaxşı Hindistanda bütün materiallar (mühərriklər, ESClər
Həqiqi əl hərəkəti üzərində idarə olunan sadə bir robot qolu: 7 addım (şəkillərlə)
Həqiqi Əl Hərəkətinə Nəzarət Edilən Sadə Robotik Qol: Bu yeni başlayanlar üçün çox sadə bir DOF robot qoludur. Qol Arduino tərəfindən idarə olunur. Operatorun əlində olan bir sensorla əlaqələndirilir. Buna görə də operator dirsək hərəkətini əyərək qolun dirsəyini idarə edə bilər
Alexa və Arduino istifadə edərək ağıllı ev monitorinqi: 9 addım (şəkillərlə)
Alexa və Arduino istifadə edərək Ağıllı Ev Monitorinqi: İndiki dünyada insanlar evlərində deyil, iş yerlərində daha çox vaxt keçirirlər. Bu səbəbdən iş yerində insanların evin şərtləri ilə tanış ola biləcəyi ev monitorinq sisteminə ehtiyac var. Bir dənə də olsa daha yaxşı olar