Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

Hello.

Yn dit artikel wol ik it proses beskriuwe fan it gearstallen fan myn earste robot mei Arduino. It materiaal sil nuttich wêze foar oare begjinners lykas my dy't in soarte fan "selsrinnende karre" wolle meitsje. It artikel is in beskriuwing fan 'e stadia fan wurkjen mei myn tafoegings op ferskate nuânses. In keppeling nei de definitive koade (wierskynlik net de meast ideale) wurdt jûn oan 'e ein fan it artikel.

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

As it mooglik wie, haw ik myn soan (8 jier âld) belutsen by it meidwaan. Wat der krekt mei wurke en wat net - ik haw in diel fan it artikel oan dit wijd, miskien sil it nuttich wêze foar ien.

Algemiene beskriuwing fan de robot

Earst in pear wurden oer de robot sels (it idee). Ik woe yn it begjin net echt wat standert gearstalle. Tagelyk, de set fan komponinten wie frij standert - chassis, motors, ultrasone sensor, line sensor, LED's, tweeter. Yn earste ynstânsje waard in robot útfûn út dizze "soepset" dy't har territoarium beskermet. Hy rydt nei de oertreder dy't de sirkelline oerstutsen is, en komt dan werom nei it sintrum. Dizze ferzje fereasket lykwols in tekene line, plus ekstra wiskunde om altyd yn 'e sirkel te bliuwen.

Dêrom, nei wat tinken, feroare ik it idee wat en besleat om in "jager" robot te meitsjen. By it begjin draait it om syn as, en kiest in tichtby doel (persoan). As de "proai" wurdt ûntdutsen, set de "jager" de flitsende ljochten en sirene oan en begjint der nei te riden. As de persoan fuort giet / rint fuort, selekteart de robot in nij doel en ferfolget it, ensfh. Sa'n robot hat gjin beheinde sirkel nedich, en it kin wurkje yn iepen gebieten.

Sa't jo sjen kinne, is dit in protte as in spultsje fan catch-up. Hoewol't de robot op it lêst net fluch genôch bliek te wêzen, ynteraktearret er earlik mei de minsken om him hinne. Benammen bern fine it leuk (soms liket it lykwols dat se op it punt steane te traapjen, har hert slacht in slach...). Ik tink dat dit in goede oplossing foar popularizing technyske design.

Robot struktuer

Dat, wy hawwe besletten oer it idee, litte wy fierder gean opmaak. De list mei eleminten wurdt foarme út wat de robot kin dwaan. Alles hjir is frij dúdlik, dus litte wy fuortendaliks nei de nûmering sjen:

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

De "harsens" fan 'e robot binne in arduino uno board (1); wie yn in set besteld út Sina. Foar ús doelen is it genôch (wy rjochtsje ús op it oantal brûkte pins). Ut deselde kit namen wy in klear chassis (2), wêrby't twa oandriuwtsjillen (3) en ien efterkant (frij draaiend) (4) befestige binne. De kit omfette ek in klearmakke batterijromte (5). Foar de robot is d'r in ultrasone sensor (HC-SR04) (6), yn 'e efterkant is d'r in motorbestjoerder (L298N) (7), yn it sintrum is d'r in LED-flitser (8), en in bytsje nei de kant is der in tweeter (9).

Yn it opmaakstadium sjogge wy nei:

- sadat alles past
- yn lykwicht te wêzen
- rasjoneel pleatst wurde

Us Sineeske kollega's hawwe dit al foar in part foar ús dien. Sa, de swiere batterij compartment wurdt pleatst yn it sintrum, en de oandriuwing tsjillen lizze likernôch ûnder it. Alle oare boards binne lichtgewicht en kinne wurde pleatst op 'e perifery.

Nuances:

  1. It chassis út de kit hat in protte fabryk gatten, mar ik haw noch net útmakke wat de logika is yn harren. De motoren en batterijpakket waarden sûnder problemen befeilige, doe begon de "oanpassing" mei it boarjen fan nije gatten om dit of dat boerd te befeiligjen.
  2. De koperen rekken en oare befestigings fan opslachgebieten wiene in grutte help (soms moasten wy se derút krije).
  3. Ik brocht de busbars fan elk boerd troch de klemmen (wer fûn ik se yn opslach). Hiel handich, alle triedden lizze moai en bongelje net.

Yndividuele blokken

No gean ik troch blokken en ik sil jo persoanlik fertelle oer elk.

batterij compartment

It is dúdlik dat de robot in goede boarne fan enerzjy hawwe moat. Opsjes kinne ferskille, ik keas de opsje mei 4 AA-batterijen. Yn totaal jouwe se sawat 5 V, en dizze spanning kin direkt tapast wurde op 'e 5V-pin fan it arduino-boerd (de stabilisator omgean).

Fansels hie ik wat foarsichtigens, mar dizze oplossing is frij wurkber.

Om't macht oeral nedich is, makke ik foar it gemak twa ferbiningen yn it sintrum fan 'e robot: ien "ferspriedt" de grûn (rjochts), en de twadde - 5 V (links).

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

Motors en bestjoerder

Earst, oer it montearjen fan de motoren. De berch is fabryk makke, mar makke mei grutte tolerânsjes. Mei oare wurden, de motoaren kinne in pear millimeters links en rjochts wobbelje. Foar ús taak is dit net kritysk, mar op guon plakken kin it effekt hawwe (de robot sil nei de kant begjinne te bewegen). Krekt yn gefal, ik set de motors strikt parallel en fêstmakke se mei lijm.

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

Om de motoren te kontrolearjen, lykas ik hjirboppe skreau, wurdt de L298N-bestjoerder brûkt. Neffens de dokumintaasje hat it trije pins foar elke motor: ien foar it feroarjen fan de snelheid en in pear pins foar de rotaasjerjochting. Der is ien wichtich punt hjir. It docht bliken dat as de levering spanning 5 V is, dan wurket de snelheidskontrôle gewoan net! Dat is, of it draait hielendal net, of it draait nei it maksimum. Dit is de funksje dy't feroarsake dat ik in pear jûnen "deadzje". Op it lêst fûn ik earne in fermelding op ien fan 'e foarums.

Yn 't algemien hie ik in lege rotaasjesnelheid nedich by it draaien fan' e robot - sadat it tiid hie om de romte te scannen. Mar, om't fan dit idee neat kaam, moast ik it oars dwaan: in lytse bocht - stopje - draaie - stopje, ensfh Wer net sa elegant, mar wurkber.

Ik sil ek tafoegje hjir dat nei eltse efterfolging de robot kiest in willekeurige rjochting foar in nije beurt (de klok mei of tsjin de klok yn).

Ultrasone sensor

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

In oar stik hardware wêr't wy nei in kompromisoplossing sykje moasten. De ultrasone sensor produseart ynstabile sifers op echte obstakels. Eins waard dit ferwachte. Ideaallik wurket it earne yn kompetysjes wêr't glêde, sels en perpendikulêre oerflakken binne, mar as de skonken fan ien "flitser" foar har, moat ekstra ferwurking ynfierd wurde.

As sadanich ferwurking ik set mediaan filter foar trije tellen. Op grûn fan tests op echte bern (gjin bern waarden skea by de tests!), die bliken genôch te wêzen om de gegevens te normalisearjen. De natuerkunde hjir is ienfâldich: wy hawwe sinjalen wjerspegele fan needsaaklik objekten (it jaan fan de fereaske ôfstân) en wjerspegele fan fierdere, bygelyks, muorren. De lêste binne willekeurige emissies yn mjittingen fan 'e foarm 45, 46, 230, 46, 46, 45, 45, 310, 46 ... It is dizze dy't it mediaanfilter ôfsnijt.

Nei alle ferwurking krije wy de ôfstân nei it tichtste objekt. As it minder is as in bepaalde drompelwearde, dan skeakelje wy it alaarm oan en ride direkt nei de "ynbrekker".

Flikker en sirene

Miskien wol de ienfâldichste eleminten fan al it boppesteande. Se binne te sjen op de foto's hjirboppe. D'r is hjir neat te skriuwen oer hardware, dus litte wy no fierder gean koade.

Kontrolearje programma

Ik sjoch it punt net yn it beskriuwen fan de koade yn detail, wa hat it nedich - de keppeling is oan 'e ein fan it artikel, alles is dêr frij lêsber. Mar it soe moai wêze om de algemiene struktuer út te lizzen.

It earste wat wy moasten begripe wie dat in robot in real-time apparaat is. Krekter, om te ûnthâlden, want sawol foar as no wurkje ik noch yn de elektroanika. Dat, wy ferjitte daliks de útdaging fertrage (), dy't se graach brûke yn foarbyldsketsen, en dy't it programma gewoan foar in bepaalde perioade "befriest". Ynstee, lykas betûfte minsken advisearje, yntrodusearje wy timers foar elk blok. It fereaske ynterval is foarby - de aksje is útfierd (fergrutte de helderheid fan 'e LED, draaide de motor, ensafuorthinne).

Timers kinne wurde ferbûn. Bygelyks, de tweeter wurket synchroon mei de flasher. Dit simplifies it programma in bytsje.

Fansels brekke wy alles op yn aparte funksjes (flitsende ljochten, lûd, draaien, foarútgean, ensfh.). As jo ​​dit net dogge, dan kinne jo net útfine wat wêr en wêr komt.

Nuânses fan pedagogyk

Ik die alles hjirboppe beskreaun yn myn frije tiid jûns. Op in rêstige manier brocht ik sa'n trije wiken op 'e robot. Dit koe hjir einigje, mar ik haw ek tasein jo te fertellen oer it wurkjen mei in bern. Wat kin dien wurde op dizze leeftyd?

Wurkje neffens ynstruksjes

Wy hawwe earst elk detail apart kontrolearre - LED's, tweeter, motors, sensoren, ensfh. D'r binne in grut oantal ready-made foarbylden - guon rjochts yn 'e ûntwikkelingsomjouwing, oaren kinne fûn wurde op it ynternet. Dit makket my grif bliid. Wy nimme de koade, ferbine it diel, soargje derfoar dat it wurket, dan begjinne wy ​​it te feroarjen om ús taak te passen. It bern makket de ferbiningen neffens it diagram en ûnder guon fan myn tafersjoch. Dit is goed. Jo moatte ek strikt neffens ynstruksjes wurkje kinne.

Oarder fan wurk ("fan partikulier nei algemien")

Dit is in dreech punt. Jo moatte leare dat in grut projekt ("in robot meitsje") bestiet út lytse taken ("ferbine in sensor," "ferbine motors" ...), en dy, op har beurt, besteane út noch lytsere stappen ("fine a programma," "ferbine in boerd." ", "downloade firmware"...). Troch it útfieren fan mear of minder begryplike taken fan it legere nivo, "slute" wy de taken fan it middennivo, en fan har wurdt it algemiene resultaat foarme. Ik lei út, mar ik tink dat de realisaasje net gau komme sil. Earne, wierskynlik, troch adolesinsje.

Mounting

Boarjen, triedden, skroeven, moeren, solderen en de geur fan rosin - wêr soene wy ​​sûnder wêze? It bern krige de basisfeardigens "Werken mei in soldering izer" - hy slagge om ferskate ferbiningen te solderjen (ik holp in bytsje, ik sil it net ferbergje). Ferjit net oer de feiligensútlis.

Kompjûter wurk

Ik skreau it programma foar de robot, mar ik wist dochs wat geunstige resultaten te berikken.

Earste: Ingelsk. Se wiene der krekt op skoalle mei begûn, dus we hienen it dreech om út te finen wat pishalka, migalka, yarkost en oare transliteraasjes wiene. Wy begrepen dit teminsten. Ik haw bewust gjin lânseigen Ingelske wurden brûkt, om't wy dit nivo noch net hawwe berikt.

Twadde: effisjint wurk. Wy learden fluchtoetskombinaasjes en hoe't jo fluch standert operaasjes kinne útfiere. Periodyk, doe't wy it programma skriuwe, wikselen myn soan en ik plakken, en ik sei wat dien wurde moast (ferfanging, sykje, ensfh.). Ik moast wer en wer werhelje: "dûbelklik selektearje", "Hâld Shift", "hâld Ctrl" ensafuorthinne. It learproses hjir is net fluch, mar ik tink dat de feardichheden stadichoan sille wurde dellein "yn 'e subcortex."

Ferburgen tekstJo kinne sizze dat it boppesteande hast fanselssprekkend is. Mar, earlik sein, hie ik dizze hjerst de kâns om kompjûterwittenskip yn 'e 9e klasse op ien skoalle te learen. Dat is ôfgryslik. Learlingen witte net sokke basis dingen as Ctrl + Z, Ctrl + C en Ctrl + V, tekst selektearje wylst Shift yndrukt of dûbelklikke op in wurd, ensfh. Dit nettsjinsteande it feit dat se yn har tredde jier ynformatika studearje... Teken jo eigen konklúzje.

Tredde: oanreitsje typen. Ik fertroude de opmerkingen yn 'e koade oan it bern om te typen (lit him oefenje). Wy sette ús hannen fuortendaliks goed, sadat ús fingers stadichoan de lokaasje fan 'e toetsen ûnthâlde.

Sa't jo sjen kinne, binne wy ​​noch krekt begon. Wy sille trochgean mei it ferbetterjen fan ús feardigens en kennis; se sille nuttich wêze yn it libben.

Trouwens, oer de takomst ...

Fierdere ûntwikkeling

De robot wurdt makke, rydt, knippert en piept. Wat no? Ynspirearre troch wat wy hawwe berikt, binne wy ​​fan plan it fierder te ferfine. D'r is in idee om in ôfstânsbetsjinning te meitsjen - lykas in moannerover. It soe nijsgjirrich wêze, sittend op in ôfstânsbetsjinning, om de beweging te kontrolearjen fan in robot dy't op in folslein oar plak rydt. Mar dat wurdt in oar ferhaal...

En oan it ein, yn feite, de helden fan dit artikel (fideo troch te klikken):

Underfining fan it meitsjen fan de earste robot op Arduino (robot "jager")

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

Link nei koade

Boarne: www.habr.com

Add a comment