Menu
Jest wolny
rejestracja
Dom  /  NA/ Łączenie dwóch lub więcej klocków EV3. LEGO Mindstorms Education EV3 — przegląd zestawu konstrukcyjnego

Łączenie dwóch lub więcej klocków EV3. LEGO Mindstorms Education EV3 — przegląd zestawu konstrukcyjnego

Opis prezentacji na poszczególnych slajdach:

1 slajd

Opis slajdu:

2 slajdy

Opis slajdu:

Interfejs klocka EV3 Klocek EV3 to centrum sterowania, które zasila roboty. Dzięki ekranowi, przyciskom sterowania klockiem i interfejsowi klocka EV3 Brick z czterema głównymi oknami masz dostęp do niesamowitej różnorodności unikalnych funkcji klocka EV3 Brick. Mogą to być proste funkcje, takie jak uruchamianie i zatrzymywanie programu, lub złożone, takie jak pisanie samego programu.

3 slajdy

Opis slajdu:

Interfejs: Menu EV3 posiada menu składające się z 4 części: Ostatnie programy Nawigacja po plikach Aplikacje Kostka Ustawienia kostek

4 slajdy

Opis slajdu:

Najnowsze programy Uruchamiaj ostatnio pobrane programy z komputera stacjonarnego. To okno pozostanie puste, dopóki nie zaczniesz pobierać i uruchamiać programów. To okno wyświetli programy, które ostatnio uruchomiłeś. Program na górze listy, który jest domyślnie wybrany, to program, który został ostatnio uruchomiony.

5 slajdów

Opis slajdu:

Menedżer plików Dostęp i zarządzanie wszystkimi plikami przechowywanymi w pamięci mikrokomputera oraz na karcie pamięci. W tym oknie uzyskasz dostęp do wszystkich plików w klocku EV3 Brick i zarządzasz nimi, w tym plików zapisanych na karcie SD. Pliki są zorganizowane w foldery projektów, które oprócz pliki programów zawierają również dźwięki i obrazy użyte w każdym projekcie. Pliki można przenosić lub usuwać za pomocą nawigatora plików. Programy utworzone za pomocą środowiska programistycznego modułu i aplikacji do rejestrowania danych modułu są przechowywane oddzielnie w folderach BrkProg_SAVE i BrkDL_SAVE.

6 slajdów

Opis slajdu:

Aplikacje klocka sterującego EV3 mają 4 preinstalowane aplikacje: A. Reprezentacja portu. B. Sterowanie silnikiem. B. Sterowanie podczerwienią. D. Środowisko programowania modułów.

7 slajdów

Opis slajdu:

A. Port View W pierwszym oknie aplikacji Port View możesz szybko zobaczyć, które porty są podłączone do czujników lub silników. Użyj przycisków sterowania klockiem EV3 Brick, aby przejść do jednego z zajętych portów, a zobaczysz bieżące odczyty z czujnika lub silnika. Zainstaluj kilka czujników i silników i poeksperymentuj z różnymi ustawieniami. Aby wyświetlić lub zmienić bieżące ustawienia zainstalowanych silników i czujników, naciśnij środkowy przycisk. Aby powrócić do głównego okna aplikacji modułu, kliknij przycisk „Wstecz”.

8 slajdów

Opis slajdu:

B. Sterowanie silnikiem Kontroluje ruch do przodu lub do tyłu dowolnego silnika podłączonego do jednego z czterech portów wyjściowych. Istnieją dwa różne tryby. W jednym trybie będziesz mógł sterować silnikami podłączonymi do portu A (przy użyciu przycisków w górę i w dół) oraz do portu D (przy użyciu przycisków w lewo i w prawo). W drugim trybie sterujesz silnikami podłączonymi do Portu B (przy użyciu przycisków Góra i Dół) oraz Portu C (przy użyciu przycisków Lewo i Prawo). Przełączanie między tymi dwoma trybami odbywa się za pomocą środkowy przycisk. Aby powrócić do głównego okna aplikacji modułu, kliknij przycisk „Wstecz”.

9 slajdów

Opis slajdu:

Sterowanie na podczerwień Kontroluj ruch do przodu lub do tyłu dowolnego silnika podłączonego do jednego z czterech portów wyjściowych za pomocą zdalnego światła na podczerwień jako pilot oraz czujnik podczerwieni jako odbiornik (czujnik podczerwieni musi być podłączony do portu 4 w klocku EV3). Istnieją dwa różne tryby. W jednym trybie użyjesz kanałów 1 i 2 na zdalnym sygnalizatorze podczerwieni. Na kanale 1 będziesz mógł sterować silnikami podłączonymi do portu B (za pomocą przycisków 1 i 2 na zdalnym sygnalizatorze podczerwieni) oraz do portu C (za pomocą przycisków 3 i 4 na zdalnym sygnalizatorze podczerwieni). Na kanale 2 będziesz mógł sterować silnikami podłączonymi do portu A (za pomocą przycisków 1 i 2) oraz do portu D (za pomocą przycisków 3 i 4). W drugim trybie można sterować silnikami w ten sam sposób, używając zamiast tego kanałów 3 i 4 na zdalnym sygnalizatorze podczerwieni. Przełączanie między tymi dwoma trybami odbywa się za pomocą środkowego przycisku. Aby powrócić do głównego okna aplikacji modułu, kliknij przycisk „Wstecz”.

10 slajdów

Opis slajdu:

Środowisko programowania klocka Klocek EV3 Brick jest dostarczany z zainstalowanym oprogramowaniem. Aplikacja jest podobna oprogramowanie zainstalowany na twoim komputerze. Te instrukcje zawierają podstawowe informacje potrzebne do rozpoczęcia pracy.

11 slajdów

Opis slajdu:

Ustawienia klocka EV3 To okno umożliwia przeglądanie i dostosowywanie różnych Ustawienia główne w klocku EV3.

12 slajdów

Opis slajdu:

Regulacja głośności Możesz zwiększać i zmniejszać głośność w zakładce Ustawienia w EV3.

13 slajdów

Jeśli tak jak my brakuje Ci możliwości standardowych czujników EV3, 4 porty czujników w Twoich robotach to za mało lub chcesz podłączyć do swojego robota egzotyczne peryferia, ten artykuł jest dla Ciebie. Uwierz mi, czujnik domowej roboty do EV3 jest łatwiejszy niż się wydaje. „Pokrętło głośności” ze starego radia lub kilka gwoździ wbitych w ziemię w doniczce jako czujnik wilgotności gleby świetnie nadaje się do eksperymentowania.

Co zaskakujące, każdy port czujnika EV3 ukrywa szereg różnych protokołów, głównie w celu kompatybilności z czujnikami NXT i czujnikami innych firm. Przyjrzyjmy się, jak działa kabel EV3


Dziwne, ale czerwony przewód to masa (GND), zielony to plus zasilania 4.3V. Niebieski przewód to zarówno SDA dla magistrali I2C, jak i TX dla protokołu UART. Dodatkowo niebieski przewód to wejście przetwornika A/D dla EV3. Żółty przewód to zarówno SCL dla magistrali I2C, jak i RX dla protokołu UART. Przewód biały - wejście przetwornika A/C dla czujników NXT. Czarny to wejście cyfrowe, dla czujników zgodnych z NXT - duplikuje GND. Niełatwe, prawda? Chodźmy w porządku.

Wejście analogowe EV3

Każdy port czujnika ma kanał przetwornika A/C. Służy do czujników takich jak Touch Sensor (przycisk), czujnik światła NXT i czujnik koloru w trybie światła odbitego i światła otoczenia, czujnik dźwięku NXT i termometr NXT.

Rezystancja 910 omów podłączona, jak pokazano na schemacie, informuje kontroler, że ten port musi zostać przełączony w tryb wejścia analogowego. W tym trybie do EV3 można podłączyć dowolny czujnik analogowy np. z Arduino. Kurs wymiany z takim czujnikiem może sięgać kilku tysięcy sondaży na sekundę, jest to najszybszy rodzaj czujników.

Czujnik światła

Termometr

Czujnik wilgotności gleby

Możesz również podłączyć: mikrofon, przycisk, dalmierz IR i wiele innych popularnych czujników. Jeśli czujnik nie ma wystarczającej mocy 4,3V, można go zasilać napięciem 5V z portu USB znajdującego się z boku kontrolera EV3.

Wspomniane powyżej „pokrętło głośności” (aka zmienny rezystor lub potencjometr) to świetny przykład czujnika analogowego - można go podłączyć tak:

Aby odczytać wartości z takiego czujnika w standardowym środowisku programistycznym LEGO należy użyć niebieskiego bloku RAW

Protokół I2C

Jest to protokół cyfrowy, np. czujnik ultradźwiękowy NXT, pracuje na nim wiele czujników Hitechnic, takich jak IR Seeker czy Color Sensor V2. W przypadku innych platform, na przykład dla Arduino, jest dużo czujników i2c, można je również podłączyć. Schemat wygląda następująco:

Grupa LEGO zaleca rezystancję 82 omów, ale w różnych źródłach istnieją odniesienia do 43 omów lub mniej. Tak naprawdę staraliśmy się całkowicie porzucić te opory i wszystko działa, przynajmniej „na stole”. W prawdziwym robocie pracującym w warunkach różnego rodzaju zakłóceń linie SCL i SDA powinny nadal być podłączone do zasilania przez rezystancje, jak pokazano na powyższym schemacie. Szybkość i2c w EV3 jest dość niska, około 10000 kbps, dlatego ulubiony przez wszystkich Hitechnic Color Sensor V2 jest tak wolny :)

Niestety dla standardowego LEGO EV3-G nie ma kompletnej blokady dwukierunkowej komunikacji z czujnikiem i2c, ale korzystając ze środowisk programistycznych innych firm, takich jak RobotC, LeJOS lub EV3 Basic, można wchodzić w interakcje z prawie każdym czujnikiem i2c.

Zdolność EV3 do współpracy z protokołem i2c otwiera interesującą możliwość podłączenia wielu czujników do jednego portu. Protokół I2C pozwala na podłączenie do 127 urządzeń podrzędnych do jednej magistrali. Czy możesz sobie wyobrazić? 127 czujników na każdy z portów EV3 :) Ponadto często kilka czujników i2c jest połączonych w jednym urządzeniu, np. na poniższym zdjęciu czujnik 10 w 1 (zawiera kompas, żyroskop, akcelerometr, barometr itp. )

UART

Prawie wszystkie standardowe czujniki inne niż EV3, z wyjątkiem Touch Sensora, pracują z wykorzystaniem protokołu UART, dlatego nie są kompatybilne ze sterownikiem NXT, który choć ma te same złącza, nie ma zaimplementowanego UART na porty czujników. Spójrz na diagram, jest trochę prostszy niż w poprzednich przypadkach:

Czujniki UART automatycznie koordynują swoją prędkość z EV3. Początkowo, łącząc się z prędkością 2400 kb/s, uzgadniają tryby pracy i kursy walut, a następnie przechodzą do zwiększona prędkość. Typowe kursy wymiany dla różnych czujników to 38400 i 115200 kbps.
LEGO zaimplementowało dość zawiły protokół w swoich czujnikach UART, więc nie ma czujników innych firm, które nie zostały pierwotnie zaprojektowane dla tej platformy, ale są z nią kompatybilne. Niemniej jednak ten protokół jest bardzo wygodny do łączenia „domowego”
czujniki oparte na mikrokontrolerach.
Dla Arduino istnieje wspaniała biblioteka EV3UARTEmulation napisana przez znanego programistę LeJOS, Lawrie Griffithsa, która pozwala tej płytce udawać czujnik zgodny z UART-LEGO. Jego blog LeJOS News zawiera wiele przykładów podłączenia czujników gazu, czujnika IMU i kompasu cyfrowego za pomocą tej biblioteki.

Poniższy film jest przykładem użycia czujnika domowej roboty. Nie mamy wystarczającej ilości oryginalnych czujników odległości LEGO, więc używamy jednego z czujników w robocie, który wykonaliśmy:


Zadaniem robota jest wystartowanie z zielonej celi, znalezienie wyjścia z labiryntu (czerwona cela) i powrót do punktu startowego najkrótszą drogą, bez zatrzymywania się w ślepych zaułkach.

W tym artykule omówię Nowa wersja konstruktor - LEGO Mindstorms Education EV3. Zanim jednak porozmawiamy o innowacjach EV3, zapoznajmy się z serią zestawów konstrukcyjnych LEGO Mindstorms bliższy.

LEGO Mindstorms to zestaw robotyki dla dzieci w wieku 10+. Części LEGO Techniс są używane jako klocki do budowy robota - wielu facetów zna je już od projektantów "Technologia i fizyka", "Pneumatyka". Jednak zbudowanie ramy robota nie wystarczy: trzeba go „nauczyć” odbierania informacji z otoczenia i reagowania na nie. W tym celu wykorzystywane są specjalne urządzenia - czujniki: pozwalają określić kolor, oświetlenie, odległość do pobliskich obiektów i wiele więcej. Robot może reagować na „drażniące” za pomocą silników - albo gdzieś iść, albo coś zrobić - na przykład ugryźć palec sprawcy. A „mózg” robota to specjalna programowalna jednostka, do której podłączone są wszystkie silniki i czujniki.

Przejdźmy do składu zestawu LEGO Mindstorms EV3. Oto, co zawiera wersja edukacyjna zestawu:

  • 1 programowalny blok
  • 3 silniki:
    • 2 duże silniki
    • 1 średni silnik
  • 5 czujników:
    • 2 czujniki dotykowe
    • 1 czujnik koloru
    • 1 ultradźwiękowy czujnik odległości
    • 1 żyroskop
  • Bateria robota
  • 528 klocków Lego Technic

Czujniki i silniki

Zastanów się, co zmieniło się w EV3 w porównaniu z stara wersja NXT.

W zestawie będą 3 silniki, ale jeden z nich będzie się różnił zarówno wielkością, jak i parametrami technicznymi.

Czujnik dźwięku został zastąpiony żyroskopem. Pozostałe typy czujników pozostały takie same.

Kolejną cechą jest automatyczne wykrywanie czujników i silników w momencie ich podłączenia do bloku – o tej funkcji opowiem w rozdziale opisującym nowe środowisko programowania EV3.

Poniżej przedstawiono charakterystyki czujników i silników.

Bardzo podobny do poprzedniej wersji. Wykrywa, kiedy przycisk jest wciśnięty lub zwolniony i może zliczać pojedyncze lub wielokrotne naciśnięcia.

Czujnik koloru

Czujnik koloru EV3 rozpoznaje 7 kolorów i może wykryć brak koloru. Podobnie jak w poprzedniej wersji może pracować jako czujnik światła.

  • Mierzy odbite światło czerwone i światło otoczenia;
  • Potrafi odróżnić biel i czerń lub kolory niebieski, zielony, żółty, czerwony, biały i brązowy
  • Częstotliwość pracy: 1 kHz

Żyroskop

Czujnik żyroskopowy EV3 mierzy ruch obrotowy robota i zmiany pozycji.

  • Może być używany do określenia aktualnego kierunku obrotów
  • Dokładność: +/- 3 stopnie na 90 stopni obrotu (w trybie pomiaru pochylenia)
  • Może wykryć maksymalnie 440 stopni / c (w trybie żyroskopu)
  • Częstotliwość pracy: 1 kHz

Ultradźwiękowy czujnik odległości


Oprócz głównej funkcji przetwornika ultradźwiękowego EV3 dodano jeszcze jedną – potrafi on także „nasłuchiwać” drgań ultradźwiękowych emitowanych przez inne przetworniki ultradźwiękowe.

  • Potrafi mierzyć odległość w zakresie 3 - 250 cm.
  • Dokładność pomiaru: +/- 1 cm
  • Rozdzielczość wyniku pomiaru: 0,1 cm.
  • Może służyć do wyszukiwania innych aktywnych czujników ultradźwiękowych (tryb nasłuchu)
  • Czerwone oświetlenie LED wokół „oczu”

duży silnik

Duże serwo EV3 jest bardzo podobne do Poprzednia wersja Silnik NXT, jednak obudowa silnika stała się nieco większa (praktycznie zajmuje teraz otwory 14x7x5 w porównaniu z poprzednim 14x6x5). Zmianie uległy również punkty mocowania silników oraz ich typ.

  • Maksymalna prędkość - 160-170 obr./min.
  • Określony moment obrotowy - 40 N/cm
  • Rzeczywisty moment obrotowy - 20 N/cm.

Średni silnik

EV3 Medium Servo bazuje na silniku Power Function podobnej wielkości. Dodatkowa przestrzeń wymagała jedynie czujnika kąta obrotu i portu przyłączeniowego. Ten silnik jest idealny do małych obciążeń i dużych prędkości.

  • Maksymalna prędkość - 240-250 obr./min.
  • Określony moment obrotowy - 12 N/cm
  • Rzeczywisty moment obrotowy - 8 N/cm.
  • Wbudowany czujnik kąta obrotu (enkoder) silnika z dokładnością do 1 stopnia

Czujniki, silniki i kable NXT są kompatybilne z EV3, więc wszystkie wcześniej zbudowane roboty mogą być sterowane przez nowy blok.

Programowalny klocek EV3

Duże zmiany zaszły również w przypadku mikrokomputera EV3. W porównaniu z NXT, blok EV3 ma szybszy procesor, więcej pamięci. Oprogramowanie układowe klocka EV3 Brick jest oparte na swobodnie rozpowszechnianym systemie operacyjnym Linux, co umożliwia tworzenie własnego oprogramowania układowego dla klocka. Teraz możliwe jest podłączenie robota do komputera nie tylko przez USB i Bluetooth, ale także przez Wi-Fi. Roboty mogą również komunikować się ze sobą przez USB, Bluetooth i Wi-Fi.

Poniżej znajduje się tabela porównawcza specyfikacji NXT i EV3:


NXT EV3
procesor Atmel 32-bitowy ARM AT91SAM7S256
48 MHz
256 KB Pamięć flash
64 KB pamięci RAM
ARM9
300 MHz
Pamięć Flash 16 MB
64 MB pamięci RAM
współprocesor Atmel 8-bitowy ARM AVR, ATmega48
8 MHz
4 KB pamięci FLASH
512 bajtów pamięci RAM
zaginiony
System operacyjny Prawnie zastrzeżony linux
Porty wejściowe (dla czujników) 4 porty
Obsługuje czujniki analogowe, cyfrowe
Szybkość transmisji: 9600 bps (I2C)
4 porty
Obsługuje czujniki analogowe, cyfrowe

Szybkość transmisji danych: do 460,8 Kb/s (UART)
Porty wyjściowe (dla silników) 3 porty
4 porty
Transfer danych przez USB Używany jest tryb pełnej prędkości: 12 Mb/s Wykorzystywany jest tryb szybki: 480 Mb/s
Połączenie Urządzenia USB Brak możliwości Możliwe jest połączenie szeregowe do 3 urządzeń, w tym karty sieciowe wi-fi i karty flash
Czytnik kart SD Zaginiony Obsługuje karty miniSD, maksymalna pojemność to 32 GB
Połączenie z urządzenia mobilne Może być podłączony do urządzeń z systemem Android Kompatybilny z urządzeniami Android i iOS (iPhone, iPad)
Ekran LCD, monochromatyczny
100*64 pikseli
LCD, monochromatyczny
178*128 pikseli
Interakcja Bluetooth
USB 2.0
Bluetooth v2.1 DER
USB 2.0 (po podłączeniu do komputera)
USB 1.1 (w przypadku łączenia wielu urządzeń w łańcuch)
Wi-Fi

Środowisko programistyczne

EV3 jest dostarczany z nowym graficznym środowiskiem programistycznym opartym na LabView, podobnym do NXT-G. Będzie działać, podobnie jak NXT-G, na Windows i Mac.

Środowisko programistyczne EV3 zostało znacznie ulepszone. Teraz wszystkie materiały dla robota: programy dla robota, dokumentacja, wyniki eksperymentów, zdjęcia i filmy - mogą być przechowywane w projekcie. Dodano również narzędzie do powiększania, które pozwala na skalowanie programu, na przykład, aby zobaczyć cały program. Warto zauważyć, że klocek NXT Brick może być programowany przy użyciu nowego środowiska EV3, jednak stary klocek NXT Brick nie obsługuje wszystkich funkcji nowego języka programowania.

Oto główne innowacje środowiska programistycznego EV3:

  • Ścisła integracja środowiska programistycznego z blokiem:
    • Dodany specjalna strona z podłączonym sprzętem. Pozwala śledzić stan bloku EV3 i otrzymywać wartości z czujników w czasie rzeczywistym.
    • Czujniki i silniki są automatycznie rozpoznawane po podłączeniu dzięki funkcji auto-id. Pozwala to nie wskazywać, że określony czujnik lub silnik jest podłączony do określonego portu.
  • Nowy tryb debugowania:
    • Podczas działania programu wykonywany blok jest podświetlony. Pozwala to dokładnie zrozumieć zachowanie programu.
    • zapala się na module obsługowym. specjalny charakter jeśli do tego portu podłączony jest inny czujnik lub silnik.
    • Dodano możliwość przeglądania wartości przesyłanych przewodami danych.
  • Nowe funkcje bloków programowych:
    • Powiązanie bloków ze sobą pozwoliło zrezygnować z „belki wykonawczej”, na której znajdowały się bloki w środowisku NXT-G.
    • Bloki nie mają czegoś takiego jak pasek dostosowywania - zachowanie można teraz dostosować bezpośrednio na bloku, co powoduje zwiększenie ich rozmiaru. Program jest teraz znacznie prostszy do odczytania - od razu widać, jak skonfigurowane są czujniki i silniki.
    • Pojawiły się bloki „czekaj na zmianę”, które pozwalają zareagować na fakt zmiany wartości, a nie na zmianę określonej wartości jak w NXT-G.
    • Ulepszenia w przekazywaniu danych z bloku do bloku ułatwiają konwersję typów (teraz nie trzeba ręcznie konwertować np. liczby na ciąg).
    • Dodano możliwość pracy z tablicami.
    • Możliwe stało się wcześniejsze wyjście z cyklu.

Oprócz nowego języka programowania pojawiły się programy na Androida oraz iPhone\iPad do sterowania robotem. Również na podstawie Oprogramowanie Autodesk Invertor Publisher to program do tworzenia i przeglądania instrukcji 3D krok po kroku. W tym programie można skalować i obracać model na każdym etapie montażu, co pozwala na budowanie bardziej skomplikowanych robotów według instrukcji.

Roboty podstawowe

Zestaw edukacyjny zawiera instrukcje budowania 5 robotów:

sortownik kolorów
Klasyczne zadanie sortowania przedmiotów (w tym przypadku części Lego) według koloru.

Chłopiec żyroskopowy
Robot segway, który używa żyroskopu do balansowania.

Szczeniak
Pies-robot, który można pogłaskać i nakarmić. Umie też spać i załatwić się :) Przypomina mi Tamagotchi.

Ramię robota
Umożliwia przenoszenie przedmiotów.

Dla zestawu EV3 przygotowano zestaw zasobów LEGO MINDSTORMS Education EV3, który pozwala na budowanie innych modeli z nowych części.

Podczas pisania artykułu wykorzystano materiały z bloga nnxt.blogspot.com.

Połączenie USB

LEGO Mindstorms EV3 można podłączyć do komputera PC lub innego EV3 przez złącze USB. Szybkość i stabilność połączenia w tym przypadku jest lepsza niż w przypadku jakiejkolwiek innej metody, w tym Bluetooth.

LEGO Mindstorms EV3 posiada dwa porty USB.

Komunikacja między LEGO EV3 a innymi klockami LEGO EV3 w trybie łańcuchowym.

Tryb łańcuchowy służy do łączenia dwóch lub więcej klocków LEGO EV3.

Ten tryb:

  • zaprojektowany do podłączenia więcej niż jednego LEGO Mindstorms EV3;
  • służy do łączenia jeszcze czujniki, silniki i inne urządzenia;
  • umożliwia komunikację pomiędzy kilkoma LEGO Mindstorms EV3 (do 4), co daje nam aż 16 portów zewnętrznych i tyle samo portów wewnętrznych;
  • umożliwia zarządzanie całym łańcuchem za pomocą głównego LEGO Mindstorms EV3;
  • nie może działać, gdy jest aktywny Połączenie WiFi lub bluetooth.

Aby włączyć tryb połączenia łańcuchowego, przejdź do okna ustawień projektu i zaznacz pole.

Po wybraniu tego trybu dla dowolnego silnika możemy wybrać klocek EV3, który będzie używany oraz wymagane czujniki.

Poniższa tabela zawiera listę zastosowań klocków EV3:

Akcja

Średni silnik

duży silnik

Sterowniczy

Niezależne zarządzanie

Żyroskopowy

Podczerwień

Ultradźwiękowy

Obroty silnika

Temperatury

Licznik energii

Dźwięk

Łączenie przez Bluetooth

Bluetooth pozwala LEGO Mindstorms EV3 połączyć się z komputerem PC, innym LEGO Mindstorms EV3, smartfonami i innymi urządzeniami obsługującymi technologię Bluetooth. Zasięg komunikacji przez Bluetooth to do 25 m.

Do jednego LEGO Mindstorms EV3 można podłączyć do 7 bloków. Klocek EV3 Master Brick umożliwia wysyłanie i odbieranie wiadomości dla każdego EV3 Slave. Moduły EV3 Slaves mogą wysyłać wiadomości tylko do klocka głównego EV3, a nie do siebie nawzajem.

Sekwencja parowania EV3 Bluetooth

Aby połączyć co najmniej dwa klocki EV3 Brick przez Bluetooth, wykonaj następujące czynności:

1. Otwórz kartę Ustawienie.

2. Wybierz Bluetooth i naciśnij środkowy przycisk.

3. Wkładamy Pole wyboru widoczność bluetooth.

4. Sprawdź, czy znak Bluetooth ("<") виден на верхней левой стороне.

5. Wykonaj powyższą procedurę dla żądanej liczby klocków EV3.

6. Wejdź w zakładkę Połączenie:

7. Kliknij przycisk Szukaj:

8. Wybierz EV3, z którym chcesz się połączyć (lub z którym chcesz się połączyć) i naciśnij środkowy przycisk.

9. Łączymy jeden i drugi blok kluczem dostępu.

Jeśli wszystko zostanie wykonane poprawnie, w lewym górnym rogu pojawi się ikona „.<>”, połącz inne klocki EV3 w ten sam sposób, jeśli jest ich więcej niż dwa.

Jeśli wyłączysz LEGO EV3, połączenie zostanie utracone i będziesz musiał powtórzyć wszystkie kroki.

Ważne: każdy blok musi mieć swój własny program.

Przykład programu:

Pierwszy blok: po naciśnięciu czujnika dotykowego pierwszy klocek EV3 przesyła tekst do drugiego bloku z 3-sekundowym opóźnieniem (blok główny).

Przykładowy program dla bloku 2:

Drugi blok czeka na odebranie tekstu z pierwszego bloku, a po jego odebraniu wyświetla przez 10 sekund słowo (w naszym przykładzie słowo „Hello”) (podblok).

Łączenie przez Wi-Fi

Większy zasięg jest możliwy po podłączeniu klucza Wi-Fi do portu USB w EV3.

Aby korzystać z Wi-Fi, musisz zainstalować specjalny moduł w klocku EV3 Brick za pomocą złącza USB (adapter Wi-Fi (Netgear N150 Wireless Adapter (WNA1100)), a także możesz podłączyć klucz sprzętowy Wi-Fi).

Tradycyjnie roboty budowane na platformie Lego Mindstorms EV3, są programowane przy użyciu środowiska graficznego LabVIEW. W takim przypadku programy działają na kontrolerze EV3, a robot pracuje autonomicznie. Tutaj opowiem o alternatywnym sposobie sterowania robotem – za pomocą platformy .NET działającej na komputerze.

Ale zanim przejdziemy bezpośrednio do programowania, spójrzmy na przypadki, w których może to być przydatne:

  • Wymaga zdalnego sterowania robotem z laptopa (na przykład za pomocą przycisków)
  • Konieczność zbierania danych z kontrolera EV3 i przetwarzania ich w systemie zewnętrznym (na przykład dla systemów IoT)
  • Każda inna sytuacja, w której chcesz napisać algorytm sterowania w .NET i uruchomić go z komputera podłączonego do kontrolera EV3

LEGO MINDSTORMS EV3 API dla .NET

Kontroler EV3 jest sterowany z systemu zewnętrznego poprzez wysyłanie poleceń do portu szeregowego. Sam format poleceń jest opisany w zestawie Communication Developer Kit.

Ale ręczne wdrażanie tego protokołu jest nudne. Dlatego możesz skorzystać z gotowego wrappera .NET, który został starannie napisany przez Briana Peeka. Kod źródłowy tej biblioteki jest hostowany na Github, a gotowy do użycia pakiet można znaleźć w Nuget.

Podłączanie do kontrolera EV3

Klasa Brick służy do komunikacji z kontrolerem EV3. Kiedy tworzysz ten obiekt, musisz przekazać implementację interfejsu ICommunication do konstruktora, obiektu opisującego sposób łączenia się z kontrolerem EV3. Dostępne są implementacje UsbCommunication , BluetoothCommunication i NetworkCommunication (połączenie przez WiFi).

Najpopularniejszą metodą połączenia jest Bluetooth. Przyjrzyjmy się bliżej tej metodzie połączenia.

Zanim będziemy mogli programowo połączyć się z kontrolerem przez Bluetooth, kontroler musi być podłączony do komputera za pomocą ustawień systemu operacyjnego.

Po podłączeniu kontrolera przejdź do ustawień Bluetooth i wybierz zakładkę Porty COM. Znajdujemy naszego kontrolera, potrzebujemy towarzyski Port. Określimy go podczas tworzenia obiektu BluetoothCommunication.

Kod do połączenia z kontrolerem będzie wyglądał tak:

Publiczne zadanie asynchroniczne Connect(komunikacja ICommunication) ( var communication = new BluetoothCommunication("COM9"); var brick = _brick = new Brick(komunikacja); await _brick.ConnectAsync(); )

Opcjonalnie możesz określić limit czasu połączenia z kontrolerem:

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

Łączenie z urządzeniem przez USB lub Wi-Fi jest podobne, z wyjątkiem tego, że używane są obiekty UsbCommunication i NetworkCommunication.

Wszystkie dalsze czynności wykonywane za pomocą kontrolera są wykonywane za pośrednictwem obiektu Brick.

Zakręćmy silnikami

Aby wykonać polecenia na kontrolerze EV3, przejdźmy do właściwości DirectCommand obiektu Brick. Najpierw spróbujmy uruchomić silniki.

Załóżmy, że nasz silnik jest podłączony do portu A sterownika, wtedy uruchomienie tego silnika z mocą 50% będzie wyglądało tak:

Await _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50);

Istnieją inne metody sterowania silnikiem. Na przykład możesz obrócić silnik pod zadany kąt za pomocą metod StepMotorAtPowerAsync() i StepMotorAtSpeedAsync(). W sumie dostępnych jest kilka metod, które są odmianami trybów włączania silników - według czasu, prędkości, mocy itp.

Wymuszone zatrzymanie jest wykonywane przez metodę StopMotorAsync():

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

Drugi parametr wskazuje na użycie hamulca. Jeśli jest ustawiony na false , silnik zatrzyma się wybiegiem.

Odczytywanie wartości z czujników

Kontroler EV3 ma cztery porty czujników. Oprócz tego silniki mają również wbudowane enkodery, dzięki czemu mogą być używane jako czujniki. W efekcie mamy 8 portów, z których można odczytać wartości.

Dostęp do portów do odczytu wartości można uzyskać za pośrednictwem właściwości Ports obiektu Brick. Porty to zbiór portów dostępnych w kontrolerze. Dlatego, aby pracować z określonym portem, musisz go wybrać. InputPort.One ... InputPort.Four to porty czujników, a InputPort.A ... InputPort.D to kodery silnika.

Var port1 = _cegła.Porty;

Czujniki w EV3 mogą pracować w różnych trybach. Na przykład czujnik koloru EV3 może być używany do pomiaru światła otoczenia, pomiaru światła odbitego lub wykrywania koloru. Dlatego, aby „powiedzieć” czujnikowi, jak dokładnie chcemy go używać, musimy ustawić jego tryb:

Brick.Ports.SetMode(ColorMode.Reflective);

Teraz, gdy czujnik jest podłączony i ustawiony jest jego tryb pracy, możesz odczytać z niego dane. Możesz uzyskać surowe dane, przetworzoną wartość i wartość procentową.

Float si = _cegła.Ports.SIValue; int raw = _cegła.Ports.RawValue; procent bajtów = _brick.Ports.PercentValue;

Właściwość SIValue zwraca przetworzone dane. Wszystko zależy od tego, jaki czujnik jest używany iw jakim trybie. Przykładowo przy pomiarze światła odbitego otrzymamy wartości od 0 do 100 w zależności od natężenia światła odbitego (czarno-białe).

Właściwość RawValue zwraca surową wartość otrzymaną z ADC. Czasami wygodniej jest użyć go do dalszego przetwarzania i użytkowania. Swoją drogą EV3 IDE ma też możliwość pobierania „surowych” wartości – do tego trzeba skorzystać z bloku z niebieskiego panelu.

Jeśli używany miernik oczekuje wartości procentowych, możesz również użyć właściwości PercentValue.

Wykonywanie poleceń w partiach

Załóżmy, że mamy do dyspozycji wózek robota z dwoma kołami i chcemy go rozstawić na miejscu. W takim przypadku oba koła muszą się obracać w przeciwnym kierunku. Jeśli użyjemy DirectCommand i wyślemy do kontrolera dwie komendy po kolei, może upłynąć trochę czasu między ich wykonaniem:

Await _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.A, 50); await _brick.DirectCommand.TurnMotorAtPowerAsync(OutputPort.B,-50);

W tym przykładzie wysyłamy polecenie obrócenia silnika A z prędkością 50, po pomyślnym wysłaniu tego polecenia powtarzamy to samo z silnikiem podłączonym do portu B. Problem polega na tym, że wysyłanie poleceń nie jest natychmiastowe, więc silniki mogą zacząć się obracać w różnym czasie - w czasie gdy komenda jest przekazywana dla portu B, silnik A już zacznie się kręcić.

Jeśli kluczowe jest dla nas jednoczesne rozkręcenie silników, możemy wysyłać polecenia do kontrolera w „paczce”. W takim przypadku należy użyć właściwości BatchCommand zamiast DirectCommand:

Cegła.Polecenie wsadowe.TurnMotorAtPower (Port wyjściowy.A, 50); _cegła.BatchCommand.TurnMotorAtPower (Port wyjściowy.B, -50); czekaj _brick.BatchCommand.SendCommandAsync();

Teraz dwie komendy są przygotowywane na raz, po czym są wysyłane do kontrolera w jednej paczce. Sterownik, po otrzymaniu tych poleceń, rozpocznie jednocześnie obrót silników.

Co jeszcze można zrobić

Oprócz obracania silników i odczytywania wartości czujników, istnieje wiele innych czynności, które można wykonać na kontrolerze EV3. Nie będę się rozwodził nad każdym z nich szczegółowo, wymienię tylko listę tego, co można zrobić:

  • CleanUIAsync() , DrawTextAsync() , DrawLineAsync() , etc. - manipulacja wbudowanym ekranem kontrolera EV3
  • PlayToneAsync() i PlaySoundAsync() — używanie wbudowanego głośnika do odtwarzania dźwięków
  • WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (z SystemCommand) — praca z plikami

Wniosek

Wykorzystanie platformy .NET do sterowania robotami Mindstorms EV3 to dobry przykład na to, jak technologie z różnych światów mogą ze sobą współpracować. W wyniku badań nad EV3 API for .NET powstała niewielka aplikacja, która pozwala na sterowanie robotem EV3 z poziomu komputera. Niestety, podobne aplikacje istnieją dla NXT, ale omijały one EV3. Jednocześnie przydają się w kontrolowanych zawodach robotów, takich jak piłka robotów.

Aplikację można pobrać i zainstalować z tego linku: