Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Hei

Tässä artikkelissa haluan kuvata ensimmäisen robottini kokoamisprosessia Arduinolla. Materiaalista on hyötyä muille kaltaisilleni aloittelijoille, jotka haluavat tehdä jonkinlaisen "itsekäyvän kärryn". Artikkeli on kuvaus työskentelyn vaiheista lisäysten kanssa erilaisissa vivahteissa. Linkki lopulliseen koodiin (todennäköisimmin ei ihanteellisimpaan) on artikkelin lopussa.

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Aina kun mahdollista, otin poikani (8-vuotias) mukaan osallistumiseen. Mikä tarkalleen toimi sen kanssa ja mikä ei - olen omistanut osan artikkelista tähän, ehkä siitä on hyötyä jollekin.

Yleiskuvaus robotista

Ensin muutama sana itse robotista (ajatus). En todellakaan halunnut koota mitään standardia alussa. Samaan aikaan komponenttisarja oli melko vakio - alusta, moottorit, ultraäänianturi, linja-anturi, LEDit, diskanttikaiutin. Alun perin tästä "keittosarjasta" keksittiin robotti, joka vartioi sen aluetta. Hän ajaa kohti rikoksentekijää, joka on ylittänyt ympyrän rajan, ja palaa sitten keskustaan. Tämä versio vaati kuitenkin piirretyn viivan sekä ylimääräistä matematiikkaa pysyäkseen ympyrässä koko ajan.

Siksi hetken harkinnan jälkeen muutin ajatusta hieman ja päätin tehdä "metsästäjä"-robotin. Alussa se kääntyy akselinsa ympäri ja valitsee lähellä olevan kohteen (henkilön). Jos "saalis" havaitaan, "metsästäjä" sytyttää vilkkuvat valot ja sireenin ja alkaa ajaa sitä kohti. Kun henkilö siirtyy pois/pakenee, robotti valitsee uuden kohteen ja ajaa sitä takaa ja niin edelleen. Tällainen robotti ei tarvitse rajoitettua ympyrää, ja se voi toimia avoimilla alueilla.

Kuten näette, tämä on pitkälti kiinniottopeliä. Vaikka robotti ei lopulta osoittautunut tarpeeksi nopeaksi, se on rehellisesti vuorovaikutuksessa ympärillään olevien ihmisten kanssa. Erityisesti lapset pitävät siitä (joskus näyttää kuitenkin siltä, ​​että he ovat polkemassa sen, heidän sydämensä jättää lyönnin väliin...). Mielestäni tämä on hyvä ratkaisu teknisen suunnittelun popularisointiin.

Robotin rakenne

Joten, olemme päättäneet idean, siirrytään eteenpäin layout. Elementtilista muodostuu siitä, mitä robotin pitäisi pystyä tekemään. Kaikki täällä on melko ilmeistä, joten katsotaanpa heti numerointia:

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Robotin "aivot" ovat arduino uno -levy (1); oli Kiinasta tilatussa setissä. Meidän tarkoituksiimme se on aivan riittävä (keskittyy käytettyjen nastaiden määrään). Samasta sarjasta otimme valmiin alustan (2), johon on kiinnitetty kaksi vetopyörää (3) ja yksi taka (vapaasti pyörivä) (4). Sarjaan kuului myös valmis paristolokero (5). Robotin edessä on ultraäänianturi (HC-SR04) (6), takana moottoriohjain (L298N) (7), keskellä LED-vilkku (8) ja hieman sen puolella on diskanttikaiutin (9).

Asetteluvaiheessa katsomme:

- jotta kaikki mahtuu
- olla tasapainossa
- olla järkevästi sijoitettu

Kiinalaiset kollegamme ovat jo osittain tehneet tämän puolestamme. Joten raskas akkulokero on sijoitettu keskelle ja vetopyörät sijaitsevat suunnilleen sen alla. Kaikki muut levyt ovat kevyitä ja ne voidaan sijoittaa kehälle.

vivahteet:

  1. Sarjan rungossa on paljon tehdasreikiä, mutta en ole vieläkään tajunnut, mikä logiikka niissä on. Moottorit ja akku varmistettiin ilman ongelmia, sitten alkoi "säätö" poraamalla uusia reikiä tämän tai toisen levyn kiinnittämiseksi.
  2. Messinkiset telineet ja muut varastoalueiden kiinnikkeet olivat suureksi avuksi (joskus meidän piti saada ne pois).
  3. Ohjasin jokaisen levyn kiskot puristimien läpi (löysin ne jälleen varastosta). Erittäin kätevä, kaikki johdot ovat kauniisti eivätkä roikkua.

Yksittäiset lohkot

Nyt menen läpi lohkot ja kerron teille jokaisesta henkilökohtaisesti.

akkuosasto

On selvää, että robotilla on oltava hyvä energialähde. Vaihtoehdot voivat vaihdella, valitsin vaihtoehdon 4 AA-paristolla. Yhteensä ne antavat noin 5 V, ja tämä jännite voidaan syöttää suoraan arduinolevyn 5 V nastalle (ohitamalla stabilisaattori).

Tietysti olin varovainen, mutta tämä ratkaisu on varsin toimiva.

Koska virtaa tarvitaan kaikkialla, tein kätevyyden vuoksi kaksi liitintä robotin keskelle: toinen "jakaa" maan (oikealla) ja toinen - 5 V (vasemmalla).

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Moottorit ja kuljettaja

Ensinnäkin moottoreiden asennuksesta. Teline on valmistettu tehtaalla, mutta valmistettu suurilla toleransseilla. Toisin sanoen moottorit voivat heilua pari millimetriä vasemmalle ja oikealle. Tehtävämme kannalta tämä ei ole kriittinen, mutta paikoin sillä voi olla vaikutusta (robotti alkaa liikkua sivulle). Varmuudeksi asetin moottorit tiukasti rinnakkain ja kiinnitin ne liimalla.

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Moottorien ohjaamiseen, kuten edellä kirjoitin, käytetään L298N-ohjainta. Dokumentaation mukaan siinä on kolme nastaa jokaiselle moottorille: yksi nopeuden säätöön ja pari nastaa pyörimissuunnan säätöön. Tässä on yksi tärkeä seikka. Osoittautuu, että jos syöttöjännite on 5 V, nopeudensäätö ei yksinkertaisesti toimi! Eli joko se ei käänny ollenkaan tai kääntyy maksimiin. Tämä on se ominaisuus, joka sai minut "tappamaan" pari iltaa. Lopulta löysin maininnan jostain yhdeltä foorumilta.

Yleisesti ottaen tarvitsin pienen pyörimisnopeuden robottia käännettäessä - jotta se ehti skannata tilaa. Mutta koska tästä ideasta ei tullut mitään, minun piti tehdä se toisin: pieni käännös - stop - käännös - stop jne. Jälleen ei niin tyylikäs, mutta toimiva.

Lisään tähän myös, että jokaisen takaa-ajon jälkeen robotti valitsee satunnaisen suunnan uudelle käännökselle (myötäpäivään tai vastapäivään).

Ultraäänianturi

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

Toinen laitteisto, jossa meidän piti etsiä kompromissiratkaisua. Ultraäänianturi tuottaa epävakaita lukuja todellisissa esteissä. Itse asiassa tämä oli odotettavissa. Ihannetapauksessa se toimii jossain kilpailuissa, joissa on sileät, tasaiset ja kohtisuorat pinnat, mutta jos jonkun jalat "vilkkuvat" sen edessä, on lisäkäsittelyä otettava käyttöön.

Sellaisena käsittelyn asetin mediaanisuodatin kolmeen laskuun. Todellisilla lapsilla tehtyjen testien perusteella (kukaan lapsia ei loukkaantunut testien aikana!) se osoittautui varsin riittäväksi tietojen normalisoimiseksi. Fysiikka tässä on yksinkertainen: meillä on signaaleja, jotka heijastuvat tarpeellista esineitä (antaen vaaditun etäisyyden) ja heijastuu kauempana olevista, esimerkiksi seinistä. Jälkimmäiset ovat satunnaisia ​​päästöjä mittauksissa muotoa 45, 46, 230, 46, 46, 45, 45, 310, 46... Juuri nämä mediaanisuodatin katkaisee.

Kaiken käsittelyn jälkeen saamme etäisyyden lähimpään esineeseen. Jos se on pienempi kuin tietty kynnysarvo, kytkemme hälytyksen päälle ja ajamme suoraan kohti "tunkeilijaa".

Vilkku ja sireeni

Ehkä yksinkertaisimmat elementit kaikista yllä olevista. Ne näkyvät yllä olevissa kuvissa. Tässä ei ole mitään kirjoitettavaa laitteistosta, joten siirrytään nyt eteenpäin koodi.

Ohjausohjelma

En näe järkeä kuvailla koodia yksityiskohtaisesti, kuka sitä tarvitsee - linkki on artikkelin lopussa, kaikki on siellä melko luettavissa. Mutta olisi kiva selittää yleinen rakenne.

Ensimmäinen asia, joka meidän piti ymmärtää, oli, että robotti on reaaliaikainen laite. Tarkemmin sanottuna muistaakseni, koska sekä ennen että nyt työskentelen edelleen elektroniikan parissa. Joten unohdamme heti haasteen viive(), jota he rakastavat käyttää esimerkkiluonnoksissa ja joka yksinkertaisesti "jäädyttää" ohjelman tietyksi ajaksi. Sen sijaan, kuten kokeneet ihmiset neuvovat, otamme käyttöön ajastimet jokaiselle lohkolle. Vaadittu aikaväli on kulunut - toimenpide on suoritettu (lisännyt LEDin kirkkautta, käynnistänyt moottorin ja niin edelleen).

Ajastimet voidaan kytkeä toisiinsa. Esimerkiksi diskanttikaiutin toimii synkronisesti vilkkujen kanssa. Tämä yksinkertaistaa ohjelmaa hieman.

Luonnollisesti jaamme kaiken erillisiin toimintoihin (vilkkuvat valot, ääni, kääntyminen, eteenpäin kulku ja niin edelleen). Jos et tee tätä, et voi selvittää, mitä tulee mistä ja mistä.

Pedagogiikan vivahteet

Tein kaiken yllä kuvatun vapaa-ajallani iltaisin. Rauhallisesti vietin robotilla noin kolme viikkoa. Tämä olisi voinut päättyä tähän, mutta lupasin kertoa myös lapsen kanssa työskentelystä. Mitä tässä iässä voi tehdä?

Työskentele ohjeiden mukaan

Tarkastimme ensin jokaisen yksityiskohdan erikseen - LEDit, diskanttikaiutin, moottorit, anturit jne. Valmiita esimerkkejä on valtava määrä - osa suoraan kehitysympäristöstä, osa löytyy netistä. Tämä tekee minut varmasti iloiseksi. Otamme koodin, yhdistämme osan, varmistamme, että se toimii, sitten alamme muuttaa sitä tehtäväämme sopivaksi. Lapsi tekee kytkennät kaavion mukaan ja jossain valvonnassani. Tämä on hyvä. Sinun on myös kyettävä työskentelemään tarkasti ohjeiden mukaan.

Työjärjestys ("erityisestä yleiseen")

Tämä on vaikea kohta. Sinun on opittava, että iso projekti ("tee robotti") koostuu pienistä tehtävistä ("kytke anturi", "kytke moottorit"...) ja ne puolestaan ​​koostuvat vielä pienemmistä vaiheista ("etsi a ohjelma", "liitä kortti." ", "Lataa laiteohjelmisto"...). Suorittamalla enemmän tai vähemmän ymmärrettäviä alemman tason tehtäviä "suljemme" keskitason tehtävät ja niistä muodostuu kokonaistulos. Selitin, mutta uskon, että oivallus ei tule pian. Jossain luultavasti teini-iässä.

Asennus

Poraus, kierteet, ruuvit, mutterit, juottaminen ja hartsin haju - missä olisimme ilman sitä? Lapsi sai perustaidon "Työskentely juotosraudalla" - hän onnistui juottamaan useita liitoksia (auttoin vähän, en piilota sitä). Älä unohda turvallisuusselvitystä.

Tietokonetyöt

Kirjoitin ohjelman robotille, mutta onnistuin silti saavuttamaan suotuisia tuloksia.

Ensin: englanti. He olivat juuri aloittaneet sen koulussa, joten meillä oli vaikeuksia selvittää, mitä pishalka, migalka, yarkost ja muut translitteraatiot ovat. Ainakin me ymmärsimme tämän. En tarkoituksella käyttänyt englanninkielisiä sanoja, koska emme ole vielä saavuttaneet tätä tasoa.

Toinen: tehokas työ. Opetelimme pikanäppäinyhdistelmiä ja tavanomaisten toimintojen nopeaa suorittamista. Ajoittain, kun kirjoitimme ohjelmaa, vaihdoimme poikani kanssa paikkoja ja sanoin mitä piti tehdä (korvaus, haku jne.). Minun piti toistaa uudestaan ​​​​ja uudestaan: "kaksoisnapsauta valinta", "pitäkää Shift", "pidä Ctrl" ja niin edelleen. Oppimisprosessi ei ole nopea, mutta uskon, että taidot tallentuvat vähitellen "alakuoreen".

Piilotettu tekstiVoidaan sanoa, että yllä oleva on melkein ilmeistä. Mutta rehellisesti, tänä syksynä minulla oli mahdollisuus opettaa tietojenkäsittelytiedettä 9. luokalla yhdessä koulussa. Se on kamalaa. Opiskelijat eivät osaa sellaisia ​​perusasioita kuin Ctrl + Z, Ctrl + C ja Ctrl + V, tekstin valinta pitämällä Shift-näppäintä painettuna tai kaksoisnapsauttamalla sanaa ja niin edelleen. Tämä siitä huolimatta, että he opiskelivat tietojenkäsittelytiedettä kolmatta vuotta... Tee omat johtopäätöksesi.

Kolmanneksi: kosketuskirjoitus. Uskoin koodin kommentit lapsen tehtäväksi kirjoittaa (anta harjoitella). Laitoimme heti kätemme oikein, jotta sormemme muistivat vähitellen avainten sijainnin.

Kuten näette, olemme vasta alussa. Jatkamme taitojen ja tietojemme hiomista, niistä on hyötyä elämässä.

Muuten tulevaisuudesta...

Jatkokehitys

Robotti on tehty, ajaa, vilkuttaa ja piippaa. Mitä nyt? Saavutustemme innoittamana aiomme kehittää sitä edelleen. On ajatus tehdä kaukosäädin - kuten kuukulkija. Kaukosäätimen ääressä istuen olisi mielenkiintoista ohjata täysin eri paikassa ajavan robotin liikettä. Mutta se lienee eri tarina...

Ja lopussa itse asiassa tämän artikkelin sankarit (video napsauttamalla):

Kokemus ensimmäisen robotin luomisesta Arduinoon (robotti "metsästäjä")

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

Linkki koodiin

Lähde: will.com

Lisää kommentti