Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Сайн байна уу.

Энэ нийтлэлд би Arduino ашиглан анхны роботоо угсрах үйл явцыг тайлбарлахыг хүсч байна. Энэ материал нь над шиг "өөрөө явдаг тэрэг" хийхийг хүсдэг бусад эхлэгчдэд хэрэг болно. Энэхүү нийтлэл нь янз бүрийн нюансууд дээр миний нэмэлтүүдтэй ажиллах үе шатуудын тайлбар юм. Өгүүллийн төгсгөлд эцсийн кодын холбоосыг (хамгийн тохиромжтой биш байх магадлалтай) өгсөн болно.

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Боломжтой бол би хүүгээ (8 настай) оролцуулсан. Түүнтэй яг юу ажилласан, юу нь болохгүй байсан - Би нийтлэлийн нэг хэсгийг үүнд зориулав, магадгүй энэ нь хэн нэгэнд хэрэг болох байх.

Роботын ерөнхий тодорхойлолт

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

Тиймээс би хэсэг бодсоны эцэст санаагаа бага зэрэг өөрчилж, "анчин" робот хийхээр шийдсэн. Эхэндээ тэнхлэгээ тойрон эргэлдэж, ойролцоох байг (хүн) сонгоно. Хэрэв "олз" илэрсэн бол "анчин" анивчсан гэрэл, дуут дохиог асаагаад түүн рүү хөдөлж эхэлнэ. Тухайн хүн холдох/зугтах үед робот шинэ бай сонгож, түүнийг хөөх гэх мэт. Ийм робот нь хязгаарлагдмал тойрог шаардлагагүй бөгөөд нээлттэй талбайд ажиллах боломжтой.

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

Роботын бүтэц

Тиймээс бид санаагаа шийдсэн тул цаашаа явцгаая зохион байгуулалт. Элементүүдийн жагсаалт нь робот хийх чадвартай байх ёстой зүйлээс бүрддэг. Энд бүх зүйл тодорхой байгаа тул дугаарлалтаа нэн даруй харцгаая.

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Роботын "тархи" нь arduino uno самбар (1); Хятадаас захиалсан иж бүрдэлд байсан. Бидний зорилгын хувьд энэ нь хангалттай (бид ашигласан тээглүүрүүдийн тоонд анхаарлаа хандуулдаг). Ижил иж бүрдэлээс бид хоёр хөтлөгч дугуй (2), нэг арын (чөлөөт эргэдэг) (3) бэхлэгдсэн бэлэн явах эд анги (4) авсан. Энэ хэрэгсэлд бэлэн батерейны тасалгаа (5) багтсан болно. Роботын урд талд хэт авианы мэдрэгч (HC-SR04) (6), арын хэсэгт моторын драйвер (L298N) (7), төв хэсэгт LED гялбаа (8), бага зэрэг хажуу талд нь жиргээч байна (9).

Төлөвлөлтийн үе шатанд бид дараахь зүйлийг хардаг.

- Ингэснээр бүх зүйл тохирсон байх болно
- тэнцвэртэй байх
- оновчтой байршуулах

Манай хятадын хамт олон үүнийг аль хэдийн хэсэгчлэн хийсэн. Тиймээс батерейны хүнд тасалгаа нь төвд байрладаг бөгөөд жолооны дугуй нь ойролцоогоор доор байрладаг. Бусад бүх хавтангууд нь хөнгөн жинтэй тул захын хэсэгт байрлуулж болно.

Нюанс:

  1. Багцын явах эд анги нь үйлдвэрийн олон цоорхойтой боловч тэдгээрийн логик нь юу болохыг би хараахан олж чадаагүй байна. Хөдөлгүүр, батерейг ямар ч асуудалгүйгээр бэхэлсэн бөгөөд дараа нь "тохируулга" нь энэ эсвэл өөр хавтанг бэхлэхийн тулд шинэ цооног өрөмдөж эхлэв.
  2. Хадгалах талбайн гуулин тавиур болон бусад бэхэлгээ нь маш их тус болсон (заримдаа бид тэдгээрийг гаргах шаардлагатай байсан).
  3. Би самбар бүрээс шинийг хавчаараар дамжуулсан (дахин би тэдгээрийг агуулахаас олсон). Маш тохиромжтой, бүх утаснууд нь сайн хэвтэж, унждаггүй.

Бие даасан блокууд

Одоо би давна блокууд мөн би тус бүрийн талаар танд хэлэх болно.

батерейны тасалгаа

Робот эрчим хүчний сайн эх үүсвэртэй байх ёстой нь ойлгомжтой. Сонголтууд өөр байж болно, би 4 АА батерейтай сонголтыг сонгосон. Нийтдээ тэд ойролцоогоор 5 В өгдөг бөгөөд энэ хүчдэлийг arduino хавтангийн 5V зүү дээр шууд хэрэглэж болно (тогтворжуулагчийг тойрч гарах).

Мэдээжийн хэрэг, би зарим нэг болгоомжлолтой байсан, гэхдээ энэ шийдэл нь нэлээд боломжтой юм.

Эрчим хүч хаа сайгүй шаардлагатай байдаг тул би роботын төвд хоёр холбогч хийсэн: нэг нь газар (баруун талд), хоёр дахь нь 5 В (зүүн талд) "тархалдаг".

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Мотор ба жолооч

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

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Моторыг удирдахын тулд дээр бичсэнчлэн L298N драйверийг ашигладаг. Баримт бичгийн дагуу энэ нь мотор бүрт гурван тээглүүртэй: нэг нь хурдыг өөрчлөх, хоёр нь эргэлтийн чиглэлд зориулагдсан. Энд нэг чухал зүйл байна. Хэрэв тэжээлийн хүчдэл 5 В байвал хурдны удирдлага зүгээр л ажиллахгүй байна! Өөрөөр хэлбэл, энэ нь огт эргэхгүй, эсвэл дээд тал руугаа эргэх болно. Энэ бол миний хоёр оройг “алах” шалтгаан болсон. Төгсгөлд нь би форумын аль нэг дээр дурдсан зүйлийг олсон.

Ерөнхийдөө роботыг эргүүлэхэд надад бага эргэлтийн хурд хэрэгтэй байсан бөгөөд ингэснээр тэр орон зайг сканнердах боломжтой болсон. Гэхдээ энэ санаанаас юу ч гараагүй тул би үүнийг өөрөөр хийх хэрэгтэй болсон: жижиг эргэлт - зогсох - эргэх - зогсоох гэх мэт. Дахин хэлэхэд тийм ч гоёмсог биш, гэхдээ ажиллах боломжтой.

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

Хэт авианы мэдрэгч

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Бид буулт хийх шийдлийг хайх хэрэгтэй болсон өөр нэг техник хангамж. Хэт авианы мэдрэгч нь бодит саад тотгор дээр тогтворгүй тоо гаргадаг. Үнэндээ үүнийг хүлээж байсан. Энэ нь гөлгөр, тэгш, перпендикуляр гадаргуутай тэмцээнд хаа нэгтээ ажилладаг, гэхдээ хэн нэгний хөл урд нь "анивчдаг" бол нэмэлт боловсруулалтыг нэвтрүүлэх шаардлагатай.

Ийм боловсруулалтыг би тохируулсан медиан шүүлтүүр гурван тоогоор. Жинхэнэ хүүхдүүдийн туршилтыг үндэслэн (шинжилгээний явцад хүүхэд гэмтээгүй!) өгөгдлийг хэвийн болгоход хангалттай байсан. Энд байгаа физик нь энгийн: бидэнд дохио туссан шаардлагатай объектууд (шаардлагатай зайг өгөх) ба илүү алслагдсанаас, жишээлбэл, хананаас тусгана. Сүүлийнх нь 45, 46 хэлбэрийн хэмжилтийн санамсаргүй ялгаруулалт юм. 230, 46, 46, 45, 45, 310, 46... Чухам эдгээр нь медиан шүүлтүүрийг тасалдаг.

Бүх боловсруулалтын дараа бид хамгийн ойрын объект хүртэлх зайг авдаг. Хэрэв энэ нь тодорхой босго хэмжээнээс бага байвал бид дохиолол асаагаад шууд "халдагчид" руу чиглэнэ.

Гялсгуур ба дуут дохио

Дээрх бүх зүйлсийн хамгийн энгийн элементүүд байж магадгүй юм. Тэдгээрийг дээрх зургуудаас харж болно. Энд техник хангамжийн талаар бичих зүйл байхгүй тул одоо үргэлжлүүлье код.

Хяналтын програм

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

Бидний ойлгох ёстой хамгийн эхний зүйл бол робот бол бодит цагийн төхөөрөмж юм. Бүр тодруулбал, би өмнө нь ч, одоо ч электроникийн чиглэлээр ажилладаг учраас санаж байх хэрэгтэй. Тиймээс бид сорилтыг шууд мартдаг хойшлуулах (), тэд жишээ ноорог дээр ашиглах дуртай бөгөөд энэ нь програмыг тодорхой хугацаанд "царцаадаг". Үүний оронд туршлагатай хүмүүсийн зөвлөснөөр бид блок бүрт таймерыг нэвтрүүлдэг. Шаардлагатай интервал өнгөрсөн - үйлдэл хийгдсэн (LED-ийн гэрлийг нэмэгдүүлэх, хөдөлгүүрийг асаах гэх мэт).

Таймеруудыг хооронд нь холбож болно. Жишээ нь, жиргээч нь гэрэлтэгчтэй синхроноор ажилладаг. Энэ нь програмыг бага зэрэг хялбаршуулдаг.

Мэдээжийн хэрэг, бид бүх зүйлийг тусдаа функц болгон хуваадаг (анивчсан гэрэл, дуу чимээ, эргэх, урагшлах гэх мэт). Хэрэв та үүнийг хийхгүй бол хаанаас, хаанаас юу ирж байгааг олж мэдэх боломжгүй болно.

Сурган хүмүүжүүлэх ухааны нюансууд

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

Зааврын дагуу ажиллана

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

Ажлын дараалал (“тусгайгаас ерөнхий рүү”)

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

Суурилуулах ажил

Өрөмдлөг, утас, шураг, самар, гагнуур, жилий үнэр - үүнгүйгээр бид хаана байх байсан бэ? Хүүхэд "гагнуурын төмрөөр ажиллах" үндсэн ур чадварыг эзэмшсэн - тэр хэд хэдэн холболтыг гагнаж чадсан (би бага зэрэг тусалсан, би үүнийг нуухгүй). Аюулгүй байдлын талаархи тайлбарыг бүү мартаарай.

Компьютерийн ажил

Би роботын програмыг бичсэн боловч зарим нэг таатай үр дүнд хүрч чадсан.

Нэгдүгээрт: Англи хэл. Тэд сургууль дээрээ дөнгөж эхэлж байсан тул бид пишалка, мигалка, яркост болон бусад галиглал гэж юу болохыг олж мэдэх гэж тэмцэж байсан. Наад зах нь бид үүнийг ойлгосон. Бид ийм түвшинд хүрээгүй байгаа тул би зориудаар уугуул англи үг хэлээгүй.

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

Нуугдсан текстДээрх нь бараг ойлгомжтой гэж хэлж болно. Гэхдээ үнэнийг хэлэхэд энэ намар надад нэг сургуулийн 9-р ангид компьютерийн хичээл заах боломж олдсон. Энэ аймшигтай юм. Оюутнууд Ctrl + Z, Ctrl + C, Ctrl + V, Shift дарж текст сонгох, үгэн дээр давхар товших гэх мэт энгийн зүйлсийг мэддэггүй. Энэ нь хэдийгээр тэд компьютерийн шинжлэх ухааны чиглэлээр гурав дахь жилдээ суралцаж байсан ч... Өөрийнхөө дүгнэлтийг гарга.

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

Таны харж байгаагаар бид дөнгөж эхэлж байна. Бид ур чадвар, мэдлэгээ үргэлжлүүлэн хөгжүүлж, амьдралд хэрэг болохуйц байх болно.

Дашрамд хэлэхэд, ирээдүйн талаар ...

Цаашдын хөгжил

Робот хийгдсэн, жолоодож, анивчиж, дохио өгдөг. Одоо яах вэ? Бидний хүрсэн амжилтаас урам зориг авч, цаашид улам боловсронгуй болгохоор төлөвлөж байна. Сарны жолоодлого шиг алсын удирдлага хийх санаа бий. Алсын удирдлагад суугаад огт өөр газар жолоодож буй роботын хөдөлгөөнийг удирдах нь сонирхолтой байх болно. Гэхдээ энэ нь өөр түүх байх болно ...

Эцэст нь хэлэхэд, энэ нийтлэлийн баатрууд (видео дээр дарж):

Arduino дээр анхны робот бүтээсэн туршлага (робот "анчин")

Таны анхаарлын төвд баярлалаа!

Кодын холбоос

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх