Práca s Lego Mindstorms EV3 od .NET. Zmeňte mozgy v Lego Mindstorms

Ak vám rovnako ako nám chýbajú možnosti štandardných snímačov EV3, nestačia vám 4 porty na snímače vo vašich robotoch alebo chcete k robotovi pripojiť nejaké exotické periférie, tento článok je určený práve vám. Verte mi, podomácky vyrobený snímač pre EV3 je jednoduchší, ako sa zdá. Na experimentovanie sa skvele hodí „gumač hlasitosti“ zo starého rádia alebo pár klincov zapichnutých do zeme v kvetináči ako snímač pôdnej vlhkosti.

Každý port snímača EV3 prekvapivo skrýva množstvo rôznych protokolov, hlavne kvôli kompatibilite so snímačmi NXT a snímačmi tretích strán. Poďme sa pozrieť na to, ako funguje kábel EV3


Zvláštne, ale červený vodič je uzemnený (GND), zelený je 4,3V napájanie plus. Modrý vodič je SDA pre zbernicu I2C a TX pre protokol UART. Modrý vodič je navyše vstup A/D prevodníka pre EV3. Žltý vodič je SCL pre zbernicu I2C a RX pre protokol UART. Biely vodič - vstup A/D prevodníka pre senzory NXT. Čierna - digitálny vstup, pre senzory kompatibilné s NXT - duplikuje GND. Nie je to ľahké, však? Poďme pekne po poriadku.

Analógový vstup EV3

Každý port snímača má kanál A/D prevodníka. Používa sa pre senzory ako Touch Sensor (tlačidlo), NXT svetelný senzor a farebný senzor v režime odrazeného svetla a okolitého svetla, NXT zvukový senzor a NXT teplomer.

Odpor 910 ohmov zapojený tak, ako je znázornené na obrázku, hovorí ovládaču, že tento port je potrebné prepnúť do režimu analógového vstupu. V tomto režime je možné k EV3 pripojiť akýkoľvek analógový senzor, napríklad z Arduina. Výmenný kurz s takýmto senzorom môže dosiahnuť niekoľko tisíc dotazov za sekundu, ide o najrýchlejší typ senzorov.

Svetelný senzor

Teplomer

Senzor pôdnej vlhkosti

Môžete tiež pripojiť: mikrofón, tlačidlo, IR diaľkomer a mnoho ďalších bežných senzorov. Ak senzor nemá dostatočné napájanie 4,3V, môžete ho napájať 5V z USB portu umiestneného na boku ovládača EV3.

Vyššie spomenutý "gombík hlasitosti" (aka premenný odpor alebo potenciometer) je skvelým príkladom analógového snímača - môžete ho pripojiť takto:

Ak chcete čítať hodnoty z takéhoto snímača v štandardnom programovacom prostredí LEGO, musíte použiť modrý blok RAW

I2C protokol

Ide o digitálny protokol, napríklad ultrazvukový senzor NXT, pracuje na ňom mnoho Hitechnic senzorov, ako napríklad IR Seeker alebo Color Sensor V2. Pre iné platformy, napríklad pre Arduino, existuje veľa i2c senzorov, môžete ich tiež pripojiť. Schéma je nasledovná:

Odpor 82 ohmov odporúča LEGO Group, ale v rôznych zdrojoch sú odkazy na 43 ohmov alebo menej. V podstate sme sa snažili tieto odpory úplne opustiť a všetko funguje aspoň „na stole“. V skutočnom robote pracujúcom v podmienkach rôznych druhov rušenia by mali byť linky SCL a SDA stále pripojené k napájaniu cez odpory, ako je znázornené na obrázku vyššie. Rýchlosť i2c v EV3 je dosť nízka, asi 10 000 kbps, a preto je obľúbený Hitechnic Color Sensor V2 taký pomalý :)

Bohužiaľ pre štandardné LEGO EV3-G neexistuje úplný blok pre obojsmernú komunikáciu so snímačom i2c, ale pomocou programovacích prostredí tretích strán, ako sú RobotC, LeJOS alebo EV3 Basic, môžete komunikovať s takmer všetkými snímačmi i2c.

Schopnosť EV3 pracovať s protokolom i2c otvára zaujímavú možnosť pripojenia viacerých senzorov k jedinému portu. Protokol I2C umožňuje pripojiť až 127 podriadených zariadení na jednu zbernicu. Vieš si predstaviť? 127 senzorov pre každý z portov EV3 :) Navyše sa často v jednom zariadení kombinuje veľa senzorov i2c, napríklad na fotografii nižšie senzor 10 v 1 (obsahuje kompas, gyroskop, akcelerometer, barometer atď. )

UART

Takmer všetky štandardné non-EV3 senzory, s výnimkou Touch Sensor, pracujú s protokolom UART, a preto nie sú kompatibilné s ovládačom NXT, ktorý má síce rovnaké konektory, ale nemá implementovaný UART na senzorové porty. Pozrite sa na schému, je o niečo jednoduchšia ako predchádzajúce prípady:

Senzory UART automaticky koordinujú svoju rýchlosť s EV3. Najprv sa po pripojení rýchlosťou 2400 kbps dohodnú na prevádzkových režimoch a výmennom kurze a potom prejdú na vyššiu rýchlosť. Typické výmenné kurzy pre rôzne senzory sú 38400 a 115200 kbps.
LEGO implementovalo do svojich UART senzorov pomerne zložitý protokol, takže neexistujú žiadne senzory tretích strán, ktoré by neboli pôvodne navrhnuté pre túto platformu, ale sú s ňou kompatibilné. Napriek tomu je tento protokol veľmi vhodný na pripojenie „domácich“
senzory založené na mikrokontroléroch.
Pre Arduino existuje úžasná knižnica EV3UARTEmulation napísaná renomovaným vývojárom LeJOS Lawrie Griffiths, ktorá umožňuje tejto doske predstierať, že je senzorom kompatibilným s UART-LEGO. Jeho blog LeJOS News obsahuje množstvo príkladov pripojenia plynových senzorov, senzora IMU a digitálneho kompasu pomocou tejto knižnice.

Video nižšie je príkladom použitia domáceho senzora. Nemáme dostatok originálnych snímačov vzdialenosti LEGO, takže používame jeden zo snímačov na robotovi, ktorý sme vyrobili:


Úlohou robota je začať od zelenej bunky, nájsť cestu von z bludiska (červená bunka) a vrátiť sa na miesto štartu najkratšou cestou, bez zastavenia na slepých uličkách.

Ak máte akékoľvek otázky, čo by ste chceli vedieť o novom konštruktérovi (ako niečo konkrétne funguje, vykonajte experiment so snímačmi alebo motormi) - napíšte nám - pokúsime sa vaše návrhy otestovať. O EV3 sa tak môžete dozvedieť oveľa viac ešte pred uvedením do predaja.

Teraz to všetko začína recenziou softvér Blok EV3 (firmvér EV3).

Jednou z vlastností nového bloku je jeho dlhé zapínanie a vypínanie. Časovo je proces úmerný inklúzii mobilný telefón alebo domáci router, t.j. sekúnd 20-30. Po zapnutí sa zobrazí nasledujúca ponuka:


Ako vidíte, v porovnaní s blokom NXT sa toho veľa zmenilo: zlepšila sa kvalita fontov, viac prekreslených grafických prvkov a rozhranie okien. Po prvé, je to spôsobené tým, že veľkosť obrazovky sa teraz zväčšila - stala sa 178 x 128 pixelov namiesto 100 x 64, ako je blok NXT. Prítomnosťou okna s rozhraním s vlastnými tlačidlami a posúvačmi možno predpokladať, že zariadenia ako externé Touchpad teraz to dáva ešte väčší zmysel.


Z prvého okna je možné volať programy načítané na bloku, ako aj programy vytvorené priamo na bloku. Tie. na spustenie programu teraz musíte vykonať menej kliknutí ako na jednotke NXT.

Pohyb medzi stiahnutými programami, ako aj na druhú a nasledujúce obrazovky (položky ponuky) sa vykonáva pomocou ovládacích tlačidiel, ktorých sú teraz 4.


Druhá obrazovka - umožňuje navigáciu cez objekty systému súborov v bloku. Systém súborov teraz podporuje tradičnú hierarchiu: súbory a adresáre.


Tretia obrazovka obsahuje podponuky - aplikácie, ktoré vám umožňujú vykonávať rôzne akcie s blokom:


V aktuálnej softvérovej verzii bloku sú štyri takéto aplikácie:

  • Zobraziť senzory
  • Ovládanie motora
  • Diaľkové ovládanie
  • Programovanie na bloku
Štvrtá obrazovka je konfiguračná. Okrem toho základné nastavenia: úroveň zvuku, časovač nečinnosti, zapnutie BlueTooth a WiFi, umožňuje zistiť informácie o softvéri jednotky:



Výber konkrétnej položky menu/aplikácie je stredným tlačidlom na klávesnici. Ak chcete ukončiť akúkoľvek položku ponuky alebo aplikáciu, musíte stlačiť tlačidlo "Ukončiť", ktoré sa teraz nachádza oddelene od hlavných tlačidiel - na ľavej strane pod obrazovkou.

Teraz by ste sa mali vrátiť na tretiu obrazovku a začať sa zoznamovať s aplikáciami. Takže aplikácia "Zobraziť senzory" (Port View).

Na rozdiel od podobného režimu v bloku NXT teraz môžete vidieť informácie o všetkých 8 zariadeniach pripojených k bloku naraz. Navyše deklarovaná funkčnosť automatickej detekcie senzorov vám umožňuje ručne nešpecifikovať, ktorý senzor je kam pripojený.

V hornej časti sú zobrazené informácie z kódovačov motorov, v dolnej časti sú informácie zo snímačov. V strede obrazovky - informácie o konkrétne zariadenie(v konkrétnom porte), ktorý je možné zvoliť stlačením ovládacích tlačidiel na klávesnici. Informácie zahŕňajú grafické znázornenie senzora, jeho názov a aktuálne hodnoty:

Dotykový senzor:


Gyroskopický senzor:


Farebný snímač v režime merania odrazeného svetla:


Ultrazvukový snímač vzdialenosti:

Tu, mimochodom, môžete vidieť, že senzor teraz tvrdí, že dokáže merať vzdialenosť s presnosťou na milimeter a minimálna merateľná vzdialenosť je teraz od 3 cm.

Informácie z kódovača ľavého motora.


Ďalšou aplikáciou je ovládanie motora. V skutočnosti vám umožňuje otáčať motory pomocou tlačidiel. Pomocou centrálneho tlačidla musíte vybrať, ktoré motory sa majú otáčať. A potom páry tlačidiel hore a dole alebo doľava a doprava na otáčanie konkrétnych motorov.


Tretiu aplikáciu sme nemohli vyskúšať, pretože EV3 Education Edition sa štandardne nedodáva s infračerveným snímačom vzdialenosti a infračerveným majákom. Zdá sa však, že na tejto obrazovke môžete nakonfigurovať, ktoré motory budú ovládané z infračerveného majáku.


Samozrejme, najzaujímavejšou aplikáciou je programovanie na bloku. Bola výrazne prepracovaná: program môže teraz obsahovať až 16 programových prvkov (blokov) a vytvorené programy je možné uložiť a samozrejme znovu otvoriť na úpravu.


Po otvorení aplikácie na písanie programu sa zobrazí prázdna slučka behu (vykoná sa iba jedna iterácia) a výzva na vloženie prvého bloku. Pomocou tlačidla "Hore" môžete vložiť blok.


V zobrazenom okne výberu bloku je k dispozícii 17 blokov (6 blokov akcií a 11 blokov čakania) plus akcia vymazania aktuálneho bloku.



Poradie, v ktorom sa bloky vyberajú a sledujú, určuje programátor. Neznamená to, že po každom akčnom bloku musí nasledovať blok čakania, ako tomu bolo predtým v bloku NXT.

Zvolený blok v programe vyzerá takto:


Správanie bloku je možné upraviť stlačením stredového tlačidla. Pre tento blok môžete napríklad zmeniť smer otáčania robota alebo úplne zastaviť motory (napríklad po predchádzajúcom čakacom bloku).


Posunutím „kurzora“ doľava alebo doprava môžete vložiť ďalší blok:


Napríklad blok čakajúci na udalosť na senzore vzdialenosti:


A zmeňte jeho správanie (udalosť nastane, ak je vzdialenosť väčšia ako 60 cm):


Bloky je možné vkladať medzi existujúce bloky alebo dokonca na začiatok programu.


Tu je niekoľko ďalších príkladov čakacích blokov:

Čaká sa blok po čase (dá sa presne nastaviť, ako dlho čakať):


Alebo blok čakajúci na udalosť z gyroskopického senzora (dá sa nastaviť uhol natočenia senzora).


Opäť treba poznamenať, že funkcionalita autodetekcie snímačov zjednodušuje proces programovania na bloku. Teraz nie je potrebné dodržiavať pravidlo, že určité senzory musia byť pripojené k určitým portom.

Ak sa program musí vykonať niekoľkokrát, potom je možné zmeniť počet iterácií riadiacej slučky:


Program sa spustí výberom úplne prvého bloku:


Po spustení programu sa na obrazovke zobrazí nasledovné:


Program je možné uložiť a môžete zadať názov súboru pre jeho následné vyhľadávanie:



Písmená sa vyberajú pomocou klávesnice (ahoj touchpad!)

Ak sa pokúsite zavrieť neuložený program, zobrazí sa nasledujúca nie veľmi jasná správa a ozve sa nepríjemný zvuk:


V budúcnosti je možné vytvorený program otvoriť a upraviť.


Prirodzene sa otvárajú iba programy vytvorené na bloku.

Na záver by som chcel ukázať, ako vypnutie bloku vyzerá:


Vyberte režim obrazovky

Výber režimu
Blokovať textové pole
Vstupy
Tlačidlo ukážky

Pomocou voliča režimu vyberte typ textu alebo grafiky, ktoré chcete vidieť. Po výbere režimu môžete vybrať hodnoty vstupov. Dostupné vstupy sa budú líšiť v závislosti od režimu. Režimy a vstupy sú popísané nižšie.

Môžete kliknúť na " Náhľad aby ste videli, čo blok Screen zobrazí na obrazovke EV3. Počas výberu vstupných hodnôt pre blok môžete nechať pohľad otvorený.

Súradnice obrazovky

Mnoho režimov blokov obrazovky používa súradnice X a Y na určenie polohy prvku. Súradnice definujú polohu pixelov na obrazovke EV3 Brick. Pozícia (0, 0) je v ľavom hornom rohu obrazovky, ako je znázornené na obrázku nižšie.

Rozmery obrazovky: šírka 178 pixelov a výška 128 pixelov. Rozsah hodnôt súradníc X je od 0 na ľavej strane obrazovky do 177 na pravej strane. Rozsah hodnôt súradníc Y je od 0 hore do 127 dole.

tipy a triky

Na nájdenie správnych súradníc obrazovky môžete použiť tlačidlo Náhľad v ľavom hornom rohu bloku Obrazovka.

Text – pixely

Režim Text - Pixels vám umožňuje zobraziť text kdekoľvek na obrazovke EV3 Brick.

Obnoviť okno

Režim Reset Window vráti obrazovku EV3 Brick na štandardnú informačnú obrazovku zobrazenú počas spustenia programu. Táto obrazovka zobrazuje názov programu a ďalšie informácie o spätnej väzbe. Keď spustíte program na EV3 Brick, táto obrazovka sa zobrazí, kým sa nespustí prvý blok obrazovky programu.

Zabezpečenie viditeľnosti zobrazených prvkov

Po skončení programu EV3 sa obrazovka EV3 Brick vymaže a vráti sa na obrazovku ponuky EV3 Brick. Akýkoľvek text alebo grafika zobrazená programom bude vymazaná. Ak má váš program napríklad jeden blok „Obrazovka“ a nič iné, potom sa obrazovka okamžite po skončení programu vymaže tak rýchlo, že neuvidíte výsledky bloku „Obrazovka“.

Ak chcete, aby obrazovka pokračovala aj po skončení programu, musíte na koniec programu pridať blok, aby ste zabránili okamžitému ukončeniu programu, ako je uvedené v nasledujúcich príkladoch.

Zobrazenie viacerých položiek

Ak chcete na obrazovke súčasne zobraziť viacero textových alebo grafických prvkov, je dôležité, aby ste medzi prvkami nevymazávali obrazovku EV3 Brick. Každý režim bloku Screen má vstup Clear Screen. Ak je hodnota Clear Screen true, pred zobrazením prvku sa vymaže celá obrazovka. To znamená, že ak chcete zobraziť viacero položiek, musíte nastaviť Clear Screen na False pre každý blok obrazovky okrem prvého.

Zobrazenie čísel

Ak chcete vo svojom programe zobraziť číselnú hodnotu, pripojte dátovú zbernicu k textovému vstupu bloku Text Display. Číselná dátová zbernica sa automaticky prevedie na text pomocou konverzie typu dátovej zbernice (viac detailné informácie pozri časť

Tradične sú roboty postavené na platforme Lego Mindstorms EV3, sú programované pomocou grafického prostredia LabVIEW. V tomto prípade programy bežia na ovládači EV3 a robot pracuje autonómne. Tu budem hovoriť o alternatívny spôsob ovládanie robota - pomocou platformy .NET spustenej na počítači.

Ale predtým, než sa vrhneme priamo na programovanie, pozrime sa na prípady, kedy to môže byť užitočné:

  • Požadovaný diaľkové ovládanie robotom z notebooku (napríklad stláčaním tlačidiel)
  • Potreba zhromažďovať údaje z ovládača EV3 a spracovávať ich na externom systéme (napríklad pre systémy internetu vecí)
  • Akákoľvek iná situácia, keď chcete napísať riadiaci algoritmus v .NET a spustiť ho z počítača pripojeného k ovládaču EV3

LEGO MINDSTORMS EV3 API pre .NET

Ovládač EV3 je ovládaný z externého systému odosielaním príkazov do sériový port. Samotný formát príkazu je popísaný v súprave Communication Developer Kit.

Ručná implementácia tohto protokolu je však nudná. Preto môžete použiť hotový obal .NET, ktorý starostlivo napísal Brian Peek. Zdrojové kódy táto knižnica je hosťovaná na serveri Github a balík pripravený na použitie možno nájsť v Nuget.

Pripojenie k ovládaču EV3

Trieda Brick sa používa na komunikáciu s ovládačom EV3. Pri vytváraní tohto objektu musí konštruktér odovzdať implementáciu rozhrania ICommunication, objektu, ktorý popisuje, ako sa pripojiť k ovládaču EV3. K dispozícii sú implementácie UsbCommunication , BluetoothCommunication a NetworkCommunication (pripojenie cez WiFi).

Najpopulárnejší spôsob pripojenia je cez Bluetooth. Pozrime sa bližšie na tento spôsob pripojenia.

Aby sme sa mohli programovo pripojiť k ovládaču cez Bluetooth, ovládač musí byť pripojený k počítaču pomocou nastavení operačného systému.

Po pripojení ovládača prejdite do nastavení Bluetooth a vyberte kartu COM porty. Nájdeme náš ovládač, ktorý potrebujeme vychádzajúce prístav. Uvedieme ho pri vytváraní objektu BluetoothCommunication.

Kód na pripojenie k ovládaču bude vyzerať takto:

Verejná asynchrónna úloha Connect(komunikácia ICommunication) ( var communication = new BluetoothCommunication("COM9"); var brick = _brick = new Brick(komunikácia); čaká na _brick.ConnectAsync(); )

Voliteľne môžete určiť časový limit pripojenia k ovládaču:

Await_brick.ConnectAsync(TimeSpan.FromSeconds(5));

Pripojenie k jednotke cez USB alebo WiFi je podobné, až na to, že sú použité objekty UsbCommunication a NetworkCommunication.

Všetky ďalšie akcie vykonávané s ovládačom sa vykonávajú cez objekt Brick.

Roztočíme motory

Ak chcete vykonať príkazy na ovládači EV3, získajte prístup k vlastnosti DirectCommand objektu Brick. Najprv skúsme naštartovať motory.

Predpokladajme, že náš motor je pripojený k portu A ovládača, potom bude chod tohto motora na 50% výkon vyzerať takto:

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

Existujú aj iné spôsoby ovládania motora. Napríklad môžete otočiť motor do daného uhla pomocou metód StepMotorAtPowerAsync() a StepMotorAtSpeedAsync(). Celkovo je dostupných niekoľko metód, ktoré sú variáciami na režimy zapínania motorov – podľa času, rýchlosti, výkonu atď.

Vynútené zastavenie sa vykonáva metódou StopMotorAsync():

Čaká _brick.DirectCommand.StopMotorAsync(OutputPort.A, true);

Druhý parameter udáva použitie brzdy. Ak je nastavená na hodnotu false , motor sa zastaví zotrvačnosťou.

Čítanie hodnôt zo senzorov

EV3 Controller má štyri senzorové porty. Okrem toho majú motory zabudované aj kódovače, čo umožňuje ich použitie ako snímače. Výsledkom je 8 portov, z ktorých je možné čítať hodnoty.

Porty na čítanie hodnôt sú prístupné cez vlastnosť Ports objektu Brick. Porty je kolekcia portov dostupných na ovládači. Preto, aby ste mohli pracovať s konkrétnym portom, musíte ho vybrať. InputPort.One ... InputPort.Four sú senzorové porty a InputPort.A ... InputPort.D sú motorové kódovače.

Var port1 = _brick.Ports;

Senzory v EV3 môžu pracovať v rôznych režimoch. EV3 Color Sensor možno použiť napríklad na meranie okolitého svetla, meranie odrazeného svetla alebo detekciu farby. Preto, aby sme senzoru „povedali“, ako presne ho chceme používať, musíme nastaviť jeho režim:

Brick.Ports.SetMode(ColorMode.Reflective);

Teraz, keď je snímač pripojený a jeho režim činnosti je nastavený, môžete z neho čítať údaje. Môžete získať nespracované údaje, spracovanú hodnotu a percentuálnu hodnotu.

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

Vlastnosť SIValue vráti spracované dáta. Všetko závisí od toho, ktorý snímač sa používa a v akom režime. Napríklad pri meraní odrazeného svetla dostaneme hodnoty od 0 do 100 v závislosti od intenzity odrazeného svetla (čierna/biela).

Vlastnosť RawValue vracia surovú hodnotu prijatú z ADC. Niekedy je vhodnejšie použiť ho na ďalšie spracovanie a využitie. Mimochodom, EV3 IDE má tiež schopnosť získať „surové“ hodnoty - na to musíte použiť blok z modrého panela.

Ak používané meradlo očakáva, že dostane hodnoty v percentách, potom môžete použiť aj vlastnosť PercentValue.

Vykonávanie príkazov v dávke

Predpokladajme, že máme k dispozícii robotický vozík s dvoma kolesami a chceme ho nasadiť na mieste. V tomto prípade sa obe kolesá musia otáčať v opačnom smere. Ak použijeme DirectCommand a pošleme dva príkazy postupne do ovládača, medzi ich vykonaním môže uplynúť určitý čas:

Čaká _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); čakať _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B, -50);

V tomto príklade pošleme príkaz na otočenie motora A rýchlosťou 50, po úspešnom odoslaní tohto príkazu to isté zopakujeme s motorom pripojeným k portu B. Problémom je, že odosielanie príkazov nie je okamžité, takže sa motory môžu začať točiť v rôznych časoch - zatiaľ čo príkaz sa prenáša pre port B, motor A sa začne točiť.

Ak je pre nás kritické, aby sa motory točili súčasne, môžeme poslať príkazy do ovládača v „balení“. V tomto prípade by ste mali namiesto DirectCommand použiť vlastnosť BatchCommand:

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

Teraz sú pripravené dva príkazy naraz, po ktorých sú odoslané do ovládača v jednom balíku. Po prijatí týchto príkazov ovládač súčasne spustí otáčanie motorov.

Čo sa ešte dá robiť

Okrem otáčania motorov a čítania hodnôt snímača existuje množstvo ďalších akcií, ktoré môžete na ovládači EV3 vykonávať. Nebudem sa podrobne zaoberať každým z nich, uvediem iba zoznam toho, čo sa dá urobiť:

  • CleanUIAsync() , DrawTextAsync() , DrawLineAsync() atď. - manipulácia so vstavanou obrazovkou ovládača EV3
  • PlayToneAsync() a PlaySoundAsync() – pomocou vstavaného reproduktora prehráva zvuky
  • WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (z SystemCommand) - práca so súbormi

Záver

Použitie .NET na ovládanie robotov Mindstorms EV3 je dobrou ukážkou toho, ako môžu technológie z rôznych svetov spolupracovať. Ako výsledok výskumu EV3 API pre .NET bola vytvorená malá aplikácia, ktorá vám umožní ovládať vášho EV3 Robota z vášho počítača. Bohužiaľ, podobné aplikácie existujú pre NXT, ale obišli EV3. Zároveň sú užitočné v súťažiach riadených robotov, ako je napríklad robotický futbal.

Aplikáciu si môžete stiahnuť a nainštalovať z tohto odkazu:

Tento článok bude hovoriť o Nová verzia konštruktér - LEGO Mindstorms Education EV3. Ale skôr, než si povieme niečo o inováciách EV3, pozrime sa bližšie na sériu stavebníc LEGO Mindstorms.

LEGO Mindstorms je robotická súprava pre deti vo veku 10+. Diely LEGO Techniс sa používajú ako stavebné bloky pre robota - mnohí chlapci ich už poznajú od konštruktérov technológie a fyziky, Pneumatika. Ale postaviť rám robota nestačí: musíte ho „naučiť“ prijímať informácie životné prostredie a reagovať naň. Na tento účel sa používajú špeciálne zariadenia- senzory: umožňujú určiť farbu, osvetlenie, vzdialenosť k blízkym objektom a oveľa viac. Robot dokáže reagovať na „dráždidlá“ pomocou motorov – buď niekam ísť, alebo niečo urobiť – napríklad uhryznúť páchateľovi prst. A „mozog“ robota je špeciálna programovateľná jednotka, ku ktorej sú pripojené všetky motory a senzory.

Prejdime k zloženiu sady LEGO Mindstorms EV3. Tu je to, čo je súčasťou vzdelávacej verzie súpravy:

  • 1 programovateľný blok
  • 3 motory:
    • 2 veľké motory
    • 1 stredný motor
  • 5 senzorov:
    • 2 dotykové senzory
    • 1 farebný snímač
    • 1 ultrazvukový snímač vzdialenosti
    • 1 gyroskop
  • Batéria robota
  • 528 dielikov Lego Technic

Senzory a motory

Zvážte, čo sa zmenilo v EV3 v porovnaní s stará verzia NXT.

V súprave budú 3 motory, ale jeden z nich sa bude líšiť veľkosťou aj technickými vlastnosťami.

Zvukový senzor bol nahradený gyroskopom. Ostatné typy snímačov zostali rovnaké.

Ďalšou funkciou je autodetekcia snímačov a motorov pri ich pripojení k bloku - o tejto funkcii budem hovoriť v časti popisujúcej nové programovacie prostredie EV3.

Charakteristiky snímačov a motorov sú uvedené nižšie.

Veľmi podobné predchádzajúcej verzii. Detekuje stlačenie alebo uvoľnenie tlačidla a dokáže počítať jedno alebo viac stlačení.

Farebný senzor

EV3 Color Sensor rozpoznáva 7 farieb a dokáže zistiť absenciu farby. Rovnako ako v predchádzajúcej verzii môže fungovať ako svetelný senzor.

  • Meria odrazené červené svetlo a okolité svetlo
  • Dokáže rozlišovať medzi bielou a čiernou farbou alebo farbami modrá, zelená, žltá, červená, biela a hnedá
  • Pracovná frekvencia: 1 kHz

Gyroskop

Gyro senzor EV3 meria rotačný pohyb a zmeny polohy robota.

  • Môže sa použiť na určenie aktuálneho smeru otáčania
  • Presnosť: +/- 3 stupne na 90 stupňov otáčania (v režime merania sklonu)
  • Dokáže detekovať maximálne 440 stupňov / c (v režime gyroskopu)
  • Pracovná frekvencia: 1 kHz

Ultrazvukový snímač vzdialenosti


K hlavnej funkcii ultrazvukového meniča EV3 pribudla ešte jedna – dokáže „odpočúvať“ aj ultrazvukové vibrácie, ktoré vyžarujú iné ultrazvukové meniče.

  • Dokáže merať vzdialenosť v rozsahu 3 - 250 cm.
  • Presnosť merania: +/- 1cm
  • Rozlíšenie výsledku merania: 0,1 cm.
  • Možno použiť na vyhľadávanie iných aktívnych ultrazvukových senzorov (režim počúvania)
  • Červené LED osvetlenie okolo "očí"

veľký motor

Veľké servo EV3 je veľmi podobné predchádzajúcej verzii motora NXT, ale kryt motora je o niečo väčší (prakticky teraz zaberá 14x7x5 otvorov v porovnaní s predchádzajúcim 14x6x5). Zmenili sa aj montážne body motorov a ich typ.

  • Maximálne otáčky - 160-170 ot./min.
  • Špecifikovaný krútiaci moment - 40 N/cm
  • Skutočný krútiaci moment - 20 N/cm.

Stredný motor

EV3 Medium Servo je založené na podobne veľkom motore Power Function. Dodatočný priestor vyžadoval iba snímač uhla natočenia a pripojovací port. Tento motor je ideálny pre nízke zaťaženie a vysoké rýchlosti.

  • Maximálna rýchlosť - 240-250 ot./min.
  • Špecifikovaný krútiaci moment - 12 N/cm
  • Skutočný krútiaci moment - 8 N/cm.
  • Zabudovaný snímač uhla natočenia (kodér) motora s presnosťou 1 stupňa

Senzory, motory a káble NXT sú kompatibilné s EV3, takže pomocou nového bloku možno ovládať všetky predtým postavené roboty.

Programovateľná tehla EV3

Veľké zmeny sa udiali aj pri mikropočítači EV3. V porovnaní s NXT má blok EV3 rýchlejší procesor a viac pamäte. Firmvér EV3 Brick je založený na voľne distribuovanom operačnom systéme Linux, čo umožňuje vytvoriť si vlastný firmvér pre tehly. Teraz je možné pripojiť robota k počítaču nielen cez USB a Bluetooth, ale aj cez Wi-Fi. Roboty môžu medzi sebou komunikovať aj cez USB, Bluetooth a Wi-Fi.

Nižšie je uvedená porovnávacia tabuľka špecifikácií NXT a EV3:


NXT EV3
CPU Atmel 32-bitový ARM AT91SAM7S256
48 MHz
256 KB FLASH pamäť
64 KB pamäte RAM
ARM9
300 MHz
16 Mb Flash pamäť
64 Mb pamäte RAM
koprocesor Atmel 8-bitový ARM AVR, ATmega48
8 MHz
4 KB FLASH pamäť
512 bajtová pamäť RAM
neprítomný
operačný systém Vlastnícky linux
Vstupné porty (pre senzory) 4 porty
Podporuje analógové, digitálne senzory
Prenosová rýchlosť: 9600 bps (I2C)
4 porty
Podporuje analógové, digitálne senzory

Rýchlosť prenosu dát: až 460,8 Kbps (UART)
Výstupné porty (pre motory) 3 porty
4 porty
Prenos dát cez USB Používa sa režim plnej rýchlosti: 12 Mbps Používa sa vysokorýchlostný režim: 480 Mbps
Pripojenie USB zariadenia Žiadna príležitosť Je možné sériové pripojenie až 3 zariadení, vrátane sieťové karty wi-fi a flash karty
čítačka SD kariet Neprítomný Podporuje miniSD karty, maximálna kapacita je 32 GB
Pripojenie k mobilné zariadenia Dá sa pripojiť k zariadeniam so systémom Android Kompatibilné so zariadeniami Android a iOS (iPhone, iPad)
Obrazovka LCD, monochromatický
100 * 64 pixelov
LCD, monochromatický
178*128 pixelov
Interakcia Bluetooth
USB 2.0
Bluetooth v2.1 DER
USB 2.0 (pri pripojení k PC
USB 1.1 (pri reťazení viacerých zariadení)
WiFi

Programovacie prostredie

EV3 je dodávaný s novým grafickým vývojovým prostredím založeným na LabView podobným NXT-G. Bude to fungovať, rovnako ako NXT-G, na Windows a Mac.

Vývojové prostredie EV3 bolo výrazne vylepšené. Teraz je možné do projektu uložiť všetky materiály pre robota: programy pre robota, dokumentáciu, výsledky experimentov, fotografie a videá. Pribudol aj nástroj zoom, ktorý umožňuje napríklad škálovať program, aby ste videli celý program. Za zmienku však stojí, že kocku NXT možno naprogramovať pomocou nového prostredia EV3 starý blok nepodporuje všetky funkcie nového programovacieho jazyka.

Tu sú hlavné inovácie programovacieho prostredia EV3:

  • Úzka integrácia programovacieho prostredia s blokom:
    • Pridaná špeciálna stránka s pripojeným zariadením. Umožňuje vám sledovať stav bloku EV3 a prijímať hodnoty senzorov v reálnom čase.
    • Senzory a motory sú po pripojení automaticky rozpoznané vďaka funkcii auto-id. To vám umožňuje neindikovať, že určitý snímač alebo motor je pripojený k určitému portu.
  • Nový režim ladenia:
    • Keď je program spustený, vykonávaný blok je zvýraznený. To vám umožní presne pochopiť správanie programu.
    • sa rozsvieti na ovládacej jednotke. zvláštny charakter ak je k tomuto portu pripojený iný snímač alebo motor.
    • Pridaná možnosť prezerania hodnôt prenášaných cez dátové káble.
  • Nové funkcie programových blokov:
    • Vzájomné prepojenie blokov umožnilo opustiť „popravný lúč“, na ktorom boli bloky umiestnené v prostredí NXT-G.
    • Bloky nemajú nič také ako lištu prispôsobenia – správanie je teraz prispôsobiteľné priamo na bloku, čo má za následok zväčšenie ich veľkosti. Program je teraz oveľa ľahšie čitateľný - okamžite vidíte, ako sú nakonfigurované snímače a motory.
    • Existovali bloky „wait for change“, ktoré umožňujú reagovať na fakt zmeny hodnoty a nie na zmenu na určitú hodnotu ako v NXT-G.
    • Vylepšenia v odovzdávaní údajov z bloku do bloku uľahčujú prevod typov (teraz nemusíte manuálne konvertovať napríklad číslo na reťazec).
    • Pridaná možnosť práce s poliami.
    • Bolo možné predčasne ukončiť cyklus.

Okrem nového programovacieho jazyka sa na ovládanie robota objavili aj programy pre Android a iPhone \ iPad. Na základe programu Autodesk Invertor Publisher bol vytvorený aj program na vytváranie a prezeranie 3D inštrukcií krok za krokom. V tomto programe môžete zmenšiť a otočiť model v každej fáze montáže, čo vám umožní postaviť zložitejšie roboty podľa pokynov.

Základné roboty

Vzdelávacia súprava obsahuje návod na zostavenie 5 robotov:

triedič farieb
Klasická úloha triedenia predmetov (v tomto prípade súčiastok Lego) podľa farby.

Gyro chlapec
Robot segway, ktorý používa gyroskop na vyváženie.

Šteniatko
Robotický pes, ktorý sa dá hladkať a kŕmiť. Vie aj zaspať a uľaviť si :) Pripomína mi tamagoči.

Robo rameno
Umožňuje presúvať položky.

Pre súpravu EV3 bola pripravená stavebnica LEGO MINDSTORMS Education EV3, ktorá vám umožní stavať ďalšie modely pomocou nových dielov.

Pri písaní článku boli použité materiály z blogu nnxt.blogspot.com.