Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Hallo

In hierdie artikel wil ek die proses beskryf om my eerste robot met Arduino saam te stel. Die materiaal sal nuttig wees vir ander beginners soos ek wat 'n soort "self-lopende karretjie" wil maak. Die artikel is 'n beskrywing van die stadiums van werk met my toevoegings oor verskeie nuanses. 'n Skakel na die finale kode (waarskynlik nie die mees ideale nie) word aan die einde van die artikel gegee.

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Waar moontlik het ek my seun (8 jaar oud) by deelname betrek. Wat presies daarmee gewerk het en wat nie - ek het 'n deel van die artikel hieraan gewy, miskien sal dit vir iemand nuttig wees.

Algemene beskrywing van die robot

Eerstens, 'n paar woorde oor die robot self (idee). Ek wou aan die begin nie regtig iets standaard bymekaarmaak nie. Terselfdertyd was die stel komponente redelik standaard - onderstel, enjins, ultrasoniese sensor, lynsensor, LED's, tweeter. Aanvanklik is 'n robot uitgevind uit hierdie "sopstel" wat sy grondgebied bewaak. Hy ry na die oortreder wat die sirkellyn oorgesteek het, en keer dan terug na die middelpunt. Hierdie weergawe het egter 'n getrekte lyn vereis, plus ekstra wiskunde om te alle tye in die sirkel te bly.

Daarom het ek, na 'n bietjie nagedink, die idee ietwat verander en besluit om 'n "jagter"-robot te maak. Aan die begin draai dit om sy as en kies 'n nabygeleë teiken (persoon). As die “prooi” opgespoor word, skakel die “jagter” die flikkerligte en sirene aan en begin daarheen ry. Wanneer die persoon wegbeweeg/weghardloop, kies die robot 'n nuwe teiken en jaag dit na, ensovoorts. So 'n robot het nie 'n beperkte sirkel nodig nie, en dit kan in oop areas werk.

Soos jy kan sien, is dit baie soos 'n speletjie van inhaal. Alhoewel die robot op die ou end nie vinnig genoeg was nie, het dit eerlik met die mense rondom hom interaksie. Kinders hou veral daarvan (soms lyk dit egter of hulle dit gaan vertrap, hul hart spring 'n klop...). Ek dink dit is 'n goeie oplossing vir die popularisering van tegniese ontwerp.

Robotstruktuur

So, ons het op die idee besluit, kom ons gaan verder uitleg. Die lys van elemente word gevorm uit wat die robot behoort te kan doen. Alles hier is redelik voor die hand liggend, so kom ons kyk dadelik na die nommering:

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Die "breins" van die robot is 'n arduino uno-bord (1); was in 'n stel wat van China bestel is. Vir ons doeleindes is dit heeltemal genoeg (ons fokus op die aantal penne wat gebruik word). Uit dieselfde stel het ons 'n klaargemaakte onderstel (2) geneem, waarop twee dryfwiele (3) en een agter (vry draaiend) (4) geheg is. Die stel het ook 'n klaargemaakte batterykompartement (5) ingesluit. Voor die robot is daar 'n ultrasoniese sensor (HC-SR04) (6), agter is daar 'n motorbestuurder (L298N) (7), in die middel is daar 'n LED-flitser (8), en 'n bietjie aan die kant is daar 'n tweeter (9).

By die uitlegstadium kyk ons ​​na:

- sodat alles pas
- om gebalanseerd te wees
- om rasioneel geplaas te word

Ons Chinese kollegas het dit reeds gedeeltelik vir ons gedoen. Dus, die swaar battery kompartement is in die middel geplaas, en die dryfwiele is ongeveer onder dit geleë. Alle ander planke is liggewig en kan op die periferie geplaas word.

Nuanses:

  1. Die onderstel uit die stel het baie fabrieksgate, maar ek het nog nie uitgepluis wat die logika daarin is nie. Die enjins en batterypak is sonder probleme beveilig, toe begin die “aanpassing” met die boor van nuwe gate om hierdie of daardie bord vas te maak.
  2. Die koperrakke en ander hegstukke van stoorareas was 'n groot hulp (soms moes ons dit uitkry).
  3. Ek het die rails van elke bord deur die klampe gevoer (ek het hulle weer in die stoor gevind). Baie gerieflik, al die drade lê mooi en hang nie.

Individuele blokke

Nou gaan ek deur blokke en ek sal jou persoonlik van elkeen vertel.

battery kompartement

Dit is duidelik dat die robot 'n goeie bron van energie moet hê. Opsies kan verskil, ek het die opsie met 4 AA-batterye gekies. In totaal gee hulle ongeveer 5 V, en hierdie spanning kan direk op die 5V-pen van die arduino-bord toegepas word (omseil die stabiliseerder).

Natuurlik was ek versigtig, maar hierdie oplossing is redelik werkbaar.

Aangesien krag oral nodig is, het ek gerieflikheidshalwe twee verbindings in die middel van die robot gemaak: een "verdeel" die grond (aan die regterkant), en die tweede - 5 V (aan die linkerkant).

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Motors en bestuurder

Eerstens, oor die montering van die enjins. Die montering is fabrieksgemaak, maar gemaak met groot toleransies. Met ander woorde, die enjins kan 'n paar millimeter links en regs wankel. Vir ons taak is dit nie krities nie, maar op sommige plekke kan dit 'n effek hê (die robot sal na die kant begin beweeg). Net vir ingeval, ek het die enjins streng parallel gestel en dit met gom vasgemaak.

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Om die motors te beheer, soos ek hierbo geskryf het, word die L298N-bestuurder gebruik. Volgens die dokumentasie het dit drie penne vir elke motor: een om die spoed te verander en 'n paar penne vir die draairigting. Daar is een belangrike punt hier. Dit blyk dat as die toevoerspanning 5 V is, dan werk die spoedbeheer eenvoudig nie! Dit wil sê, óf dit draai glad nie, óf dit draai tot die maksimum. Dit is die kenmerk wat veroorsaak het dat ek 'n paar aande "doodgemaak" het. Op die ou end het ek iewers op een van die forums 'n melding gekry.

Oor die algemeen het ek 'n lae rotasiespoed nodig gehad om die robot te draai - sodat dit tyd gehad het om die spasie te skandeer. Maar, aangesien niks van hierdie idee gekom het nie, moes ek dit anders doen: 'n klein draai - stop - draai - stop, ens. Weereens, nie so elegant nie, maar werkbaar.

Ek sal ook hier byvoeg dat die robot na elke strewe 'n ewekansige rigting kies vir 'n nuwe draai (kloksgewys of antikloksgewys).

Ultrasoniese sensor

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Nog 'n stuk hardeware waar ons 'n kompromie-oplossing moes soek. Die ultrasoniese sensor produseer onstabiele getalle op werklike struikelblokke. Eintlik was dit verwag. Ideaal gesproke werk dit iewers in kompetisies waar daar gladde, egalige en loodregte oppervlaktes is, maar as iemand se bene voor dit "flits", moet bykomende verwerking ingestel word.

As sodanig verwerking stel ek mediaan filter vir drie tellings. Gebaseer op toetse op regte kinders (geen kinders is tydens die toetse benadeel nie!), het dit geblyk heeltemal voldoende te wees om die data te normaliseer. Die fisika hier is eenvoudig: ons het seine wat weerspieël word nodig voorwerpe (wat die vereiste afstand gee) en weerkaats vanaf meer verafgeleë, byvoorbeeld mure. Laasgenoemde is ewekansige emissies in metings van die vorm 45, 46, 230, 46, 46, 45, 45, 310, 46... Dit is hierdie wat die mediaan filter afsny.

Na al die verwerking kry ons die afstand na die naaste voorwerp. As dit minder as 'n sekere drempelwaarde is, dan skakel ons die alarm aan en ry reguit na die "indringer".

Flitser en sirene

Miskien die eenvoudigste elemente van al die bogenoemde. Hulle kan op die foto's hierbo gesien word. Daar is niks om hier oor hardeware te skryf nie, so kom ons gaan nou verder kode.

Beheer program

Ek sien nie die sin daarin om die kode in detail te beskryf nie, wie het dit nodig - die skakel is aan die einde van die artikel, alles is redelik leesbaar daar. Maar dit sal lekker wees om die algemene struktuur te verduidelik.

Die eerste ding wat ons moes verstaan, was dat 'n robot 'n intydse toestel is. Meer presies, om te onthou, want beide voorheen en nou werk ek steeds in elektronika. So, ons vergeet dadelik van die uitdaging vertraging (), wat hulle graag in voorbeeldsketse gebruik, en wat die program bloot vir 'n bepaalde tydperk "vries". In plaas daarvan, soos ervare mense aanbeveel, stel ons timers vir elke blok bekend. Die vereiste interval is verby - die aksie is uitgevoer (die helderheid van die LED verhoog, die enjin aangeskakel, ensovoorts).

Timers kan onderling verbind word. Die tweeter werk byvoorbeeld sinchronies met die flitser. Dit vereenvoudig die program 'n bietjie.

Natuurlik breek ons ​​alles op in afsonderlike funksies (flitsende ligte, klank, draai, vorentoe beweeg, ensovoorts). As jy dit nie doen nie, sal jy nie kan uitvind wat van waar en waar kom nie.

Nuanses van pedagogie

Ek het saans alles in my vrye tyd gedoen. Op 'n rustige manier het ek ongeveer drie weke op die robot deurgebring. Dit kon hier geëindig het, maar ek het ook belowe om jou te vertel van werk met 'n kind. Wat kan op hierdie ouderdom gedoen word?

Werk volgens instruksies

Ons het eers elke detail afsonderlik nagegaan - LED's, tweeter, motors, sensors, ens. Daar is 'n groot aantal klaargemaakte voorbeelde - sommige reg in die ontwikkelingsomgewing, ander kan op die internet gevind word. Dit maak my beslis gelukkig. Ons neem die kode, verbind die onderdeel, maak seker dat dit werk, dan begin ons dit verander om by ons taak te pas. Die kind maak die verbindings volgens die diagram en onder sommige van my toesig. Dit is goed. Jy moet ook streng volgens instruksies kan werk.

Orde van werk ("van besonders na algemeen")

Dit is 'n moeilike punt. Jy moet leer dat 'n groot projek ("maak 'n robot") uit klein take bestaan ​​("koppel 'n sensor," "koppel motors aan"...), en dié op hul beurt bestaan ​​uit selfs kleiner stappe ("vind 'n program," "koppel 'n bord." ", "laai firmware af"...). Deur min of meer verstaanbare take van die laer vlak uit te voer, "sluit" ons die take van die middelvlak, en daaruit word die algehele resultaat gevorm. Ek het verduidelik, maar ek dink die besef sal nie gou kom nie. Iewers, waarskynlik, deur adolessensie.

bevestiging

Boorwerk, skroewe, skroewe, moere, soldering en die reuk van hars – waar sou ons daarsonder wees? Die kind het die basiese vaardigheid "Werk met 'n soldeerbout" ontvang - hy het daarin geslaag om verskeie verbindings te soldeer (ek het 'n bietjie gehelp, ek sal dit nie wegsteek nie). Moenie vergeet van die veiligheidsverklaring nie.

Rekenaar werk

Ek het die program vir die robot geskryf, maar ek het steeds 'n paar gunstige resultate behaal.

Eerstens: Engels. Hulle het dit pas by die skool begin, so ons het gesukkel om uit te vind wat pishalka, migalka, yarkost en ander transliterasies is. Ten minste het ons dit verstaan. Ek het doelbewus nie inheemse Engelse woorde gebruik nie, aangesien ons nog nie hierdie vlak bereik het nie.

Tweedens: doeltreffende werk. Ons het snelsleutelkombinasies geleer en hoe om vinnig standaardbewerkings uit te voer. Van tyd tot tyd, toe ons die program geskryf het, het ek en my seun plekke geruil, en ek het gesê wat gedoen moet word (vervanging, soek, ens.). Ek moes oor en oor herhaal: “dubbelklik kies”, “hou Shift”, “hou Ctrl” ensovoorts. Die leerproses hier is nie vinnig nie, maar ek dink die vaardighede sal geleidelik "in die subkorteks" gedeponeer word.

Versteekte teksJy kan sê dat bogenoemde amper voor die hand liggend is. Maar, eerlikwaar, hierdie herfs het ek die geleentheid gehad om rekenaarwetenskap in die graad 9 by een skool te onderrig. Dis verskriklik. Studente ken nie sulke basiese dinge soos Ctrl + Z, Ctrl + C en Ctrl + V, teks kies terwyl jy Shift hou of dubbelklik op 'n woord, ensovoorts nie. Dit is ten spyte van die feit dat hulle in hul derde jaar van rekenaarwetenskap studeer het... Maak jou eie gevolgtrekking.

Derdens: raaktik. Ek het die opmerkings in die kode aan die kind toevertrou om te tik (laat hom oefen). Ons het dadelik ons ​​hande reg geplaas sodat ons vingers geleidelik die ligging van die sleutels onthou het.

Soos u kan sien, begin ons nog net. Ons sal voortgaan om ons vaardighede en kennis te slyp; dit sal nuttig wees in die lewe.

Terloops, oor die toekoms...

Verdere ontwikkeling

Die robot word gemaak, ry, knip en piep. Wat nou? Geïnspireer deur wat ons bereik het, beplan ons om dit verder te verfyn. Daar is 'n idee om 'n afstandbeheerder te maak - soos 'n maan-rover. Dit sal interessant wees om by 'n afstandbeheerder te sit om die beweging van 'n robot wat op 'n heel ander plek ry, te beheer. Maar dit sal 'n ander storie wees ...

En aan die einde, in werklikheid, die helde van hierdie artikel (video deur te klik):

Ervaring in die skep van die eerste robot op Arduino (robot-"jagter")

Skep 'n nuwe weergawe!

Kode skakel

Bron: will.com

Voeg 'n opmerking