Пульт управления лего майндстормс

Обновлено: 03.05.2024

Пульт управления Lego роботом можно достаточно быстро сделать на основе домашнего набора EV3. Часто бывает, что робот собран, а навыков программирования еще нет. Но есть желание заставить робота двигаться. Роботом можно управлять удаленно, не прибегая к программированию при помощи инфракрасного управления.

ик управление роботом

ик управление машинка

Датчик устанавливаем на робота и соединяем кабелем с четвертым портом. Затем левый большой мотор соединяем с портом B, а правый с портом C.

Нажав на центральную кнопку включаем микрокомпьютер EV3. После перехода в третье приложение IR Control третьего окна интерфейса модуля EV3 мы получаем возможность управлять прямым и обратным движением любого мотора, подключенного к любому порту. Пульт управления роботом EV3 практически готов.

При этом инфракрасный датчик является приемником управляющих сигналов, а инфракрасный маяк служит для удаленного управления, то есть является передатчиком.

Режимы пульта управления Lego EV3

Есть два режима управления. Первый режим использует первый и второй канал для связи с инфракрасным маяком. Обозначается на экране модуля как CH1+2. Второй режим использует третий и четвертый канал. Обозначается как CH3+4. Если включить первый канал, то можно управлять моторами, подключенными к портам B и C.

ИК управление EV3

инфракрасное управление

При этом первая и вторая кнопка управляет прямым и обратным движением мотора в порту B. Третья и четвертая кнопка управляет мотором в порту C. Если мотор из порта B подсоединить к порту A и мотор из порта C подключить к порту D, то нужно переключить канал на инфракрасном маяке с первого на второй. Первая и вторая кнопка будут управлять мотором в порту A, третья и четвертая мотором в порту D.

  • Нажимаем на центральную кнопку и переключаемся во второй режим. Моторы оставляем в портах A и D. Канал переключаем на четвертый. Управление моторами будет происходить так же как на втором канале первого режима управления.
  • Переставив соединительные кабеля обратно в порты B и C, и переключившись на третий канал можно убедиться, что управление моторами аналогично первому режиму управления на первом канале. То есть левым мотором управляет кнопка один и два, правым три и четыре.

Если одновременно нажать кнопку один и три, то робот будет двигаться вперед. При одновременном нажатии кнопки два и четыре – назад.

Инфракрасный маяк

ИК маяк

Теперь, произведя нужные настройки, можно дистанционно управлять роботом тележкой и задавать различные траектории движения. Для такого управления не нужны навыки программирования и можно получить быстрый и наглядный результат

Для создания более сложного пульта управления на базе инфракрасного датчика и маяка уже будут нужны навыки программирования. Как правило управление создается при помощи блока «Переключатель».

В этом случае на удаленном маяке можно использовать одиннадцать различных комбинаций кнопок и значительно расширить возможности пульта управления Lego EV3.

Для того, чтобы лучше понимать принципы работы модуля Lego EV3, нужно освоить управление блоком EV3. Микрокомпьютер Lego EV3 является пунктом управления, при помощи которого можно приводить в действие созданных вами роботов.

Управление блоком EV3

управление микроконтроллеромEV3

После включения микроконтроллера EV3 можно увидеть на экране его меню. На экране видно, что происходит внутри блока и теперь доступно использование интерфейса микрокомпьютера EV3, который содержит четыре окна.

При помощи интерфейса микроконтроллера EV3 можно выполнять множество функций. Это может быть просмотр значений датчиков, включение и выключение программ, написание программ и так далее.

Управление EV3 при помощи интерфейса модуля EV3

Управлять модулем EV3 можно при помощи его интерфейса. Меню микрокомпьютера EV3 содержит четыре закладки слева направо:

  1. Лобби
  2. Выбор файла
  3. Приложения
  4. Настройки

Переключение между закладками меню выполняется при помощи четырех кнопок, которые расположены вокруг центральной. Кнопка «назад», расположенная вверху слева позволяет отменять или возвращаться на действие, которое было раньше.

Переключение между закладками

переключение между закладками модуля

Кнопки переключения

кнопки переключения

По умолчанию выбирается вариант «прервать Х». Правой кнопкой передвигаемся на вариант «Принять V», нажимаем кнопку в центре блока кнопок для подтверждения, загорается красная подсветка и микрокомпьютер выключается через двадцать — тридцать секунд. Если нажать вариант «Принять X», то вернемся в окно с запуска последнего действия.

Также в верхняя часть экрана включает в себя:

  • Слева значки состояния беспроводного соединения;
  • Посередине название модуля;
  • Справа подключение по USB к другому устройству и уровень зарядки батареи.

Лобби

В закладке лобби показаны все программы, которые были запущены. Если была запущена программа Demo, то ее можно увидеть на экране.

Лобби

lobby

Выбор файла

Это закладка для работы с файловой системой, где можно получать доступ и управлять файлами в микропроцессоре EV3, включая те файлы, которые хранятся на SD-карте. Файлы сгруппированы по папкам проектов. Эти проекты кроме программных файлов, также включают в себя звуки и изображения, использующиеся в этих проектах.

Файлы можно перемещать или удалять. В этом помогает навигатор по файлам. Программы, которые были созданы при помощи среды программирования блока, сохраняются в отдельной папке. На новом модуле находится только папка с программой Demo. Программа запускается после выделения файла нажатием на центральную кнопку.

Управление EV3 при помощи приложений

На модуль EV3 предварительно установлены приложения, готовые к использованию. В программном обеспечении микроконтроллера EV3 есть возможность для создания своих собственных приложений. После загрузки в микрокомпьютер EV3 эти приложения отображаются в закладке «Приложения».

Приложения

приложения

Более подробно закладка приложения будет освещена в отдельной статье.

Управление EV3 закладка «Настройки»

Эта закладка позволяет просматривать и изменять различные общие настройки модуля EV3. Здесь можно изменять параметры подключения, звука, спящего режима и другие.

Настройки

настройки

Вопрос про программирование модуля EV3 без применения компьютера иногда встает перед многими любителями робототехники. Для этого на микрокомпьютер EV3 уже предустановлено программное обеспечение идентичное ПО установленному на микрокомпьютер.

Приложения микрокомпьютера EV3

приложения микрокомпьютера EV3

Создать свою программу можно при помощи приложения модуля EV3 находящегося в окне приложений. Это третья вкладка интерфейса микроконтроллера EV3. Приложение называется Brick Program и является четвертым приложением по счету.

Дословно это переводится как кирпичная программа и является средой программирования модуля EV3. Зайти в это приложение можно после включения модуля при помощи кнопок управления модулем.

Среда программирования микрокомпьютера EV3

Если зайти в среду программирования микрокомпьютера EV3, то первое что мы увидим будет блок «Начало» и блок «Цикл». Между этими двумя блоками находится вертикально расположенная прерывистая линия, при помощи которой происходит добавление блоков из палитры блоков.

Начало программы

начало программы

В палитре блоков расположены блоки двух типов:

Также в палитре блоков находится корзина для удаления ненужного блока из программы.

Блоки действия

Всего в палитре блоков находятся шесть блоков действия:

В правом верхнем углу каждого блока действия находится его указатель в виде маленькой стрелки. Блоки действия предназначены для выполнения какого-либо действия. Это может быть включение мотора, изменение цвета подсветки кнопок и прочее.

Блоки ожидания

Имеется одиннадцать блоков ожидания:

  1. Ожидание температуры;
  2. Ожидание показаний энкодера;
  3. Ожидание нажатия управляющей кнопки модуля EV3;
  4. Ожидание времени;
  5. Ожидание ультразвукового датчика;
  6. Ожидание инфракрасного датчика;
  7. Ожидание инфракрасного маяка;
  8. Ожидание датчика гироскопа;
  9. Ожидание датчика касания;
  10. Ожидание датчика освещенности;
  11. Ожидание датчика цвета.

В правом верхнем углу каждого блока ожидания находится его указатель в виде маленьких песочных часов. Блоки ожидания предназначены для ожидания наступления какого-либо события. Это может быть достижение нужных показаний датчиков, нажатие на кнопку и так далее.

Как создать программу на модуле EV3

Для того, чтобы на микрокомпьютере EV3 создать программу нужно найти в третьем окне интерфейса модуля приложение Brick Program. Нажав на центральную кнопку блока входим в приложение и видим блок начало и цикл. Между этими двумя блоками можно разместить всего шестнадцать различных блоков ожидания и блоков действия.

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

среда программирования модуля EV3

Поэтому при помощи интерфейса микроконтроллера EV3 можно писать только несложные программы. В блоках программирования есть возможность изменения одного параметра при помощи кнопок «Вверх» и «Вниз». Количество повторений выполнения программы задается в блоке «Цикл» и может принимать значения 1, 2, 3, 4, 5, 10 и бесконечность.

Пример простой программы микрокомпьютера EV3

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

Блок Рулевое управление

рулевое управление

Блок рулевого управления устанавливается между блоком «Начало» и «Цикл». Повторным нажатием на центральную кнопку мы переходим в настройки блока, где нажатием на кнопки «Вверх» и «Вниз» можно изменять направление движения робота. По умолчанию у нас в блоке выбраны большие моторы в портах B и C. Также по умолчанию у нас стоит движение вперед.

Для того, чтобы робот ехал вперед пять секунд нужно добавить блок ожидания времени. Устанавливаем прерывистую стрелочку между блоком «Рулевое управление» и блоком «Цикл» и переходим при помощи кнопок управления модулем в палитру блоков ожидания. Находим блок ожидания времени, который выглядит как часы и выбираем. Нажатием средней кнопки подтверждаем выбор.

Блок ожидания времени

ожидание времени

Блок «Ожидание времени» устанавливается после блока «Рулевое управление» перед блоком «Цикл». Повторное нажатие центральной кнопки на блоке «Ожидания времени» позволяет зайти в настройку времени. Стрелочками «Вверх» и «Вниз» выбираем значение пять секунд и нажатием на центральную кнопку подтверждаем выбор. В своей программе между блоками можно передвигаться при помощи кнопок «Влево» и «Вправо».

На всякий случай нужно проверить значение блока «Цикл» и при необходимости устанавливаем значение в единицу, для того, чтобы программа выполнилась только один раз. Чтобы запустить программу на выполнение переходим в блок «Начало» и нажимаем центральную кнопку. Робот движется вперед пять секунд, после чего останавливается. Программа выполнена.

Как сохранить программу модуля EV3

Для того, чтобы сохранить программу нужно перейти к значку «Сохранить», который находится внизу в левом дальнем конце программы. При нажатии значка откроется окно, где можно дать название программе. Также можно применить название по умолчанию. После этого нужно нажать на кнопку «OK».

Сохранить и открыть программу EV3

как сохранить и открыть программу EV3 на блоке

Программа с этим названием будет сохранена в папке BrkProg SAVE. Эта папка расположена во втором окне интерфейса модуля EV3 выбор файла.

Как открыть программу модуля EV3

Над значком «Сохранить» находится значок «Открыть». Чтобы отрыть любую программу, которая существует в блоке нужно нажать на этот значок. После этого можно кнопками «Вверх» и «Вниз» выбрать программу. Нажатие на центральную кнопку откроет выбранную программу

Как удалить блок модуля EV3

Для того, чтобы удалить ненужный вам блок из программы необходимо выделить этот блок центральной кнопкой. После этого переходим в палитру блоков нажатием кнопки «Вверх». По палитре блоков нужно переместиться в нижний левый угол и найти значок «Мусорная корзина».

Удаление блока

как удалить блок

Выделяем значок и нажимаем центральную кнопку. Удаление ненужного блока произведено.

Программирование EV3 без компьютера. Приложение Brick Program

Соединение двух и более блоков EV3

Подключение USB

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

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

подключение к ПК, подключение к другому LEGO EV3.

подключение Wi-Fi модуля (покупается отдельно), а также флеш-памяти. Подключение к другому LEGO EV3

Связь между LEGO EV3 и другими блоками LEGO EV3 в режиме подключения шлейфом.

1

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

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

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

2

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

3

В таблице приведены варианты применения блоков EV3:

Подключение через Bluetooth

Bluetooth позволяет LEGO Mindstorms EV3 подключиться к ПК, другому LEGO Mindstorms EV3, смартфонам и другим Bluetooth-устройствам. Дальность связи по каналу Bluetooth – до 25 м.

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

Для того чтобы соединить два и более блоков EV3 между собой по Bluetooth, нужно выполнить следующие действия:

1. Открыть вкладку Настройка.

2. Выберите Bluetooth и нажмите центральную кнопку.

3. Ставим Флажок видимости Bluetooth.

5. Сделайте упомянутую выше процедуру для нужного количества блоков EV3.

6. Войдите во кладку Подключение (Connection):

7. Нажмите на кнопку Поиск (Search):

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

9. Соединяем между собой один и второй блок с ключом доступа.

Если сделать всё правильно, то в верхнем левом углу появится значок "<>", аналогично выполняется подключение других блоков EV3, если их больше двух.

Если вы выключили LEGO EV3, то связь пропадет и вам все пункты необходимо будет повторить.

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

16

Первый блок: при нажатии датчика касания первый блок EV3 передает текст на второй блок с задержкой 3 секунды (главный блок).

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

17

Второй блок ожидает принятия текста с первого блока, и как только он его получил, выведет на экран слово (в нашем примере это слово "Hello") в течение 10 секунд (подчинённый блок).

18

Подключение через Wi-Fi

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

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

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда не активна

Эта статья будет интересна тем, кто хочет сделать программу для дистанционного управления роботом EV3 со стандартной заводской прошивкой через Bluetooth, WiFi или USB и не важно, с какого устройства или операционной системы. Здесь мы рассмотрим протокол взаимодействия между модулем EV3 и вашей программой.

Создаём программу дистанционного управления роботом EV3 с заводской прошивкой

Основная идея статьи состоит в том, чтобы приложение могло управлять роботом EV3, со стандартной заводской прошивкой. Т.е. мы не будем рассматривать здесь всевозможные прошивки, которые загружаются с SD-карт, такие как leJOS EV3, ev3dev или MonoBrick EV3 Firmware.

Вот пример, как будет выглядеть подключение к EV3 через USB-кабель:

После этого вы можете управлять моторами, например, вот так:

Устанавливать режим работы датчикам, например, так:

И считывать показания датчиков в трёх разных форматах: Raw (как есть, без изменений), SI (международная система единиц) или проценты. Вот пример получения данных в SI:

Есть даже событие, оповещающее об изменении какого либо свойства EV3, будь то нажатие на кнопку модуля EV3 или изменение значения любого из датчиков. Работает это вот так:

MonoBrick Communication Library

Вот так подключается EV3 через USB:

Так происходит управление моторами:

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

Так читаем значения датчиков:

А вот так можно задать режим работы датчиков:

А при работе с подключенными «в гирлянду» несколькими модулями EV3 код будет таким:

legoev3cpp

legoev3cpp - это небольшое кроссплатформенное API для C++ 14. И хотя разработка заявлена как кроссплатформенная, на сегодняшний момент реализована поддержка только iOS. Разработчик приглашает присоединиться к проекту всех заинтересовавшихся. Страничка проекта находится здесь. В папке «Jove's Landing» вы найдёте приложение демонстрирующее использование legoev3cpp.

ev3-Nodejs-bluetooth-Api

Коммуникационный интерфейс

Официальную документацию можно найти на странице загрузок LEGO MINDSTORMS EV3. Здесь вы можете скачать описание прошивки (EV3 Firmware Developer Kit) и комплект разработчика системы передачи данных (LEGO MINDSTORMS EV3 Communication Developer Kit). Эти два документа можно скачать и с нашего сайта:

Описание прошивки LEGO Mindstorms EV3.

Комплект разработчика системы передачи данных LEGO MINDSTORMS EV3.

Все команды, которые вы будете использовать, разделяются на прямые и системные. Прямые команды представляют из себя микропрограммы, состоящие из набора определённых байт-кодов, и выполняются параллельно с работающими пользовательскими программами. Использовать прямые команды нужно очень осторожно, т.к. здесь нет никаких ограничений на использование «опасных» кодов или конструкций, например, здесь возможны блокировки и зацикливания. Однако, в таких случаях, пользовательская программа будет продолжать работать нормально. Описание прямых команд вы сможете найти в первом документе (EV3 Firmware Developer Kit) в разделе 4 (Byte code definition and functionality), а примеры использования – во втором (LEGO MINDSTORMS EV3 Communication Developer Kit) в разделе 4 (Direct Commands).

Системные команды используются для передачи данных в модуль EV3 или из него. Описание этих команд вы можете найти во втором документе (LEGO MINDSTORMS EV3 Communication Developer Kit) в разделе 3 (System Command).

Подключение к EV3 производится во всех средах разработки и операционных системах по-разному, поэтому я не буду на этом останавливаться.

Следующий байт – это тип команды или команд. Здесь возможны следующие варианты: 0x01 – системная команда, требуется ответ; 0x81 – системная команда, ответ не требуется; 0x00 – прямая команда или команды, требуется ответ; 0x80 (как в примере) – прямая команда или команды, ответ не требуется.

Остальные байты будут разными для разных типов команд. Для системных команд следующий байт обозначает команду, например, 0x92 – начало загрузки файла на EV3 (BEGIN_DOWNLOAD), 0x9E – запись в почтовый ящик (WRITEMAILBOX) и т.п. А затем идут байты специфичные для каждой системной команды.

В остальных байтах содержится одна команда или несколько команд идущих друг за другом. Первый байт – это сама команда, в примере, указана команда 0x94 (opSound) – это команда для работы со звуком. В следующих байтах содержатся параметры команды. Первый параметр – это специфический параметр, определяющий, что именно будет делать команда. В примере 0x01 обозначает, что нужно проиграть звук определённой громкости, тональности и продолжительности. Следующие три параметра - это громкость (от 0 до 100), частота (от 250 до 10000) и длительность в миллисекундах.

Параметры передаются следующим образом: если значение параметра является числом меньшим 32, то такой параметр можно передавать в коротком формате, т.е. как есть одним байтом. В остальных случаях используется длинный формат, в котором первый байт определяет тип значения, а само значение идёт в следующих байтах. Вот возможные варианты:

        • 0x81 – однобайтовое число unsigned byte или byte, в зависимости от команды (в документации обозначается как Data8);
        • 0x82 – двухбайтовое число unsigned short или short, в зависимости от команды (в документации - Data16);
        • 0x83 – четырёхбайтовое число unsigned int или int (в документации – Data32);
        • 0x84 – строка оканчивающаяся нулём.

        Как видите, в примере, первые два параметра 0x01 и 0x02 меньше 32, и поэтому они передаются в коротком формате без указания типа значения, а третий и четвёртый параметры – это двухбайтовые числа имеющие значение 0xE803 и для них задаётся тип 0x82.

        Теперь давайте отправим команду на чтение цвета с датчика, подключенного к порту 1, и считаем ответ:

        Здесь массив байт, который мы отправили модулю EV3 в восьмеричной системе, выглядит так: 0D00 0100 00 0400 99 1D 00 00 00 02 01 60 . Быстро пробежимся по значениям этих байтов:

        Число, указывающее индекс глобальных переменных строится сложным образом. Если значение индекса меньше 32, то индекс можно задать одним байтом вот так: 0x60 & i. Здесь 0x60 – это биты, обозначающие небольшой индекс глобальной переменной, а i – это наш индекс. С помощью такой схемы мы сможем задать индекс от 0 до 31, а байт при этом получится от 0x60 до 0x7F . Если вам нужно указать индекс больше 31, то первый байт будет обозначать тип и размер индекса, а в следующих байтах будет храниться значение индекса. Для значения индекса от 0 до 255 первый байт будет равен 0xE1, а затем следующим байтом будет идти само значение. Для значения от 0 до 65535, первый байт будет равен 0xE2, а в следующих двух байтах нужно задать значение. Для значения индекса больше 65535, первый байт будет равен 0xE3, а в следующих четырёх будет значение.

        Подробно об этом написано в разделе 3.4 «Parameter encoding» документа EV3 Firmware Developer Kit. Также в качестве подсказки можно использовать макросы GV0(i), GV1(i), GV2(i) и GV4(i) в файле bytecodes.h, который можно найти в исходных кодах аппаратного ПО (исходные коды можно скачать на странице загрузок LEGO MINDSTORMS EV3).

        Следующие байты для системных и прямых команд будут разными. Для системных команд, после байта с результатом, идёт байт обозначающий команду, для которой был дан ответ, в следующем байте статус выполнения команды, а затем байты специфичные для каждой системной команды.

        Для прямых команд следующие байты – это пространство глобальных переменных. В нашем примере здесь только одна переменная имеющая значение 0x0000A040 (тип переменной float). Если бы мы вызывали несколько команд, то здесь было бы больше переменных, идущих друг за другом. В нашем примере в переменной приходит номер цвета от 1 до 7 или 0, если цвет не определён.

        Теперь давайте с помощью этих функций рассмотрим ещё несколько примеров. Вот пример, в котором одновременно запускаются два двигателя, подключенных к порту B и C, делают 3 оборота, причём последние пол оборота двигатели постепенно замедляются:

        А здесь мы узнаём, какие датчики и моторы подключены к EV3, и к каким портам (здесь описана лишь часть возможных вариантов, полный перечень см. в описании прошивки «EV3 Firmware Developer Kit» в пункте 5 «Device type list»):

        Вот, собственно, и всё, что я хотел написать. Если у вас будут какие-то вопросы, задавайте их в комментариях.

        Надеюсь, что в статье я дал достаточное количество знаний для старта. Возможно, кто-нибудь благодаря этой статье, сделает удобный пульт управления для смартфона или компьютера, или создаст API для ещё какого либо языка программирования или платформы. Своими разработками или замечаниями можете поделиться с помощью комментариев.

        Читайте также: