Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Saluton

En ĉi tiu artikolo mi volas priskribi la procezon kunmeti mian unuan roboton uzante Arduino. La materialo estos utila al aliaj komencantoj kiel mi, kiuj volas fari ian "mem-kurantan ĉaron". La artikolo estas priskribo de la etapoj de laboro kun miaj aldonoj pri diversaj nuancoj. Ligilo al la fina kodo (plej verŝajne ne la plej ideala) estas donita ĉe la fino de la artikolo.

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Kiam ajn ebla, mi implikis mian filon (8 jarojn) en partopreno. Kio ĝuste funkciis kun ĝi kaj kio ne - mi dediĉis parton de la artikolo al ĉi tio, eble ĝi estos utila al iu.

Ĝenerala priskribo de la roboto

Unue, kelkajn vortojn pri la roboto mem (ideo). Mi ne vere volis kunveni ion norman ĉe la komenco. Samtempe, la aro de komponantoj estis sufiĉe norma - ĉasio, motoroj, ultrasona sensilo, liniosensilo, LED-oj, tweeter. Komence, roboto estis inventita de ĉi tiu "supo-aro", kiu gardas sian teritorion. Li movas direkte al la leĝrompinto kiu transiris la cirklan linion, kaj tiam revenas al la centro. Tamen, ĉi tiu versio postulis desegnitan linion, kaj plie kroman matematikon por resti en la cirklo ĉiam.

Tial, post iom da pripensado, mi ŝanĝis la ideon iom kaj decidis fari "ĉasiston" roboton. Komence, ĝi turniĝas ĉirkaŭ sia akso, elektante proksiman celon (personon). Se la "predo" estas detektita, la "ĉasisto" ŝaltas la fulmantajn lumojn kaj sirenon kaj komencas veturi al ĝi. Kiam la persono foriras/forkuras, la roboto elektas novan celon kaj persekutas ĝin, ktp. Tia roboto ne bezonas limigitan cirklon, kaj ĝi povas funkcii en malfermaj areoj.

Kiel vi povas vidi, ĉi tio tre similas al ludo de rekaptado. Kvankam finfine la roboto ne montriĝis sufiĉe rapida, ĝi honeste interagas kun la homoj ĉirkaŭ ĝi. Speciale plaĉas al infanoj (foje tamen ŝajnas, ke ili estas piedpremontaj, ilia koro batas...). Mi pensas, ke ĉi tio estas bona solvo por popularigi teknikan dezajnon.

Robota strukturo

Do, ni decidis pri la ideo, ni pluiru aranĝo. La listo de elementoj estas formita de tio, kion la roboto devus povi fari. Ĉio ĉi tie estas sufiĉe evidenta, do ni tuj rigardu la numeradon:

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

La "cerboj" de la roboto estas arduino uno-tabulo (1); estis en aro mendita el Ĉinio. Por niaj celoj, ĝi estas sufiĉe sufiĉe (ni koncentriĝas pri la nombro da uzataj pingloj). El la sama ilaro ni prenis pretan ĉasion (2), sur kiu estas alkroĉitaj du movaj radoj (3) kaj unu malantaŭo (libere rotacianta) (4). La ilaro ankaŭ inkludis pretan bateriosekcion (5). Antaŭ la roboto estas ultrasona sensilo (HC-SR04) (6), en la malantaŭo estas motora ŝoforo (L298N) (7), en la centro estas LED-ekbrilo (8), kaj iom por la flanko tie estas tjulo (9).

En la aranĝostadio ni rigardas:

- por ke ĉio konvenu
- esti ekvilibra
- esti racie lokita

Niaj ĉinaj kolegoj jam parte faris tion por ni. Do, la peza kupeo de kuirilaro estas metita en la centron, kaj la movaj radoj situas proksimume sub ĝi. Ĉiuj aliaj tabuloj estas malpezaj kaj povas esti metitaj sur la periferion.

Nuancoj:

  1. La ĉasio de la ilaro havas multajn fabrikajn truojn, sed mi ankoraŭ ne eltrovis, kia estas la logiko en ili. La motoroj kaj bateripakaĵo estis sekurigitaj sen problemoj, tiam la "ĝustigo" komenciĝis per borado de novaj truoj por sekurigi tiun aŭ alian tabulon.
  2. La latunaj rakoj kaj aliaj fermiloj el stokejoj estis granda helpo (kelkfoje ni devis eltiri ilin).
  3. Mi pasigis la busbarojn de ĉiu tabulo tra la krampoj (denove, mi trovis ilin en stokado). Tre oportune, ĉiuj dratoj kuŝas bele kaj ne pendas.

Individuaj blokoj

Nun mi trairos blokoj kaj mi rakontos al vi persone pri ĉiu.

kupeo de kuirilaro

Estas klare, ke la roboto devas havi bonan fonton de energio. Opcioj povas varii, mi elektis la opcion kun 4 AA-kuirilaroj. Entute ili donas proksimume 5 V, kaj ĉi tiu tensio povas esti rekte aplikita al la 5V-stifto de la arduino-tabulo (preterpasante la stabiligilon).

Kompreneble, mi havis iom da singardo, sed ĉi tiu solvo estas sufiĉe realigebla.

Ĉar potenco necesas ĉie, por komforto mi faris du konektilojn en la centro de la roboto: unu "distribuas" la grundon (dekstre), kaj la dua - 5 V (maldekstre).

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Motoroj kaj ŝoforo

Unue, pri muntado de la motoroj. La monto estas fabrikita, sed farita kun grandaj toleremoj. Alivorte, la motoroj povas ŝanceli kelkajn milimetrojn maldekstren kaj dekstren. Por nia tasko tio ne estas maltrankviliga, sed kelkloke ĝi povas efiki (la roboto ekmoviĝos flanken). Por la okazo, mi starigis la motorojn strikte paralelajn kaj fiksis ilin per gluo.

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Por kontroli la motorojn, kiel mi skribis supre, la ŝoforo L298N estas uzata. Laŭ la dokumentado, ĝi havas tri pinglojn por ĉiu motoro: unu por ŝanĝi la rapidon kaj paro da pingloj por la direkto de rotacio. Estas unu grava punkto ĉi tie. Montriĝas, ke se la provizo-tensio estas 5 V, tiam la rapida kontrolo simple ne funkcias! Tio estas, aŭ ĝi tute ne turniĝas, aŭ ĝi turniĝas al la maksimumo. Jen la trajto, kiu igis min "mortigi" kelkajn vesperojn. Fine mi trovis mencion ie sur unu el la forumoj.

Ĝenerale, mi bezonis malaltan rotacian rapidon turnante la roboton - por ke ĝi havu tempon por skani la spacon. Sed, ĉar nenio venis el ĉi tiu ideo, mi devis fari ĝin alimaniere: eta turniĝo - halto - turniĝo - halto, ktp. Denove, ne tiel eleganta, sed realigebla.

Mi ankaŭ aldonos ĉi tie, ke post ĉiu postkuro la roboto elektas hazardan direkton por nova turno (dekstrume aŭ maldekstrume).

Ultrasona sensilo

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Alia aparataro, kie ni devis serĉi kompromisan solvon. La ultrasona sensilo produktas malstabilajn nombrojn sur realaj obstakloj. Fakte, ĉi tio estis atendita. Ideale, ĝi funkcias ie en konkursoj, kie estas glataj, egalaj kaj perpendikularaj surfacoj, sed se ies kruroj "fulmas" antaŭ ĝi, aldona prilaborado devas esti enkondukita.

Kiel tian prilaboradon mi starigis mediana filtrilo pro tri kalkuloj. Surbaze de provoj sur realaj infanoj (neniu infanoj estis damaĝitaj dum la provoj!), ĝi montriĝis sufiĉe sufiĉa por normaligi la datumojn. La fiziko ĉi tie estas simpla: ni havas signalojn reflektitajn de necesa objektoj (donante la postulatan distancon) kaj reflektitaj de pli malproksimaj, ekzemple, muroj. Ĉi-lastaj estas hazardaj emisioj en mezuradoj de la formo 45, 46, 23046, 46, 45, 45, 310, 46... Estas tiuj, kiujn la mediana filtrilo fortranĉas.

Post la tuta prilaborado, ni ricevas la distancon al la plej proksima objekto. Se ĝi estas malpli ol certa sojla valoro, tiam ni ŝaltas la alarmon kaj veturas rekte al la "entrudiĝinto".

Ekbrilo kaj sireno

Eble la plej simplaj elementoj de ĉiuj supre. Ili videblas en la supraj fotoj. Estas nenio por skribi pri aparataro ĉi tie, do nun ni pluiru kodo.

Kontrola programo

Mi ne vidas la signifon priskribi la kodon detale, kiu bezonas ĝin - la ligilo estas ĉe la fino de la artikolo, ĉio estas sufiĉe legebla tie. Sed estus bone klarigi la ĝeneralan strukturon.

La unua afero, kiun ni devis kompreni, estis, ke roboto estas realtempa aparato. Pli precize, por memori, ĉar kaj antaŭe kaj nun mi ankoraŭ laboras en elektroniko. Do, ni tuj forgesas pri la defio malfrui (), kiun ili amas uzi en ekzemplaj skizoj, kaj kiu simple "frostas" la programon dum difinita tempodaŭro. Anstataŭe, kiel konsilas spertaj homoj, ni enkondukas tempigilojn por ĉiu bloko. La bezonata intervalo pasis - la ago estis farita (pliigis la brilon de la LED, ŝaltis la motoron, ktp).

Temporiziloj povas esti interkonektitaj. Ekzemple, la tweeter funkcias sinkrone kun la ekbrilo. Ĉi tio iom simpligas la programon.

Kompreneble, ni disigas ĉion en apartajn funkciojn (fulmaj lumoj, sono, turniĝo, antaŭeniro, ktp). Se vi ne faras tion, tiam vi ne povos eltrovi kio venas de kie kaj kie.

Nuancoj de pedagogio

Mi faris ĉion supre priskribitan en mia libera tempo vespere. En malstreĉa maniero, mi pasigis ĉirkaŭ tri semajnojn sur la roboto. Ĉi tio povus esti finita ĉi tie, sed mi ankaŭ promesis rakonti al vi pri laboro kun infano. Kion oni povas fari en ĉi tiu aĝo?

Laboru laŭ instrukcioj

Ni unue kontrolis ĉiun detalon aparte - LED-oj, tweeter, motoroj, sensiloj, ktp. Estas granda nombro da pretaj ekzemploj - iuj ĝuste en la evolumedio, aliaj troveblas en Interreto. Ĉi tio certe ĝojigas min. Ni prenas la kodon, ligas la parton, certigas, ke ĝi funkcias, tiam ni komencas ŝanĝi ĝin laŭ nia tasko. La infano faras la ligojn laŭ la diagramo kaj sub iom da mia superrigardo. Ĉi tio estas bona. Vi ankaŭ devas povi labori strikte laŭ instrukcioj.

Ordo de laboro ("de aparta al ĝenerala")

Ĉi tio estas malfacila punkto. Vi devas lerni, ke granda projekto ("faru roboton") konsistas el malgrandaj taskoj ("konekti sensilon", "konekti motorojn"...), kaj tiuj, siavice, konsistas el eĉ pli malgrandaj paŝoj ("trovu programo", "konekti tabulon." ", "elŝuti firmware"...). Plenumante pli-malpli kompreneblajn taskojn de la malsupera nivelo, ni "fermas" la taskojn de la meza nivelo, kaj el ili formiĝas la ĝenerala rezulto. Mi klarigis, sed mi pensas, ke la konstato ne baldaŭ venos. Ie, verŝajne, de adoleskeco.

Instalado

Borado, fadenoj, ŝraŭboj, nuksoj, lutado kaj la odoro de kolofono - kie ni estus sen ĝi? La infano ricevis la bazan lertecon "Labori per lutfero" - li sukcesis luti plurajn konektojn (mi helpis iomete, mi ne kaŝos ĝin). Ne forgesu pri la sekureca klarigo.

Komputila laboro

Mi skribis la programon por la roboto, sed mi tamen sukcesis atingi kelkajn favorajn rezultojn.

Unue: la angla. Ili ĵus komencis ĝin en la lernejo, do ni luktis por eltrovi, kio estas pishalka, migalka, yarkost kaj aliaj transliterumoj. Almenaŭ ni komprenis ĉi tion. Mi intence ne uzis denaskajn anglajn vortojn, ĉar ni ankoraŭ ne atingis ĉi tiun nivelon.

Due: efika laboro. Ni instruis klavokombinojn kaj kiel rapide plenumi normajn operaciojn. Periode, kiam ni skribis la programon, mia filo kaj mi interŝanĝis lokojn, kaj mi diris tion, kion oni devas fari (anstataŭigo, serĉo ktp.). Mi devis ripeti kaj ree: "duoble klaki elektu", "teni Shift", "teni Ctrl" kaj tiel plu. La lernado ĉi tie ne estas rapida, sed mi pensas, ke la kapabloj estos iom post iom deponitaj "en la subkortekso".

Kaŝita tekstoVi povas diri, ke la supre estas preskaŭ evidenta. Sed, honeste, ĉi-aŭtune mi havis la ŝancon instrui komputikon en la 9-a klaso en unu lernejo. Tio estas terura. Studentoj ne scias tiajn bazajn aferojn kiel Ctrl + Z, Ctrl + C kaj Ctrl + V, elektante tekston tenante Shift aŭ duoble alklakante vorton, ktp. Ĉi tio estas malgraŭ tio, ke ili estis en sia tria jaro de studado de komputiko... Faru vian propran konkludon.

Trie: tuŝo tajpado. Mi konfidis la komentojn en la kodo al la infano por tajpi (lasu lin ekzerci). Ni tuj metis niajn manojn ĝuste tiel, ke niaj fingroj iom post iom rememoru la lokon de la ŝlosiloj.

Kiel vi povas vidi, ni ankoraŭ ĵus komencas. Ni daŭre perfektigos niajn kapablojn kaj sciojn; ili estos utilaj en la vivo.

Cetere, pri la estonteco...

Pluevoluigo

La roboto estas farita, veturas, palpebrumas kaj bipas. Kio nun? Inspirite de tio, kion ni atingis, ni planas rafini ĝin plu. Estas ideo fari teleregilon - kiel luna esplorveturilo. Estus interese, sidante ĉe teleregilo, kontroli la movon de roboto, kiu veturas en tute alia loko. Sed tio estos alia rakonto...

Kaj al la fino, fakte, la herooj de ĉi tiu artikolo (video klakante):

Sperto krei la unuan roboton sur Arduino (roboto "ĉasisto")

Спасибо за внимание!

Ligo al kodo

fonto: www.habr.com

Aldoni komenton