Meny
Är gratis
checka in
den huvudsakliga  /  FÖRBI / Anslutning av två eller flera EV3-block. LEGO Mindstorms Education EV3 - Construction Set Review

Ansluter två eller flera EV3-brickor. LEGO Mindstorms Education EV3 - Construction Set Review

Beskrivning av presentationen för enskilda bilder:

1 bild

Bildbeskrivning:

2 bild

Bildbeskrivning:

EV3 Brick Interface EV3 Brick är kontrollcentret som driver dina robotar. Skärmen, Brick Control-knapparna och EV3 Brick Interface, som innehåller fyra huvudfönster, ger dig tillgång till ett fantastiskt utbud av unika EV3 Brick-funktioner. Dessa kan vara enkla funktioner, som att starta och stoppa ett program, eller komplexa, som att skriva själva programmet.

3 bild

Bildbeskrivning:

Gränssnitt: EV3-menyn har en meny som består av fyra delar: Senaste program Filnavigering Brick Applications Brick Settings

4 bild

Bildbeskrivning:

Senaste program Starta program som nyligen hämtats från din stationära dator. Det här fönstret förblir tomt tills du börjar ladda ner och köra program. I det här fönstret visas de program som du nyligen har startat. Programmet högst upp på listan, som väljs som standard, är det program som senast kördes.

5 bild

Bildbeskrivning:

Filhanterare Öppna och hantera alla filer som lagras i mikrodatorns minne såväl som på minneskortet. Från det här fönstret kommer du att kunna komma åt och hantera alla filer på din EV3 Brick, inklusive filer som är lagrade på ditt SD-kort. Filerna är organiserade i projektmappar, som, förutom den faktiska program filer innehåller också ljud och bilder som används i varje projekt. Filer kan flyttas eller raderas med filnavigatorn. Program som skapats med hjälp av modulprogrammeringsmiljön och applikationer för modul dataloggning lagras separat i mapparna BrkProg_SAVE och BrkDL_SAVE.

6 bild

Bildbeskrivning:

EV3 Control Unit Apps har 4 förinstallerade appar: A. Representation av hamnen. B. Motorstyrning. B. IR-kontroll. D. Modulprogrammeringsmiljö.

7 bild

Bildbeskrivning:

A. Portvy I det första fönstret i Port View-applikationen kan du snabbt se vilka portar sensorerna eller motorerna är anslutna till. Använd EV3 Brick Control-knapparna för att navigera till en av de ockuperade portarna och du kommer att se den aktuella sensorn eller motoravläsningarna. Installera flera sensorer och motorer och experimentera med olika inställningar. Tryck på mittknappen för att visa eller ändra aktuella inställningar för installerade motorer och sensorer. För att återgå till huvudapplikationsfönstret i modulen, tryck på "Tillbaka" -knappen.

8 bild

Bildbeskrivning:

B. Motorstyrning Styr framåt- eller backrörelsen för en motor som är ansluten till en av de fyra utgångarna. Det finns två olika lägen. I ett läge kommer du att kunna styra motorerna som är anslutna till port A (med upp- och nedknapparna) och till port D (med vänster- och högerknapparna). I det andra läget styr du motorerna som är anslutna till port B (med upp- och nedknapparna) och till port C (med vänster- och högerknapparna). Växling mellan dessa två lägen görs med mittknappen... För att återgå till huvudapplikationsfönstret i modulen, tryck på "Tillbaka" -knappen.

9 bild

Bildbeskrivning:

IR-kontroll Kontrollera framåt- eller bakåtrörelse av vilken motor som helst som är ansluten till en av de fyra utgångsportarna med hjälp av en infraröd fjärrkontroll som fjärrkontroll och en infraröd sensor som mottagare (en infraröd sensor måste anslutas till port 4 på EV3 Brick). Det finns två olika lägen. I ett läge använder du kanal 1 och 2 på den infraröda fjärrkontrollen. På kanal 1 kommer du att kunna styra motorerna som är anslutna till port B (med knapparna 1 och 2 på den infraröda fjärrkontrollen) och till port C (med knapparna 3 och 4 på den infraröda fjärrkontrollen). På kanal 2 kommer du att kunna styra motorerna som är anslutna till port A (med knapparna 1 och 2) och till port D (med knapparna 3 och 4). I ett annat läge kan du styra motorerna på samma sätt istället för att använda kanalerna 3 och 4 på fjärrkontrollen. Växling mellan dessa två lägen utförs med hjälp av mittknappen. För att återgå till huvudapplikationsfönstret i modulen, tryck på "Tillbaka" -knappen.

10 bild

Bildbeskrivning:

EV3 Brick Programming Environment levereras med programvaran installerad på den. Ansökan är liknande programvarainstallerad på din dator. Dessa instruktioner innehåller den grundläggande informationen du behöver för att komma igång.

11 bild

Bildbeskrivning:

EV3 Brick Settings Detta fönster låter dig visa och justera olika allmänna Inställningar i EV3 Brick.

12 bild

Bildbeskrivning:

Justera volymen Du kan öka och sänka volymen på fliken Inställningar på EV3.

13 bild

Om du, som vi, saknar kapaciteten hos standard EV3-sensorer, är det inte tillräckligt med fyra portar för sensorer i dina robotar, eller om du vill ansluta några exotiska kringutrustning till din robot, är den här artikeln för dig. Tro mig, en DIY EV3-sensor är lättare än det låter. En "volymvridning" från en gammal radio eller ett par naglar som fastnat i marken i en blomkruka som en jordfuktighetssensor är perfekta för experimentet.

Överraskande döljer varje EV3-sensorport ett antal olika protokoll, mestadels för kompatibilitet med NXT- och tredjepartssensorer. Låt oss ta en titt på hur EV3-kabeln fungerar


Konstigt, men den röda ledningen är jordad (GND), grön är plus 4,3V strömförsörjning. Den blå ledningen är SDA för I2C-bussen och TX för UART-protokollet samtidigt. Dessutom är den blå ledningen ingången analog-digitalomvandlare för EV3. Den gula kabeln är både SCL för I2C-bussen och RX för UART-protokollet. Vit ledning - A / D-omvandlareingång för NXT-sensorer. Svart - digital ingång för NXT-kompatibla sensorer - det duplicerar GND. Inte lätt, eller hur? Låt oss gå i ordning.

Analog ingång EV3

Varje sensorport har en analog-till-digital-omvandlare-kanal. Den används för sensorer som pekssensor (tryckknapp), NXT-ljussensor och färgsensor i läge för reflekterat ljus och omgivande ljus, NXT-ljudsensor och NXT-termometer.

Ett motstånd på 910 ohm, anslutet enligt diagrammet, säger till styrenheten att denna port måste bytas till analog ingångsläge. I det här läget kan du ansluta vilken analog sensor som helst till EV3, till exempel från en Arduino. Samtidigt kan växelkursen med en sådan sensor nå flera tusen omröstningar per sekund, detta är den snabbaste typen av sensorer.

Ljussensor

Termometer

Jordfuktighetssensor

Du kan också ansluta: mikrofon, knapp, IR-avståndsmätare och många andra vanliga sensorer. Om sensorn inte har tillräckligt med 4,3 V-ström kan du driva den med 5 V från USB-porten på sidan av EV3-styrenheten.

Ovan nämnda "volymknopp" (aka variabelt motstånd eller en potentiometer) är ett bra exempel på en analog sensor - du kan ansluta den så här:

Att läsa värden från en sådan sensor i en standardmiljö lEGO-programmering blå RAW-block måste användas

I2C-protokollet

Detta är ett digitalt protokoll, till exempel NXT ultraljudssensor, många Hitechnic-sensorer, såsom IR Seeker eller Color Sensor V2. För andra plattformar, till exempel för Arduino, finns det många i2c-sensorer, du kan också ansluta dem. Schemat är som följer:

Impedansen på 82 ohm rekommenderas av LEGO Group, men olika källor nämner 43 ohm eller mindre. Vi försökte faktiskt överge dessa motstånd helt och allt, åtminstone "på bordet". I en riktig robot som arbetar under olika typer av störningar ska SCL- och SDA-linjerna fortfarande dras till strömförsörjningen genom motstånden, som anges i diagrammet ovan. Hastigheten på i2c i EV3 är ganska låg, cirka 10 000 kbps, varför allas favorit Hitechnic Color Sensor V2 är så långsam :)

Tyvärr för standard LEGO EV3-G finns det inget komplett block för tvåvägskommunikation med en i2c-sensor, men med tredjeparts programmeringsmiljöer som RobotC, LeJOS eller EV3 Basic kan du interagera med nästan vilken som helst i2c-sensor.

EV3: s förmåga att arbeta med i2c-protokollet ger en intressant möjlighet att ansluta flera sensorer till en enda port. I2C-protokollet gör att upp till 127 slavenheter kan anslutas till en buss. Kan du föreställa dig? 127 sensorer för var och en av EV3-portarna :) Dessutom kombineras ofta en massa i2c-sensorer i en enhet, till exempel på bilden nedan, en 10-i-1-sensor (innehåller en kompass, gyroskop, accelerometer, barometer, etc.)

UART

Nästan alla standarder för EV3-sensorer, med undantag för pekssensorn, fungerar via UART-protokollet och det är därför de inte är kompatibla med NXT-styrenheten, som, trots att den har samma kontakter, inte har en UART på sensorn hamnar. Ta en titt på diagrammet, det är lite enklare än i tidigare fall:

UART-sensorer matchar automatiskt deras hastighet med EV3. Ursprungligen, efter att ha anslutit med en hastighet av 2400 kbps, enades de om driftlägen och växelkurser och bytte sedan till ökad hastighet... Typiska baudhastigheter för olika sensorer är 38400 och 115200 kbps.
LEGO har implementerat ett ganska invecklat protokoll i sina UART-sensorer, så det finns inga sensorer från tredje part som ursprungligen inte var avsedda för den här plattformen, men kompatibla med den. Ändå är detta protokoll mycket bekvämt för anslutning av "självgjord"
sensorer baserade på mikrokontroller.
Det finns ett underbart bibliotek för Arduino, EV3UARTEmulation, skrivet av den berömda LeJOS-utvecklaren Lawrie Griffiths, som gör att det här kortet kan låtsas vara en UART-LEGO-kompatibel sensor. Hans blogg LeJOS News har massor av exempel på att ansluta gassensorer, en IMU-sensor och en digital kompass som använder detta bibliotek.

Videon nedan är ett exempel på hur du använder en hemgjord sensor. Vi har inte tillräckligt många original LEGO-avståndssensorer, så vi använder en hemgjord av sensorerna på roboten:


Robotens uppgift är att börja från en grön cell, hitta en väg ut ur labyrinten (röd cell) och återvända till startpunkten på den kortaste vägen utan att köra in i återvändsgränder.

Denna artikel kommer att fokusera på ny version konstruktör - LEGO Mindstorms Education EV3. Men innan vi pratar om innovationerna i EV3, låt oss titta närmare på LEGO Mindstorms-serien av konstruktörer.

LEGO Mindstorms är en robotkonstruktion för barn från 10 år och äldre. LEGO Technis-delar används som byggstenar för roboten - många killar känner redan till dem från konstruktörerna "Technology and Physics", "Pneumatics". Men att bygga ett robotskelett räcker inte: det är nödvändigt att "lära" det att ta emot information från miljön och reagera på den. För detta används speciella enheter - sensorer: de låter dig bestämma färg, belysning, avstånd till närliggande objekt och mycket mer. Roboten kan svara på "stimuli" med hjälp av motorer - antingen gå någonstans eller göra något - till exempel bita gärningsmannen i fingret. Och robotens "hjärna" är en speciell programmerbar enhet, till vilken alla motorer och sensorer är anslutna.

Låt oss gå vidare till kompositionen av LEGO Mindstorms EV3-uppsättningen. Här är vad som ingår i den pedagogiska versionen av satsen:

  • 1 programmerbart block
  • 3 motorer:
    • 2 stora motorer
    • 1 medium motor
  • 5 sensorer:
    • 2 beröringssensorer
    • 1 färgsensor
    • 1 ultraljudsavståndssensor
    • 1 gyroskop
  • Robotbatteri
  • 528 Lego Technic-bitar

Sensorer och motorer

Låt oss ta en titt på vad som har förändrats i EV3 jämfört med gammal version NXT.

Satsen kommer att innehålla 3 motorer, men en av dem skiljer sig åt både i storlek och i tekniska egenskaper.

Ljudsensorn har ersatts med ett gyroskop. Resten av sensortyperna förblir desamma.

En annan funktion är automatisk detektering av sensorer och motorer när de är anslutna till blocket - jag kommer att prata om den här funktionen i avsnittet som beskriver den nya EV3-programmeringsmiljön.

Kännetecknen för sensorerna och motorerna presenteras nedan.

Mycket lik sensorn från den tidigare versionen. Den upptäcker när en knapp trycks ned eller släpps, och den kan också räkna enstaka eller flera tryck.

Färgsensor

EV3-färgsensorn upptäcker 7 färger och kan upptäcka brist på färg. Som i föregående version kan den fungera som ljussensor.

  • Åtgärder reflekterade rött ljus och omgivande ljus
  • Kan skilja mellan vitt och svart eller färger: blå, grön, gul, röd, vit och brun
  • Arbetsfrekvens: 1 kHz

Gyroskop

EV3-gyrosensorn mäter robotens rotationsrörelse och positionsförändringar.

  • Kan användas för att bestämma den aktuella rotationsriktningen
  • Noggrannhet: +/- 3 grader vid 90 varv (i lutningsmätningsläge)
  • Kan upptäcka maximalt 440 grader / s (i gyro-läge)
  • Arbetsfrekvens: 1 kHz

Ultraljudsavståndssensor


Till huvudfunktionen för EV3-ultraljudssensorn har ytterligare en lagts till - den kan också "lyssna" till ultraljudsvibrationerna från andra ultraljudssensorer.

  • Den kan mäta avståndet mellan 3 och 250 cm.
  • Mätnoggrannhet: +/- 1 cm
  • Upplösning av mätresultatet: 0,1 cm.
  • Kan användas för att söka efter andra aktiva ultraljudssensorer (lyssningsläge)
  • Röd LED-belysning runt "ögonen"

Stor motor

Den stora servomotorn EV3 liknar väldigt mycket föregående version av NXT-motorn har motorhuset emellertid blivit lite större (faktiskt upptar det nu 14x7x5 hål jämfört med det tidigare 14x6x5). Dessutom har motorns fästpunkter och deras typ ändrats.

  • Maxhastighet - 160-170 rpm.
  • Ställ in vridmoment - 40 N / cm
  • Det verkliga vridmomentet är 20 N / cm.

Medium motor

EV3 Medium Servomotor är baserad på en Power Function-motor av samma storlek. Endast rotationsvinkelsensorn och anslutningsporten krävde extra utrymme. Denna motor är perfekt för låga belastningar och höga hastigheter.

  • Maxhastighet - 240-250 rpm.
  • Ställ in vridmoment - 12 N / cm
  • Det verkliga vridmomentet är 8 N / cm.
  • Inbyggd vinkelsensor (kodare) på motorn med en noggrannhet på 1 grad

NXT-sensorer, motorer och kablar är EV3-kompatibla, så alla tidigare byggda robotar kan styras av den nya enheten.

Programmerbar EV3-tegel

EV3-mikrodatorn har också genomgått stora förändringar. Jämfört med NXT har EV3-blocket en snabbare processor, mer minne. EV3-blockets firmware är baserad på det gratis Linux-operativsystemet, vilket gör det möjligt att skapa din egen firmware för blocket. Det är nu möjligt att ansluta roboten till en dator inte bara via USB och Bluetooth utan också via Wi-Fi. Robotar kan också kommunicera med varandra via USB, Bluetooth och Wi-Fi.

Nedan följer en jämförelsetabell för NXT- och EV3-specifikationerna:


NXT EV3
CPU Atmel 32-bitars ARM AT91SAM7S256
48 MHz
256 kB Flashminne
64 kB RAM-minne
ARM9
300 MHz
16 Mb Flash-minne
64 Mb RAM-minne
Co-processor Atmel 8-bitars ARM AVR, ATmega48
8 MHz
4 KB FLASH-minne
512 Byte RAM-minne
frånvarande
Operativ system Proprietär Linux
Ingångsportar (för sensorer) 4 portar
Stöder analoga, digitala sensorer
Baudhastighet: 9600 bps (I2C)
4 portar
Stöder analoga, digitala sensorer

Baudhastighet: upp till 460,8 Kbps (UART)
Utgångsportar (för motorer) 3 portar
4 portar
USB-dataöverföring Fullhastighetsläge i användning: 12 Mbps Höghastighetsläge i användning: 480 Mbps
Förbindelse USB-enheter Ingen möjlighet Upp till 3 enheter kan vara kedjekedjade, inklusive nätverkskort wi-fi och flash-kort
SD-kortläsare Frånvarande Stöder miniSD-kort, max kapacitet 32 \u200b\u200bGB
Koppla till mobil enheter Anslutning till Android OS-enheter är möjlig Kan anslutas till Android- och iOS-enheter (iPhone, iPad)
Skärm LCD, svartvitt
100 * 64 pixlar
LCD, svartvitt
178 * 128 pixlar
Samspel Blåtand
USB 2.0
Bluetooth v2.1 DER
USB 2.0 (när den är ansluten till en dator
USB 1.1 (vid kedjekoppling av flera enheter)
Wi-Fi

Programmeringsmiljö

EV3 levereras med en ny LabView-baserad grafisk utvecklingsmiljö som liknar NXT-G. Det fungerar, som NXT-G, på Windows- och Mac-operativsystem.

EV3-utvecklingsmiljön har förbättrats avsevärt. Nu kan allt material för roboten: program för roboten, dokumentation, experimentella resultat, foton och videor - lagras i projektet. Ett zoomverktyg lades också till, vilket gör att du kan skala programmet så att du till exempel kan se hela programmet som en helhet. Det är värt att notera att NXT-blocket kan programmeras med den nya EV3-miljön, men det gamla blocket stöder inte alla funktioner i det nya programmeringsspråket.

Låt oss lista de viktigaste innovationerna i EV3-programmeringsmiljön:

  • Nära integration av programmeringsmiljön med blocket:
    • Lagt till specialsida med ansluten utrustning. Det låter dig övervaka EV3-blockets status och ta emot värden från sensorerna i realtid.
    • Sensorer och motorer känns igen automatiskt när de är anslutna tack vare auto-id-funktionen. Detta gör att du inte kan ange att en sådan sensor eller motor är ansluten till en sådan port.
  • Nytt felsökningsläge:
    • Medan programmet körs markeras det block som körs. Detta låter dig exakt förstå beteendet hos programmet.
    • Tänds på programmeringsenheten. speciell karaktärom en annan sensor eller motor är ansluten till den här porten.
    • Lagt till möjligheten att visa värden som överförs via datakablar.
  • Nya funktioner i programvarublock:
    • Att koppla ihop blocken gjorde det möjligt att överge "exekveringsstrålen" på vilken blocken befann sig i NXT-G-miljön.
    • Block har inte ett sådant koncept som en anpassningspanel - beteendet kan nu anpassas direkt på blocket, vilket resulterar i en ökning av deras storlek. Programmet är nu mycket lättare att läsa - du kan omedelbart se hur sensorerna och motorerna är konfigurerade.
    • Det finns nu block "vänta på förändring", som låter dig reagera på faktumet av en förändring i värde och inte på en förändring till ett visst värde som i NXT-G.
    • Förbättringar i block-to-block dataöverföring möjliggör enklare typkonvertering (behöver inte längre konvertera manuellt, till exempel ett nummer till en sträng).
    • Lagt till förmågan att arbeta med matriser.
    • En tidig utgång från cykeln har blivit möjlig.

Förutom det nya programmeringsspråket har program för Android och iPhone \\ iPad verkat styra roboten. Också baserat på autodesk produkter Invertor Publisher skapade ett program för att skapa och visa steg-för-steg 3D-instruktioner. I det här programmet kan du skala och rotera modellen i varje monteringsfas, vilket gör att du kan bygga mer komplexa robotar enligt instruktionerna.

Grundläggande robotar

Utbildningssatsen innehåller instruktioner för montering av fem robotar:

Färgsorterare
Den klassiska uppgiften att sortera objekt (i detta fall Lego-delar) efter färg.

Gyro pojke
Segwayrobot med hjälp av ett gyroskop för balansering.

Valp
Robothund som kan strökas, matas. Hon vet också hur man ska sova och lindra sig själv :) Påminner om en Tamagotchi.

Robo-hand
Låter dig flytta objekt.

För EV3-uppsättningen förbereddes ett LEGO MINDSTORMS Education EV3 Resource Kit, så att du kan montera andra modeller med nya delar.

När du skrev artikeln användes material från bloggen nnxt.blogspot.com.

USB-anslutning

LEGO Mindstorms EV3 kan anslutas till en dator eller annan EV3 via en USB-anslutning. Anslutningshastigheten och stabiliteten är bättre i detta fall än med någon annan metod, inklusive Bluetooth.

LEGO Mindstorms EV3 har två USB-portar.

Daisy chain-kommunikation mellan LEGO EV3 och andra LEGO EV3-klossar.

Daisy chain-läge ansluter två eller flera LEGO EV3-klossar.

Detta läge:

  • utformad för att ansluta mer än en LEGO Mindstorms EV3;
  • tjänar till att ansluta mer sensorer, motorer och andra enheter;
  • möjliggör kommunikation mellan flera LEGO Mindstorms EV3 (upp till 4), vilket ger oss upp till 16 externa portar och samma antal interna portar;
  • låter dig hantera hela kedjan från de viktigaste LEGO Mindstorms EV3;
  • kan inte fungera när den är aktiv wi-Fi-anslutning eller Bluetooth.

För att aktivera slinganslutningsläget, gå till fönstret för projektinställningar och markera rutan.

När detta läge är valt kan vi välja vilken EV3-tegel som ska användas och vilka sensorer som krävs för alla motorer.

Tabellen visar alternativen för att använda EV3 Bricks:

spela teater

Medium motor

Stor motor

Styrning

Oberoende ledning

Gyroskopisk

Infraröd

Ultraljuds

Motorrotation

Temperaturer

Energimätare

Ljud

Bluetooth-anslutning

Bluetooth tillåter LEGO Mindstorms EV3 att ansluta till datorer, andra LEGO Mindstorms EV3, smartphones och andra Bluetooth-enheter. Kommunikationsområdet via Bluetooth är upp till 25 m.

Upp till 7 block kan anslutas till en LEGO Mindstorms EV3. EV3 Master Brick låter dig skicka och ta emot meddelanden för varje EV3-slav. EV3-slavar kan bara skicka meddelanden till Master EV3 Brick, inte till varandra.

EV3 Bluetooth-anslutningssekvens

För att ansluta två eller flera EV3-brickor till varandra via Bluetooth måste du göra följande:

1. Öppna en flik Anpassning.

2. Välj Blåtand och tryck på mittknappen.

3. Vi sätter Kryssruta synlighet Blåtand.

4. Kontrollera att Bluetooth-tecknet ("<") виден на верхней левой стороне.

5. Följ proceduren ovan för önskat antal EV3-brickor.

6. Gå till fliken Anslutning:

7. Klicka på knappen Sök:

8. Välj den EV3 du vill ansluta (eller till vilken du vill ansluta) och tryck på mittknappen.

9. Vi ansluter ett och det andra blocket med en åtkomstnyckel.

Om allt görs korrekt, "<>", kan du ansluta andra EV3-brickor på samma sätt om det finns fler än två.

Om du stängde av LEGO EV3 förloras anslutningen och du måste upprepa alla punkter.

Viktigt: för varje block måste dess eget program skrivas.

Exempelprogram:

Första blocket: När du trycker på en beröringssensor överför den första EV3-brickan texten till det andra blocket med 3 sekunders fördröjning (huvudblock).

Exempel på program för block 2:

Det andra blocket väntar på att texten från det första blocket ska accepteras, och så snart det tar emot det kommer det att visa ett ord (i vårt exempel ordet "Hello") i 10 sekunder (underordnat block).

Wi-Fi-anslutning

Kommunikation på längre avstånd är möjlig genom att ansluta Wi-Fi-dongeln till en USB-port på EV3.

För att använda Wi-Fi måste du installera en dedikerad tegelsten på EV3-brickan med en USB-kontakt (Wi-Fi-adapter (Netgear N150 Wireless Adapter (WNA1100)), eller så kan du också ansluta en Wi-Fi-dongel.

Traditionellt byggde robotar på en plattform Lego Mindstorms EV3programmeras med hjälp av den grafiska LabVIEW-miljön. I det här fallet körs programmen på EV3-kontrollenheten och roboten fungerar självständigt. Här kommer jag att prata om ett alternativt sätt att styra roboten - med .NET-plattformen som körs på datorn.

Men innan vi går direkt till programmering, låt oss titta på några fall där det kan vara användbart:

  • Kräver fjärrkontroll av roboten från en bärbar dator (till exempel genom att trycka på knappar)
  • Det krävs att samla in data från EV3-styrenheten och bearbeta den på ett externt system (till exempel för IoT-system)
  • Alla andra situationer när du vill skriva en kontrollalgoritm i .NET och köra den från en dator ansluten till EV3-styrenheten

LEGO MINDSTORMS EV3 API för .NET

EV3-styrenheten styrs från ett externt system genom att skicka kommandon till den seriella porten. Själva kommandoformatet beskrivs i kommunikationsutvecklarpaketet.

Men manuellt att implementera detta protokoll är tråkigt. Därför kan du använda ett färdigt .NET-omslag som noggrant skrevs av Brian Peek. Källkoden för detta bibliotek finns på Github och det färdiga att använda paketet finns på Nuget.

Ansluter till en EV3-styrenhet

Brick-klassen används för att kommunicera med EV3-styrenheten. När du skapar detta objekt måste du skicka implementeringen av ICkommunikationsgränssnittet till konstruktören - ett objekt som beskriver hur man ansluter till EV3-styrenheten. Implementeringar av UsbCommunication, BluetoothCommunication och NetworkCommunication är tillgängliga.

Det mest populära sättet att ansluta är via Bluetooth. Låt oss titta närmare på denna anslutningsmetod.

Innan vi kan ansluta till styrenheten via Bluetooth, måste styrenheten vara ansluten till datorn med inställningarna för operativsystemet.

När styrenheten är ansluten, gå till Bluetooth-inställningarna och välj fliken COM-portar. Vi hittar vår kontroller, vi behöver utgående hamn. Vi kommer att specificera det när vi skapar ett BluetoothCommunication-objekt.

Koden för anslutning till styrenheten ser ut så här:

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

Alternativt kan du ange timeout för anslutning till styrenheten:

Vänta på _brick.ConnectAsync (TimeSpan.FromSeconds (5));

Anslutning till enheten via USB eller WiFi är liknande, förutom att objektet UsbCommunication och NetworkCommunication används.

Alla ytterligare åtgärder som utförs med styrenheten utförs via tegelobjektet.

Låt oss vrida på motorerna

För att utföra kommandon på EV3-styrenheten, se Brick-objektets DirectCommand-egenskap. Låt oss först försöka starta motorerna.

Antag att vår motor är ansluten till styrenhetens port A, då startar denna motor med 50% effekt så här:

Vänta på _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50);

Det finns andra metoder för att styra motorn. Du kan till exempel rotera en motor med en angiven vinkel med hjälp av metoderna StepMotorAtPowerAsync () och StepMotorAtSpeedAsync (). Totalt finns flera metoder tillgängliga, vilka är variationer på sätten att slå på motorerna - i tid, hastighet, effekt etc.

Ett tvångsstopp utförs av metoden StopMotorAsync ():

Vänta på _brick.DirectCommand.StopMotorAsync (OutputPort.A, true);

Den andra parametern indikerar användningen av bromsen. Om den är inställd på falsk, stannar motorn.

Avläsning av värden från sensorer

EV3-kontrollenheten har fyra sensorportar. Utöver detta har motorerna också inbyggda kodare, vilket gör att de kan användas som sensorer. Som ett resultat har vi åtta portar där du kan läsa värden.

Portar för att läsa värden kan nås via egenskapen Portar för tegelobjektet. Portar är en samling portar som finns tillgängliga på styrenheten. Därför måste du välja den för att arbeta med en viss port. InputPort.One ... InputPort.Four är sensorportar och InputPort.A ... InputPort.D är motorkodare.

Var port1 \u003d _brick.Ports;

Sensorerna i EV3 kan fungera i olika lägen. Till exempel kan en EV3-färgsensor användas för att mäta omgivande ljus, mäta reflekterat ljus eller upptäcka färg. För att "berätta" sensorn exakt hur vi vill använda den måste vi därför ställa in dess läge:

Brick.Ports.SetMode (ColorMode.Reflective);

Nu när sensorn är ansluten och dess driftläge är inställt kan du läsa data från den. Du kan få rådata, bearbetat värde och procentvärde.

Flyta si \u003d _brick.Ports.SIVvärde; int raw \u003d _brick.Ports.RawValue; byte-procent \u003d _brick.Ports.PercentValue;

Egenskapen SIValue returnerar bearbetade data. Allt beror på vilken typ av sensor som används och i vilket läge. Till exempel, vid mätning av reflekterat ljus får vi värden från 0 till 100 beroende på intensiteten hos det reflekterade ljuset (svart / vitt).

Egenskapen RawValue returnerar det råvärde som erhållits från ADC. Ibland är det bekvämare att använda den för vidare bearbetning och användning. Förresten, i EV3-utvecklingsmiljön finns det också möjlighet att få "råa" värden - för detta måste du använda blocket från den blå panelen.

Om sensorn du använder förväntar sig att värden ska erhållas i procent kan du också använda egenskapen PercentValue.

Utförande av kommandon i en "batch"

Anta att vi har en robotvagn med två hjul och vi vill använda den på plats. I detta fall måste de två hjulen rotera i motsatt riktning. Om vi \u200b\u200banvänder DirectCommand och sekventiellt skickar två kommandon till styrenheten kan det ta lite tid innan de körs:

Vänta på _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50); vänta på _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.B, -50);

I det här exemplet skickar vi ett kommando för att rotera motor A vid hastighet 50, efter det att kommandot skickats, upprepar vi detsamma med motorn ansluten till port B. Problemet är att kommandona inte skickas omedelbart, så motorer kan börja snurra i olika tider - medan kommandot sänds för port B, motor A redan kommer att börja snurra.

Om det är viktigt för oss att få motorerna att snurra samtidigt kan vi skicka kommandon till styrenheten i en "batch". I det här fallet bör du använda egenskapen BatchCommand istället för DirectCommand:

Brick.BatchCommand.TurnMotorAtPower (OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower (OutputPort.B, -50); vänta på _brick.BatchCommand.SendCommandAsync ();

Nu förbereds två kommandon samtidigt, varefter de skickas till styrenheten i ett paket. Styrenheten, efter att ha fått dessa kommandon, kommer att börja rotera motorerna samtidigt.

Vad mer kan du göra

Förutom att rotera motorerna och läsa av sensorvärdena finns det ett antal andra saker du kan göra på EV3-styrenheten. Jag kommer inte att döma över var och en av dem i detalj, jag listar bara en lista över vad som kan göras:

  • CleanUIAsync (), DrawTextAsync (), DrawLineAsync (), etc. - manipulation av den inbyggda skärmen för EV3-kontrollen
  • PlayToneAsync () och PlaySoundAsync () - använder den inbyggda högtalaren för att spela ljud
  • WriteFileAsync (), CopyFileAsync (), DeleteFileAsync () (från SystemCommand) - arbetar med filer

Slutsats

Användning av .NET för att styra Mindstorms EV3-robotar är ett bra exempel på hur tekniker ”från olika världar” kan fungera tillsammans. Som ett resultat av att undersöka EV3 API för .NET skapades en liten applikation som låter dig styra EV3-roboten från en dator. Tyvärr finns liknande applikationer för NXT, och de har kringgått EV3. Samtidigt är de användbara vid streckade kontrollerade robotar, till exempel i robotfotboll.

Applikationen kan laddas ner och installeras från den här länken: