Arduino дээр суурилсан дөрвөн хөлтэй робот. Өөрөө хийх Arduino робот Arduino-оос ямар төрлийн робот угсарч болох вэ

Үүний үр дүнд түүний өмнө байгаа саад тотгорыг харж, нөхцөл байдалд дүн шинжилгээ хийж, зөвхөн хамгийн сайн замыг сонгон жолоодох чадвартай нэлээд хөгжилтэй робот гарч ирэв. Робот маш их маневрлах чадвартай болсон. Энэ нь 180 градус эргүүлэх чадвартай бөгөөд эргэх өнцөг нь 45 ба 90 градус байна. Зохиогч гол хянагчийн хувьд Arduino-тай ижил төстэй Iteaduino-г ашигласан.

Робот хийх материал, багаж хэрэгсэл:
- микроконтроллер (Arduino эсвэл ижил төстэй Iteaduino);
- хэт авианы мэдрэгч;
- зай эзэмшигч;
- Тэнхлэг хоорондын зайг бий болгох хятад тоглоом (та бэлэн худалдаж авах боломжтой);
- хавчуур;
- цавуу;
- утас;
- мотор;
- шилэн хавтан;
- эвлүүлэг;
- транзистор (D882 P).

Робот бүтээх үйл явц:

Нэгдүгээр алхам. Тэнхлэг хоорондын зай үүсгэх
Тэнхлэг хоорондын зайг бий болгохын тулд зохиолч хоёр хятад тоглоомон машин худалдаж авсан. Гэсэн хэдий ч, хэрэв та бэлэн бааз худалдаж авах боломжтой тул нэмэлт мөнгөтэй бол энэ талаар санаа зовох хэрэггүй болно. Бахө тусламжтайгаар машинуудыг хоёр хэсэгт хувааж, хоёр хөтлөгч тэнхлэгийг үүсгэв. Дараа нь эдгээр хэсгүүдийг хооронд нь наасан байна. Гэсэн хэдий ч, энэ тохиолдолд та гагнуурын төмрөөр ажиллах боломжтой, хуванцар нь төгс гагнаж байна.

Машин сонгохдоо энгийн дугуйтай тоглоом авах нь хамгийн сайн арга юм, учир нь зохиогчийн хэлснээр, түүнийх шиг ийм өргөлттэй робот хүчтэй үсэрдэг.

Моторуудаас утсыг салгах өөр нэг мөч байдаг бөгөөд тэдгээрийн аль нэг дээр та туйлшралыг өөрчлөхөө санах хэрэгтэй.


Хоёрдугаар алхам. Топ бүрээсийн үйлдвэрлэл
Роботын дээд тагийг шилэн хавтангаар хийсэн бөгөөд энэ зорилгоор зузаан картон ашиглаж болно. Хавтасны дотор талд тэгш өнцөгт нүх байгааг харж болно, энэ нь түүнд оруулах серво тэнхлэг нь тэгш хэмтэй байх ёстой. Дунд хэсэгт байгаа нүхний хувьд утсыг түүгээр дамжуулна.


Гуравдугаар алхам. Роботыг дүүргэж байна
Хянагч нь хянагчийг тэжээхийн тулд 9V, моторуудад зөвхөн 3V шаардлагатай тул явах эд ангиудыг холбоход тусдаа тэжээлийн эх үүсвэр ашиглах нь хамгийн сайн арга юм. Ерөнхийдөө ийм машинуудын явах эд ангид зай эзэмшигчийг аль хэдийн суулгасан байдаг тул тэдгээрийг зэрэгцээ холбох хэрэгтэй.








Хөдөлгүүрүүд нь D882 P транзисторыг ашиглан хянагчтай холбогдсон байна.Тэдгээрийг хуучин машины хяналтын самбараас гаргаж авсан. Мэдээжийн хэрэг TIP120B төрлийн цахилгаан транзисторыг ашиглах нь хамгийн сайн арга юм, гэхдээ зохиогч үүнийг зүгээр л тохирох шинж чанарын үүднээс сонгосон. Бүхэл бүтэн электрон хэсэг нь заасан схемийн дагуу холбогдсон байна.

Роботыг анивчсаны дараа туршилт хийхэд бэлэн болно. Роботыг тодорхой өнцгөөр эргүүлэхийн тулд та моторуудын зөв цагийг сонгох хэрэгтэй.

Мэдрэгчийн хувьд хэт авианы төхөөрөмж нь микроконтроллерийн 7-р дижитал гаралттай холбогдсон байх ёстой. Серво мотор нь дижитал оролт 3, зүүн моторын транзисторын суурь нь 11-р зүү, баруун моторын суурь нь 10-р зүүтэй холбогддог.

Хэрэв Krona-г цахилгаан тэжээл болгон ашигладаг бол хасах нь GND, нэмэх нь VIN-д холбогдсон байна. Та мөн транзисторын ялгаруулагч ба роботын явах эд ангийн тэжээлийн эх үүсвэрээс сөрөг контактыг GND руу холбох хэрэгтэй.

Бүгдээрээ сайн уу. Энэ нийтлэл нь хэрхэн хийх тухай богино түүх юм хийхробот тэднийхээр гараар... Яагаад түүх вэ гэж та асууж байна уу? Бүх зүйл ийм үйлдвэрлэхэд зориулагдсантай холбоотой гар урлалнэг нийтлэлд танилцуулахад маш хэцүү мэдлэгийн томоохон нөөцийг ашиглах шаардлагатай байна. Бид угсралтын процессыг давж, нэг нүдээр кодыг нь харж, эцэст нь Цахиурын хөндийн санааг сэргээнэ. Эцэст нь юу болох талаар ойлголттой болохын тулд видеог үзэхийг танд зөвлөж байна.

Үргэлжлүүлэхийн өмнө үйлдвэрлэлийн явцад дараах зүйлсийг анхаарна уу гар урлаллазер зүсэгч ашигласан. Хэрэв та өөрийн гараар хангалттай туршлагатай бол лазер зүсэгчээс татгалзаж болно. Нарийвчлал бол төслийг амжилттай дуусгах түлхүүр юм!

Алхам 1: Энэ хэрхэн ажилладаг вэ?

Робот нь 4 хөлтэй, тус бүрдээ 3 сервотой бөгөөд энэ нь 3 градусын эрх чөлөөнд мөчрийг хөдөлгөх боломжийг олгодог. Тэрээр "мөлхөгч алхаагаар" хөдөлдөг. Энэ нь удаан байж болох ч хамгийн зөөлөнүүдийн нэг юм.

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

Алхам 2: Шаардлагатай дэлгэрэнгүй мэдээлэл

Араг яс 2 мм-ийн plexiglass хийсэн.

Гар хийцийн бүтээгдэхүүний цахим хэсэг нь дараахь зүйлээс бүрдэнэ.

  • 12 серво;
  • arduino nano (өөр ямар ч arduino хавтангаар сольж болно);

  • Серво хяналтын бамбай;
  • цахилгаан хангамжийн нэгж (төсөлд PSU 5V 4A ашигласан);

  • хэт авианы мэдрэгч;
  • hc 05 bluetooth модуль;

Бамбай хийхийн тулд танд дараахь зүйлс хэрэгтэй болно.

  • хэлхээний самбар (нийтлэг цахилгаан ба газардуулгын шугам (автобус) байвал зохимжтой);
  • самбараас хавтангийн зүү холбогч - 30 ширхэг;
  • нэг самбарт үүр - 36 ширхэг;

  • утаснууд.

Багаж хэрэгсэл:

  • Лазер таслагч (эсвэл чадварлаг гар);
  • Супер цавуу;
  • Халуун хайлмал цавуу.

Алхам 3: араг яс

График программыг ашиглан араг ясны бүрэлдэхүүн хэсгүүдийг зурцгаая.

Үүний дараа бид ямар ч боломжтой аргаар ирээдүйн роботын 30 хэсгийг хайчилж авав.

Алхам 4: угсралт

Зүссэний дараа хамгаалалтын цаасны бүрээсийг plexiglass-аас салгана.

Дараа нь бид хөлийг угсарч эхэлнэ. Араг ясны хэсгүүдэд суурилуулсан бэхэлгээ. Үлдсэн зүйл бол хэсгүүдийг нэгтгэх явдал юм. Холболт нь нэлээд нягт боловч илүү найдвартай байхын тулд та бэхэлгээний хэсэгт супер цавуу түрхэж болно.

Дараа нь та сервог өөрчлөх хэрэгтэй (сервоны босоо амны эсрэг талын шураг дээр цавуу).

Энэхүү сайжруулалтаар бид роботыг илүү тогтвортой болгоно. Өөрчлөлтийг зөвхөн 8 сервод хийх шаардлагатай, үлдсэн 4 нь биед шууд бэхлэгдэх болно.

Бид хөлийг холбогч элемент (муруй хэсэг) дээр холбодог бөгөөд энэ нь эргээд бие дээрх серво руу залгадаг.

Алхам 5: бамбай хийх

Хэрэв та алхам дээр үзүүлсэн зургуудыг дагаж мөрдвөл самбар үйлдвэрлэх нь маш энгийн.

Алхам 6: электроник

Ардуино самбар дээрх сервогуудын зүүг засъя. Зүүгүүдийг зөв дарааллаар холбох ёстой, эс тэгвээс юу ч ажиллахгүй!

Алхам 7: програмчлал

Франкенштейнийг амилуулах цаг болжээ. Эхлээд legs_init програмыг ачаалж робот зурагт үзүүлсэн байрлалд байгаа эсэхийг шалгаарай. Дараа нь, робот урагш, хойш, зүүн, баруун гэх мэт үндсэн хөдөлгөөнд хариу үйлдэл үзүүлэх эсэхийг шалгахын тулд quattro_test програмыг ачаална уу.

ЧУХАЛ: Та arduino IDE програм хангамжид нэмэлт номын сан нэмэх хэрэгтэй. Номын сангийн холбоосыг доор үзүүлэв.

Робот урагш 5 алхам, ухрах 5 алхам, зүүн 90 градус, баруун 90 градус эргэх ёстой. Хэрэв Франкенштейн бүх зүйлийг зөв хийвэл бид зөв чиглэлд явж байна.

П. С: Роботыг аяган дээр тавган дээр тавиад, тэр болгонд анхны байрлал руугаа буцдаггүй. Туршилтууд робот зөв ажиллаж байгааг харуулсны дараа бид үүнийг газар / шалан дээр байрлуулж туршилтаа үргэлжлүүлж болно.

Алхам 8: урвуу кинематик

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

Энгийнээр хэлбэл, урвуу кинематик буюу товчилсон IR гэдэг нь хөлний хурц үзүүрийн байрлал, серво бүрийн өнцгийг тодорхойлох тригонометрийн тэгшитгэлийн "хэсэг" бөгөөд эцсийн дүндээ хос урьдчилсан тохиргоог тодорхойлдог. Жишээлбэл, роботын алхам бүрийн урт эсвэл хөдөлгөөн / амрах үед биеийг байрлуулах өндөр. Эдгээр урьдчилан тодорхойлсон параметрүүдийг ашиглан систем нь өгөгдсөн командуудыг ашиглан роботыг удирдахын тулд серво бүрийг хөдөлгөх ёстой хэмжээг олж авах болно.

Тэд энгийн робот бүтээх замаар Arduino-г сурч эхэлдэг. Өнөөдөр би Arduino Uno дээрх хамгийн энгийн роботын тухай ярих болно, тэр нь нохой шиг таны гар эсвэл хэт улаан туяаны гэрлийг тусгадаг бусад объектыг дагадаг. Мөн энэ робот хүүхдүүдийг зугаацуулах болно. Миний 3 настай ач хүү роботтой тоглоход бэлэн байсан :)

Би барихад шаардлагатай нарийн ширийн зүйлийг жагсааж эхлэх болно - Arduino UNO;

Хэт улаан туяаны зай хэмжигч;

- Хурдны хайрцаг, дугуйтай 3 вольтын мотор;

-3А батерейны холбогч;

-батерей (батарей хангалтгүй бол);

-Хөдөлгүүрийг удирдах реле;

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


Дараа нь модоор би моторуудыг хавчуулж, энэ баарыг шургуулна

Дараа нь би хайрцаг дээр arduino, реле, брэдборд, зай хэмжигч, явах эд ангиудын ёроолд эргэдэг төхөөрөмж байрлуулсан.

Одоо бид бүх зүйлийг схемийн дагуу холбоно

Эцэст нь дараах ноорогыг arduino-д ачаална уу.

Const int R = 13; // IR хүрээ хэмжигч холбогдсон зүү const int L = 12; int motorL = 9; // реле холбогдсон зүү int motorR = 11; int товчлуурState = 0; хүчингүй тохиргоо () (pinMode (R, INPUT); pinMode (L, INPUT); pinMode (motorR, OUTPUT); pinMode (motorL, OUTPUT);) хүчингүй давталт () ((buttonState = digitalRead (L); if (buttonState) == HIGH) (digitalWrite (motorR, HIGH);) өөр (digitalWrite (motorR, LOW);)) ((buttonState = digitalRead (R); if (buttonState == HIGH) (digitalWrite (motorL, HIGH);) other (digitalWrite (motorL, LOW);))))

Үйл ажиллагааны зарчим нь маш энгийн. Зүүн хүрээ хэмжигч нь баруун дугуйг, баруун нь зүүн дугуйг хариуцдаг

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

Энэхүү робот нь маш энгийн бөгөөд хэн ч үүнийг хийж чадна. Энэ нь реле, IR зай хэмжигч зэрэг модулиуд хэрхэн ажилладаг, тэдгээрийг хэрхэн хамгийн сайн ашиглах талаар ойлгоход тусална.

Танд энэ DIY таалагдсан гэж найдаж байна, DIY бол гайхалтай гэдгийг санаарай!

Сайхан өдөр! Эрхэм та бүхний өмнө 4-9 см хэмжээтэй бөмбөрцөг болон өндөг хэлбэртэй төрөл бүрийн зүйлийг зурж чаддаг урлагийн робот.

Үүнийг хийхийн тулд танд 3D принтер, стандарт хэрэгслүүд + Arduino хэрэгтэй.

Жич: 3D принтер ашигладаг төслүүдээс бүү татгалз. Хэрэв та хүсвэл төсөлд шаардлагатай дэлгэрэнгүй мэдээллийг хэвлэх захиалга өгөх газар эсвэл арга замыг үргэлж хайж олох боломжтой.

Алхам 1: Роботын талаар бага зэрэг

Урлагийн робот - хоёр тэнхлэг гар хийцийнихэнх бөмбөрцөг гадаргуу дээр будаж чаддаг. Робот тодорхой төрлийн объектод (ширээн теннисний бөмбөг, зул сарын гацуур чимэглэл, гэрлийн чийдэн, өндөг (нугас, галуу, тахиа ...) тохируулдаг.

Бөмбөрцөг биетийг эргүүлэх, манипуляторыг хөдөлгөхөд өндөр нарийвчлалтай, өндөр эргэлттэй гишгүүрийн мотор, бариулын механизмыг өргөхөд чимээгүй бөгөөд найдвартай SG90 серво хөтөчийг ашигладаг.

Алхам 2: Шаардлагатай дэлгэрэнгүй мэдээлэл

Хийхийн тулд өөрөө хийбидэнд хэрэгтэй:

  • 2х холхивч 623;
  • 3 мм-ийн диаметртэй, 80-90 мм урттай үсний хавчаар;
  • 1х хавар (10 мм урт, 4.5 мм диаметртэй);
  • 2х ОБЕГ-ын 17 шаталсан мотор (4.4кг / см эргэлт);
  • Мотор кабель (урт 14 + 70 см);
  • USB кабель;
  • 1х SG90 серво;
  • Ардуино Леонардо;
  • JJRobots бамбай;

  • 2xA4988 гишгүүртэй моторын драйверууд;
  • Цахилгаан хангамж 12V / 2A;
  • 11x M3 6мм эрэг;
  • 4х M3 16мм эрэг;
  • 4х М3 самар;
  • 2х 20 мм сорох аяга;
  • 1х далавчит самар M3;
  • 1x тэмдэглэгээ;

Алхам 3: Ерөнхий схем

Та энэ схемийг "хууран мэхлэх хуудас" болгон ашиглаж болно.

Алхам 4: Эхлүүлцгээе!

Робот нь маркер наасан манипуляторыг хөдөлгөдөг бөгөөд энэ нь гишгүүрийн хөдөлгүүрээр хөдөлдөг. Өөр нэг алхамын мотор нь зураг зурсан объектыг эргүүлэх үүрэгтэй (өндөг, бөмбөг ...). Объектыг барихын тулд хоёр сорох аяга ашигладаг: нэг нь гишгүүрийн моторт, нөгөө нь объектын эсрэг талд байрладаг. Жижиг пүрш нь сорох аяган дээр дарж, эд зүйлийг барихад тусална. SG90 серво нь тэмдэглэгээг өсгөх / бууруулахад ашиглагддаг.

Алхам 5: манипулятор

Самарыг бэлтгэсэн нүхэнд хийж, 16 мм-ийн боолтыг чангална. Зүйл эзэмшигчийн хувьд ижил зүйлийг хийцгээе (дээрх зурган дээрх баруун талд). Гарны нугасыг бүтээхдээ 2 х 16 мм-ийн эрэг ашигласан. Энэ нугас нь боолтыг чангалсны дараа чөлөөтэй эргэх ёстой.

Алхам 6: сорох аяга

Сорох аяганы нэгийг нь эд зүйл эзэмшигчийн нүхэнд хийнэ.

Алхам 7: Stepper моторуудыг суурилуул

Хоёр гишгүүрийн моторыг үндсэн хүрээ рүү 8 боолтоор бэхлээрэй.

Алхам 8: Эргэлтийн тэнхлэг

Дээрх зурагт үзүүлсэн шиг бүх элементүүдийг байрлуул.

  • Сорогч;
  • Шураг;
  • Дээд хэсэг;
  • хавар;
  • Холхивч 623 (зүүн аяганд суурилуулсан байх ёстой);
  • Зүүн аяга;
  • Үндсэн хүрээний чөлөөт зай;
  • Баруун аяга;
  • Холхивч 623;
  • Сансрын бөгж;
  • Далавчтай самар (M3).

Алхам 9: бүгдийг байранд нь тавь

Угсарсан манипуляторыг гишгүүрийн хөдөлгүүрийн тэнхлэгт оруулна.

Хөдөлгүүрийн тэнхлэгт зүүн талын тулгуурыг суулгана.

Маркер болон өндөгийг жишээ болгон үзүүлэв (та тэдгээрийг одоо байрлуулах шаардлагагүй).

ТАЙЛБАР: Серво нь тохируулга хийх шаардлагатай болно. Шалгалт тохируулгын явцад түүний өнцгийг дахин тохируулах шаардлагатай болно.

Алхам 10: электроник

Цахилгаан хэрэгслийг үндсэн хүрээний арын хэсэгт эрэг ашиглан засъя (2 хангалттай байх болно).

Кабелүүдийг холбоно.

Хэрэв та шаталсан моторыг холбохдоо туйлшралыг эргүүлбэл тэдгээр нь зүгээр л эсрэг чиглэлд эргэлддэг, гэхдээ servo-тэй бол нөхцөл байдал тийм ч хор хөнөөлгүй байх болно! Тиймээс холбохын өмнө туйлшралыг дахин шалгана уу!

Алхам 11: Arduino Leonardo програмчлах

Arduino Leonardo-г Arduino IDE (v 1.8.1) ашиглан програмчлаад үзье.

  • Arduino IDE (v 1.8.1) татаж аваад програмыг суулгана уу;
  • Програм хангамжаа эхлүүлцгээе. "tools-> board" цэснээс Arduino Leonardo самбар болон харгалзах COM-PORT-ийг сонгоно уу;
  • Sphere-O-Bot кодыг нээж татаж авцгаая. Нэг хавтас доторх бүх файлыг задлаад "Ejjduino_ARDUINO" гэж нэрлэнэ үү.

Алхам 12: Урлагийн робот урлагийн бүтээл хийхэд бэлэн байна

Алхам 13: роботыг удирдах

Програм хангамж Inkscape. Inkscape програм хангамжийг татаж аваад суулгана уу (0.91 тогтвортой хувилбарыг санал болгож байна).

EggBot Control өргөтгөлийг татаж аваад суулгана уу (хувилбар 2.4.0 нь бүрэн шалгагдсан).

Inkscape-д зориулсан EggBot Control Extension нь EggBot-оо турших, тохируулах, зургийг өндөг рүү шилжүүлэхэд ашиглах шаардлагатай хэрэгсэл юм. Эхлээд та Inkscape-г эхлүүлэх хэрэгтэй. Inkscape-г ажиллуулсны дараа "Өргөтгөлүүд" цэс гарч ирэх бөгөөд та "Eggbot" дэд цэсийг сонгох хэрэгтэй. Хэрэв та Eggbot дэд цэсийг харахгүй байгаа бол та өргөтгөлүүдийг буруу суулгасан гэсэн үг. Өргөтгөлүүдийг суулгахын тулд нөөцлөж, зааврыг анхааралтай дагана уу.

Энэ л байна, анхаарал тавьсанд баярлалаа!)

Arduino нь алсын удирдлага, энгийн мэдрэгч, логик бүхий өөр өөр машин хийхэд маш хялбар байдаг. Тиймээс энэ шугам нь гайхалтай алдартай. Түүнтэй нийцэх олон мэдрэгч, өргөтгөлийн картууд худалдаанд гарлаа. Интернет нь ямар ч тохиолдолд бэлэн програм хангамжийн сангууд болон нээлттэй эхийн төслүүдээр дүүрэн байдаг. Arduino-г эзэмших явцад гарах бараг бүх асуултыг хэн нэгэн аль хэдийн асуусан бөгөөд та хариултыг үргэлж олох болно.

Ямар нэг зүйлээс эхэлье? Гол асуулт бол хянагчийг сонгох явдал юм. Ардуиногийн олон хувилбарууд, мөн эдгээр засварууд дээр бүтээгдсэн гуравдагч талын клонууд байдаг. Энд магадгүй бидний хувьд хамгийн сонирхолтой хоёр хичээл байна:

  • Arduino Uno бол анхлан суралцагчдын хамгийн сайн сонголт, хамгийн энгийн, боломжийн, нийтлэг самбар юм. Энэ нь ATmega328 чип дээр суурилсан бөгөөд 16 МГц давтамжтай, 32 КБ флаш санах ой, 2 КБ RAM, 1 КБ EEPROM санах ойтой. Uno нь мэдрэгч, серво болон бусад төхөөрөмжийг удирдахад ашиглаж болох 14 тоон оролт / гаралттай;
  • Arduino Mega / Mega 2560 нь төсөл хэцүү байх болно гэдгийг урьдчилан мэдэж байвал тохиромжтой самбар юм. Гол ялгаа нь илүү олон тооны I / Os (Mega-д 48, Mega 2560-д 54). Үүнээс гадна илүү их санах ой байдаг: 8 КБ RAM, 4 КБ EEPROM, 128 ба 256 КБ флаш санах ой (Mega болон Mega 2560-д тус тус). Самбарууд нь чип, USB хурд болон бусад шинж чанараараа ялгаатай байдаг.

Мэдээжийн хэрэг, Arduino Pro, Arduino LilyPad болон бусад олон төхөөрөмжүүд байдаг. Гэхдээ одоохондоо эхний хоёр загварт анхаарлаа хандуулъя. Манай тохиолдолд бүх зүйл маш энгийн: Мега нь олон тооны хөлтэй роботод хэрэгтэй.

Эхний код

Эхлээд Arduino IDE (arduino.cc)-г суулгацгаая - энэ нь платформ хоорондын үнэгүй хөгжүүлэлтийн орчин юм. Одоо бид Arduino-оо холбовол хамгийн энгийн жишээ болох LED анивчих програмыг ашиглан эхний кодыг бичихийг оролдож болно. Ихэнх Arduino контроллерууд нэгтэй бөгөөд 13-р зүүтэй холбогдсон байдаг. Дашрамд хэлэхэд Arduino ертөнцөд программуудыг ихэвчлэн sketches гэж нэрлэдэг. Сэтгэгдэл бүхий ноорог текстийг энд оруулав.

// Энэ зүүг LED гэж нэрлэе: const int LED = 13; хүчингүй тохиргоо () (// гаралтын хувьд дижитал зүүг эхлүүлэх //: pinMode (LED, OUTPUT);) хүчингүй давталт () (// Логикийг нэг түвшинд // 13-р зүү рүү тэжээх (LED-ийг асаана): digitalWrite (LED) , HIGH) ; // Зургийн гүйцэтгэлийг түр зогсоох // секунд: саатал (1000); // Логик тэг түвшинг // 13-р зүү рүү илгээх (LED-ийг унтраа): digitalWrite (LED, LOW); / / Зургийн гүйцэтгэлийг дахин секундын турш түр зогсоо: саатал (1000);)

Тохиргоо болон давталтын функцүүдэд анхаарлаа хандуулаарай. Тэд ямар ч Arduino ноорог дээр байх ёстой. Асаах үед эсвэл хянагчийг дахин ачаалсны дараа тохиргоог нэг удаа дууддаг. Хэрэв та кодыг зөвхөн нэг удаа гүйцэтгэхийг хүсвэл энд байрлуулах хэрэгтэй. Ихэнхдээ эдгээр нь аливаа зүйлийг эхлүүлэх бүх төрлийн процедур юм. Манай ноорог нь үл хамаарах зүйл биш юм: Arduino дижитал зүү нь оролт, гаралтын үүрэг гүйцэтгэдэг. Тохируулгын функцэд бид 13-р зүү нь хянагч дээрх дижитал гаралтын үүрэг гүйцэтгэнэ гэж хэлж байна.

Тохируулах функц ажиллаж дууссаны дараа хаалттай гогцоо автоматаар эхлэх бөгөөд дотор нь давталтын функц дуудагдана. Бид тэнд юу хийхийг хүсч байгаагаа бичихийг шаарддаг. Бид логик нэгжийн түвшинг (5 В) 13-р зүү дээр хэрэглэхийг хүсч байна, өөрөөр хэлбэл LED-ийг асаагаад, дараа нь нэг секунд хүлээгээд (миллисекундээр 1000), дараа нь логик тэг (0 V) түвшинг ашиглаад дахин хүлээнэ үү. нэг секунд. Дараагийн давталт нь бүх зүйлийг давтах болно.

Одоо бид нооргоо хянагч руу "дүүргэж" байна. Үгүй ээ, бидэнд программист хэрэггүй. Arduino хянагч нь бидний ноорогоос гадна тусгай програмыг агуулдаг - ачаалагч, ялангуяа компьютерээс код татаж авах ажиллагааг хянадаг. Тиймээс ноорог байршуулахын тулд бидэнд зөвхөн USB кабель болон Arduino IDE доторх File → Upload (Ctrl + U) цэсийн зүйл хэрэгтэй.

Гол асуулт

Бидэнд хэдэн хөл хэрэгтэй вэ? Алхаж буй роботуудын төрөл бүрийн тохиргоог тодорхойлъё. Хөлийн тоогоор:

  • хоёр хөлт - хоёр хөлт (хүний ​​загвар);
  • дөрвөн хөлт - дөрвөн хөлтэй (прототип - ихэнх хөхтөн амьтад);
  • hexapod - зургаан хөлтэй (прототип - ихэнх шавж);
  • наймалж хөлт - найман хөлтэй (прототип - аалз, хилэнцэт хорхой, хавч болон бусад артропод).

Хөлний тооноос гадна тус бүрийн тохиргоо нь бас чухал юм. Хөлний гол шинж чанар нь эрх чөлөөний зэрэг буюу эрх чөлөөний хэмжээс (DOF) юм. Эрх чөлөөний зэрэг нь нэг тэнхлэгийг тойрон эргэх, нугалах чадвар юм (бага тохиолдолд, аажмаар урагшлах). Хэрэв эрх чөлөөний түвшин нэг байвал ийм хөл дээр та хол явахгүй нь ойлгомжтой. Хоёр зэрэглэлийн эрх чөлөө (2DOF) нь олон хөлт роботуудыг аль хэдийн хөдөлгөх боломжийг олгодог боловч 2DOF нь зөвхөн нэг хавтгайд хөлний үзүүрийг чөлөөтэй хөдөлгөх боломжтой болгодог. Мөн 3DOF хөл нь 3D орон зайд "хөл"-ийг хөдөлгөдөг (мэдээжийн хэрэг бүх гурван тэнхлэг зэрэгцээ биш бол). Мөн 4DOF хөл байдаг бөгөөд энэ нь зүгээр л хөлний уян хатан байдал, хөдөлгөөний хүрээг нэмэгдүүлдэг. Шавжнууд ихэвчлэн 4DOF сарвуутай байдаг.

Энэ нь бидний хувьд юу гэсэн үг вэ? Хямдхан сонирхогчийн роботуудад эрх чөлөөний зэрэг бүрийг нэг мотор, илүү нарийвчлалтай, серво хөтөч эсвэл серво гүйцэтгэдэг. Хөлний тохиргоо нь эдгээр сервогуудын хэд нь хэрэгтэйг онцгойлон тодорхойлдог. Жишээ нь, 3DOF hexapod-д 18 серво, 4DOF аалзанд 32 ширхэг шаардлагатай. Тооноос бүү ай, хоббичдын RC загварт ашигладаг жижиг серво маш хямд байдаг. Онлайн дэлгүүрүүдээс тэдгээрийг микро servo-ийн хүсэлтээр олж болно.

Серво програмчлахын тулд үндсэн ажлыг гүйцэтгэдэг хянагчтай гэдгийг мэдэхэд хангалттай. Шаардлагатай бүх зүйл бол цахилгаан тэжээл, дижитал дохиог өгөх бөгөөд энэ нь хянагчийг жолооны голыг аль байрлалд эргүүлэхийг хүсч байгааг хэлэх явдал юм. Тэдний дизайны талаархи мэдээллийг олоход хялбар байдаг. Тэдний протокол нь дижитал холбооны бүх протоколуудаас хамгийн энгийн нь юм: импульсийн өргөн модуляци - PWM (англи хэл дээрх PWM). Бүх энгийн серво нь гурван зүү холбогчтой: газар, +5 В (хүчдэл нь хэмжээ, хүчнээс хамаарч өөр өөр байж болно), дохионы оролттой. Arduino хянагч нь ийм дохиог хоёр өөр аргаар үүсгэж болно. Эхнийх нь техник хангамжийн PWM бөгөөд чип нь өөрөө хэд хэдэн дижитал оролт гаралтын тээглүүр дээр гарах чадвартай. Хоёр дахь нь програм хангамж юм. Програм хангамж нь техник хангамжаас илүү өөр PWM дохиог нэгэн зэрэг хүлээн авах боломжийг олгодог. Arduino - Servo номын сангийн доор тохиромжтой боодолтой. Энэ нь ихэнх жижиг оврын хянагч (Uno, Due, Nano) дээр 12 серво, Arduino Mega гэх мэт 48 сервог нэгэн зэрэг ашиглах боломжийг танд олгоно. Servo-ийн дохионы зүү нь Arduino-ийн дижитал зүүтэй холбогддог. Газар ба эрчим хүч - газар ба эрчим хүчний хувьд мэдээжийн хэрэг тэдгээр нь бүх үйлчилгээнд нийтлэг байж болно. Гурван утастай серво гогцоонд хар эсвэл хүрэн өнгө нь газар, дунд нь ихэвчлэн +5 В улаан, эцэст нь цагаан эсвэл шар нь дохио юм. Програм хангамжийн үүднээс авч үзвэл хяналт нь маш энгийн:

Servo myservo; // Arduino myservo.attach (9)-ийн 9-р зүү дээрх Servo; // 90º байрлал руу эргүүлэх myservo.write (90);

Ихэнх серво нь босоо амыг 180 ° эргүүлж чаддаг бөгөөд тэдний хувьд 90 ° нь дунд байрлал юм. Servo-г Arduino самбарт холбоход хялбар болгох хэд хэдэн шийдэл байдаг. Хамгийн алдартай нь Sensors Shield юм. Үүнийг Uno дээр суулгаж, сервог терминалуудад нийлүүлснээр та тэдгээрийн холбогчийг шууд залгаж болно.

Зай

Өөр нэг чухал асуудал бол хоол тэжээл юм. Хэрэв та бүхэл бүтэн системийг нэг цахилгаан шугамаар хангах боломжтой дэвшилтэт самбартай бол (мөн серво моторууд нь хянагчийн ажилд саад болохгүй), та нэг эх үүсвэрээр ажиллах боломжтой. Сонголт нь асар том, хамгийн сайн нь мэдээжийн хэрэг радио загварт зориулсан Li-Ion / Li-Po шахмал түлш юм. Гэхдээ тэдэнд тохирох цэнэглэгч хэрэгтэй. Хэрэв танд илүү энгийн хянагч (Uno / Due / Nano) байгаа бол та үүнийг тусад нь, жишээлбэл 9 вольтын "Титэм" -ээр тэжээж, сервог үндсэн хүчирхэг батерейнд холбож болно. Тиймээс серво нь хангалттай хүч чадалтай байх нь гарцаагүй. Лити батерейны хувьд хэт цэнэггүй байхын тулд та ердийнхөөс илүү хүчдэлийг хянах хэрэгтэй (тодорхой төрлийн батерейны зөвшөөрөгдөх хүчдэлийг тодруулах хэрэгтэй). Үүнийг хийхийн тулд жижиг дижитал вольтметрийг Sleipnir робот руу шургуулж, цаашид хэлэлцэх болно.

Өөрөө хийх робот

Иж бүрдэл

  • Arduino Uno хянагч: 1150 х.
  • Гурван серво мотор. Би HXT500, 200 х ашигласан. хэсэг
  • Шилжүүлэгчтэй "Титэм"-ийн зайны тасалгаа: 50 r.
  • "Крона" батерей: 145 рубль.
  • IR хүлээн авагч: 90 х.
  • Ойролцоогоор 1.5 мм диаметртэй ган утас. Жишээлбэл, би эвдэрсэн өндөгний хумсыг ашигласан.

Нийт: 2035 х.

Дмитрий Дзз: Arduino Uno хянагч дээр суурилсан жижиг алсын удирдлагатай зургаан хөлтэй робот хийхийг санал болгомоор байна. Сарвуу нь нэг зэрэг эрх чөлөөтэй байх бөгөөд хяналтыг ердийн ТВ алсын удирдлага ашиглан хийх болно.

Эдгээр нь Москвагийн үнэтэй дэлгүүрүүдийн үнэ гэдгийг би хэлэх ёстой. Хятадын онлайн дэлгүүрүүдэд энэ бүхэн хагас үнийн дүнтэй байх болно. Хүргэлтийг авч үзэх. Гэсэн хэдий ч миний туршлагаас харахад та хоёр долоо хоногоос гурван сар хүртэл хүлээх хэрэгтэй болно.

Хамгийн хялбар арга бол бүтээгчийн багцыг авах явдал юм, учир нь эхний алхамуудад нэг хянагч хангалтгүй байх болно. Одоо олон дэлгүүрүүд эдгээр багцуудыг санал болгож байна. Жишээлбэл, "Амперка" хэмээх гайхалтай онлайн дэлгүүр байдаг. Энд танд бүрэн дүүрэн байдал, мэдээжийн хэрэг үнийн хувьд ялгаатай хэд хэдэн ижил төстэй барилгачдыг санал болгох болно. Хамгийн энгийн зүйл болох "Матрёшка Х" надад хангалттай байсан. Үүнд Arduino Uno хянагч, компьютерт холбогдох USB кабель, прототипийн самбар (орлуушгүй зүйл!), холбогч, LED, резистор болон бусад жижиг хэрэгслүүд багтсан болно.

Нэг дэлгүүрт "Wiki" хэсэг байдаг бөгөөд тэндээс та орос хэл рүү орчуулсан гайхалтай богино хэмжээний видео хичээлүүдийг олох боломжтой. Тэднийг шалгахаа мартуузай. Мэдээжийн хэрэг, тэд танд туслахыг хичээх форум байдаг.

Хэрэгсэлээс юу шаардлагатай вэ:

  • гагнуурын төмөр болон гагнуурт хэрэгтэй бүх зүйл. Та маш их гагнах шаардлагагүй, тусгай ур чадвар шаардагддаггүй;
  • халуун цавуу буу, түүнд саваа;
  • утастай ажиллах бахө.

Хэрэв та бүгдийг цуглуулсан бол эхэлцгээе!

Хяналт

Эхний алхам руу шилжье: бид алсын удирдлагатай хэрхэн харьцаж сурах, түүний зарим товчлуурыг дарах кодыг олж мэдэх хэрэгтэй. Дараа нь эдгээр кодууд нь роботын удирдлагын тойм зурагт хэрэг болно.

Энэ үе шатанд танд өөр IR хүлээн авагч хэрэгтэй бөгөөд загварчлалын самбартай бол сайхан байх болно. IR алсын удирдлагануудын дийлэнх нь 36 кГц, 38 кГц эсвэл 40 кГц (Panasonic, Sony) операторын давтамж дээр ажилладаг. Үл хамаарах зүйл бол Sharp (56 кГц), Bang & Olufsen (455 кГц) удирдлага, магадгүй илүү чамин хүн байж магадгүй юм. Тиймээс 36, 38 эсвэл 40 кГц давтамжтай ямар ч IR хүлээн авагч тохиромжтой. Давтамж нь дохионы дамжуулагчийн давтамжтай яг таарахгүй байж болно. Энэ тохиолдолд хүлээн авагчийн мэдрэмж буурах боловч практик дээр би TSOP2136 IR хүлээн авагч (36 кГц - сүүлийн хоёр орон нь давтамж) болон Sony-ийн алсын удирдлага (40 кГц) ашиглахад ямар ч таагүй мэдрэмжийг анзаараагүй.

Тиймээс ихэнх алсын удирдлагад TSOP21xx, TSOP22xx, TSOP312xx IR хүлээн авагч тохиромжтой. Сүүлийн хоёр цифр нь 36, 37, 38 эсвэл 40 байж болно. IR хүлээн авагчийг асаахаас өмнө түүний контактуудын утсыг зааж өгнө үү - тэдгээрийн зөвхөн гурав нь байна: + 5V (цахилгаан), GND (газар), Vs (гаралт) . Зураг дээрх шиг хэлхээг угсарцгаая (TSOP2136-ийн утас).


Таны харж байгаагаар бид IR хүлээн авагчийн гаралтыг A0 хянагчийн аналог оролттой холбосон.

Ноорог код нь иймэрхүү харагдаж байна:

#include "IRremote.h" // Удирдлагын аналог оролт, // IR хүлээн авагч холбогдсон байна: const int IR_PIN = A0; // IR хүлээн авагч объект үүсгэх: IRrecv irrecv (IR_PIN); хүчингүй тохиргоо () (Serial.begin (9600); Serial.println ("бэлэн"); // IR дохиог сонсож эхлэх // irrecv.enableIRIn ();) хүчингүй давталт () (// Үр дүнгийн бүтцийг тайлбарлах, / / үүнд // хүлээн авч, кодыг нь тайлсан // IR командуудыг байрлуулна: decode_results үр дүн; // Хэрэв IR командыг хүлээн авч // амжилттай тайлсан бол бид // хүлээн авсан кодыг хянагчийн // цуваа порт руу гаргана. : хэрэв (irrecv.decode (& үр дүн)) (Serial.println (үр дүн.утга); irrecv.resume ();))

Уг ноорог нь IRremote.h тусгай номын санг ашигладаг бөгөөд энэ нь төрөл бүрийн IR алсын удирдлагаас ирсэн дохиог тайлдаг. Энэхүү номын сан нь нээлттэй эхийн төсөл тул та үүнийг https://github.com/shirriff/Arduino-IRremote хаягаас татаж авах боломжтой. Үүнийг манай төсөлтэй холбохын тулд та гурван алхамыг хийх хэрэгтэй.

  • номын сангийн лавлахыг номын сангийн лавлах руу хуулж, энэ нь эргээд Arduino IDE суулгацын лавлахад байрладаг;
  • IDE-г дахин эхлүүлэх;
  • Манай ноорог зургийн эхэнд #include "IRremote.h" гэсэн мөрийг нэмнэ үү.

Хэт улаан туяаны код тайлах функцууд одоо ноорог дээр бэлэн болно. Гэхдээ үүссэн кодуудыг харахын тулд бид Цуваа объектыг бас ашиглах болно. Үүний тусламжтайгаар бид кодыг цуваа портоор (ижил USB кабель) дамжуулан компьютерт шилжүүлэх болно. Тохируулах функцэд бид Serial объектыг эхлүүлдэг. "9600" нь 9600 бауд бөгөөд өгөгдөл дамжуулахад ашиглах хурд юм. Эхлүүлсний дараа бид println функцийг ашиглан цуваа порт руу бичиж болно. Энэ гаралтын үр дүнг Arduino IDE дээрх компьютер дээр харахын тулд Tools → Serial Monitor цэсийн зүйлийг (Ctrl + Shift + M) сонгоно уу. Зүгээр л 9600 baud гэж тохируулсан эсэхийг шалгаарай.

Тиймээс хянагч нь USB кабелиар дамжуулан тэжээл хүлээн авч, түүгээр дамжуулан өгөгдлийг дамжуулдаг. Ноорог ачаалж, цуврал мониторыг ажиллуулаад алсын удирдлага дээрх товчлууруудыг дарж эхлээрэй. Цуваа дэлгэцийн цонхонд код гарч ирэх ёстой. Алсын удирдлагын протоколууд нь өөр өөр байдаг, заримдаа энэ нь нэг код, заримдаа хэд хэдэн байж болно. Ямар ч тохиолдолд та алсын удирдлага дээрх товчлуур бүрийн өвөрмөц кодуудыг үргэлж тодруулж болно.

Бидэнд удирдлагад 13 товчлуур хэрэгтэй. Би дараах зүйлсийг ашигласан:

  • 1 - зүүн тийш жигд эргэх;
  • 2 - урагшлах хөдөлгөөн;
  • 3 - баруун тийш жигд эргэх;
  • 4 - газар дээр нь зүүн тийш эргэх;
  • 5 - зогсоох;
  • 6 - газар дээр нь баруун тийш эргэх;
  • 7 - баруун тийш эргэх хөдөлгөөнөөр арагшаа;
  • 8 - ухрах хөдөлгөөн;
  • 9 - зүүн тийш эргэх замаар арагшаа хөдөлгөөн хийх;
  • цэнхэр товчлуур - маш удаан;
  • шар - аажмаар;
  • ногоон - хурдан;
  • улаан - маш хурдан.

Эдгээр товчлууруудын кодыг бичээд дараа нь роботын удирдлагын тойм зурагт хэрэг болно.

Хөдөлгөөний алгоритм

Роботын удирдлагын тойм зургийг манай төслийн хуудаснаас авах боломжтой (bit.ly/1dEwNDC). Алсын удирдлагын товчлуурын кодын тогтмолуудын утгыг алсын удирдлагынхаа код руу өөрчлөхөө бүү мартаарай (ir_command_codes.h файл дахь IR_COMMAND_XXX_CODES тогтмолууд).

Бид ноорогыг нарийвчлан шинжлэхгүй, кодонд хангалттай тайлбар байгаа гэж бодож байна, гэхдээ нэг асуултыг анхаарч үзэх хэрэгтэй.

Шавжны хөдөлгөөн маш сонирхолтой байдаг. Хэдийгээр эдгээр бүх цог хорхойнууд газарт унахад маш ойрхон байдаг ч ямар нэг шалтгаанаар тэд үргэлж тогтвортой байдаг: ямар ч үед дор хаяж гурван хөл (нэг талдаа хоёр, нөгөө талд нь) гадаргуу дээр зогсдог. Эдгээр хөл нь цохыг нэг бай руу татах үед нөгөө гурав нь энэ хөдөлгөөнийг давтахын тулд дээш татдаг. Бидний даалгавар бол үүнтэй төстэй зүйл хийх явдал юм.

Манай робот цох нь хөдөлгөөнд перпендикуляр байрлалтай гурван серво мотортой. Зүүн ба баруун сервомоторын хувьд босоо амны тэнхлэг нь дээшээ чиглэсэн байдаг бол төвийнх нь урагш чиглүүлдэг. Жишээлбэл, зүүн сервогийн даалгавар бол хоёр хөлийг нэг дор эргүүлэх явдал юм: зүүн урд, зүүн хойд. Дашрамд хэлэхэд, тэдгээр нь хоорондоо хатуу холбогдож, энэ servo-ийн эргэдэг сандал дээр наасан байна. Төв сервогийн үүрэг бол цохны зүүн талыг, дараа нь баруун тийшээ өргөх явдал юм. Тиймээс зүүн, баруун төвийн хөлийг энэ хөдөлгүүрийн ганхдаг сандал дээр бэхэлсэн бөгөөд энэ нь U хэлбэрийн нэг хэсэг юм.

Ноорог нь роботын хөдөлгөөнийг урагш, арагшаа, хөдөлгөөнд жигд эргүүлж, байрандаа эргүүлэх ёстой. Мөн би цохны хурдыг хянахыг хүсч байна. Эдгээр хөдөлгөөнийг программчлан тайлбарлахын тулд бидэнд математик хэрэгтэй. Диаграмыг хар.


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

Тэгэхээр үүнийг хэрхэн хэрэгжүүлж байна вэ? Хянагч нь давталтын функцийг байнга дууддаг гэдгийг бид санаж байна. Тиймээс, энэ функцэд бид сервомоторуудын одоогийн байрлалыг тодорхойлж, энэ байрлалд тохируулах кодыг оруулах ёстой. Серво мотор бүр хэлбэлзэх ёстой. Дараах томъёог ашиглан бид t цаг хугацааны сервомоторын байрлалыг тооцоолж болно.

X = A нүгэл (2πt / T),

Энд X нь сервомоторын хүссэн байрлал, А нь хэлбэлзлийн далайц, T нь хэлбэлзлийн үе юм.

Тиймээс, t хугацааны моментоос хамааран бид X-ийн утгын өөрчлөлтийг –A-аас + A хүртэлх мужид авна. Сервомоторыг 0-ээс 180 ° хооронд байрлуулж болно. Тиймээс бид 90 ° -ын "тэг" байрлалд хэлбэлзэх нь илүү дээр юм. Хэрэв бид 30 ° далайцтай 90 ° байрлалд 1 секундын хугацаатай хэлбэлзлийг өгөхийг хүсвэл томъёог дараах хэлбэрт шилжүүлнэ.

X = 90 + 30 нүгэл (2πt / 1000),

Энд t нь хэлбэлзэл эхэлснээс хойшхи миллисекундээр хэмжигдэх хугацаа юм. Робот цохын хөдөлгөөний хурдыг хянахын тулд бид хэлбэлзлийн үеийг өөрчилж болно. Энэ нь том байх тусам хурд бага байх болно.

Дээр бичсэн томьёо хараахан дуусаагүй байгаа тул одоо дахин схем рүүгээ орцгооё. Зүүн ба баруун серво моторын синхрон, дараа нь эсрэг талын хөдөлгөөнийг хэрхэн хангах вэ? Төвийн серво моторын фазыг хэрхэн өөрчлөх вэ? Бид томьёодоо хэлбэлзлийн үе шатыг нэмэх хэрэгтэй. Жишээлбэл, баруун моторын хувьд синус аргументыг π-ээр солих нь түүнийг зүүн тийш эргүүлэхийн тулд эсрэг фазын горимд ажиллах болно. Одоо бидний томъёо иймэрхүү харагдах болно:

X = 90 + 30 нүгэл (2πt / 1000 + Φ),

Энд Φ нь хэлбэлзлийн үе шат, утга нь 0-ээс 2π хүртэл байна.

Хөдөлгөөний төрөл бүрийн сервомоторын хэлбэлзлийн үе шатууд ямар байх ёстойг хүснэгтээс харна уу.

Ассемблей

Одоо роботыг загварчлалын самбар дээр байрлуулж, хяналтын тоймыг бөглөцгөөе.

Энэ бол угсралтын өмнөх маш чухал алхам юм. USB кабелийг салгаж, Krona батерейгаас талхны самбарыг тэжээж үзээрэй. Хөдөлгөөний бүх үе шатыг шалгаж, бүх зүйл ажиллаж байгаа эсэхийг шалгаарай. Роботыг угсарсны дараа ямар нэг зүйлийг өөрчлөх (жишээлбэл, сул зогсолттой сервомоторыг солих) илүү хэцүү болно.


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

Цохын нарийн ширийнийг засах хамгийн хялбар арга бол халуун хайлмал цавуу юм. Серво мотороос эхэлье. Шаардлагагүй бэхэлгээний чихийг салгаж, машинуудыг хооронд нь холбоно. Дараа нь гурван серво бүхий энэхүү угсралтыг зайны таг руу наа. Зайг солихын тулд зайны тасалгаа чөлөөтэй нээгдэх ёстой гэдгийг санаарай.

Хамгийн хялбар арга бол хянагчийг тасалгаанд наах, гэхдээ би энэ сонголтод үнэхээр дургүй, учир нь би Arduino Uno-г цох хорхойд үүрд өгөх хэрэгтэй болно. Тиймээс та өөрийнхөө амьдралыг хүндрүүлж, батерейны тасалгааг бэхлэхийн тулд Arduino холбогчийг ашиглаж болно. Тасалгааны ёроолд зүү холбогчийг тээглүүр хооронд 2.54 мм-ийн налуугаар наа. Энэ нь дижитал тээглүүр 8-11-ийн эргэн тойронд хянагчийн залгуурт багтахаар байрлуулсан байх ёстой. Тэд одоогоор бидэнд хэрэггүй болно. Хэрэв холбогч гарт байхгүй бол U хэлбэрийн нугалсан цаасны хавчаар хийх болно.

Зайны тасалгааны утаснууд нь Vin болон зэргэлдээх GND-тэй холбогдсон байх ёстой. Туйлшралыг бүү холь! Дээрээс нь Вин дээр "Crowns", GND дээр хасах. Ардуино холбогчтой утсыг найдвартай холбохын тулд та зүгээр л утасны үзүүрийг зузаантай усаар усалж болно, гэхдээ би богино цаасны хавчаарыг залгуур болгон ашигласан. Тэгээд би гагнуурын газрыг дулаан агшилтын хоолойгоор хаасан.


Серво гогцоонуудын холбогчийг таслаж, цахилгааны утсыг (+5 В - ихэвчлэн улаан ба GND - хар эсвэл хүрэн) холбож, хянагч дээрх 5V залгуур болон зэргэлдээх GND руу авчрах ёстой. Бид хэсэг хугацааны дараа холбогдох болно. Хяналтын дохионы утаснууд (ихэвчлэн шар өнгөтэй) нь хянагчийн дижитал гаралт руу гарна: зүүн сервомоторыг 2-р зүү, төвийнх нь 4-р зүү, баруун талынх нь 7-р зүү.

IR хүлээн авагчийн "+" ба "-" тэмдгийг зүгээр л Arduino холбогч (5V ба зэргэлдээ GND) руу залгаж болно. Үнэн, хагасыг нь нугалж, зузаан нь хоёр дахин нэмэгддэг. Бид өмнө нь холбогдсон серво моторын цахилгаан утсыг IR хүлээн авагчийн ижил цахилгаан хөлд гагнах болно. IR хүлээн авагчийн дохионы гаралт нь A0 хянагчийн аналог оролтод хүрэх магадлал багатай тул та үүнийг утсаар бүтээх хэрэгтэй болно.

Хөл хийх хэдэн зөвлөмж. Нэгдүгээрт, зүүн, баруун урд хойд хөлийг бэлтгэ. Тэдгээр нь тэгш хэмтэй эсэхийг шалгаарай (гулзайлтын урт ба өнцгийн аль алинд нь анхаарлаа хандуулаарай). Сервомоторыг "тэг" байрлалд (90 °) тохируулсны дараа л хөлийг нааж эхэлнэ.

Хамгийн сүүлд дунд хос хөлийг суулгана. Эхлээд дунд хөлийг урт болгож, дараа нь суулгасны дараа тэдгээрийг хүссэн урттай болгохыг зөвлөж байна. "Тэг" байрлалд бүх зургаан хөл нь гадаргуу дээр байх ёстой. 15 ° -ийн далайцтай дунд хөлний савлуур нь урд талын арын эргэлтэнд саад болохгүй.

Дараа нь юу юм?

Robobug бол хамгийн алдартай, боломжийн хянагчуудын нэг дээр суурилсан бэлэн гар утасны платформ юм. Нээлттэй төсөл: https://github.com/beetle-ringo/arduino. GitHub дээр сэрээ (салаа) хийж, өөрийн функцийг нэмнэ үү. Төсөөллөө нээгээрэй - IR LED нэмснээр робот роботын тулаанд бэлэн болно. Алсын зай хэмжигч, мэдрэгч мэдрэгч, гироскопыг холбоно ... Роботыг саад тотгороос зайлсхийх эсвэл шугамын дагуу алхахыг зааж, үүн дээр вэбкамер суулгаж үзээрэй. Сая сая санаа байж болох бөгөөд та үргэлж хамгийн сонирхолтойг нь сонгож болно.

Робот Слейпнир

Иж бүрдэл

  • Arduino Uno Dagu Spider Robot хянагч: 2530 х.
  • Servos SG90 9г (16 ширхэг) 1150 урэх.
  • LiPo зайны багц, 7.4 В, 1800 мАч 490 r.
  • Радио модуль 4 Pin Bluetooth RF Transceiver 270 р.
  • Хүчдэл заагч (заавал биш) DC 3.3–30 В Улаан LED самбар тоолуур 100 р.
  • Хөнгөн цагаан булан. Хамгийн ойрын барилгын зах зээлд 135 рубль байна.
  • Боолт ба самар. Хамгийн ойрын бүүргийн зах дээр 35 х.

Нийт: 4710 х.

*Бүрэлдэхүүн хэсгүүдийг өөр өөр хугацаанд худалдаж авсан бөгөөд олон байрлалыг оновчтой болгох боломжтой

поконоко:Стандарт бус тохиргоо - найман хөлтэй 2DOF роботыг угсарч үзье. 2DOF хөлийг програмчлахад илүү хялбар байдаг бөгөөд надад ашиглагдаагүй олон тооны сервонууд байгаа. Хамгийн гол нь Один Слейпнир (үргэлж мөрөөддөг байсан!) бурхны найман хөлт морийг хүндэтгэн нэрлэх боломжтой болно.

Манай Слейпнир хоёр талдаа хоёр нугастай дөрвөн хөлтэй байх болно. Пивот бүр нь серво бөгөөд энэ нь нэг талдаа найман серво байна гэсэн үг юм. Энгийн болгох үүднээс морины нэг талын бүх найман үе нэг хавтгайд эргэлддэг. Хэдийгээр энэ нь огт шаардлагагүй юм. Түүгээр ч зогсохгүй нэг талдаа хөлийг нь бага зэрэг “даам” тавиад зэргэлдээх хоёр хөл нь бие биедээ хүрэхгүй байвал бүр ч сайхан болж, илүү өргөн алхаж, давхих боломжтой болно.


Цэвэр, ажиллагаатай, гэхдээ хамгийн хямд шийдэл биш бол олон тооны сервог холбоход оновчтой тохируулсан удирдлагын самбар ашиглах явдал юм. Би Dagu Spider Robot Controller-ийг олсон - энэ бол ижил Arduino Mega, гэхдээ урьдчилан утастай 3 зүү холбогчтой самбар дээр байгаа бөгөөд та ижил 48 сервог ямар ч бамбайгүйгээр шууд холбож болно. Олон хөлтэй Arduino роботуудад тохиромжтой.

Хяналт

Бид Bluetooth-ээр удирдагдах болно. Үүний тулд янз бүрийн техник хангамжийн шийдлүүд байдаг. Эдгээр нь UART цуваа интерфэйс бүхий бамбай ба тусдаа самбар юм (ердийн com порт шиг, зөвхөн 5 В дохионы түвшинтэй). Надад хамгийн практик зүйл бол UART интерфейстэй жижиг самбар юм шиг санагдаж байна. Arduino портын харгалзах UART / Цуваа зүү рүү холбогдоно. Хоёр нюансыг тэмдэглэе: Uno / Due / Nano гэх мэт портууд дээр зөвхөн нэг ийм порт байдаг бөгөөд үүнийг USB-ээр анивчуулахад ашигладаг. Тиймээс анивчих үед Bluetooth модулийг салгах шаардлагатай байж магадгүй юм. Хоёрдахь нюанс - модулийн RX зүү нь Arduino-ийн TX зүү, TX нь RX зүүтэй холбогдсон гэдгийг бүү мартаарай. Ийм зүйл УАРТ-д байдаг.

Bluetooth програмчлал нь сервогоос илүү төвөгтэй биш бөгөөд өгөгдлийг байтаар унших боломжтой бөгөөд бид үүнийг ашиглах болно:

Char cmd; Serial.begin (9600); if (Serial.available ()) cmd = Serial.read ();

Хэрэв Arduino Mega ашиглаж, Bluetooth хоёр дахь порт руу холбогдсон бол Serial-ийн оронд Serial1 гэж бичнэ. Та Bluetooth ашиглах боломжгүй, харин роботыг USB-ээр шууд удирдаж байгаа нь анхаарал татаж байна. Дээрх кодонд юу ч өөрчлөгдөхгүй! Энэ нь зүгээр л цуваа порттой ажилладаг бөгөөд тэнд BT дамжуулагч эсвэл USB цуваа хөрвүүлэгч өлгөөтэй байх нь хамаагүй.

Bluetooth-ийн нөгөө тал

Холбох хамгийн тохиромжтой арга бол Линуксийн стандарт хэрэгслүүд юм. Ажиллахын тулд бидэнд sdptool, rfcomm хэрэгслүүд (Ubuntu агуулах дахь bluez багцад багтсан), мөн minicom (багцыг ингэж нэрлэдэг) хэрэгтэй. Эдгээр хэрэгслийг ашиглах зааврыг вэб дээрээс олж болно.

Хөдөлгөөний алгоритм


Hexapod-ийн хувьд хамгийн энгийн алхалт нь ийм байх болно: хөл нь гурван хөлтэй хоёр бүлэгт хуваагддаг бөгөөд бүлгүүдийн нэг нь бүрэн газарт, нөгөө нь агаарт, урагшаа байрлалтай байна. Энэ нь цорын ганц боломжтой алхалтаас хол байна. Та зөвхөн хоёр сарвууг агаарт, тэр ч байтугай нэгийг нь, нөгөө дөрөв, тавыг нь газарт байлгаж чадна. Мөн наймалж хөлийн алхаа олон байдаг. Бид хамгийн энгийнийг, мөн дөрвөн хөлтэй хоёр бүлгийг авна.

Тэгэхээр бид 16 серво, сонгосон алхаатай ажиллахын тулд юу хийх хэрэгтэй вэ? Зөв хариулт бол урвуу кинематик (IK) тухай унших явдал юм. Өгүүллийн эзэлхүүн нь сэдвийг өргөн хүрээнд өргөжүүлэх боломжийг олгодоггүй ч Интернетэд маш олон материал байдаг. Товчхондоо, IR нь системд сансар огторгуйд хүссэн байрлалыг авахад шаардлагатай хяналтын дохиог олох асуудлыг шийддэг. Хөлний хувьд энэ нь хөл явах цэгийн координатын дагуу та үүнд тохируулах шаардлагатай сервоны өнцгийг тодорхойлох хэрэгтэй гэсэн үг юм. Мөн хөлийн координатыг хянах замаар биеийн байрлалыг хянах боломжтой. Бид 2DOF хөлтэй, тэнхлэгүүд нь зэрэгцээ байдаг тул хөл нь үргэлж нэг хавтгайд хөдөлдөг. Энэ тохиолдолд IR даалгаврыг 2D орон зай болгон багасгасан бөгөөд энэ нь үүнийг ихээхэн хялбаршуулдаг.

Хөл бүрийн хувьд координатын орон нутгийн гарал үүслийг O нь дээд серво, өөрөөр хэлбэл гуяны босоо ам гэж үзье. Мөн бид хөл явах ёстой А цэгийн координатуудтай. Дараа нь та хоёр тойргийн огтлолцлын цэгийг олох асуудлыг шийдэх хэрэгтэй гэдгийг ойлгоход хялбар болно (нэг талын хөлний диаграмыг үзнэ үү, хамгийн баруун хөл дээр дүрсэлсэн болно). Тойргуудын уулзвар B цэгийг олсны дараа (тэдгээрийн аль нэгийг нь сонгосноор) декарт координатаас туйл руу хөрвүүлснээр шаардлагатай өнцгийг тооцоолоход хялбар болно. Кодод энэ асуудлыг шийдэх арга нь дараах байдалтай байна.

Хөвөгч A = -2 * x; хөвөх B = -2 * y; float C = sqr (x) + sqr (y) + sqr (hipLength) - sqr (shinLength); хөвөх X0 = -A * C / (sqr (A) + sqr (B)); хөвөх Y0 = -B * C / (sqr (A) + sqr (B)); float D = sqrt (sqr (hipLength) - (sqr (C) / (sqr (A) + sqr (B)))); float mult = sqrt (sqr (D) / (sqr (A) + sqr (B))); float ax, ay, bx, by; ax = X0 + B * олон; bx = X0 - B * олон; ay = Y0 - A * олон; by = Y0 + A * олон; // эсвэл өөр огтлолцлын цэгийн хувьд bx float jointLocalX = ax; // эсвэл өөр огтлолцлын цэгийн хувьд float jointLocalY = ay; float hipPrimaryAngle = polarAngle (jointLocalX, jointLocalY); float hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = polarAngle (x - jointLocalX, y - jointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;

энд x ба y нь хөлөөрөө хүрэх цэгийн координатууд; hipStartAngle - "хип" -ийг анх эргүүлэх өнцөг (servo-ийн дунд байрлалд), мөн адил - shinStartAngle. Дашрамд хэлэхэд, эдгээр тооцоололд өнцөг нь радианаар тодорхой харагддаг боловч тэдгээрийг Servo объектуудад градусаар дамжуулах шаардлагатай. Энэхүү хэсэгчилсэн хэсгийг багтаасан иж бүрэн програм хангамжийн кодыг GitHub дээр нийтэлсэн бөгөөд нийтлэлийн төгсгөлд байгаа холбоосыг үзнэ үү. Энэ бол IC-ийн хэсэг боловч үүнээс гадна энэ IC-ийг бүх хөл дээрээ ашиглахын тулд танд арай илүү энгийн код хэрэгтэй болно (legsReachTo (), legWrite () функцуудыг харна уу). Танд алхалтыг бодитоор хэрэгжүүлдэг код хэрэгтэй болно - нэг хөлний хөдөлгөөнийг "ухрах" (робот урагшлахын тулд), нөгөө бүлэг хөлийг өргөж, дараагийн алхам руу урагшлуулах, урагшлах хэсгийг үзнэ үү. () функц. Тэр өгөгдсөн параметрүүдээр нэг алхам хийдэг. Дашрамд хэлэхэд, эдгээр параметрүүдийн тусламжтайгаар та функцийн нэрийг үл харгалзан нэг алхам ухарч болно. Хэрэв энэ функцийг давталтаар дуудвал робот урагшлах болно.

Одоо тушаалуудыг авч, тэдгээрийг тайлбарлаж байна. Хөтөлбөрт төлөв нэмье:

Enum төлөв (ЗОГСОХ, УРАШ, БУЦААР, УРАГШ_БАРУУН, Урагшаа_Зүүн);

Гүйцэтгэлийн гол давталтын гогцоонд () бид одоогийн төлөвийг (төлөвийн хувьсагч) харж, урагшлах (эргэлттэй эсвэл эргэхгүйгээр) алхам урагш () татах ба дахин урагшлах (), гэхдээ сөрөг xamp аргументтай бол Бид буцах хэрэгтэй ... Эргэлтийг legWrite () дээр хийх бөгөөд баруун тийш эргэхэд баруун талын хөл нь байрандаа үлдэнэ (зүүн хөл нь сэлүүрт байх үед). Энд ийм морин танк байна. Харгис хэрцгий, гэхдээ маш энгийн бөгөөд ажилладаг. Гөлгөр эргэлтийг зөвхөн 3DOF хөлөөр хийж болно, үүний жишээг buggybug репозитороос харж болно.

Шилжүүлэгч (төлөв) (ҮРГЭЛЖЛҮҮЛЭГЧ: УРАГШ_БАРУУН том том үсэг: УРАГШ_ЗҮҮН үсэг: алхам Урагш (h, dh, xamp, xshift); завсарлага; БУЦАГА: алхам урагш (h, dh, - xamp, xshift); завсар;)

Char команд; while (Serial1.available ()) команд = Serial1.read (); шилжүүлэгч (тушаал) ("w" тохиолдол: төлөв = УРАГШ; завсарлага; "s" тохиолдол: төлөв = БУЦААР; завсарлага; "d" тохиолдол: төлөв = УРАГШ_БАРУУН; завсарлага; "a" тохиолдол: төлөв = FORWARD_LEFT; завсарлага; анхдагч : төлөв = STOP;)

Үүн дээр програм хангамжийн гол цэгүүд дуусч, бусад нь жижиг зүйлүүд юм. Хэдийгээр өөр нэг чухал зүйл байдаг - сервог нарийн тохируулах чадвар. Хамгийн нарийвчлалтай угсарсан ч гэсэн бүх сервог 90 ° эргүүлэхийг тушаасан бол тэдгээрийн зарим нь бага зэрэг хазайсан хэвээр байх болно. Тиймээс үүнийг тохируулах чадвар хэрэгтэй. Би үүнийг хэрхэн хийснийг та hipsWrite () ба shinsWrite () аргууд болон hipsTune болон shinsTune нарийн тохиргооны массивуудаас харж болно.

Ассемблей

Ийм бүтцийн хувьд онцгой зүйл хийх шаардлагагүй: тохирох зузаантай plexiglass хуудас (хамгийн ойрын өрхийн бүүргийн захаас), эвлүүлэг эсвэл хөрөө ашиглан эд ангиудыг таслах болно. Мөн мэдээжийн хэрэг, цооног өрөмдөх өрөмдлөг. Plexiglass-ийн оронд та фанер ашиглаж болно (дараа нь та шарагчтай эцсийн бүтэц дээр дурсгалын бичээс хийж болно). Хөнгөн цагаан хуудас эсвэл булангуудыг бас ашиглаж болно. Sleipnir-тэй хамт би 1 см-ийн хавиргатай хөнгөн цагаан буланг ашиглах замыг дагасан (би үүнийг барилгын супермаркетаас хаа нэгтээ худалдаж авсан).


Суурь нь тэгш өнцөгт хүрээ байх болно. Мөчир - 4 см судалтай. Мөн маш олон жижиг боолт, самар нөөцлөх нь зүйтэй. Бид буланг хүссэн хэсэг болгон хайчилж, сервоны ховилыг хайчилж, бэхэлгээний боолт, эрэг шургийн нүхийг өрөмдөнө. Загварыг дүрслэхээс илүүтэйгээр харуулах нь дээр. Хэмжээ нь ямар ч байж болно, роботууд янз бүр байх ёстой. Гэхдээ санаарай: хөл нь урт байх тусам серво илүү их хөшүүрэг түлхэж, илүү их ачаалал өгөх болно. Эргэх, бүр хугарах боломжгүй хүртэл. Гэхдээ 4-5 см - асуудалгүй.

Төсвийн хөнгөн роботуудын хувьд тэдгээр нь ихэвчлэн мөчрүүдийн салангид үе мөчний ажилд төвөг учруулдаггүй бөгөөд бүх ачаалал бүхэлдээ servo босоо тэнхлэгт унадаг. Бага жинтэй бол энэ нь тийм ч чухал биш юм. Илүү их жинтэй бол та металл араа, бөмбөлөг холхивчтой тэнхлэг бүхий сервоны талаар бодох хэрэгтэй.

Дүрмээр бол, серво бүр нь янз бүрийн хэрэглээнд зориулж босоо ам руу шургуулж болох хэд хэдэн эрэг, хавсралттай ирдэг. Ганц "эвэр" (эсвэл эвэр) нь бидний хувьд хамгийн сайн ажиллах бөгөөд энэ нь таныг серво руу баар холбох боломжийг олгодог. Тиймээс хоёр сервоны тэнхлэгүүд нь нэг бааранд бэхлэгдэж, баар нь "гуя" болдог. Энэ тохиолдолд нэг серво нь биед бэхлэгдсэн, нөгөө нь доод хөлний хэсэг болдог. Зөвхөн мөчрийг уртасгах эсвэл илүү сонирхолтой болгохын тулд өөр баарыг шургуулах нь зүйтэй. Бага зэрэг шаргуу ажил - мөн платформ бэлэн боллоо (хэрэглэгч халив, эрэг чангалах түлхүүр, хясаа, утас таслагч гэх мэт үйл явцыг ихээхэн хурдасгадаг).

Дараа нь юу юм?

Төслийг бүхэлд нь https://github.com/poconoco/sleipnir хаягаар авах боломжтой. Би хамгийн практик бус тохиргоонуудын нэгийг тайлбарласан - олон 2DOF хөл, өндөр, нарийхан, хажуу тийшээ амархан унадаг. 3DOF хөлтэй илүү сайн робот хийхийг хичээ. 4DOF хөлтэй. Хумс эсвэл эрүүтэй. 3DOF урвуу кинематикийн жишээ болгон та buggybug репозиторыг үзэж болно - hexapod програм хангамж байдаг. Та мөн хяналтгүй, ухаалаг роботуудыг бүтээж, Bluetooth-ийн оронд зайны мэдрэгч суурилуулж, роботыг хана, саад тотгороос зайлсхийхэд сургаж чадна. Хэрэв та ийм мэдрэгчийг servo хөтөч дээр байрлуулж, эргүүлэх юм бол тухайн газрыг бараг sonar ашиглан сканнердаж болно.