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 AA батарейкасы менен опцияны тандадым. Жалпысынан алар болжол менен 5 В берет жана бул чыңалуу arduino тактасынын 5V пинине түздөн-түз колдонулушу мүмкүн (стабилизаторду айланып өтүп).

Албетте, мен бир аз сак болчумун, бирок бул чечим абдан ишке ашат.

Кубат бардык жерде керек болгондуктан, мен роботтун борборунда эки туташтыргыч жасадым: бири жерди (оң жакта), экинчиси - 5 В (солдо).

Arduino боюнча биринчи роботту түзүү тажрыйбасы (робот "аңчы")

Мотор жана айдоочу

Биринчиден, кыймылдаткычтарды орнотуу жөнүндө. Монтаж заводдо жасалган, бирок чоң толеранттуулук менен жасалган. Башкача айтканда, кыймылдаткычтар бир-эки миллиметр солго жана оңго солкулдашы мүмкүн. Биздин милдетибиз үчүн бул өтө маанилүү эмес, бирок кээ бир жерлерде анын таасири болушу мүмкүн (робот капталга жыла баштайт). Болбосо, мен кыймылдаткычтарды катуу параллелдүү коюп, желим менен бекиттим.

Arduino боюнча биринчи роботту түзүү тажрыйбасы (робот "аңчы")

Моторлорду башкаруу үчүн, мен жогоруда жазгандай, L298N драйвери колдонулат. Документтерге ылайык, анын ар бир мотору үчүн үч төөнөгүч бар: бири ылдамдыгын өзгөртүү үчүн жана бир жуп төөнөгүч айлануу багыты үчүн. Бул жерде бир маанилүү жагдай бар. Көрсө, камсыздоо чыңалуусу 5 В болсо, ылдамдыкты көзөмөлдөө жөн эле иштебейт! Башкача айтканда, же такыр бурулбайт, же максимумга айланат. Бир-эки кечти «өлтүрүшүмө» себеп болгон өзгөчөлүк. Акыр-аягы, мен форумдардын биринде бир сөздү таптым.

Жалпысынан алганда, роботту буруп жатканда, мен мейкиндикти скандоо үчүн убакыт болушу үчүн, аз айлануу ылдамдыгы керек болчу. Бирок, бул идеядан эч нерсе чыкпагандыктан, мен муну башкача жасоого туура келди: кичинекей бурулуш - токтоо - бурулуш - токтоо жана башкалар.

Ошондой эле, мен бул жерде кошумчалайм, ар бир куугандан кийин робот жаңы бурулуш үчүн кокус багытты тандайт (саат жебеси боюнча же ага каршы).

УЗИ сенсор

Arduino боюнча биринчи роботту түзүү тажрыйбасы (робот "аңчы")

Биз компромисстик чечимди издөөгө туура келген дагы бир жабдык. УЗИ сенсор реалдуу тоскоолдуктар боюнча туруксуз сандарды чыгарат. Чынында, бул күтүлгөн болчу. Идеалында, ал жылмакай, бир калыпта жана перпендикуляр беттери бар мелдештерде бир жерде иштейт, бирок анын алдында бирөөнүн буттары "жарк" этсе, кошумча иштетүүнү киргизүү керек.

Мындай иштетүү катары мен койдум медиандык чыпка үч эсеп үчүн. Чыныгы балдарга жүргүзүлгөн тесттердин негизинде (тесттер учурунда эч кандай балдар жабыркаган жок!), бул маалыматтарды нормалдаштыруу үчүн жетиштүү болуп чыкты. Бул жерде физика жөнөкөй: бизде чагылдырылган сигналдар бар зарыл объектилер (талап кылынган аралыкты берүү) жана алыскы нерселерден, мисалы, дубалдардан чагылдырылат. Акыркысы 45, 46, 230, 46, 46, 45, 45, 310, 46... Дал ушулар орто фильтрди кесип салат.

Бардык иштетүүдөн кийин биз жакынкы объектке чейинки аралыкты алабыз. Эгерде ал белгилүү бир чектик мааниден аз болсо, анда биз ойготкучту күйгүзүп, түз эле "тартип бузуучуга" карай айдайбыз.

Жаркыраткыч жана сирена

Балким, жогоруда айтылгандардын эң жөнөкөй элементтери. Аларды жогорудагы сүрөттөрдөн көрүүгө болот. Бул жерде аппараттык камсыздоо жөнүндө жаза турган эч нерсе жок, андыктан азыр ага өтөбүз код.

Башкаруу программасы

Мен кодду майда-чүйдөсүнө чейин сүрөттөп берүүнүн маанисин көрбөй турам, ал кимге керек - шилтеме макаланын аягында, бардыгын окууга болот. Бирок жалпы структурасын түшүндүрүп берсек жакшы болмок.

Биринчиден, биз түшүнүшүбүз керек болгон нерсе, робот реалдуу убакыттагы түзүлүш. Тагыраагы, эстеп кетейин, анткени мен буга чейин да, азыр да электроникада иштейм. Ошентип, биз дароо чакырык жөнүндө унутуп кечиктирүү (), алар мисалы эскиздерде колдонууну жакшы көрүшөт жана программаны белгилүү бир убакытка "тоңдурат". Анын ордуна, тажрыйбалуу адамдар кеңешкендей, биз ар бир блок үчүн таймерлерди киргизебиз. Керектүү интервал өттү - аракет аткарылды (Светодиоддун жарыктыгын жогорулатуу, кыймылдаткычты күйгүзүү жана башкалар).

Таймерлер бири-бирине туташтырылышы мүмкүн. Мисалы, твитер жаркыраткыч менен синхрондуу иштейт. Бул программаны бир аз жөнөкөйлөтөт.

Албетте, биз бардыгын өзүнчө функцияларга (жаркыраган жарыктар, үн, бурулуп, алдыга жылдыруу ж.б.) бөлөбүз. Эгер муну кылбасаңыз, анда эмне кайдан жана кайдан келип жатканын түшүнө албай каласыз.

Педагогиканын нюанстары

Кечинде бош убактымда жогоруда айтылгандардын баарын жасадым. Мен роботко үч жумадай убакыт өткөрдүм. Бул жерде бүтүшү мүмкүн болчу, бирок мен дагы бала менен иштөө жөнүндө айтып берем деп убада бердим. Бул жашта эмне кылса болот?

Көрсөтмөлөргө ылайык иштөө

Биз алгач ар бир майда-чүйдөсүнө чейин өзүнчө текшерип - LED, Tweeter, моторлор, сенсорлор, ж.б.у.с. даяр мисалдардын көп саны бар - кээ бир туура иштеп чөйрөдө, башкаларды Интернеттен тапса болот. Бул, албетте, мени бактылуу кылат. Биз кодду алып, бөлүкчөсүн туташтырабыз, анын иштегенине ынанабыз, андан кийин аны өзүбүздүн тапшырмабызга ылайыкташтыра баштайбыз. Бала схема боюнча жана кээ бир менин көзөмөлүм астында байланыштарды түзөт. Бул Жакшы. Ошондой эле көрсөтмөлөргө ылайык так иштей билүү керек.

Иш тартиби («өзгөчөдөн жалпыга»)

Бул кыйын жагдай. Чоң долбоор («робот жасоо») кичинекей тапшырмалардан («датчикти туташтыруу», «моторлорду туташтыруу»...) жана алар өз кезегинде андан да кичине кадамдардан тураарын билишиңиз керек («робот жасоо») программа," "тактаны туташтыруу." ", "программаны жүктөө"...). Төмөнкү деңгээлдеги аздыр-көптүр түшүнүктүү тапшырмаларды аткаруу менен биз ортоңку деңгээлдеги тапшырмаларды «жабабыз» жана алардан жалпы жыйынтык түзүлөт. Мен түшүндүрдүм, бирок ишке ашыруу жакында келбейт деп ойлойм. Бир жерде, балким, өспүрүм кезинде.

монтаждык

Бургулоо, жиптер, бурамалар, гайкалар, ширетүү жана канифоль жыты - ансыз кайда болмокпуз? Бала негизги көндүмгө ээ болгон "Паряты менен иштөө" - ал бир нече байланыштарды ширетүүгө жетишти (мен бир аз жардам бердим, аны жашырбайм). Коопсуздук боюнча түшүндүрмөлөрдү унутпаңыз.

Компьютер менен иштөө

Мен роботтун программасын жаздым, бирок мен дагы эле жакшы натыйжаларга жетише алдым.

Биринчи: англис. Алар мектепте жаңы эле башташкандыктан, пишалка, мигалка, яркост жана башка транслитерациялар эмне экенин түшүнө албай кыйналдык. Жок дегенде биз муну түшүндүк. Мен атайылап англисче сөздөрдү колдонгон жокмун, анткени биз бул деңгээлге жете элекпиз.

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

Жашырылган текстСиз жогоруда дээрлик ачык-айкын деп айта алабыз. Бирок, чынын айтсам, быйыл күздө бир мектепте 9-класста информатикадан сабак бергенге мүмкүнчүлүк болду. Бул коркунучтуу. Окуучулар Ctrl + Z, Ctrl + C жана Ctrl + V сыяктуу негизги нерселерди билишпейт, Shift баскычын басып туруп текстти тандоо же сөздү эки жолу басуу ж.б.у.с. Булар информатика боюнча үчүнчү курста окуп жатышканына карабай... Өзүңөр тыянак чыгаргыла.

Үчүнчүсү: тийип терүү. Коддогу комментарийлерди терүүнү балага тапшырдым (машыгып көрсүн). Манжаларыбыз баскычтардын ордун акырындап эстеп калгыдай кылып, колубузду дароо туура койдук.

Көрүнүп тургандай, биз дагы эле баштайбыз. Биз өз жөндөмүбүздү жана билимибизди өркүндөтө беребиз, алар жашоодо пайдалуу болот.

Баса, келечек тууралуу...

Андан ары өнүктүрүү

Робот жасалган, айдайт, ирмөөдө жана сигнал берет. Эми эмне болот? Жетишкен нерселерибизге шыктануу менен, биз аны мындан ары да өркүндөтүүнү пландап жатабыз. Пульт жасоо идеясы бар - Айга жүрүүчү сыяктуу. Пульттун жанында отуруп, такыр башка жерде айдап бараткан роботтун кыймылын башкаруу кызыктуу болмок. Бирок бул башка окуя болот...

Жана аягында, чынында, бул макаланын каармандары (баскыч менен видео):

Arduino боюнча биринчи роботту түзүү тажрыйбасы (робот "аңчы")

Конул бурганын учун рахмат!

Код шилтемеси

Source: www.habr.com

Комментарий кошуу