Меню
безкоштовно
Головна  /  ПО/ З'єднання двох і більше блоків EV3. LEGO Mindstorms Education EV3 - Огляд конструктора

З'єднання двох і більше блоків EV3. LEGO Mindstorms Education EV3 - Огляд конструктора

Опис презентації по окремим слайдів:

1 слайд

Опис слайда:

2 слайд

Опис слайда:

Інтерфейс модуля EV3 Модуль EV3 - це центр управління, який приводить в дію ваших роботів. Завдяки екрану, кнопок управління модулем і інтерфейсу модуля EV3, який містить чотири основних вікна, вам відкривається доступ до приголомшливого розмаїття унікальних функцій модуля EV3. Це можуть бути прості функції, як, наприклад, запуск і зупинка програми, або складні, як написання самої програми.

3 слайд

Опис слайда:

Інтерфейс: Меню EV3 має меню, яке складається з 4-ох частин: Недавні програми (Recent Programs) Менеджер файлів (File Navigation) Програми Блоку Управління (Brick Applications) Налаштування Блоку Управління (Brick Settings)

4 слайд

Опис слайда:

Недавні програми Запускайте недавно завантажені з настільного ПК програми. Це вікно буде залишатися порожнім до тих пір, поки ви не почнете завантажувати і запускати програми. В цьому вікні будуть відображатися програми, які ви запускали недавно. Програма у верхній частині списку, яка вибирається за замовчуванням, - це програма, запускається останньої.

5 слайд

Опис слайда:

Менеджер файлів Доступ і управління всіма файлами, що зберігаються в пам'яті мікрокомп'ютера, а також на карті пам'яті. З цього вікна ви будете здійснювати доступ та управління всіма файлами в вашому модулі EV3, включаючи файли, що зберігаються на SD-карті. Файли організовані по папках проектів, які крім власне програмних файлівтакож містять звуки і зображення, які використовуються в кожному проекті. Файли можна переміщувати або видаляти за допомогою навігатора по файлах. Програми, створені з використанням середовища програмування модуля і додатків реєстрації даних модуля, зберігаються окремо в папках BrkProg_SAVE і BrkDL_SAVE.

6 слайд

Опис слайда:

Додатки Блоку Управління EV3 має 4 встановлених додатків: А. Подання порту. Б. Управління моторами. В. ІК управління. Г. Середовище програмування модуля.

7 слайд

Опис слайда:

А. Подання порту В першому вікні програми «Подання порту» ви можете швидко переглянути, до яких портів під'єднані датчики або мотори. За допомогою кнопок управління модулем EV3 перейдіть до одного з зайнятих портів, і ви побачите поточні показання, отримані з датчика або мотора. Встановіть кілька датчиків і моторів і поекспериментуйте з різними настройками. Для того щоб подивитися чи змінити поточні настройки для встановлених моторів і датчиків, натисніть центральну кнопку. Для повернення до основного вікна додатків модуля натисніть кнопку «Назад».

8 слайд

Опис слайда:

Б. Управління мотором Керуйте прямим або зворотним рухом будь-якого мотора, підключеного до одного з чотирьох портів виведення. Існує два різних режиму. В одному режимі ви зможете управляти моторами, підключеними до порту А (за допомогою кнопок «Вгору» і «Вниз») і до порту D (за допомогою кнопок «Вліво» і «Вправо»). В іншому режимі ви керуєте моторами, підключеними до порту B (за допомогою кнопок «Вгору» і «Вниз») і до порту С (за допомогою кнопок «Вліво» і «Вправо»). Перемикання між цими двома режимами здійснюється за допомогою центральній кнопки. Для повернення до основного вікна додатків модуля натисніть кнопку «Назад».

9 слайд

Опис слайда:

ІК-управління Керуйте прямим або зворотним рухом будь-якого мотора, підключеного до одного з чотирьох портів виведення, використовуючи віддалений інфрачервоний маяк в якості дистанційного керуванняі інфрачервоний датчик в якості приймача (інфрачервоний датчик повинен бути підключений до порту 4 в модулі EV3). Існує два різних режиму. В одному режимі ви будете використовувати канали 1 і 2 на віддаленому інфрачервоному маяку. На каналі 1 ви зможете управляти моторами, підключеними до порту В (використовуючи кнопки 1 і 2 на віддаленому інфрачервоному маяку) і до порту С (використовуючи кнопки 3 і 4 на віддаленому інфрачервоному маяку). На каналі 2 ви зможете управляти моторами, підключеними до порту А (використовуючи кнопки 1 і 2) і до порту D (використовуючи кнопки 3 і 4). В іншому режимі ви можете керувати моторами точно так же, замість цього використовуючи канали 3 і 4 на віддаленому інфрачервоному маяку. Перемикання між цими двома режимами здійснюється за допомогою центральної кнопки. Для повернення до основного вікна додатків модуля натисніть кнопку «Назад».

10 слайд

Опис слайда:

Середовище програмування модуля Модуль EV3 поставляється з встановленим на ньому програмним. додатком аналогічно програмному забезпеченню, Встановленому на вашому комп'ютері. Дані інструкції містять основну інформацію, яка знадобитися вам для початку роботи.

11 слайд

Опис слайда:

Налаштування Модуля EV3 цьому діалоговому вікні можна переглядати і коригувати різні Загальні налаштуванняв модулі EV3.

12 слайд

Опис слайда:

Регулювання гучності Ви можете збільшувати і зменшувати Гучність (Volume) у вкладці Налаштування (Settings) у EV3.

13 слайд

Якщо вам також як і нам не вистачає можливостей стандартних датчиків EV3, мало 4-х портів для датчиків в ваших роботах або ви хочете підключити до свого роботу якусь екзотичну периферію - ця стаття для вас. Повірте, саморобний датчик для EV3 - це простіше ніж здається. "Крутілка гучності" зі старого радіоприймача або пара цвяхів, уткнутих в землю в квітковому горщику в якості датчика вологості грунту - відмінно підійдуть для експерименту.

Дивно, але кожен порт датчика EV3 приховує в собі цілий ряд різних протоколів, в основному це зроблено для сумісності з датчиками NXT і датчиками сторонніх виробників. Давайте розглянемо як влаштований кабель EV3


Дивно, але червоний провід - це земля (GND), зелений - плюс харчування 4,3В. Синій провід - одночасно SDA для шини I2C і TX для протоколу UART. Крім цього синій провід - вхід аналогово-цифрового перетворювача для EV3. Жовтий провід - одночасно SCL для шини I2C і RX для протоколу UART. Білий провід - вхід аналогово-цифрового перетворювача для датчиків NXT. Чорний - цифровий вхід, для датчиків, сумісних з NXT - він дублює GND. Непросто, чи не так? Давайте по порядку.

Аналоговий вхід EV3

У кожному порту датчика є канал аналогово-цифрового перетворювача. Він використовується для таких датчиків, як Touch Sensor (кнопка), датчиків NXT Light Sensor і Color Sensor в режимі вимірювання відбитого світла і зовнішньої освітленості, NXT датчика звуку і NXT-термометра.

Опір в 910 Ом, підключений згідно зі схемою повідомляє контролеру, що даний порт необхідно переключити в режим аналогового входу. У такому режимі до EV3 можна підключити будь-який аналоговий датчик, наприклад від Arduino. Швидкість обміну з таким датчікаом при цьому може досягати декількох тисяч опитувань в секунду, це самий швидкодіючий тип датчиків.

Датчик освітленості

термометр

Датчик вологості грунту

Також можна підключити: мікрофон, кнопку, ІК далекомір і багато інших поширені сенсори. Якщо для датчика мало харчування в 4,3В, можна живити його від 5В від роз'єму USB-порту, розташованого на бічній стороні контролера EV3.

Згадана вище "крутилка гучності" (вона ж змінний резисторабо потенціометр) є відмінним прикладом аналогового датчика - її можна підключити ось так:

Для читання значень з такого датчика в стандартному середовищі програмування LEGOнеобхідно використовувати синій блок RAW

протокол I2C

Це цифровий протокол, по ньому працює наприклад ультразвуковий датчик NXT, багато датчики Hitechnic, такі як IR Seeker або Color Sensor V2. Для інших платформ, наприклад для Arduino, є маса i2c-датчиків їх ви теж зможете підключити. Схема наступна:

Опір 82 Ом рекомендовані LEGO Group, проте в різних джерелах зустрічаються згадки про 43 Ом і менше. Насправді ми попробовлі взагалі відмовитися від цих опорів і все працює, принаймні "на столі". У реальному роботі, що працює в умовах різного роду перешкод, лінії SCL і SDA варто все ж притягнути до харчування через опору, як це зазначено на схемі вище. Швидкість роботи i2c в EV3 досить невелика, приблизно 10000 кбіт / с, саме тому всіма улюблений Hitechnic Color Sensor V2 такий гальмівний :)

На жаль для стандартного EV3-G від LEGO не існує повноцінного блоку для двостороннього зв'язку з i2c датчиком, але використовуючи сторонні середовища програмування, такі як RobotC, LeJOS або EV3 Basic можна взаємодіяти практично з будь-якими i2c датчиками.

Здатність EV3 працювати по i2c протоколу відкриває цікаві можливості для підключення декількох датчиків до одного порту. I2C протокол дозволяє Поключіться до однієї шині до 127 підлеглих пристроїв. Уявляєте? За 127 датчиків до кожного з портів EV3 :) Більш того, часто купу i2c датчиків поєднують в одному пристрої, наприклад на фото нижче датчик 10 у 1 (містить компас, гіроскоп, акселерометр, барометр і т.д.)

UART

Майже всі стандартине EV3-датчики, за винятком Touch Sensor, працюють по протоколу UART і саме тому вони не сумісні з контролером NXT, який хоч і має такі ж роз'єми, але на портах датчиків у нього UART не реалізований. Погляньте на схему, вона трохи простіше, ніж в попередніх випадках:

UART-датчики автоматично узгоджують з EV3 швидкість своєї роботи. Спочатку з'єднавшись на швидкості 2400 кбіт / с вони домовляються про режими роботи та швидкості обміну, переходячи потім на підвищену швидкість. Типові швидкості обміну для різних датчиків 38400 і 115200 кбіт / с.
LEGO реалізувала в своїх UART-датчиках досить складний протокол, тому сторонніх датчиків, призначених спочатку не для цієї платформи, але сумісних з нею, не існує. Проте цей протокол дуже зручний для підключення "саморобних"
датчиків, на базі мікроконтролерів.
Для Arduino існує чудова бібліотека EV3UARTEmulation, написана відомим LeJOS-розробником Lawrie Griffiths, яка дозволяє цій платі прикинутися UART-LEGO-сумісним датчиком. У його блозі LeJOS News є маса прикладів підключення датчиків газу, IMU-сенсора і цифрового компаса з використанням даної бібліотеки.

Нижче на відео - приклад використання саморобного датчика. У нас немає достатньої кількості оригінальних датчиків відстані LEGO, тому один з датчиків на роботі ми використовуємо саморобний:


Завдання робота - стартувати із зеленою клітини, знайти вихід з лабіринту (червона клітина) і повернутися на місце старту найкоротшим шляхом, не заїжджаючи в тупики.

У даній статті мова піде про нової версіїконструктора - LEGO Mindstorms Education EV3. Але перш ніж розповідати про нововведення EV3, давайте познайомимося з серією конструкторів LEGO Mindstorms ближче.

LEGO Mindstorms - робототехнический конструктор для хлопців у віці від 10 років. В якості будівельних блоків для робота використовуються деталі LEGO Techniс - багато хлопців вже знайомі з ними по конструкторам «Технологія і фізика», «Пневматика»,. Але побудувати каркас робота недостатньо: треба «навчити» його отримувати інформацію з навколишнього середовища і реагувати на неї. Для цього використовуються спеціальні пристрої - сенсори: вони дозволяють визначати колір, освітленість, відстань до найближчих предметів і багато іншого. Реагувати на «подразники» робот може за допомогою моторів - або виїхати куди-небудь, або що-небудь зробити - наприклад, вкусити кривдника за палець. А «мозком» робота є спеціальний програмований блок, до якого і підключаються всі мотори і датчики.

Перейдемо до складу набору LEGO Mindstorms EV3. Ось що входить в освітню версію набору:

  • 1 програмований блок
  • 3 мотора:
    • 2 великих мотора
    • 1 середній мотор
  • 5 датчиків:
    • 2 датчика торкання
    • 1 датчик кольору
    • 1 ультразвуковий датчик відстані
    • 1 гіроскоп
  • Акумуляторна батарея для робота
  • 528 деталей Lego Technic

Датчики і мотори

Розглянемо, що ж змінилося в EV3 в порівнянні з старою версією NXT.

У наборі буде 3 мотора, але один з них буде відрізнятися як за розмірами так і за технічними характеристиками.

Датчик звуку був замінений на гіроскоп. Решта типів датчиків залишилися колишніми.

Ще однією особливістю є авто-визначення датчиків і моторів при їх підключенні до блоку - про цю особливість я розповім в розділі, що описує нове середовище програмування EV3.

Характеристики датчиків і моторів представлені нижче.

Дуже схожий на датчик попередньої версії. Він визначає, коли кнопка натиснута або відпущена, також він може підраховувати поодинокі або багаторазові натискання.

датчик кольору

Датчик кольору EV3 розрізняє 7 кольорів і може визначити відсутність кольору. Як і в минулій версії він може працювати як датчик освітленості.

  • Вимірює відбитий червоне світло і навколишнє освітлення
  • Здатний визначати відмінності між білим і чорним або квітами: синім, зеленим, жовтим, червоним, білим і коричневим
  • Частота роботи: 1 кГц

гіроскоп

Гіроскопічний датчик EV3 вимірює обертальний рух робота і зміна його положення.

  • Може використовуватися для визначення поточного напрямку обертання
  • Точність: +/- 3 градуси на 90 градусів обороту (в режимі вимірювання нахилу)
  • Може визначити максимум 440 градусів / c (в режимі гіроскопа)
  • Частота роботи: 1 кГц

Ультразвуковий датчик відстані


До основної функції ультразвукового датчика EV3 додалася ще одна - він також може "слухати" ультразвукові коливання, що випускаються іншими датчиками ультразвуку.

  • Може вимірювати відстань в діапазоні 3 - 250 см.
  • Точність вимірювань: +/- 1 см
  • Дискретність результату вимірів: 0.1 см.
  • Може бути використаний для пошуку інших активних ультразвукових датчиків (режим прослуховування)
  • Червона LED підсвічування навколо "око"

великий мотор

Великий сервомотор EV3 дуже схожий на попередню версіюмотора NXT, проте корпус мотора став трохи більше (віртуально він тепер займає 14x7x5 отворів проти колишніх 14x6x5). Також були змінені місця кріплення моторів і їх тип.

  • Максимальні обороти - 160 170 об / хв.
  • Заданий крутний момент - 40 Н / см
  • Реальний крутний момент - 20 Н / см.

середній мотор

Середній сервомотор EV3 заснований на Power Function моторі аналогічного розміру. Додаткове місце зажадали тільки датчик кута повороту і порт для підключення. Цей мотор відмінно підійде для роботи під низькими навантаженнями і високими швидкостями.

  • Максимальні обороти - 240 250 об / хв.
  • Заданий крутний момент - 12 Н / см
  • Реальний крутний момент - 8 Н / см.
  • Вбудований датчик кута повороту (енкодер) мотора з точністю 1 градус

NXT датчики, мотори та кабелі сумісні з EV3, таким чином все раніше побудовані роботи можуть управлятися новим блоком.

Програмований блок EV3

Серйозні зміни відбулися і з мікрокомп'ютером EV3. У порівнянні з NXT, EV3 блок має швидший процесор, більше пам'яті. Прошивка блоку EV3 базується на вільно розповсюджуваної ОС Linux, що дає можливість створювати свої прошивки для блоку. Підключити робота до комп'ютера тепер можливо не тільки через USB і Bluetooth, а й по Wi-Fi. Між собою роботи також можуть «спілкуватися» з USB, Bluetooth і Wi-Fi.

Нижче представлена ​​порівняльна таблиця характеристик NXT і EV3:


NXT EV3
процесор Atmel 32-Bit ARM AT91SAM7S256
48 MHz
256 KB FLASH пам'яті
64 KB RAM пам'яті
ARM9
300 MHz
16 Mb Flash пам'яті
64 Mb RAM пам'яті
З-процесор Atmel 8-Bit ARM AVR, ATmega48
8 MHz
4 KB FLASH пам'яті
512 Byte RAM пам'яті
Відсутнє
Операційна система Пропрієтарна Linux
Порти введення (для датчиків) 4 порту
Підтримує аналогові, цифрові датчики
Швидкість передачі даних: 9600 біт / с (I2C)
4 порту
Підтримує аналогові, цифрові датчики

Швидкість передачі даних: до 460.8 Кбіт / с (UART)
Порти виводу (для моторів) 3 порти
4 порту
Передача даних по USB Використовується режим full speed: 12 Мбіт / c Використовується режим high speed: 480 Мбіт / с
підключення USB пристроїв Нема можливості Можливо послідовне підключення до 3 пристроїв, в тому числі мережевих карт wi-fi і flash карт
Пристрій для читання SD карт Відсутнє Підтримує miniSD карти, максимальний обсяг - 32 Гб
Підключення до мобільних пристроїв Можливе підключення до пристроїв з ОС Android Можливе підключення до пристроїв з ОС Android і iOS (iPhone, iPad)
екран LCD, монохромний
100 * 64 пікселів
LCD, монохромний
178 * 128 пікселів
взаємодія Bluetooth
USB 2.0
Bluetooth v2.1 DER
USB 2.0 (при підключенні до ПК
USB 1.1 (при послідовному підключенні декількох пристроїв)
Wi-Fi

Середовище програмування

З EV3 в комплекті поставляється нова графічне середовище розробки на базі LabView, схожа на NXT-G. Працювати вона буде, як і NXT-G, на ОС Windows і Mac.

Середовище розробки EV3 була значно поліпшена. Тепер всі матеріали для робота: програми для робота, документацію, результати експериментів, фото і відео - можна зберігати в проекті. Був також доданий інструмент zoom, який дозволяє масштабувати програму, щоб, наприклад, побачити всю програму цілком. Варто відзначити, що NXT блок можна програмувати за допомогою нового середовища EV3, однак старий блок підтримує в повному обсязі особливості нової мови програмування.

Перелічимо основні нововведення середовища програмування EV3:

  • Тісна інтеграція середовища програмування з блоком:
    • додана спеціальна сторінказ підключеним обладнанням. Вона дозволяє відстежувати статус EV3 блоку і отримувати значення з датчиків в реальному часі.
    • Датчики і мотори розпізнаються при підключенні автоматично, завдяки функції auto-id. Це дозволяє не вказувати, що до такого-то порту підключений такий-то датчик або мотор.
  • Новий режим налагодження:
    • У процесі роботи програми підсвічується виконується блок. Це дозволяє точно розуміти поведінку програми.
    • На програмному блоці спалахує спеціальний символ, Якщо до цього порту підключений інший датчик або мотор.
    • Додана можливість переглядати значення, передані через канали даних (data wires).
  • Нові можливості програмних блоків:
    • Зчеплення блоків один з одним дозволило відмовитися від "балки виконання", на якій розташовувалися блоки в середовищі NXT-G.
    • У блоків немає такого поняття, як панель настройки, - поведінка тепер налаштовується безпосередньо на блоці, що призвело до збільшення їх розміру. Програму тепер набагато легше читати - відразу видно як налаштовані датчики і мотори.
    • З'явилися блоки "чекати зміни", які дозволяють реагувати на факт зміни значення, а не на зміну до певного значення як в NXT-G.
    • Покращення в передачі даних від блоку до блоку дозволяють спростити перетворення типів (тепер не потрібно вручну перетворювати, наприклад, число в рядок).
    • Додана можливість роботи з масивами.
    • Став можливий достроковий вихід з циклу.

Крім нової мови програмування з'явилися програми під Android та iPhone \ iPad для управління роботом. Також на базі програми Autodesk Invertor Publisher створена програма для створення і перегляду покрокових 3D інструкцій. У цій програмі можна масштабувати і обертати модель на кожному етапі складання, що дозволяє будувати більш складних роботів за інструкціями.

базові роботи

В освітній набір включені інструкції для зборки 5 роботів:

Color Sorter
Класична задача по сортуванню предметів (в даному випадку - Lego деталей) за кольором.

Gyro Boy
Робот-сигвей, який використовує гіроскоп для балансування.

Puppy
Робот-собачка, яку можна гладити, годувати. Спати і справляти нужду вона також вміє :) Нагадує тамагочі.

Робо-рука
Дозволяє переміщати предмети.

Для EV3 набору був підготовлений ресурсний набір LEGO MINDSTORMS Education EV3, що дозволяє збирати інші моделі, використовуючи нові деталі.

При написанні статті використовувалися матеріали блогу nnxt.blogspot.com.

підключення USB

LEGO Mindstorms EV3 може підключатися до ПК або іншому EV3 за допомогою USB-з'єднання. Швидкість з'єднання і стабільність в даному випадку краще, ніж при будь-якому іншому способі, включаючи Bluetooth.

LEGO Mindstorms EV3 має два порти USB.

Зв'язок між LEGO EV3 і іншими блоками LEGO EV3 в режимі підключення шлейфом.

Режим підключення шлейфом служить для з'єднання двох і більше блоків LEGO EV3.

Даний режим:

  • призначений для підключення більше одного LEGO Mindstorms EV3;
  • служить для підключення більшої кількостідатчиків, моторів та інших пристроїв;
  • дозволяє здійснити зв'язок між кількома LEGO Mindstorms EV3 (до 4), що дає нам до 16 зовнішніх портів і така ж кількість внутрішніх портів;
  • дає можливість управляти всім ланцюжком з головною LEGO Mindstorms EV3;
  • не може функціонувати при активному підключенні Wi-Fiабо Bluetooth.

Для включення режиму підключення шлейфом перейдемо у вікно настройки проекту і поставимо галочку.

Якщо вибрати цю режим, то для будь-якого мотора ми можемо вибрати блок EV3, який буде задіяний, і необхідні датчики.

У таблиці наведено варіанти застосування блоків EV3:

Дія

середній мотор

великий мотор

Рульове управління

незалежне керування

гіроскопічний

інфрачервоний

ультразвуковий

обертання мотора

температури

Лічильник енергії

звуковий

Підключення через Bluetooth

Bluetooth дозволяє LEGO Mindstorms EV3 підключитися до ПК, іншому LEGO Mindstorms EV3, смартфонам та іншим Bluetooth-пристроїв. Дальність зв'язку по каналу Bluetooth - до 25 м.

До одного LEGO Mindstorms EV3 можна підключити до 7 блоків. Головний блок EV3 дозволяє відправляти і отримувати повідомлення для кожного підлеглого EV3. Підлеглі EV3 можуть тільки відправляти повідомлення на головний блок EV3, але не між собою.

Послідовність з'єднання EV3 через Bluetooth

Для того щоб з'єднати два і більше блоків EV3 між собою по Bluetooth, потрібно виконати наступні дії:

1. Відкрити вкладку Налаштування.

2. Виберіть Bluetoothі натисніть центральну кнопку.

3. Ставимо прапорець видимості Bluetooth.

4. Перевірте, що знак Bluetooth ( "<") виден на верхней левой стороне.

5. Зробіть згадану вище процедуру для потрібної кількості блоків EV3.

6. Увійдіть у кладку Підключення (Connection):

7. Натисніть на кнопку Пошук (Search):

8. Виберіть EV3, який потрібно підключити (або до якого ви хочете підключитися) і натисніть центральну кнопку.

9. З'єднуємо між собою один і другий блок з ключем доступу.

Якщо зробити все правильно, то в верхньому лівому кутку з'явиться значок "<>", Аналогічно виконується підключення інших блоків EV3, якщо їх більше двох.

Якщо ви вимкнули LEGO EV3, то зв'язок пропаде і вам все пункти необхідно буде повторити.

Важливо: для кожного блоку повинна бути написана своя програма.

Приклад програми:

Перший блок: при натисканні датчика торкання перший блок EV3 передає текст на другий блок з затримкою 3 секунди (головний блок).

Приклад програми для 2 блоки:

Другий блок очікує прийняття тексту з першого блоку, і як тільки він його отримав, виведе на екран слово (в нашому прикладі це слово "Hello") протягом 10 секунд (підлеглий блок).

Підключення через Wi-Fi

Більш далекий зв'язок можлива при підключенні Wi-Fi Dongle до порту USB на EV3.

Щоб використовувати Wi-Fi, потрібно встановити на блок EV3 спеціальний модуль, використовуючи USB-роз'єм (Wi-Fi адаптер (Netgear N150 Wireless Adapter (WNA1100), а також можна підключити Wi-Fi Dongle.

Традиційно роботи, побудовані на платформі Lego Mindstorms EV3, Програмуються з використанням графічного середовища LabVIEW. В цьому випадку програми запускаються на контролері EV3 і робот працює автономно. Тут я розповім про альтернативний спосіб управління роботом - використання платформи.NET, запущеної на комп'ютері.

Але перш ніж ми перейдемо безпосередньо до програмування, давайте розглянемо випадки, коли це може бути корисно:

  • Потрібно віддалене управління роботом з ноутбука (наприклад, після натискання кнопок)
  • Потрібно збирати дані з контролера EV3 і обробляти їх на зовнішній системі (наприклад, для IoT-систем)
  • Будь-які інші ситуації, коли хочеться написати алгоритм управління на.NET і запускати його з комп'ютера, підключеного до контролера EV3

LEGO MINDSTORMS EV3 API for .NET

Управління контролером EV3 з зовнішньої системи здійснюється шляхом відправки команд в послідовний порт. Сам формат команд описаний в Communication Developer Kit.

Але реалізація цього протоколу вручну - справа нудне. Тому можна скористатися готовой.NET-обгорткою, яку дбайливо написав Brian Peek. Тексти програм цієї бібліотеки розміщені на Github, а готовий до використання пакет можна знайти в Nuget.

Підключення до контролера EV3

Для зв'язку з контролером EV3 використовується клас Brick. При створенні цього об'єкта в конструктор потрібно передати реалізацію інтерфейсу ICommunication - об'єкт, що описує спосіб підключення до контролера EV3. Доступні реалізації UsbCommunication, BluetoothCommunication і NetworkCommunication (підключення через WiFi).

Найбільш популярний спосіб підключення - через Bluetooth. Розглянемо детальніше цей спосіб підключення.

Перш ніж ми зможемо програмно підключитися до контролера через Bluetooth, контролер необхідно підключити до комп'ютера, використовуючи налаштування операційної системи.

Після того, як контролер підключений, йдемо в настройки Bluetooth і вибираємо вкладку COM-порти. Знаходимо наш контролер, нам потрібен вихіднийпорт. Його і будемо вказувати при створенні об'єкта BluetoothCommunication.

Код для підключення до контролера буде виглядати так:

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

Опціонально можна вказати таймаут підключення до контролера:

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

Підключення до блоку через USB або WiFi здійснюється аналогічно, за тим винятком, що використовуються об'єкти UsbCommunication і NetworkCommunication.

Всі подальші дії, що виконуються з контролером, здійснюються через об'єкт Brick.

покрутив моторами

Для виконання команд на контролері EV3 звернемося до властивості DirectCommand об'єкта Brick. Для початку спробуємо запустити мотори.

Припустимо, що наш мотор підключений до порту A контролера, тоді запуск цього мотора на потужності 50% буде виглядати так:

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

Є й інші методи для управління мотором. Наприклад, можна повернути мотор на заданий кут, використовуючи методи StepMotorAtPowerAsync () і StepMotorAtSpeedAsync (). Усього доступно кілька методів, які є варіаціями на режими включення моторів - за часом, швидкості, потужності і т.д.

Примусова зупинка здійснюється методом StopMotorAsync ():

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

Другий параметр вказує на використання гальма. Якщо його встановити в false, то мотор буде зупинятися «накатом».

Читання значень з датчиків

Контролер EV3 має чотири порти для підключення сенсорів. Додатково до цього, мотори також мають вбудовані енкодери, що дозволяє використовувати їх як сенсори. У підсумку ми маємо 8 портів, з яких можна зчитувати значення.

Доступ до портів для зчитування значень можна отримати через властивість Ports об'єкта Brick. Ports - це колекція портів, доступних на контролері. Тому для роботи з конкретним портом потрібно його вибрати. InputPort.One ... InputPort.Four - це порти для датчиків, а InputPort.A ... InputPort.D - це енкодери моторів.

Var port1 = _brick.Ports;

Датчики в EV3 можуть працювати в різних режимах. Наприклад, датчик кольору EV3 можна використовувати для вимірювання зовнішнього освітлення, вимірювання відбитого світла або для визначення кольору. Тому, щоб «повідомити» сенсора про те, як саме ми хочемо його використовувати, потрібно задати його режим:

Brick.Ports.SetMode (ColorMode.Reflective);

Тепер, коли датчик підключений і режим його роботи заданий, можна вважати з нього дані. Отримати можна «сирі» дані, оброблене значення і значення у відсотках.

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

Властивість SIValue повертає оброблені дані. Тут все залежить від того, який саме датчик використовується і в якому режимі. Наприклад, при вимірі відбитого світла ми отримаємо значення від 0 до 100 в залежності від інтенсивності відбитого світла (чорний / білий).

Властивість RawValue повертає «сире» значення, отримане з АЦП. Іноді зручніше використовувати саме його для подальшої обробки та використання. До речі, в середовищі розробки EV3 теж є можливість отримання «сирих» значень - для цього потрібно скористатися блоком з синьою панелі.

Якщо використовуваний датчик призів будуть значень у відсотках, то можна також скористатися властивістю PercentValue.

Виконання команд «пачкою»

Припустимо, в нашому розпорядженні є робот-візок з двома колесами і ми хочемо розгорнути його на місці. У цьому випадку два колеса повинні обертатися в протилежному напрямку. Якщо ми скористаємося DirectCommand і послідовно відправимо дві команди контролеру, між їх виконанням може пройти деякий час:

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

У цьому прикладі ми відправляємо команду для обертання мотора A на швидкості 50, після успішного закінчення відправки цієї команди, повторюємо те ж саме з мотором, підключеним до порту B. Проблема в тому, що відправка команд відбувається не моментально, тому мотори можуть почати крутитися в різний час - поки передається команда для порту B, мотора A вжепочне крутитися.

Якщо для нас критично важливо змусити крутиться мотори одночасно, можна відправляти команди контролеру «пачкою». В цьому випадку слід скористатися властивістю BatchCommand замість DirectCommand:

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

Тепер готується відразу дві команди, після чого вони відправляються на контролер одним пакетом. Контролер, отримавши ці команди, почне обертання моторів одночасно.

Що ще можна зробити

Крім обертання моторів і зчитування значень сенсорів, можна виконувати ще ряд дій на контролері EV3. Не буду детально останаліваться на Кадом з них, перерахую тільки список того, що можна зробити:

  • CleanUIAsync (), DrawTextAsync (), DrawLineAsync () і ін. - маніпуляція вбудованим екраном контролера EV3
  • PlayToneAsync () і PlaySoundAsync () - використання вбудованого динаміка для відтворення звуків
  • WriteFileAsync (), CopyFileAsync (), DeleteFileAsync () (з SystemCommand) - робота з файлами

висновок

Іспользованіе.NET для керування роботами Mindstorms EV3 добре демонструє як технології «з різних світів» можуть працювати спільно. Як результат дослідження EV3 API для.NET було створено невеликий додаток, яке дозволяє управляти роботом EV3 з комп'ютера. На жаль, аналогічні програми існують для NXT, а EV3 вони обійшли стороною. У той же час вони корисні на сорвнованіях керованих роботів, наприклад у футболі роботів.

Додаток можна завантажити і встановити за цим посиланням: