Агуулгын хүснэгт:

Утасны хяналттай робот гар: 31 алхам
Утасны хяналттай робот гар: 31 алхам

Видео: Утасны хяналттай робот гар: 31 алхам

Видео: Утасны хяналттай робот гар: 31 алхам
Видео: VPS | [Хиймэл оюуны шинжлэх ухаан] 2024, Арваннэгдүгээр
Anonim
Утасны хяналттай робот гар
Утасны хяналттай робот гар

Энэ бол робот гарыг утсаар удирддаг болгох заавар юм. Утас ашиглахын давуу тал нь таны гар илүү хөнгөн бөгөөд бүх мотороо гарынхаа доод хэсэгт байрлуулж, барилга угсралт, засвар үйлчилгээг хөнгөвчилдөг. Гараа хэрхэн яаж ажиллуулж байгааг харуулсан видеог энд оруулав. Би ирээдүйд хумс нэмж оруулахаар төлөвлөж байгаа бөгөөд ингэснээр бүх зүйлийг авах боломжтой бөгөөд зүгээр л түлхэж болохгүй.

3D хэвлэх боломжтой:

Энд ба энд

Хангамж

6 Servo Motors (MG995)

Ардуино Уно

6 метр орчим хуванцар бүрсэн ган утас (0.5мм)

Хайрцаг 23x33x10 (илүү нарийхан байж магадгүй, богино байх ёсгүй)

Модон хавтан 33x10

Самар ба боолт

14 см хоолой (энэ нь утсыг чиглүүлэхэд шаардлагатай)

4 L-хаалт

5 вольтын адаптер

7 чиглэлийн 2 терминал блок

Талхны талбайн утас

3D хэвлэмэл бүрэлдэхүүн хэсгүүд (миний зохиогоогүй, тайлбар дахь элементүүдийн линкүүд):

3 "боолт"

2 "Элемент 1"

1 "Элемент 2"

2 "Элемент 3"

1 Үндсэн холбогч

Алхам 1: Бүх 3D бүрэлдэхүүн хэсгүүдийг хэвлэх

Танд боолтны нүх, нуман хаалганы дэмжлэг хэрэгтэй байж магадгүй, гэхдээ таны эд ангиудын биед нэмэлт дэмжлэг оруулахгүй байхыг анхаарна уу; Энэ нь жижиг утасны нүхийг хаах бөгөөд та шинэ нүх гаргах шаардлагатай болно

Алхам 2: (Нэмэлт) Хайрцагныхаа ёроолд бэхлэхийн тулд модон банз бэхлээрэй

Миний хайрцаг нэлээд сул байсан, таных тийм биш байж магадгүй

Алхам 3: Хайрцгийг тааруулахын тулд модон банзыг хэмжиж хайчилж ав

Алхам 4: Моторуудын байрлалыг тэмдэглэ

гарны аль нь ч бие биендээ хүрэхгүй байгаа эсэхийг шалгаарай

Алхам 5: Хаалт ба хоолойн байрлалыг тэмдэглэ

Хаалт ба хоолойн байрлалыг тэмдэглэ
Хаалт ба хоолойн байрлалыг тэмдэглэ

Хоолойг нүхний урд нэг см орчим зайд байрлуулах ёстой

Алхам 6: Таны хайрцгаас гарч буй кабелийн нүхийг өрөмдөх (USB ба цахилгаан)

Таны хайрцгаас гарч буй кабелийн нүхийг өрөмдөх (USB ба тэжээл)
Таны хайрцгаас гарч буй кабелийн нүхийг өрөмдөх (USB ба тэжээл)

Алхам 7: Бүх тэмдэглэгдсэн нүхийг өрөмдөж, харсан

Бүх тэмдэглэгдсэн нүхийг өрөмдөж, харсан
Бүх тэмдэглэгдсэн нүхийг өрөмдөж, харсан

Алхам 8: Мотор ба хоолойг банзан дээр холбоно уу

Алхам 9: Банзыг L-хаалт ашиглан хайрцагт хавсаргана уу

Алхам 10: Терминал блокоо аваад утсыг хамтдаа гагнана уу

Терминал блокоо аваад утсыг хамтдаа гагнана уу
Терминал блокоо аваад утсыг хамтдаа гагнана уу

Алхам 11: Адаптерийн цахилгаан утасны төгсгөлийг хайчилж, утсыг хуулна

Алхам 12: Нэмэх ба хасах утсыг тодорхойлж, тэмдэглээрэй

Алхам 13: Утаснуудыг терминал блокуудад бэхлээрэй, ингэснээр бүх + servo утаснууд ба цахилгаан утаснаас + утаснууд хоорондоо холбогддог

Утаснуудыг терминал блокуудад бэхлээрэй, ингэснээр бүх + servo утаснууд ба цахилгаан утаснаас + утаснууд хоорондоо холбогддог
Утаснуудыг терминал блокуудад бэхлээрэй, ингэснээр бүх + servo утаснууд ба цахилгаан утаснаас + утаснууд хоорондоо холбогддог

Алхам 14: Талхны талхны утаснаас толгойг хайчилж ав

Талхны талхны утаснаас толгойг хайчилж ав
Талхны талхны утаснаас толгойг хайчилж ав

Талхны хавтангийн утаснуудын хуулагдсан үзүүрийг хасах терминал блок руу холбож, зүүний үзүүрийг arduino -ийн газардуулгын зүү дээр холбоно уу. Хэрэв та үүнийг хийхгүй бол мотор ямар ч оролтгүйгээр тогтворгүй хөдөлнө.

Алхам 15: Таны гарнаас гарч буй утсыг хайрцагны ёроолд гурван цооног өрөмдөнө

Нүхнүүд нь үндсэн холбогчийн нүхнүүдтэй тохирч байх ёстой.

Алхам 16: Үндсэн холбогчийг хайрцагт холбоно уу

Үндсэн холбогчийг хайрцагт холбоно уу
Үндсэн холбогчийг хайрцагт холбоно уу

Алхам 17: Утсан ховилыг илүү гүн болгохын тулд хутга эсвэл хумсны файл ашиглана уу

Утасны ховилыг илүү гүнзгий болгохын тулд хутга эсвэл хумсны файл ашиглана уу
Утасны ховилыг илүү гүнзгий болгохын тулд хутга эсвэл хумсны файл ашиглана уу

2 ба 3 -р элементүүдийн утсан ховил нь хэтэрхий гүехэн байна.

Алхам 18: Гар барих

Гараа бүтээх
Гараа бүтээх

Энд байгаа зааврын дагуу гараа бүтээгээрэй

Алхам 19: Processing болон Arduino -г суулгана уу

Боловсруулалт ба Arduino

Алхам 20: Кодын програмуудыг буулгана уу

Код нь энэ хуудасны доод талд байна

Алхам 21: Servo Control Pins -ийг Arduino руу холбоно уу

Servo Control Pins -ийг Arduino руу холбоно уу
Servo Control Pins -ийг Arduino руу холбоно уу

Би эхний моторыг гурав дахь дижитал зүү, хоёр дахь моторыг дөрөв дэх тоон зүү гэх мэтээр холбосон. Газардуулгын зүү нь терминалын блоктой хэвээр байгаа эсэхийг шалгаарай.

Алхам 22: Боловсруулах явцад дахин тохируулах товчийг дарна уу, ингэснээр бүх зэвсэг 90 градус болно

Алхам 23: Servo Arms -ийг мотор дээр хэвтээ байдлаар бэхлээрэй

Алхам 24: Залхуурал байхгүй байхын тулд утсыг гараараа дамжуулаарай

Утсыг аль болох олон цоорхойгоор дамжуулж байгаа эсэхийг шалгаарай, ингэснээр үүнийг түр зуур барьж, салгахад хялбар болно.

Алхам 25: Гараа туршиж үзээд утсыг шаардлагатай хэмжээгээр чангалж эсвэл суллаарай

Алхам 26: Утаснуудыг байнгын ажиллагаатай болгохын тулд Servo Arms -ийг халуун цавуугаар наа

Алхам 27: Тэмдэглэл

Тэмдэглэл
Тэмдэглэл

Би 0.5 мм -ийн үнэт эдлэлийн утас ашигласан боловч 0.4 мм нь сайн байх ёстой. Анхны загварт PVC утас ашигласан боловч маш амархан эвдэрсэн бөгөөд ажиллахад хэцүү байсан.

Хэрэв та машин эсвэл дугуйгаар гараа хөдөлгөх гэж байгаа бол гарны үеийг гарч ирэхгүйн тулд туузаар боож өгнө. Энэ нь ялангуяа 1 -р элементийн хувьд чухал юм.

Би энэ төслийг эхлүүлэхдээ яагаад утсаар удирддаг гар хийх талаар ганцхан заавар олж чадсанаа гайхаж байлаа. Энэ бол хобби робот гар хийх хамгийн түгээмэл арга биш гэдгийг би одоо ойлгож байна. Заримдаа утаснууд нь ховилоосоо унаж, бүх зүйл бүдгэрдэг. Асуудал нь надад туршлага багатайгаас үүдэлтэй юу, эсвэл бүх санаа нь асуудалтай байгаа эсэхийг би мэдэхгүй, гэхдээ хэрэв би юу хийж байгаагаа мэдэж байсан бол илүү бат бөх байх болно гэдэгт итгэлтэй байна.

Алхам 28: Алдааг олж засварлах

Утасны нүхийг 3D хэвлэсэн элементүүдэд хаадаг.

Та зөвхөн боолтны нүхний оронд бүхэл бүтэн элементийн дэмжлэгийг нэмсэн. Элементийг дахин хэвлэх эсвэл нүхийг үнэхээр халуун зүүгээр нээ.

COM порт хаагдсан тул та arduino -тай холбогдох боломжгүй байна.

Таны arduino USB 3 портыг хүлээж авахгүй байж магадгүй (минийх зөвшөөрөөгүй), та USB 2 өргөтгөл кабель худалдаж авах эсвэл USB 2 порт бүхий компьютер ашиглах боломжтой.

Код ажиллахгүй байна:

Энэ зааврыг дагаж өөрийн кодоо хийхийн тулд үүнийг өөрчилнө үү

Гарны нэг хэсэг хөдөлдөггүй:

Утаснууд нь орооцолдсон байж магадгүй, үүнийг шалгахын тулд servo гараа servo -оос салгаад утсыг гараараа татаж үзээрэй. Утаснуудаа тайлж, утас татахад хэцүү хэвээр байвал хөдөлгөөнийг хөнгөвчлөхийн тулд WD-40 эсвэл тосолгооны материал хэрэглэж үзээрэй.

Алхам 29: Холбоосууд

Робот бус гар:

Гар 3D хэвлэх боломжтой:

Миний гарыг 3D хэвлэх боломжтой:

Arduino ба боловсруулалт:

Алхам 30: Код

Энэ кодоос өөрчилсөн

Arduino код:

#оруулах // моторыг зарлах Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Бүх моторыг анхдагчаар 90 градусаар тохируулсан int current1 = 90; int одоогийн2 = 90; int одоогийн3 = 90; int current4 = 90; int одоогийн5 = 90; int current6 = 90; // Хөдөлгүүрүүд int mini1 = 0 хүрэх хамгийн бага ба хамгийн их зэрэг; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Одоогийн байрлалаас нэмэх, хасах зэрэг int градусFoward = 5; // Хойшлуулах тул хоёр функц буруу дарааллаар болохгүй int intBetweenSteps = 100; void setup () {// myservo1.attach (3) мотор тус бүрт хяналтын гол тохируулах; myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Бүх моторыг myservo1.write (current1) анхдагч тохиргоогоор тохируулна уу; myservo2.write (current2); myservo3. бичих (одоогийн3); myservo4. бичих (одоогийн4); myservo5. бичих (одоогийн5); myservo6.write (current6); // цуваа холбоог эхлүүлэх @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// хэрэв өгөгдөл унших боломжтой бол char val = Serial.read (); // үүнийг энэ тэмдэгтэнд оруулна уу // Моторын хяналт хэрэв (val == 'a' && current1 + градус мини1) {myservo1.write (current1 - градусFoward); одоогийн1 = одоогийн1 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - dərəcəFoward); одоогийн2 = одоогийн2 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - dərəcəFoward); одоогийн3 = одоогийн3 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - dərəcəFoward); одоогийн4 = одоогийн4 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - dərəcəFoward); одоогийн5 = одоогийн5 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - dərəcəFoward); одоогийн6 = одоогийн6 - градусЗүүн; хоцрогдол (хоцролтын хоорондох алхам); } // Хурдны хяналтыг if (val == 'w') {// Хэрэв хурдны 1 товчлуурыг градусаар дарсан бол Foward = 1; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'x') {// Хэрэв хурд 5 товчлуурыг дарсан бол градусFoward = 5; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'y') {// Хэрэв хурдны 10 товчлуурыг градус дарсан бол Foward = 10; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'z') {// Хэрэв хурдны 20 товчлуурыг градус дарсан болFoward = 20; хоцрогдол (хоцролтын хоорондох алхам); } if (val == 'r') {// Хэрэв хурд 20 товчлуур дарагдсан бол myservo1.write (90); одоогийн1 = 90; myservo2.write (90); одоогийн2 = 90; myservo3.write (90); одоогийн3 = 90; myservo4.write (90); одоогийн4 = 90; myservo5.write (90); одоогийн5 = 90; myservo6.write (90); одоогийн6 = 90; хоцрогдол (хоцролтын хоорондох алхам); }}}

Боловсруулах код:

импорт боловсруулах.сериал.*; импортын хяналтP5.*; // ControlP5 номын сангийн цуваа портыг импортлох; ControlP5 cp5; // ControlP5 объект PFont фонт үүсгэх; void setup () {// arduino програмын хэмжээтэй ижил (300, 700); // цонхны хэмжээ, (өргөн, өндөр) printArray (Serial.list ()); // боломжтой бүх цуваа портуудыг хэвлэдэг // Хэрэв танд асуудал байгаа бол энэ нь эндээс ирсэн байж магадгүй String portName = Serial.list () [0]; порт = шинэ Цуваа (энэ, portName, 9600); // би arduino -г com3 -тэй холбосон, энэ нь linux болон mac os -д өөр байх болно // хоосон цонхонд buton нэмэхийг зөвшөөрнө cp5 = шинэ ControlP5 (энэ); фонт = createFont ("Arial", 13); // товчлуурууд болон гарчигт зориулсан тусгай фонт // Хурдны хяналтын товчлуурууд cp5.addButton ("Нэг") // "Нэг" нь товчлуурын зүүн дээд булангийн.setPosition (50, 50) // x ба y координатуудын нэр юм..setSize (55, 25) // (өргөн, өндөр).setFont (фонт); cp5.addButton ("Таван").setPosition (110, 50).setSize (55, 25).setFont (фонт); cp5.addButton ("Арван").setPosition (170, 50).setSize (55, 25).setFont (фонт); cp5.addButton ("Хорин").setPosition (230, 50).setSize (55, 25).setFont (фонт); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (фонт); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (фонт); // Motor Control Buttons cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (өргөн, өндөр).setFont (фонт); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (өргөн, өндөр).setFont (фонт); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (фонт); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (фонт); } void draw () {// arduino дэвсгэр дээрх давталттай адил (192, 215, 249); // цонхны арын өнгө (r, g, b) эсвэл (0 -ээс 255 хүртэл) // Хурдны хяналт нь хурдны хяналтын дүүргэлт гэсэн текст нэмэх (0, 10, 25); // текстийн өнгө (r, g, b) textFont (фонт); текст ("Хурдны хяналт", 50, 40); // ("текст", x координат, у координат)} // бидний товчлууруудад зарим функц нэмж оруулах боломжийг олгодог // тиймээс та ямар ч товчлуур дарахад тухайн цуваа порт дээр тодорхой char илгээдэг // мөрүүдийг илгээх боломжтой гэдэгт итгэлтэй байна chars -ийн оронд, энэ нь илүү утга учиртай байх болно, гэхдээ би үүнийг яаж хийхээ мэдэхгүй байна // Speed Control Commands void One () {port.write ('w'); } void Five () {port.write ('x'); } хүчингүй Ten () {port.write ('y'); } хүчингүй Twenty () {port.write ('z'); } // Motor Control Commands хүчингүй болно Servo_1_Foward () {port.write ('a'); } хүчингүй Servo_1_Back () {port.write ('b'); } хүчингүй Servo_2_Foward () {port.write ('c'); } хүчингүй Servo_2_Back () {port.write ('d'); } хүчингүй Servo_3_Foward () {port.write ('e'); } хүчингүй Servo_3_Back () {port.write ('f'); } хүчингүй Servo_4_Foward () {port.write ('g'); } хүчингүй Servo_4_Back () {port.write ('h'); } хүчингүй Servo_5_Foward () {port.write ('i'); } хүчингүй Servo_5_Back () {port.write ('j'); } хүчингүй Servo_6_Foward () {port.write ('k'); } хүчингүй Servo_6_Back () {port.write ('l'); } хүчингүй болгох Reset () {port.write ('r'); }

Алхам 31: Бусад зураг

Зөвлөмж болгож буй: