Bloc EV3: meniu, vizualizare senzori, programare. LEGO Mindstorms Education EV3 - Revizuirea constructorului. Citiți cele mai recente știri din lumea Lego – EduCube Lego mindstorms ev3 block sound description

Descrierea prezentării pe diapozitive individuale:

1 tobogan

Descrierea diapozitivului:

2 tobogan

Descrierea diapozitivului:

Interfața EV3 Brick EV3 Brick este centrul de control care vă alimentează roboții. Cu un ecran, butoane de control Brick și interfața EV3 Brick cu patru ferestre principale, aveți acces la o varietate uimitoare de caracteristici unice EV3 Brick. Acestea pot fi funcții simple, cum ar fi pornirea și oprirea unui program, sau complexe, cum ar fi scrierea programului în sine.

3 slide

Descrierea diapozitivului:

Interfață: Meniu EV3 are un meniu care constă din 4 părți: Programe recente Navigare fișiere Aplicații Brick Setări Brick

4 slide

Descrierea diapozitivului:

Programe recente Lansați programe descărcate recent de pe computerul dvs. desktop. Această fereastră va rămâne goală până când începeți să descărcați și să rulați programe. Această fereastră va afișa programele pe care le-ați lansat recent. Programul din partea de sus a listei, care este selectat implicit, este programul care a fost lansat ultima dată.

5 slide

Descrierea diapozitivului:

File Manager Accesați și gestionați toate fișierele stocate în memoria microcomputerului, precum și pe cardul de memorie. Din această fereastră, veți accesa și gestiona toate fișierele de pe EV3 Brick, inclusiv fișierele stocate pe cardul SD. Fișierele sunt organizate în foldere de proiect, care, pe lângă fișierele de program propriu-zise, ​​conțin și sunetele și imaginile utilizate în fiecare proiect. Fișierele pot fi mutate sau șterse folosind navigatorul de fișiere. Programele create folosind mediul de programare al modulelor și aplicațiile de înregistrare a datelor din modul sunt stocate separat în folderele BrkProg_SAVE și BrkDL_SAVE.

6 slide

Descrierea diapozitivului:

Aplicațiile EV3 Control Brick are 4 aplicații preinstalate: A. Port View. B. Controlul motorului. B. Control IR. D. Mediul de programare al modulelor.

7 slide

Descrierea diapozitivului:

A. Port View În prima fereastră a aplicației Port View, puteți vedea rapid ce porturi sunt conectate la senzori sau motoare. Utilizați butoanele EV3 Brick Control pentru a naviga la unul dintre porturile ocupate și veți vedea citirile curente de la senzor sau motor. Instalați niște senzori și motoare și experimentați cu diferite setări. Pentru a vizualiza sau modifica setările curente pentru motoarele și senzorii instalați, apăsați butonul central. Pentru a reveni la fereastra principală a aplicației a modulului, faceți clic pe butonul „Înapoi”.

8 slide

Descrierea diapozitivului:

B. Controlul motorului Controlați mișcarea înainte sau înapoi a oricărui motor conectat la unul dintre cele patru porturi de ieșire. Există două moduri diferite. Într-un singur mod, veți putea controla motoarele conectate la portul A (folosind butoanele sus și jos) și la portul D (folosind butoanele stânga și dreapta). În celălalt mod, controlați motoarele conectate la portul B (folosind butoanele Sus și Jos) și portul C (folosind butoanele Stânga și Dreapta). Comutarea între aceste două moduri se realizează cu ajutorul butonului central. Pentru a reveni la fereastra principală a aplicației a modulului, faceți clic pe butonul „Înapoi”.

9 slide

Descrierea diapozitivului:

Control IR Controlați mișcarea înainte sau înapoi a oricărui motor conectat la unul dintre cele patru porturi de ieșire folosind farul IR de la distanță ca telecomandă și senzorul IR ca receptor (senzorul IR trebuie conectat la portul 4 de pe cărămida EV3) . Există două moduri diferite. Într-un singur mod, veți folosi canalele 1 și 2 pe farul infraroșu de la distanță. Pe canalul 1 veți putea controla motoarele conectate la portul B (folosind butoanele 1 și 2 de pe farul infraroșu de la distanță) și portul C (folosind butoanele 3 și 4 de pe farul infraroșu de la distanță). Pe canalul 2, veți putea controla motoarele conectate la portul A (folosind butoanele 1 și 2) și la portul D (folosind butoanele 3 și 4). În celălalt mod, puteți controla motoarele în același mod, folosind canalele 3 și 4 de pe farul infraroșu de la distanță. Comutarea între aceste două moduri se realizează cu ajutorul butonului central. Pentru a reveni la fereastra principală a aplicației a modulului, faceți clic pe butonul „Înapoi”.

10 diapozitive

Descrierea diapozitivului:

Mediu de programare Brick EV3 Brick vine cu software-ul instalat pe el. Aplicația este similară cu software-ul instalat pe computer. Aceste instrucțiuni conțin informațiile de bază de care aveți nevoie pentru a începe.

11 diapozitiv

Descrierea diapozitivului:

Setări EV3 Brick Această fereastră vă permite să vizualizați și să reglați diferite setări generale ale cărămizii EV3.

12 diapozitive

Descrierea diapozitivului:

Reglarea volumului Puteți crește și reduce volumul în fila Setări din EV3.

13 diapozitiv

În mod tradițional, roboții construiți pe o platformă Lego Mindstorms EV3, sunt programate folosind mediul grafic LabVIEW. În acest caz, programele rulează pe controlerul EV3, iar robotul funcționează autonom. Aici voi vorbi despre o modalitate alternativă de a controla robotul - folosind platforma .NET care rulează pe computer.

Dar înainte de a trece direct în programare, să ne uităm la cazurile în care acest lucru poate fi util:

  • Necesită controlul de la distanță a robotului de pe un laptop (de exemplu, prin apăsarea butoanelor)
  • Trebuie să colectați date de la controlerul EV3 și să le procesați pe un sistem extern (de exemplu, pentru sistemele IoT)
  • Orice altă situație în care doriți să scrieți un algoritm de control în .NET și să îl rulați de pe un computer conectat la controlerul EV3

API-ul LEGO MINDSTORMS EV3 pentru .NET

Controlerul EV3 este controlat de la un sistem extern prin trimiterea de comenzi către portul serial. Formatul de comandă în sine este descris în kit-ul pentru dezvoltatori de comunicare.

Dar implementarea manuală a acestui protocol este plictisitoare. Prin urmare, puteți utiliza învelișul .NET gata făcut, care a fost scris cu atenție de Brian Peek. Codul sursă pentru această bibliotecă este găzduit pe Github, iar pachetul gata de utilizare poate fi găsit pe Nuget.

Conectarea la controlerul EV3

Clasa Brick este folosită pentru a comunica cu controlerul EV3. Când creați acest obiect, trebuie să transmiteți o implementare a interfeței ICommunication constructorului, un obiect care descrie cum să vă conectați la controlerul EV3. Sunt disponibile implementări ale UsbCommunication, BluetoothCommunication și NetworkCommunication (conexiune prin WiFi).

Cea mai populară metodă de conectare este prin Bluetooth. Să aruncăm o privire mai atentă la această metodă de conectare.

Înainte de a ne putea conecta programatic la controler prin Bluetooth, controlerul trebuie să fie conectat la computer utilizând setările sistemului de operare.

După ce controlerul este conectat, accesați setările Bluetooth și selectați fila porturi COM. Ne găsim controlerul, avem nevoie de ieșire port. O vom specifica la crearea obiectului BluetoothCommunication.

Codul de conectare la controler va arăta astfel:

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

Opțional, puteți specifica un timeout de conexiune la controler:

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

Conectarea la unitate prin USB sau WiFi este similară, cu excepția faptului că sunt utilizate obiectele UsbCommunication și NetworkCommunication.

Toate acțiunile ulterioare efectuate cu controlerul sunt efectuate prin obiectul Brick.

Să învârtim motoarele

Pentru a executa comenzi pe controlerul EV3, să accesăm proprietatea DirectCommand a obiectului Brick. Mai întâi, să încercăm să pornim motoarele.

Să presupunem că motorul nostru este conectat la portul A al controlerului, apoi rularea acestui motor la 50% putere va arăta astfel:

Așteptați _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50);

Există și alte metode de a controla motorul. De exemplu, puteți roti un motor la un unghi dat folosind metodele StepMotorAtPowerAsync() și StepMotorAtSpeedAsync(). În total, sunt disponibile mai multe metode, care sunt variații ale modurilor de pornire a motoarelor - în funcție de timp, viteză, putere etc.

O oprire forțată este efectuată prin metoda StopMotorAsync():

Așteptați _brick.DirectCommand.StopMotorAsync(OutputPort.A, true);

Al doilea parametru indică utilizarea frânei. Dacă este setat la false , atunci motorul se va opri până la oprire.

Citirea valorilor de la senzori

Controlerul EV3 are patru porturi pentru senzori. Pe lângă aceasta, motoarele au și codificatoare încorporate, ceea ce le permite să fie folosite ca senzori. Ca rezultat, avem 8 porturi din care pot fi citite valori.

Porturile pentru citirea valorilor pot fi accesate prin proprietatea Ports a obiectului Brick. Ports este o colecție de porturi disponibile pe controler. Prin urmare, pentru a lucra cu un anumit port, trebuie să-l selectați. InputPort.One ... InputPort.Four sunt porturile pentru senzori și InputPort.A ... InputPort.D sunt codificatoarele motorului.

Var port1 = _brick.Ports;

Senzorii din EV3 pot funcționa în diferite moduri. De exemplu, Senzorul de culoare EV3 poate fi folosit pentru a măsura lumina ambientală, pentru a măsura lumina reflectată sau pentru a detecta culoarea. Prin urmare, pentru a „spune” senzorului exact cum vrem să-l folosim, trebuie să-i setăm modul:

Brick.Ports.SetMode(ColorMode.Reflective);

Acum că senzorul este conectat și modul său de funcționare este setat, puteți citi datele din acesta. Puteți obține date brute, valoare procesată și valoare procentuală.

Float si = _brick.Ports.SIValue; int raw = _brick.Ports.RawValue; octet procent = _brick.Ports.PercentValue;

Proprietatea SIValue returnează datele procesate. Totul depinde de ce senzor este utilizat și în ce mod. De exemplu, la măsurarea luminii reflectate, vom obține valori de la 0 la 100 în funcție de intensitatea luminii reflectate (alb/negru).

Proprietatea RawValue returnează valoarea brută primită de la ADC. Uneori este mai convenabil să îl utilizați pentru prelucrare și utilizare ulterioară. Apropo, EV3 IDE are și capacitatea de a obține valori „brute” - pentru aceasta trebuie să utilizați blocul din panoul albastru.

Dacă indicatorul utilizat se așteaptă să primească valori ca procent, atunci puteți utiliza și proprietatea PercentValue.

Executarea comenzilor în lot

Să presupunem că avem la dispoziție un cărucior robot cu două roți și dorim să-l desfășurăm pe loc. În acest caz, cele două roți trebuie să se rotească în sens opus. Dacă folosim DirectCommand și trimitem două comenzi secvențial către controler, poate exista un timp între execuția lor:

Așteptați _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); așteaptă _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B, -50);

În acest exemplu, trimitem o comandă de rotire a motorului A la viteza 50, după ce am trimis această comandă cu succes, repetăm ​​același lucru cu motorul conectat la portul B. Problema este că trimiterea comenzilor nu este instantanee, deci motoarele pot începe să se rotească. în momente diferite - în timp ce comanda este transmisă pentru portul B, motorul A deja va începe să se învârtească.

Dacă este esențial pentru noi să facem motoarele să se rotească în același timp, putem trimite comenzi către controler într-un „pachet”. În acest caz, ar trebui să utilizați proprietatea BatchCommand în loc de DirectCommand:

Brick.BatchCommand.TurnMotorAtPower(OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower(OutputPort.B, -50); așteaptă _brick.BatchCommand.SendCommandAsync();

Acum sunt pregătite două comenzi simultan, după care sunt trimise controlorului într-un singur pachet. Controlerul, după ce a primit aceste comenzi, va porni rotația motoarelor în același timp.

Ce altceva se mai poate face

Pe lângă motoarele care se rotesc și citirea valorilor senzorilor, există o serie de alte acțiuni pe care le puteți efectua pe controlerul EV3. Nu mă voi opri asupra fiecăruia dintre ele în detaliu, voi enumera doar o listă cu ceea ce se poate face:

  • CleanUIAsync() , DrawTextAsync() , DrawLineAsync() etc. - manipularea ecranului încorporat al controlerului EV3
  • PlayToneAsync() și PlaySoundAsync() - folosind difuzorul încorporat pentru a reda sunete
  • WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (din SystemCommand) - lucrul cu fișiere

Concluzie

Utilizarea .NET pentru a controla roboții Mindstorms EV3 este o bună demonstrație a modului în care tehnologiile din diferite lumi pot lucra împreună. Ca rezultat al cercetării asupra API-ului EV3 pentru .NET, a fost creată o mică aplicație care vă permite să vă controlați robotul EV3 de pe computer. Din păcate, există aplicații similare pentru NXT, dar au ocolit EV3. În același timp, sunt utile în competițiile controlate de roboți, precum fotbalul robot.

Aplicația poate fi descărcată și instalată de la acest link:

Selectați modul ecran

Selectarea modului
Blocați caseta de text
Intrări
Butonul de previzualizare

Selectați tipul de text sau grafică pe care doriți să le vedeți utilizând selectorul de mod. După selectarea modului, puteți selecta valorile intrărilor. Intrările disponibile vor varia în funcție de mod. Modurile și intrările sunt descrise mai jos.

Puteți face clic pe butonul „Previzualizare” pentru a previzualiza ceea ce blocul „Ecran” va afișa pe ecranul EV3. Puteți lăsa vizualizarea deschisă în timp ce selectați valorile de intrare pentru bloc.

Coordonatele ecranului

Multe dintre modurile de blocare a ecranului folosesc coordonatele X și Y pentru a determina locația unui element. Coordonatele definesc poziția pixelilor pe ecranul EV3 Brick. Poziția (0, 0) este în colțul din stânga sus al ecranului, așa cum se arată în figura de mai jos.

Dimensiuni ecran: 178 pixeli lățime pe 128 pixeli înălțime. Intervalul valorilor coordonatelor X este de la 0 în stânga ecranului până la 177 în dreapta. Intervalul valorilor coordonatelor Y este de la 0 în partea de sus până la 127 în partea de jos.

Sfaturi si trucuri

Puteți folosi butonul Previzualizare din colțul din stânga sus al blocului Ecran pentru a vă ajuta să găsiți coordonatele corecte ale ecranului.

Text - Pixeli

Modul Text - Pixeli vă permite să afișați text oriunde pe ecranul EV3 Brick.

Resetează fereastra

Modul Reset Window readuce ecranul EV3 Brick la ecranul cu informații standard afișat în timp ce programul rulează. Acest ecran arată numele programului și alte informații de feedback. Când rulați un program pe caramida EV3, acest ecran este afișat până când primul bloc ecran al programului este executat.

Asigurarea vizibilității elementelor afișate

Când programul EV3 se termină, ecranul EV3 Brick este șters și revine la ecranul EV3 Brick Menu. Orice text sau grafică afișată de program va fi ștearsă. Dacă, de exemplu, programul dvs. are un bloc „Ecran” și nimic altceva, atunci ecranul va fi șters atât de repede imediat după terminarea programului, încât nu veți vedea rezultatele blocului „Ecran”.

Dacă doriți ca ecranul să continue după terminarea programului, trebuie să adăugați un bloc la sfârșitul programului pentru a preveni încheierea imediată a programului, așa cum se arată în exemplele următoare.

Afișarea mai multor articole

Dacă doriți să afișați mai multe elemente text sau grafice pe ecran în același timp, este important să nu ștergeți ecranul EV3 Brick între elemente. Fiecare mod al blocului Ecran are o intrare Clear Screen. Dacă Clear Screen este adevărat, întregul ecran va fi șters înainte ca elementul să fie afișat. Aceasta înseamnă că pentru a afișa mai multe elemente, trebuie să setați Clear Screen la Fals pentru fiecare bloc de ecran, cu excepția primului.

Afișarea numărului

Pentru a afișa o valoare numerică în programul dvs., conectați magistrala de date la intrarea text a blocului de afișare text. Busul de date numerice va fi convertit automat în text utilizând conversia tipului magistralei de date (pentru mai multe informații, consultați

Ideea de a înlocui microcomputerul din constructor cu un Beaglebone sau altceva nu este nouă. Dar odată cu lansarea lui EV3, a devenit posibil nu numai să obțineți un analog 100%, ci și să creșteți performanța robotului dvs. lego.

Prezentarea video a proiectului:

E VB acceptă pe deplin sistemul Lego Mindstorms Ev3 atât în ​​hardware cât și în software și este 100% compatibil cu toți senzorii și motoarele Lego. Blocul funcționează la fel ca blocul Lego Mindstorms EV3:

Beaglebone Black un computer Linux cu o singură placă. Este un concurent al Raspberry Pi. Dispune de un puternic procesor AM335x 720MHz ARM®, mare numărul de intrări/ieșiri, posibilitățile pot fi extinse cu plăci suplimentare.

Lego Mindstorms EV3 are un procesor ARM9 (TI Sitara AM180x) 300MHz, așa că trecerea la un procesor ARM Cortex-A8 (TI Sitara AM335x) 1GHz BeagleBone Black îmbunătățește performanța, plus că devine posibilă conectarea plăcilor de expansiune suplimentare!

Cel mai important, Lego Mindstorms EV3 are o descriere deschisă a întregului software și hardware!

De exemplu, cunoscutul robot Rubik's Cube a fost asamblat și demonstrat. Doar în loc de EV3 au instalat EVB-ul dezvoltat. Vă sugerăm să vizionați videoclipul:

Autorii proiectului lansează și vând deja EVB. Ei plănuiesc să extindă semnificativ producția până la sfârșitul lunii aprilie 2015. În plus, au dezvoltat și produc mai mulți senzori compatibili.

Dacă, la fel ca noi, nu aveți capacitățile senzorilor standard EV3, 4 porturi pentru senzori din roboții dvs. nu sunt suficiente sau doriți să conectați câteva periferice exotice la robotul dvs., acest articol este pentru dvs. Crede-mă, un senzor de casă pentru EV3 este mai ușor decât pare. Un „buton de volum” de la un radio vechi sau câteva cuie înfipte în pământ într-un ghiveci de flori ca senzor de umiditate a solului sunt grozave pentru experimentare.

În mod surprinzător, fiecare port pentru senzor EV3 ascunde o serie de protocoale diferite, în principal pentru compatibilitatea cu senzorii NXT și senzorii de la terți. Să aruncăm o privire la modul în care funcționează cablul EV3


Ciudat, dar firul roșu este împământat (GND), cel verde are 4,3V putere plus. Firul albastru este atât SDA pentru magistrala I2C, cât și TX pentru protocolul UART. În plus, firul albastru este intrarea convertizorului A/D pentru EV3. Firul galben este atât SCL pentru magistrala I2C, cât și RX pentru protocolul UART. Fir alb - intrare convertor A/D pentru senzori NXT. Negrul este o intrare digitală, pentru senzori compatibili NXT - dublează GND. Nu este ușor, nu? Să mergem în ordine.

Intrare analogică EV3

Fiecare port pentru senzor are un canal convertor A/D. Este utilizat pentru senzori precum Senzorul tactil (buton), Senzorul de lumină NXT și Senzorul de culoare în modul de lumină reflectată și lumină ambientală, senzorul de sunet NXT și termometrul NXT.

Rezistența de 910 ohmi conectată așa cum se arată în diagramă îi spune controlerului că acest port trebuie să fie comutat în modul de intrare analogică. În acest mod, orice senzor analogic poate fi conectat la EV3, de exemplu, de la Arduino. Cursul de schimb cu un astfel de senzor poate ajunge la câteva mii de sondaje pe secundă, acesta este cel mai rapid tip de senzori.

Senzor de lumina

Termometru

Senzor de umiditate a solului

De asemenea, puteți conecta: un microfon, un buton, un telemetru IR și mulți alți senzori obișnuiți. Dacă senzorul nu are suficientă putere de 4,3V, îl puteți alimenta cu 5V de la portul USB situat pe partea laterală a controlerului EV3.

„Butonul de volum” menționat mai sus (aka rezistor variabil sau potențiometru) este un exemplu grozav de senzor analogic - îl puteți conecta astfel:

Pentru a citi valorile de la un astfel de senzor în mediul de programare LEGO standard, trebuie să utilizați blocul RAW albastru

Protocolul I2C

Acesta este un protocol digital, de exemplu, senzorul cu ultrasunete NXT, mulți senzori Hitechnic, cum ar fi IR Seeker sau Color Sensor V2, lucrează la el. Pentru alte platforme, de exemplu pentru Arduino, există o mulțime de senzori i2c, îi puteți și conecta. Schema este următoarea:

Rezistența de 82 ohmi este recomandată de LEGO Group, dar există referiri la 43 ohmi sau mai puțin în diverse surse. De fapt, am încercat să abandonăm complet aceste rezistențe și totul funcționează, măcar „pe masă”. Într-un robot real care funcționează în condiții de diferite tipuri de interferență, liniile SCL și SDA ar trebui în continuare conectate la putere prin rezistențe, așa cum este indicat în diagrama de mai sus. Viteza lui i2c în EV3 este destul de mică, aproximativ 10000 kbps, motiv pentru care Hitechnic Color Sensor V2 preferat de toată lumea este atât de lent :)

Din păcate, pentru standardul LEGO EV3-G nu există un bloc complet pentru comunicarea bidirecțională cu senzorul i2c, dar folosind medii de programare terțe precum RobotC, LeJOS sau EV3 Basic puteți interacționa cu aproape orice senzor i2c.

Capacitatea EV3 de a lucra cu protocolul i2c deschide o posibilitate interesantă pentru conectarea mai multor senzori la un singur port. Protocolul I2C vă permite să conectați până la 127 de dispozitive slave la o singură magistrală. Iti poti imagina? 127 de senzori pentru fiecare dintre porturile EV3 :) Mai mult, de multe ori o grămadă de senzori i2c sunt combinați într-un singur dispozitiv, de exemplu, în fotografia de mai jos, un senzor 10 în 1 (conține o busolă, giroscop, accelerometru, barometru etc. )

UART

Aproape toți senzorii standard non-EV3, cu excepția senzorului tactil, funcționează folosind protocolul UART, motiv pentru care nu sunt compatibili cu controlerul NXT, care, deși are aceiași conectori, nu are UART implementat pe porturi pentru senzori. Uitați-vă la diagramă, este puțin mai simplă decât cazurile anterioare:

Senzorii UART se coordonează automat cu EV3 pentru viteza lor. Inițial, s-au conectat la o viteză de 2400 kbps, ei convin asupra modurilor de funcționare și a cursului de schimb, trecând apoi la o viteză crescută. Ratele de schimb tipice pentru diferiți senzori sunt 38400 și 115200 kbps.
LEGO a implementat un protocol destul de complicat în senzorii săi UART, așa că nu există senzori terți care să nu fi fost proiectați inițial pentru această platformă, dar care să fie compatibile cu aceasta. Cu toate acestea, acest protocol este foarte convenabil pentru conectarea „de casă”
senzori bazați pe microcontrolere.
Pentru Arduino, există o bibliotecă minunată de EV3UARTEmulation scrisă de renumitul dezvoltator LeJOS Lawrie Griffiths, care permite acestei plăci să pretindă a fi un senzor compatibil UART-LEGO. Blogul său LeJOS News are o mulțime de exemple de conectare a senzorilor de gaz, a unui senzor IMU și a unei busolă digitală folosind această bibliotecă.

Videoclipul de mai jos este un exemplu de utilizare a unui senzor de casă. Nu avem suficienți senzori de distanță LEGO originali, așa că folosim unul dintre senzorii robotului pe care l-am creat:


Sarcina robotului este să înceapă de la celula verde, să găsească o cale de ieșire din labirint (celula roșie) și să se întoarcă la punctul de plecare în cel mai scurt drum, fără a se opri în fundături.