LEGO Mindstorms EV3. Toy Skynet. Počni. Rad sa Lego Mindstorms EV3 iz .NET Ev3 dugmeta koje vrši pregled

Opis prezentacije po pojedinačnim slajdovima:

1 slajd

Opis slajda:

2 slajd

Opis slajda:

EV3 Brick Interface EV3 Brick je kontrolni centar koji pokreće vaše robote. Sa ekranom, dugmadima za kontrolu Brick-a i EV3 Brick interfejsom koji sadrži četiri glavna prozora, imate pristup nevjerovatnoj raznolikosti jedinstvene karakteristike EV3 modul. To mogu biti jednostavne funkcije, kao što je pokretanje i zaustavljanje programa, ili složene, poput pisanja samog programa.

3 slajd

Opis slajda:

Interfejs: EV3 meni ima meni koji se sastoji od 4 dijela: Nedavni programi Navigacija datoteka Brick Aplikacije Brick postavke

4 slajd

Opis slajda:

Nedavni programi Pokrenite programe nedavno preuzete sa vašeg desktop računara. Ovaj prozor će ostati prazan dok ne počnete da preuzimate i pokrećete programe. Ovaj prozor će prikazati programe koje ste nedavno pokrenuli. Program na vrhu liste, koji je podrazumevano izabran, je program koji je poslednji pokrenut.

5 slajd

Opis slajda:

Upravljač datotekama Pristup i upravljanje svim datotekama pohranjenim u memoriji mikroračunara, kao i na memorijskoj kartici. Iz ovog prozora ćete pristupiti svim datotekama u vašem EV3 Brick-u i upravljati njima, uključujući datoteke pohranjene na SD kartici. Fajlovi su organizovani u projektne fascikle, koje pored stvarnih programske datoteke također sadrže zvukove i slike korištene u svakom projektu. Datoteke se mogu premještati ili brisati pomoću navigatora datoteka. Programi kreirani korištenjem okruženja za programiranje modula i aplikacija za evidentiranje podataka modula odvojeno se pohranjuju u mape BrkProg_SAVE i BrkDL_SAVE.

6 slajd

Opis slajda:

EV3 Control Box Applications ima 4 unaprijed instalirane aplikacije: A. Port View. B. Kontrola motora. B. IR kontrola. D. Okruženje za programiranje modula.

7 slajd

Opis slajda:

A. Port View U prvom prozoru aplikacije Port View, možete brzo vidjeti koji portovi imaju senzore ili motore povezane na njih. Koristite kontrolne tipke EV3 Brick za navigaciju do jednog od zauzetih portova i vidjet ćete trenutna očitavanja senzora ili motora. Instalirajte nekoliko senzora i motora i eksperimentirajte s njima različite postavke. Za pregled ili promjenu trenutnih postavki za instalirane motore i senzore, pritisnite središnji gumb. Da biste se vratili na glavni prozor aplikacije modula, kliknite na dugme „Nazad“.

8 slajd

Opis slajda:

B. Kontrola motora Kontrolirajte kretanje naprijed ili nazad bilo kojeg motora spojenog na jedan od četiri izlazna porta. Postoje dva različita načina rada. U jednom načinu rada, moći ćete kontrolirati motore spojene na priključak A (pomoću tipki Gore i Dolje) i na port D (pomoću tipki lijevo i desno). U drugom modu, vi upravljate motorima povezanim na port B (pomoću tipki gore i dolje) i port C (pomoću tipki lijevo i desno). Prebacivanje između ova dva režima se vrši pomoću centralnog dugmeta. Da biste se vratili na glavni prozor aplikacije modula, kliknite na dugme „Nazad“.

Slajd 9

Opis slajda:

IR kontrola Kontrolišite kretanje unapred ili unazad bilo kog motora povezanog na jedan od četiri izlazna porta koristeći daljinski infracrveni svetionik kao daljinski upravljač i infracrveni senzor kao prijemnik (infracrveni senzor mora biti povezan na port 4 na EV3 kocki). Postoje dva različita načina rada. U jednom režimu ćete koristiti kanale 1 i 2 na udaljenom infracrvenom faru. Na kanalu 1, moći ćete kontrolisati motore spojene na port B (pomoću dugmadi 1 i 2 na udaljenom IR svjetioniku) i portu C (pomoću tipki 3 i 4 na udaljenom IR svjetioniku). Na kanalu 2 moći ćete kontrolirati motore spojene na port A (pomoću tipki 1 i 2) i na port D (pomoću tipki 3 i 4). U drugom režimu, možete kontrolisati motore na isti način, koristeći kanale 3 i 4 na daljinskom infracrvenom faru. Prebacivanje između ova dva režima se vrši pomoću centralnog dugmeta. Da biste se vratili na glavni prozor aplikacije modula, kliknite na dugme „Nazad“.

10 slajd

Opis slajda:

Brick programsko okruženje EV3 Brick dolazi sa instaliranim softverom na njemu. Slično aplikaciji softver instaliran na vašem računaru. Ove upute sadrže osnovne informacije koje su vam potrebne za početak.

11 slajd

Opis slajda:

EV3 Brick Settings Ovaj prozor vam omogućava da pregledate i prilagodite različite Opšte postavke u EV3 Brick.

12 slajd

Opis slajda:

Podešavanje jačine zvuka Možete povećati ili smanjiti jačinu zvuka na kartici Settings u EV3.

Slajd 13

USB veza

LEGO Mindstorms EV3 se može povezati na PC ili drugi EV3 putem USB veze. Brzina i stabilnost veze u ovom slučaju su bolji nego kod bilo koje druge metode, uključujući Bluetooth.

LEGO Mindstorms EV3 ima dva USB porta.

Komunikacija između LEGO EV3 i drugih LEGO EV3 blokova u lančanom načinu rada.

Daisy chain mode se koristi za povezivanje dva ili više LEGO EV3 blokova.

Ovaj način rada:

  • dizajniran za povezivanje više od jednog LEGO Mindstorms EV3;
  • služi za povezivanje više senzori, motori i drugi uređaji;
  • omogućava komunikaciju između nekoliko LEGO Mindstorms EV3 (do 4), što nam daje do 16 eksternih portova i isti broj internih portova;
  • omogućava kontrolu cijelog lanca iz glavnog LEGO Mindstorms EV3;
  • ne može raditi kada je aktivan Wi-Fi veza ili Bluetooth.

Da biste omogućili način povezivanja u nizu, idite na prozor postavki projekta i označite polje.

Kada je odabran ovaj način rada, tada za bilo koji motor možemo odabrati EV3 blok koji će se koristiti i potrebne senzore.

Tabela prikazuje opcije za korištenje EV3 blokova:

Akcija

Srednji motor

Veliki motor

Upravljanje

Nezavisno upravljanje

Žiroskopski

Infracrveni

Ultrasonic

Motorna rotacija

Temperature

Brojilo energije

Zvuk

Povezivanje putem Bluetooth-a

Bluetooth omogućava LEGO Mindstorms EV3 povezivanje sa računarom, drugim LEGO Mindstorms EV3, pametnim telefonima i drugim Bluetooth uređajima. Domet komunikacije preko Bluetooth-a je do 25 m.

Možete povezati do 7 blokova na jedan LEGO Mindstorms EV3. EV3 Master Brick vam omogućava da šaljete i primate poruke svakom EV3 Slave-u. EV3 Slave-ovi mogu slati poruke samo na EV3 Master Brick, ne jedni drugima.

EV3 sekvenca povezivanja putem Bluetooth-a

Da biste povezali dva ili više EV3 blokova jedan s drugim putem Bluetootha, potrebno je izvršiti sljedeće korake:

1. Otvorite karticu Postavke.

2. Odaberite bluetooth i pritisnite centralno dugme.

3. Stavili smo Polje za potvrdu vidljivost Bluetooth.

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

5. Uradite gornju proceduru za potreban broj EV3 kockica.

6. Idite na karticu Veza:

7. Kliknite na dugme Traži:

8. Odaberite EV3 na koji želite da se povežete (ili na koji želite da se povežete) i pritisnite centralno dugme.

9. Prvi i drugi blok povezujemo pristupnim ključem.

Ako sve uradite kako treba, u gornjem levom uglu će se pojaviti ikona "<>", povežite ostale EV3 blokove na isti način ako ih ima više od dva.

Ako isključite LEGO EV3, veza će se izgubiti i morat ćete ponoviti sve korake.

Važno: svaki blok mora imati napisan vlastiti program.

Primjer programa:

Prvi blok: Kada se pritisne senzor dodira, prvi EV3 blok prenosi tekst drugom bloku sa odgodom od 3 sekunde (glavni blok).

Primjer programa za blok 2:

Drugi blok čeka da primi tekst iz prvog bloka, a kada ga primi, prikazat će riječ (u našem primjeru riječ "Hello") 10 sekundi (slave blok).

Povežite se putem Wi-Fi mreže

Komunikacija većeg dometa je moguća povezivanjem Wi-Fi ključa na USB port na EV3.

Da biste koristili Wi-Fi, trebate instalirati poseban modul na EV3 blok pomoću USB konektora (Wi-Fi adapter (Netgear N150 Wireless Adapter (WNA1100)) ili možete spojiti Wi-Fi Dongle.

Tradicionalno, roboti izgrađeni na platformi Lego Mindstorms EV3, su programirani pomoću LabVIEW grafičkog okruženja. U ovom slučaju, programi se pokreću na EV3 kontroleru i robot radi autonomno. Ovdje ću govoriti o alternativnom načinu upravljanja robotom - korištenjem .NET platforme koja radi na računaru.

Ali prije nego što uđemo u programiranje, pogledajmo neke slučajeve u kojima bi ovo moglo biti korisno:

  • Zahtijeva daljinsko upravljanje robotom sa laptopa (na primjer, pritiskom na dugmad)
  • Potrebno je prikupiti podatke iz EV3 kontrolera i obraditi ih na vanjskom sistemu (na primjer, za IoT sisteme)
  • Sve druge situacije kada želite da napišete kontrolni algoritam u .NET i pokrenete ga sa računara povezanog na EV3 kontroler

LEGO MINDSTORMS EV3 API za .NET

EV3 kontrolerom se upravlja sa eksternog sistema slanjem komandi na serijski port. Sam format naredbe opisan je u Communication Developer Kitu.

Ali ručna implementacija ovog protokola je dosadna. Stoga možete koristiti gotov .NET omot, koji je Brian Peek pažljivo napisao. Izvorni kod za ovu biblioteku se nalazi na Githubu, a paket spreman za korištenje može se naći na Nugetu.

Povezivanje na EV3 kontroler

Brick klasa se koristi za komunikaciju sa EV3 kontrolerom. Prilikom kreiranja ovog objekta, potrebno je da konstruktoru prenesete implementaciju ICommunication sučelja - objekt koji opisuje kako se povezati s EV3 kontrolerom. Dostupne su implementacije UsbCommunication, BluetoothCommunication i NetworkCommunication (WiFi veza).

Najpopularnija metoda povezivanja je putem Bluetooth veze. Pogledajmo detaljnije ovaj način povezivanja.

Pre nego što možemo programski da se povežemo sa kontrolerom preko Bluetooth-a, kontroler mora biti povezan sa računarom pomoću postavki operativnog sistema.

Nakon što je kontroler povezan, idite na Bluetooth postavke i odaberite karticu COM portovi. Pronašli smo našeg kontrolora, koji nam je potreban odlazni luka. Navest ćemo ga prilikom kreiranja BluetoothCommunication objekta.

Kod za spajanje na kontroler će izgledati ovako:

Public async Task Connect(ICommunication komunikacija) (var communication = new BluetoothCommunication("COM9"); var brick = _brick = new Brick(communication); await _brick.ConnectAsync(); )

Opciono, možete odrediti vremensko ograničenje veze s kontrolerom:

Await _brick.ConnectAsync(TimeSpan.FromSeconds(5));

Povezivanje na jedinicu putem USB-a ili WiFi-a vrši se na isti način, s tim što se koriste objekti UsbCommunication i NetworkCommunication.

Sve dalje radnje koje se izvode na kontroleru vrše se preko objekta Brick.

Hajde da zavrtimo motore

Da bismo izvršili naredbe na EV3 kontroleru, pristupamo svojstvu DirectCommand objekta Brick. Prvo, pokušajmo pokrenuti motore.

Pretpostavimo da je naš motor spojen na port A kontrolera, a onda će rad ovog motora na 50% snage izgledati ovako:

Čekajte _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50);

Postoje i druge metode upravljanja motorom. Na primjer, možete rotirati motor pod određenim kutom koristeći metode StepMotorAtPowerAsync() i StepMotorAtSpeedAsync(). Dostupno je nekoliko metoda, a to su varijacije načina uključivanja motora - po vremenu, brzini, snazi ​​itd.

Prisilno zaustavljanje se izvodi pomoću metode StopMotorAsync():

Await _brick.DirectCommand.StopMotorAsync(OutputPort.A, true);

Drugi parametar označava upotrebu kočnice. Ako ga postavite na false, motor će se zaustaviti.

Očitavanje vrijednosti sa senzora

EV3 kontroler ima četiri priključka za povezivanje senzora. Osim toga, motori imaju i ugrađene enkodere, što im omogućava da se koriste kao senzori. Kao rezultat, imamo 8 portova sa kojih se mogu čitati vrijednosti.

Portovima za čitanje vrijednosti može se pristupiti preko svojstva Ports objekta Brick. Portovi su skup portova dostupnih na kontroleru. Stoga, da biste radili s određenim portom, morate ga odabrati. InputPort.One ... InputPort.Four su portovi senzora, a InputPort.A ... InputPort.D su enkoderi motora.

Var port1 = _brick.Ports;

Senzori u EV3 mogu raditi u različitim režimima. Na primjer, EV3 senzor boje može se koristiti za mjerenje ambijentalnog svjetla, mjerenje reflektirane svjetlosti ili detekciju boje. Stoga, da bismo senzoru "rekli" kako tačno želimo da ga koristimo, moramo postaviti njegov način rada:

Brick.Ports.SetMode(ColorMode.Reflective);

Sada kada je senzor povezan i njegov način rada podešen, možete čitati podatke sa njega. Možete dobiti "sirove" podatke, obrađenu vrijednost i vrijednost u procentima.

Float si = _brick.Ports.SIValue; int raw = _brick.Ports.RawValue; bajt posto = _brick.Ports.PercentValue;

Svojstvo SIValue vraća obrađene podatke. Sve ovisi o tome koji se senzor koristi i u kojem načinu rada. Na primjer, prilikom mjerenja reflektirane svjetlosti dobićemo vrijednosti od 0 do 100 u zavisnosti od intenziteta reflektirane svjetlosti (crno/bijelo).

Svojstvo RawValue vraća sirovu vrijednost dobivenu od ADC-a. Ponekad ga je pogodnije koristiti za naknadnu obradu i upotrebu. Inače, u razvojnom okruženju EV3 moguće je dobiti i "sirove" vrijednosti - za to morate koristiti blok s plavog panela.

Ako senzor koji koristite očekuje da primi vrijednosti u procentima, tada možete koristiti i svojstvo PercentValue.

Izvršavanje naredbi u serijama

Recimo da imamo robotska kolica sa dva točka i želimo da ih postavimo na mesto. U tom slučaju, dva točka se moraju okretati u suprotnom smjeru. Ako koristimo DirectCommand i pošaljemo dvije naredbe uzastopno kontroleru, može proći neko vrijeme između njihovog izvršavanja:

Čekajte _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); čekati _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B, -50);

U ovom primjeru šaljemo naredbu za rotaciju motora A brzinom od 50, nakon uspješnog slanja ove komande, isto ponavljamo sa motorom spojenim na port B. Problem je što se slanje komandi ne dešava trenutno, pa motori može početi da se okreće u različito vrijeme - dok se komanda prenosi za port B, motor A većće početi da se okreće.

Ako nam je kritično da se motori okreću u isto vrijeme, možemo slati komande kontroleru u "snopu". U ovom slučaju, trebali biste koristiti svojstvo BatchCommand umjesto DirectCommand:

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

Sada se pripremaju dvije komande odjednom, nakon čega se šalju kontroleru u jednom paketu. Kontroler, nakon što je primio ove komande, počet će rotirati motore istovremeno.

Šta drugo možete učiniti

Osim rotirajućih motora i očitavanja vrijednosti senzora, možete izvršiti niz drugih radnji na EV3 kontroleru. Neću ulaziti u detalje o svakom od njih, samo ću navesti listu onoga što se može učiniti:

  • CleanUIAsync(), DrawTextAsync(), DrawLineAsync(), itd. - manipulacija ugrađenim ekranom EV3 kontrolera
  • PlayToneAsync() i PlaySoundAsync() - koristite ugrađeni zvučnik za reprodukciju zvukova
  • WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (iz SystemCommand) - rad sa fajlovima

Zaključak

Korišćenje .NET-a za kontrolu Mindstorms EV3 robota dobro pokazuje kako tehnologije iz „različitih svetova“ mogu da rade zajedno. Kao rezultat istraživanja EV3 API-ja za .NET, kreirana je mala aplikacija koja vam omogućava da kontrolišete EV3 robota sa računara. Nažalost, slične aplikacije postoje za NXT, ali ih je EV3 zaobišao. Istovremeno su korisni u kontrolisanim takmičenjima robota, kao što je robotski fudbal.

Aplikaciju možete preuzeti i instalirati sa ovog linka:

Odaberite način rada ekrana

Odabir načina rada
Blokiraj tekstualno polje
Inputs
Dugme za pregled

Odaberite vrstu teksta ili grafike koju želite da vidite pomoću birača načina. Nakon odabira moda, možete odabrati ulazne vrijednosti. Dostupni ulazi će se razlikovati ovisno o načinu rada. Režimi i ulazi su opisani u nastavku.

Možete kliknuti na dugme Pregled da biste pregledali šta će ekranski blok prikazati na ekranu EV3. Možete ostaviti prikaz otvoren dok birate ulazne vrijednosti za blok.

Koordinate ekrana

Mnogi modovi bloka ekrana koriste koordinate X i Y za određivanje lokacije elementa. Koordinate određuju položaj piksela na ekranu EV3 Brick. Položaj (0, 0) je u gornjem lijevom uglu ekrana kao što je prikazano na slici ispod.

Dimenzije ekrana: 178 piksela širine i 128 piksela visine. Raspon vrijednosti X koordinata je od 0 na ekranu na lijevoj strani do 177 na desnoj strani. Raspon vrijednosti Y koordinata je od 0 na vrhu do 127 na dnu.

Savjeti i trikovi

Možete koristiti dugme Pregled u gornjem levom uglu ekrana kako biste lakše pronašli ispravne koordinate ekrana.

Tekst - Pikseli

Tekst – režim piksela vam omogućava da prikažete tekst bilo gde na ekranu EV3 kocke.

Reset prozor

Reset prozora vraća ekran EV3 Brick na standardni ekran sa informacijama prikazanim dok je program pokrenut. Ovaj ekran prikazuje naziv programa i druge povratne informacije. Kada pokrenete program na EV3 Brick-u, ovaj ekran se pojavljuje prije pokretanja prvog bloka ekrana programa.

Osiguravanje vidljivosti prikazanih elemenata

Kada se program EV3 završi, ekran EV3 Brick se briše i vraća na ekran EV3 Brick menija. Svaki tekst ili grafika prikazana u programu bit će izbrisana. Ako, na primjer, vaš program ima jedan blok "Screen" i ništa drugo, tada će ekran biti obrisan tako brzo odmah nakon završetka programa da nećete vidjeti rezultate bloka "Screen".

Ako želite da ekran ostane vidljiv nakon završetka programa, morate dodati blok na kraj programa kako biste spriječili da se program odmah završi, kao što je prikazano u sljedećim primjerima.

Prikaz više stavki

Ako želite da prikažete više tekstualnih ili grafičkih elemenata na ekranu istovremeno, važno je da ne brišete ekran EV3 Brick između elemenata. Svaki način bloka ekrana ima ulaz Clear Screen. Ako je Clear Screen postavljeno na true, cijeli ekran će biti obrisan prije nego što se stavka prikaže. To znači da za prikaz više stavki morate postaviti Clear Screen na False za svaki blok ekrana osim prvog.

Prikaz brojeva

Za prikaz numeričke vrijednosti u vašem programu, povežite sabirnicu podataka na Text input bloka Text Display. Numerička sabirnica podataka će se automatski pretvoriti u tekst pomoću konverzije tipa sabirnice podataka (pogledajte odjeljak

Ideja da se mikroračunalo u dizajneru zamijeni Beaglebone-om ili nekim drugim nije nova. Ali s izdavanjem EV3, postalo je moguće ne samo dobiti 100% analogni, već i povećati performanse vašeg legorobota.

Video prezentacija projekta:

E VB u potpunosti podržava Lego Mindstorms Ev3 sistem i na hardverskom i na softverskom nivou, 100% kompatibilan sa svim Lego senzorima i motorima. Blok radi isto kao Lego Mindstorms EV3 blok:

BeagleBone Black— Linux računar sa jednom pločom. To je konkurent Raspberry Pi. Ima moćan procesor AM335x 720MHz ARM® procesor, veliki broj ulaza/izlaza, mogućnosti se mogu proširiti dodatnim pločama.

Lego Mindstorms EV3 ima ARM9 (TI Sitara AM180x) 300MHz procesor, pa se prelazi na ARM Cortex-A8 (TI Sitara AM335x) 1GHz BeagleBone Black procesor povećava produktivnost, plus postaje moguće povezati dodatne kartice za proširenje!

Najvažnije je da Lego Mindstorms EV3 ima otvoren opis svih softvera i hardvera!

Na primjer, sastavljen je i demonstriran poznati robot za rješavanje Rubikove kocke. Samo umjesto EV3 instalirali su razvijeni EVB. Pozivamo vas da pogledate video:

Autori projekta već proizvode i prodaju EVB. Planiraju značajno proširiti proizvodnju do kraja aprila 2015. Osim toga, razvili su i proizvode nekoliko kompatibilnih senzora.