LEGO Mindstorms EV3. Igrača Skynet. Začetek. Delo z Lego Mindstorms EV3 iz gumba .NET Ev3, ki opravi pregled

Opis predstavitve po posameznih diapozitivih:

1 diapozitiv

Opis diapozitiva:

2 diapozitiv

Opis diapozitiva:

Vmesnik EV3 Brick EV3 Brick je nadzorni center, ki napaja vaše robote. Z zaslonom, kontrolnimi gumbi Brick in vmesnikom EV3 Brick, ki vsebuje štiri glavna okna, imate dostop do neverjetne raznolikosti edinstvene lastnosti EV3 modul. To so lahko preproste funkcije, kot je zagon in zaustavitev programa, ali zapletene, kot je pisanje samega programa.

3 diapozitiv

Opis diapozitiva:

Vmesnik: meni EV3 ima meni, ki je sestavljen iz 4 delov: nedavni programi, navigacija po datotekah, kocka, aplikacije, nastavitve kocke.

4 diapozitiv

Opis diapozitiva:

Nedavni programi Zaženite programe, ki ste jih nedavno prenesli iz namiznega računalnika. To okno bo ostalo prazno, dokler ne začnete prenašati in izvajati programov. V tem oknu bodo prikazani programi, ki ste jih nedavno zagnali. Program na vrhu seznama, ki je privzeto izbran, je program, ki je bil nazadnje zagnan.

5 diapozitiv

Opis diapozitiva:

Upravitelj datotek Dostopajte in upravljajte vse datoteke, shranjene v pomnilniku mikroračunalnika in na pomnilniški kartici. V tem oknu boste dostopali in upravljali vse datoteke v vaši EV3 Brick, vključno z datotekami, shranjenimi na kartici SD. Datoteke so organizirane v projektne mape, ki poleg dejanskih programske datoteke vsebujejo tudi zvoke in slike, uporabljene v vsakem projektu. Datoteke lahko premikate ali brišete s pomočjo navigatorja datotek. Programi, ustvarjeni z uporabo okolja za programiranje modulov in aplikacij za beleženje podatkov modulov, so shranjeni ločeno v mapah BrkProg_SAVE in BrkDL_SAVE.

6 diapozitiv

Opis diapozitiva:

EV3 Control Box Applications ima 4 vnaprej nameščene aplikacije: A. Port View. B. Nadzor motorja. B. IR nadzor. D. Programsko okolje modula.

7 diapozitiv

Opis diapozitiva:

A. Port View V prvem oknu aplikacije Port View lahko hitro vidite, na katera vrata so priključeni senzorji ali motorji. Uporabite gumbe za upravljanje EV3 Brick za navigacijo do enega od zasedenih vrat in videli boste trenutne odčitke senzorja ali motorja. Namestite več senzorjev in motorjev ter eksperimentirajte z njimi različne nastavitve. Če si želite ogledati ali spremeniti trenutne nastavitve za nameščene motorje in senzorje, pritisnite sredinski gumb. Za vrnitev v glavno okno aplikacije modula kliknite gumb »Nazaj«.

8 diapozitiv

Opis diapozitiva:

B. Nadzor motorja Nadzirajte gibanje naprej ali nazaj katerega koli motorja, priključenega na enega od štirih izhodnih vrat. Obstajata dva različna načina. V enem načinu boste lahko krmilili motorje, priključene na vrata A (z gumboma gor in dol) in na vrata D (z gumboma levo in desno). V drugem načinu upravljate motorje, priključene na vrata B (z gumboma gor in dol) in vrata C (z gumboma levo in desno). Preklapljanje med tema dvema načinoma poteka z osrednjim gumbom. Za vrnitev v glavno okno aplikacije modula kliknite gumb »Nazaj«.

Diapozitiv 9

Opis diapozitiva:

IR nadzor Nadzirajte gibanje naprej ali nazaj katerega koli motorja, priključenega na enega od štirih izhodnih vrat, z uporabo oddaljenega infrardečega svetilnika kot daljinec in infrardeči senzor kot sprejemnik (infrardeči senzor mora biti priključen na vrata 4 na EV3 Brick). Obstajata dva različna načina. V enem načinu boste uporabljali kanala 1 in 2 na oddaljenem infrardečem svetilniku. Na kanalu 1 boste lahko krmilili motorje, priključene na vrata B (z gumboma 1 in 2 na daljinskem IR-svetilniku) in vrata C (z uporabo gumbov 3 in 4 na daljinskem IR-svetilniku). Na kanalu 2 boste lahko krmilili motorje, priključene na priključek A (z gumboma 1 in 2) in na priključek D (z gumboma 3 in 4). V drugem načinu lahko krmilite motorje na enak način, namesto tega pa uporabite kanala 3 in 4 na oddaljenem infrardečem svetilniku. Preklapljanje med tema dvema načinoma poteka z osrednjim gumbom. Za vrnitev v glavno okno aplikacije modula kliknite gumb »Nazaj«.

10 diapozitiv

Opis diapozitiva:

Programsko okolje Brick EV3 Brick ima nameščeno programsko opremo. Podobno kot aplikacija programsko opremo nameščen na vašem računalniku. Ta navodila vsebujejo osnovne informacije, ki jih potrebujete za začetek.

11 diapozitiv

Opis diapozitiva:

Nastavitve kocke EV3 V tem oknu si lahko ogledate in prilagodite različne Splošne nastavitve v EV3 Brick.

12 diapozitiv

Opis diapozitiva:

Prilagajanje glasnosti Glasnost lahko povečate ali zmanjšate na zavihku Nastavitve v EV3.

Diapozitiv 13

USB povezava

LEGO Mindstorms EV3 se lahko poveže z osebnim računalnikom ali drugim EV3 prek povezave USB. Hitrost in stabilnost povezave sta v tem primeru boljši kot pri kateri koli drugi metodi, vključno z Bluetoothom.

LEGO Mindstorms EV3 ima dva USB priključka.

Komunikacija med LEGO EV3 in drugimi bloki LEGO EV3 v verižnem načinu.

Verižni način se uporablja za povezovanje dveh ali več kock LEGO EV3.

Ta način:

  • zasnovan za povezavo več kot enega LEGO Mindstorms EV3;
  • služi za povezavo več senzorji, motorji in druge naprave;
  • omogoča komunikacijo med več LEGO Mindstorms EV3 (do 4), kar nam daje do 16 zunanjih vrat in prav toliko notranjih vrat;
  • omogoča nadzor celotne verige iz glavnega LEGO Mindstorms EV3;
  • ne more delovati, ko je aktiven Wi-Fi povezava ali Bluetooth.

Če želite omogočiti način verižne povezave, pojdite v okno z nastavitvami projekta in potrdite polje.

Ko je izbran ta način, lahko za kateri koli motor izberemo blok EV3, ki bo uporabljen, in potrebne senzorje.

Tabela prikazuje možnosti za uporabo blokov EV3:

Akcija

Srednji motor

Velik motor

Krmiljenje

Neodvisno upravljanje

Žiroskopski

Infrardeči

Ultrazvočni

Vrtenje motorja

Temperature

Merilnik energije

Zvok

Povezava preko Bluetooth

Bluetooth omogoča LEGO Mindstorms EV3 povezavo z osebnim računalnikom, drugimi LEGO Mindstorms EV3, pametnimi telefoni in drugimi napravami Bluetooth. Doseg komunikacije preko Bluetooth je do 25 m.

Na en LEGO Mindstorms EV3 lahko povežete do 7 blokov. EV3 Master Brick vam omogoča pošiljanje in prejemanje sporočil vsakemu podrejenemu EV3. Podrejeni EV3 lahko pošiljajo sporočila samo glavni kocki EV3, ne drug drugemu.

Zaporedje povezave EV3 prek Bluetooth

Če želite med seboj povezati dva ali več blokov EV3 prek Bluetootha, morate izvesti naslednje korake:

1. Odprite zavihek nastavitve.

2. Izberite Bluetooth in pritisnite sredinski gumb.

3. Postavili smo Potrditveno polje vidnost Bluetooth.

4. Preverite, ali je znak Bluetooth ("<") виден на верхней левой стороне.

5. Izvedite zgornji postopek za zahtevano število kock EV3.

6. Pojdite na zavihek Povezava:

7. Kliknite na gumb Iskanje:

8. Izberite EV3, s katerim se želite povezati (ali s katerim se želite povezati), in pritisnite sredinski gumb.

9. Prvi in ​​drugi blok povezujemo s ključem za dostop.

Če vse naredite pravilno, se v zgornjem levem kotu prikaže ikona "<>", povežite ostale bloke EV3 na enak način, če sta več kot dva.

Če izklopite LEGO EV3, bo povezava prekinjena in morali boste ponoviti vse korake.

Pomembno: vsak blok mora imeti napisan svoj program.

Primer programa:

Prvi blok: Ko pritisnete senzor za dotik, prvi blok EV3 prenese besedilo drugemu bloku z zamikom 3 sekund (glavni blok).

Primer programa za blok 2:

Drugi blok čaka, da prejme besedilo iz prvega bloka, in ko ga prejme, bo za 10 sekund prikazal besedo (v našem primeru besedo "Hello") (podrejeni blok).

Povežite se prek Wi-Fi

Komunikacija z daljšim dosegom je mogoča s povezavo ključka Wi-Fi na vrata USB na EV3.

Če želite uporabljati Wi-Fi, morate namestiti poseben modul na blok EV3 s priključkom USB (adapter Wi-Fi (brezžični adapter Netgear N150 (WNA1100) ali pa lahko povežete ključ Wi-Fi.

Tradicionalno so roboti zgrajeni na platformi Lego Mindstorms EV3, so programirani z uporabo grafičnega okolja LabVIEW. V tem primeru se programi izvajajo na krmilniku EV3, robot pa deluje avtonomno. Tukaj bom govoril o alternativnem načinu nadzora robota - z uporabo platforme .NET, ki deluje na računalniku.

Toda preden se lotimo programiranja, si poglejmo nekaj primerov, kjer bi to lahko bilo koristno:

  • Zahteva daljinsko upravljanje robota iz prenosnika (na primer s pritiskom na gumbe)
  • Potrebno je zbirati podatke iz krmilnika EV3 in jih obdelati v zunanjem sistemu (na primer za sisteme IoT)
  • Vse druge situacije, ko želite napisati kontrolni algoritem v .NET in ga zagnati iz računalnika, povezanega s krmilnikom EV3

LEGO MINDSTORMS EV3 API za .NET

Krmilnik EV3 se krmili iz zunanjega sistema s pošiljanjem ukazov v serijska vrata. Sam format ukaza je opisan v kompletu za razvijalce komunikacij.

Toda ročno izvajanje tega protokola je dolgočasno. Zato lahko uporabite že pripravljen ovoj .NET, ki ga je skrbno napisal Brian Peek. Izvorna koda za to knjižnico gostuje na Githubu, paket, pripravljen za uporabo, pa lahko najdete na Nugetu.

Povezovanje s krmilnikom EV3

Razred Brick se uporablja za komunikacijo s krmilnikom EV3. Ko ustvarjate ta objekt, morate konstruktorju posredovati implementacijo vmesnika ICommunication – objekt, ki opisuje, kako se povezati s krmilnikom EV3. Na voljo so izvedbe UsbCommunication, BluetoothCommunication in NetworkCommunication (povezava WiFi).

Najbolj priljubljena povezava je prek povezave Bluetooth. Oglejmo si podrobneje ta način povezave.

Preden se lahko programsko povežemo s krmilnikom prek Bluetootha, mora biti krmilnik povezan z računalnikom preko nastavitev operacijskega sistema.

Ko je krmilnik povezan, pojdite na nastavitve Bluetooth in izberite zavihek COM ports. Najdemo svojega krmilnika, ki ga potrebujemo odhodni pristanišče. Določili ga bomo pri ustvarjanju objekta BluetoothCommunication.

Koda za povezavo s krmilnikom bo videti takole:

Javno asinhrono opravilo Connect(komunikacija ICommunication) ( var communication = new BluetoothCommunication("COM9"); var brick = _brick = new Brick(communication); await _brick.ConnectAsync(); )

Po želji lahko določite časovno omejitev povezave s krmilnikom:

Počakajte _brick.ConnectAsync(TimeSpan.FromSeconds(5));

Povezava z enoto prek USB ali WiFi poteka na enak način, le da se uporabljata objekta UsbCommunication in NetworkCommunication.

Vsa nadaljnja dejanja, ki se izvajajo na krmilniku, se izvedejo prek objekta Brick.

Zavrtimo motorje

Za izvajanje ukazov na krmilniku EV3 dostopamo do lastnosti DirectCommand objekta Brick. Najprej poskusimo zagnati motorje.

Predpostavimo, da je naš motor priključen na vrata A krmilnika, potem bo delovanje tega motorja pri 50 % moči videti takole:

Počakajte _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50);

Obstajajo tudi drugi načini za nadzor motorja. Na primer, motor lahko zavrtite na določen kot z uporabo metod StepMotorAtPowerAsync() in StepMotorAtSpeedAsync(). Na voljo je več načinov, ki so variacije načinov vklopa motorjev - po času, hitrosti, moči itd.

Prisilna zaustavitev se izvede z metodo StopMotorAsync():

Počakajte _brick.DirectCommand.StopMotorAsync(OutputPort.A, true);

Drugi parameter označuje uporabo zavore. Če ga nastavite na false, se bo motor zaustavil.

Branje vrednosti iz senzorjev

Krmilnik EV3 ima štiri priključke za priklop senzorjev. Poleg tega imajo motorji vgrajene dajalnike, kar omogoča njihovo uporabo kot senzorje. Kot rezultat imamo 8 vrat, iz katerih je mogoče brati vrednosti.

Do vrat za branje vrednosti lahko dostopate prek lastnosti Ports objekta Brick. Vrata so zbirka vrat, ki so na voljo na krmilniku. Če želite delati z določenimi vrati, jih morate torej izbrati. InputPort.One ... InputPort.Four so vrata senzorjev, InputPort.A ... InputPort.D pa so dajalniki motorja.

Var port1 = _brick.Ports;

Senzorji v EV3 lahko delujejo v različnih načinih. Barvni senzor EV3 se lahko na primer uporablja za merjenje svetlobe okolice, merjenje odbite svetlobe ali zaznavanje barv. Zato, da senzorju natančno »povemo«, kako ga želimo uporabljati, moramo nastaviti njegov način:

Brick.Ports.SetMode(ColorMode.Reflective);

Zdaj, ko je senzor priključen in nastavljen način delovanja, lahko berete podatke z njega. Dobite lahko "surove" podatke, obdelano vrednost in odstotno vrednost.

Float si = _brick.Ports.SIValue; int raw = _brick.Ports.RawValue; odstotek bajtov = _brick.Ports.PercentValue;

Lastnost SIValue vrne obdelane podatke. Vse je odvisno od tega, kateri senzor se uporablja in v kakšnem načinu. Na primer, pri merjenju odbite svetlobe bomo dobili vrednosti od 0 do 100, odvisno od jakosti odbite svetlobe (črna/bela).

Lastnost RawValue vrne neobdelano vrednost, pridobljeno iz ADC. Včasih je bolj priročno uporabiti za nadaljnjo obdelavo in uporabo. Mimogrede, v razvojnem okolju EV3 je mogoče pridobiti tudi "surove" vrednosti - za to morate uporabiti blok z modre plošče.

Če senzor, ki ga uporabljate, pričakuje, da bo prejel vrednosti v odstotkih, potem lahko uporabite tudi lastnost PercentValue.

Izvajanje ukazov v paketih

Recimo, da imamo robotski voziček z dvema kolesoma in ga želimo namestiti na svoje mesto. V tem primeru se morata kolesi vrteti v nasprotni smeri. Če uporabimo DirectCommand in krmilniku zaporedno pošljemo dva ukaza, lahko med njunima izvajanjema mine nekaj časa:

Počakajte _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); await _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B, -50);

V tem primeru pošljemo ukaz za vrtenje motorja A s hitrostjo 50, po uspešnem pošiljanju tega ukaza ponovimo isto z motorjem, priključenim na vrata B. Težava je v tem, da se pošiljanje ukazov ne zgodi takoj, zato motorji se lahko začne vrteti ob različnih časih - med prenosom ukaza za vrata B, motor A že se bo začelo vrteti.

Če je za nas kritično, da se motorji vrtijo istočasno, lahko krmilniku pošiljamo ukaze v »svežnju«. V tem primeru bi morali uporabiti lastnost BatchCommand namesto DirectCommand:

Brick.BatchCommand.TurnMotorAtPower(OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower(OutputPort.B, -50); await _brick.BatchCommand.SendCommandAsync();

Zdaj se pripravita dva ukaza hkrati, nato pa se pošljeta krmilniku v enem paketu. Krmilnik bo po prejemu teh ukazov začel istočasno vrteti motorje.

Kaj drugega lahko storite

Poleg vrtenja motorjev in branja vrednosti senzorjev lahko na krmilniku EV3 izvajate številna druga dejanja. Ne bom se spuščal v podrobnosti o vsakem od njih, navedel bom le seznam, kaj je mogoče storiti:

  • CleanUIAsync(), DrawTextAsync(), DrawLineAsync() itd. - manipulacija z vgrajenim zaslonom krmilnika EV3
  • PlayToneAsync() in PlaySoundAsync() - uporabite vgrajeni zvočnik za predvajanje zvokov
  • WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (iz SystemCommand) - delo z datotekami

Zaključek

Uporaba .NET za nadzor robotov Mindstorms EV3 dobro prikazuje, kako lahko tehnologije iz "različnih svetov" delujejo skupaj. Kot rezultat raziskovanja API-ja EV3 za .NET je nastala majhna aplikacija, ki omogoča upravljanje robota EV3 iz računalnika. Na žalost obstajajo podobne aplikacije za NXT, vendar jih je EV3 zaobšel. Hkrati so uporabni pri nadzorovanih robotskih tekmovanjih, kot je robotski nogomet.

Aplikacijo lahko prenesete in namestite s te povezave:

Izberite način zaslona

Izbira načina
Blokiraj besedilno polje
Vložki
Gumb za predogled

Z izbirnikom načina izberite vrsto besedila ali grafike, ki jo želite videti. Po izbiri načina lahko izberete vhodne vrednosti. Razpoložljivi vhodi se razlikujejo glede na način. Načini in vnosi so opisani spodaj.

Lahko kliknete gumb Predogled za predogled, kaj bo zaslonski blok prikazal na zaslonu EV3. Pogled lahko pustite odprt, medtem ko izbirate vhodne vrednosti za blok.

Zaslonske koordinate

Številni načini zaslonskega bloka uporabljajo koordinate X in Y za določanje lokacije elementa. Koordinate določajo položaj slikovnih pik na zaslonu EV3 Brick. Položaj (0, 0) je v zgornjem levem kotu zaslona, ​​kot je prikazano na spodnji sliki.

Dimenzije zaslona: 178 pikslov v širino in 128 pikslov v višino. Razpon vrednosti koordinat X je od 0 na zaslonu na levi do 177 na desni. Razpon vrednosti koordinate Y je od 0 na vrhu do 127 na dnu.

Namigi in triki

Za pomoč pri iskanju pravilnih zaslonskih koordinat lahko uporabite gumb Predogled v zgornjem levem kotu bloka zaslona.

Besedilo – slikovne pike

Besedilo – način slikovnih pik vam omogoča prikaz besedila kjer koli na zaslonu EV3 Brick.

Ponastavi okno

Način ponastavi okno vrne zaslon EV3 Brick na standardni informacijski zaslon, prikazan med izvajanjem programa. Ta zaslon prikazuje ime programa in druge povratne informacije. Ko zaženete program na EV3 Brick, se ta zaslon prikaže, preden se zažene prvi blok zaslona programa.

Zagotavljanje vidnosti prikazanih elementov

Ko se program EV3 zaključi, se zaslon EV3 Brick počisti in vrne na zaslon menija EV3 Brick. Vsako besedilo ali grafika, ki jo prikaže program, bo izbrisana. Če ima vaš program na primer en blok "Zaslon" in nič drugega, se bo zaslon takoj po koncu programa tako hitro počistil, da ne boste videli rezultatov bloka "Zaslon".

Če želite, da zaslon ostane viden tudi po zaključku programa, morate na konec programa dodati blok, da preprečite takojšnjo končanje programa, kot je prikazano v naslednjih primerih.

Prikaz več predmetov

Če želite na zaslonu prikazati več besedilnih ali grafičnih elementov hkrati, je pomembno, da ne počistite zaslona EV3 Brick med elementi. Vsak način bloka Screen ima vnos Clear Screen. Če je možnost Clear Screen nastavljena na true, bo celoten zaslon počiščen, preden se prikaže element. To pomeni, da morate za prikaz več elementov nastaviti Clear Screen na False za vsak zaslonski blok, razen za prvi.

Prikaz številk

Če želite v svojem programu prikazati številsko vrednost, povežite podatkovno vodilo z vnosom besedila bloka Prikaz besedila. Numerično podatkovno vodilo bo samodejno pretvorjeno v besedilo s pretvorbo vrste podatkovnega vodila (glejte razdelek

Zamisel o zamenjavi mikroračunalnika v oblikovalcu z Beaglebone ali drugim ni nova. Toda z izdajo EV3 je postalo mogoče ne le dobiti 100-odstotni analog, ampak tudi povečati zmogljivost vašega legorobota.

Video predstavitev projekta:

E VB v celoti podpira sistem Lego Mindstorms Ev3 tako na ravni strojne kot programske opreme, 100% združljiv z vsemi senzorji in motorji Lego. Blok deluje enako kot blok Lego Mindstorms EV3:

BeagleBone Black— računalnik z eno ploščo Linux. Je konkurenca Raspberry Pi. Ima močan procesor AM335x 720MHz ARM® procesor, velik število vhodov/izhodov, zmogljivosti se lahko razširijo z dodatnimi ploščami.

Lego Mindstorms EV3 ima procesor ARM9 (TI Sitara AM180x) s frekvenco 300 MHz, zato preklopite na procesor BeagleBone Black 1 GHz ARM Cortex-A8 (TI Sitara AM335x) povečuje produktivnost, poleg tega pa je mogoče priključiti dodatne razširitvene kartice!

Najbolj pomembno je, da ima Lego Mindstorms EV3 odprt opis vse programske in strojne opreme!

Na primer, slavni robot za reševanje Rubikove kocke je bil sestavljen in prikazan. Le da so namesto EV3 vgradili razviti EVB. Vabimo vas k ogledu videa:

Avtorji projekta že proizvajajo in prodajajo EVB. Proizvodnjo nameravajo znatno razširiti do konca aprila 2015. Poleg tega so razvili in izdelujejo več kompatibilnih senzorjev.