Как подключить пульт к ev3
Как подключить пульт к ev3
Существует три способа подключения робота к среде программирования. Какие есть плюсы и минусы у каждого из этих способов? Какой способ выбрать? Как правильно настроить подключение модуля EV3 к компьютеру и к среде программирования?
Ответы на эти вопросы содержит данная статья.
1. Способ: подключение к компьютеру с помощью USB-кабеля
Это самый простой способ подключения. Берем USB-кабель, входящий в набор конструктора. Разъем Mini-USB (меньший по размеру) кабеля вставляем в соответствующий порт модуля EV3, а разъем USB кабеля вставляем в свободный порт компьютера или ноутбука.
Рис. 1
Если среда программирования у вас загружена, то соответствующее подключение робота отобразится на «Странице аппаратных средств» во вкладке «Доступные модули».
Рис. 2
Можете загружать вашу программу в память робота. Подключение-отключение можно проводить многократно, не выключая робота. Но у такого подключения есть недостатки. Короткий кабель не даст вам возможности запускать робота, выполняющего движение на значительное расстояние, придется отключать робота от среды программирования, что в свою очередь не позволит вам в реальном времени наблюдать ход выполнения программы и показания датчиков непосредственно в среде программирования.
Плюсы этого способа подключения: простота подключения, высокая скорость передачи данных.
Минусы этого способа: подключения: для отладки программы робота в большинстве случаев его приходится отключать от компьютера.
2. Способ: беспроводное подключение Bluetooth
Этот способ несколько сложнее в первоначальной настройке, но лишен неудобств подключения с помощью USB-кабеля. Для начала требуется убедиться, что в вашем компьютере присутствует модуль связи Bluetooth, если отсутствует – не беда! Достаточно будет приобрести USB адаптер беспроводной связи Bluetooth и установить его в свободный порт USB компьютера.
Рис. 3
Перед настройкой подключения модуля EV3 к компьютеру по протоколу Bluetooth, необходимо в модуле EV3 зайти в меню «Настройки», выбрать строку «Bluetooth» и подключить настройку «Bluetooth», чтобы активировать возможность подключения по этому протоколу, а также подключить настройку «Visibility», чтобы модуль EV3 мог обнаруживаться компьютером.
Рис. 4
Рис. 5
Если все сделано правильно, то подключенный по протоколу Bluetooth модуль EV3 отразится во вкладке «Доступные модули».
Рис. 6
Данный способ подключения лишен неудобств подключения по USB-кабелю. Ваш робот больше не привязан к компьютеру, вы можете запускать программу на выполнение прямо из среды программирования, например, нажав кнопку «Загрузить и запустить» (Рис. 7 поз. 1) на странице «Аппаратных средств», либо, нажав программный блок «Начало» вашей программы. Во время выполнения программы вы сможете визуально контролировать ход её выполнения (заголовки выполняющихся в данный момент программных блоков будут мерцать). Так же на странице «Аппаратных средств» во вкладке «Просмотр портов» (Рис. 7 поз. 2) вы сможете наблюдать текущие показания датчиков всё время, пока робот остается подключенным к среде программирования.
Рис. 7
Плюсы этого способа подключения: высокая мобильность робота, возможность контроля хода выполнения программы и показаний датчиков, отсутствие необходимости установки в модуль EV3 дополнительного адаптера.
Минусы этого способа: подключения: сложность настройки подключения, необходимость наличия в компьютере модуля Bluetooth, увеличенный разряд батареи модуля EV3.
3. Способ: беспроводное подключение Wi-Fi
Этот способ беспроводного подключения требует выполнения ряда условий: во-первых, необходимо наличие доступа к беспроводной сети Wi-Fi (следует знать имя беспроводной сети и пароль подключения), во-вторых необходимо приобрести USB-адаптер подключения к беспроводной сети и установить его в USB-разъем модуля EV3. Компания Lego рекомендует использовать только беспроводной адаптер NETGEAR N150 (WNA1100). Также установлено требование к настройкам беспроводной сети Wi-Fi: модуль EV3 поддерживает для пароля подключения только метод шифрования WPA2 или отсутствие шифрования.
Рис. 8
Так же, как и в случае настройки беспроводного соединения Bluetooth, в первую очередь необходимо, подключив беспроводной адаптер в USB-порт модуля EV3, зайти в настройки модуля и включить Wi-Fi.
Рис. 9

Для выбранной сети задаем необходимую настройку шифрования, вводим пароль подключения к сети и выполняем подключение!
Рис. 11
Если подключение к сети Wi-Fi пройдет успешно, то данное подключение отобразится на странице «Аппаратных средств» во вкладке «Доступные модули».
Рис. 12
Данный способ так же, как и подключение по Bluetooth, позволяет в реальном режиме контролировать ход выполнения программ и показаний датчиков, подключенных к роботу. Подключение по Wi-Fi обладает бóльшим радиусом действия, но, при сборке конструкций робота следует учитывать необходимость установки в USB-порт модуля EV3 дополнительного адаптера.
Плюсы этого способа подключения: высокая мобильность робота, возможность контроля хода выполнения программы и показаний датчиков, большой радиус действия беспроводного соединения.
Лего робот на пульте управления
Пульт управления
Пульт управления Lego роботом можно достаточно быстро сделать на основе домашнего набора EV3. Часто бывает, что робот собран, а навыков программирования еще нет. Но есть желание заставить робота двигаться. Роботом можно управлять удаленно, не прибегая к программированию при помощи инфракрасного управления.

Датчик устанавливаем на робота и соединяем кабелем с четвертым портом. Затем левый большой мотор соединяем с портом B, а правый с портом C.
Нажав на центральную кнопку включаем микрокомпьютер EV3. После перехода в третье приложение IR Control третьего окна интерфейса модуля EV3 мы получаем возможность управлять прямым и обратным движением любого мотора, подключенного к любому порту. Пульт управления роботом EV3 практически готов.
При этом инфракрасный датчик является приемником управляющих сигналов, а инфракрасный маяк служит для удаленного управления, то есть является передатчиком.
Режимы пульта управления Lego EV3
Есть два режима управления. Первый режим использует первый и второй канал для связи с инфракрасным маяком. Обозначается на экране модуля как CH1+2. Второй режим использует третий и четвертый канал. Обозначается как CH3+4. Если включить первый канал, то можно управлять моторами, подключенными к портам B и C.

При этом первая и вторая кнопка управляет прямым и обратным движением мотора в порту B. Третья и четвертая кнопка управляет мотором в порту C. Если мотор из порта B подсоединить к порту A и мотор из порта C подключить к порту D, то нужно переключить канал на инфракрасном маяке с первого на второй. Первая и вторая кнопка будут управлять мотором в порту A, третья и четвертая мотором в порту D.
Если одновременно нажать кнопку один и три, то робот будет двигаться вперед. При одновременном нажатии кнопки два и четыре – назад.
Теперь, произведя нужные настройки, можно дистанционно управлять роботом тележкой и задавать различные траектории движения. Для такого управления не нужны навыки программирования и можно получить быстрый и наглядный результат
Для создания более сложного пульта управления на базе инфракрасного датчика и маяка уже будут нужны навыки программирования. Как правило управление создается при помощи блока «Переключатель».
В этом случае на удаленном маяке можно использовать одиннадцать различных комбинаций кнопок и значительно расширить возможности пульта управления Lego EV3.
Как управлять EV3 без программирования
Как подключить пульт к ev3
Введение:
Инфракрасный датчик входит домашнюю версию набора Lego mindstorms EV3. Это единственный датчик, который может применяться как самостоятельно, так и в паре с инфракрасным маяком, тоже являющимся частью домашнего набора. Следующие два урока мы посвятим изучению этих двух устройств, а также их взаимодействию между собой.
8.1. Изучаем инфракрасный датчик и инфракрасный маяк
Рис. 1
Рис. 2
8.2. Инфракрасный датчик. Режим «Приближение»
Решим практическую задачу, похожую на Задачу №14 Урока №7, но, чтобы не повторяться, усложним условие дополнительными требованиями.
Задача №17: написать программу прямолинейно движущегося робота, останавливающегося перед стеной или препятствием, отъезжающего немного назад, поворачивающего на 90 градусов и продолжающего движение до следующего препятствия.
У робота, собранного по инструкции small-robot-31313, впереди по ходу движения установлен инфракрасный датчик. Соединим его кабелем с портом «3» модуля EV3 и приступим к созданию программы.
Рис. 3
Решение:
Попробуйте решить Задачу № 17 самостоятельно, не подглядывая в решение.
Рис. 4
А теперь для закрепления материала попробуйте адаптировать решение Задачи №15 Урока №7 к использованию инфракрасного датчика! Получилось? Поделитесь впечатлениями в комментарии к уроку.
8.3. Дистанционное управление роботом с помощью инфракрасного маяка
Инфракрасный маяк, входящий в домашнюю версию конструктора Lego mindstorms EV3, в паре с инфракрасным датчиком позволяет реализовать дистанционное управление роботом. Познакомимся с маяком поближе:
Рис. 5
Задача №18: написать программу дистанционного управления роботом с помощью инфракрасного маяка.
Рис. 6
Для активации связи между инфракрасным датчиком и маяком необходимо установить правильное значение параметра «Канал» (Рис. 7 поз. 1) в соответствии с выбранным каналом на маяке! Каждому программному контейнеру блока «Переключатель» необходимо сопоставить один из возможных вариантов нажатия серых клавиш (Рис. 7 поз. 2). Заметьте: некоторые варианты включают одновременное нажатие двух клавиш (нажатые клавиши помечены красным цветом). Всего в программном блоке «Переключатель» в этом режиме можно обрабатывать до 12 различающихся условий (одно из условий должно быть выбрано условием по умолчанию). Добавляются программные контейнеры в блок «Переключатель» нажатием на «+» (Рис. 7 поз.3).
Рис. 7
Предлагаем реализовать следующий алгоритм управления роботом:
Приступим к реализации программы:
Наш алгоритм дистанционного управления предусматривает 5 вариантов поведения, соответственно наш программный блок «Переключатель» будет состоять из пяти программных контейнеров. Займемся их настройкой.
По предложенной схеме попробуйте создать программу самостоятельно, не подглядывая в решение!
Рис. 8
Загрузите получившуюся программу в робота и запустите её на выполнение. Попробуйте управлять роботом с помощью инфракрасного маяка. Всё ли у вас получилось? Понятен ли вам принцип реализации дистанционного управления? Попробуйте реализовать дополнительные варианты управления. Напишите свои впечатления в комментарии к этому уроку.
* Хотите увидеть невидимые волны? Включите режим фотосъемки в мобильном телефоне и поднесите излучающий элемент дистанционного пульта от телевизора к объективу мобильного телефона. Нажимайте кнопки пульта дистанционного управления и на экране телефона наблюдайте свечение инфракрасных волн.
Управление EV3
Управление блоком EV3
Для того, чтобы лучше понимать принципы работы модуля Lego EV3, нужно освоить управление блоком EV3. Микрокомпьютер Lego EV3 является пунктом управления, при помощи которого можно приводить в действие созданных вами роботов.

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

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

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

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

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

Более подробно закладка «Настройки» будет освещена в отдельной статье.
Приложения и настройки. Модуль EV3
Создаём программу дистанционного управления роботом EV3 с заводской прошивкой
Эта статья будет интересна тем, кто хочет сделать программу для дистанционного управления роботом EV3 со стандартной заводской прошивкой через Bluetooth, WiFi или USB и не важно, с какого устройства или операционной системы. Здесь мы рассмотрим протокол взаимодействия между модулем EV3 и вашей программой.
Основная идея статьи состоит в том, чтобы приложение могло управлять роботом EV3, со стандартной заводской прошивкой. Т.е. мы не будем рассматривать здесь всевозможные прошивки, которые загружаются с SD-карт, такие как leJOS EV3, ev3dev или MonoBrick EV3 Firmware.
Больше всего здесь повезло разработчикам .NET. Для них уже есть бесплатное разработанное API с открытым исходным кодом, с помощью которого можно сделать приложение, работающее на ПК под управлением Windows, Windows Phone или WinRT. Есть даже поддержка Android, но только для тех, кто разрабатывает с помощью Xamarin. API позволяет подключаться к модулю EV3 через Bluetooth, WiFi или USB, управлять моторами и считывать показания датчиков. Не буду останавливаться здесь подробно, просто приведу несколько простых примеров.
Вот пример, как будет выглядеть подключение к EV3 через USB-кабель:
После этого вы можете управлять моторами, например, вот так:
Устанавливать режим работы датчикам, например, так:
И считывать показания датчиков в трёх разных форматах: Raw (как есть, без изменений), SI (международная система единиц) или проценты. Вот пример получения данных в SI:
Есть даже событие, оповещающее об изменении какого либо свойства EV3, будь то нажатие на кнопку модуля EV3 или изменение значения любого из датчиков. Работает это вот так:
MonoBrick Communication Library
Эта библиотека тоже бесплатна и доступна только разработчикам .NET. Скачать библиотеку можно здесь, изучить примеры здесь, а посмотреть документацию здесь. Есть версия библиотеки для разработки Android-приложений в Xamarin. Пользоваться библиотекой так же просто, как и API, который был описан выше. Здесь я тоже не буду углубляться в подробности, а просто продемонстрирую несколько примеров.
Вот так подключается EV3 через USB:
Так происходит управление моторами:
А можно сразу управлять тележкой или роботом на гусеницах вот так:
Так читаем значения датчиков:
А вот так можно задать режим работы датчиков:
И ещё здесь можно отправить сообщение модулю EV3 вот так:
А при работе с подключенными «в гирлянду» несколькими модулями EV3 код будет таким:
legoev3cpp
ev3-Nodejs-bluetooth-Api
Это API предназначено для любителей языка JavaScript и платформы Node.js. Автор признаётся, что создавал API с помощью обратной разработки официального Android-приложения LEGO MINDSTORMS Commander. Скачать API и пример можно здесь, посмотреть видео демонстрацию – здесь.
Коммуникационный интерфейс
Всем кому по тем или иным причинам не подходит разработка с помощью готовых API, описанных выше, придётся возиться с коммуникационным интерфейсом. Протокол общения между модулем LEGO MINDSTORMS EV3 и любым типом подключаемого устройства одинаковый для разных типов подключения: Bluetooth, USB или WiFi. Чтобы его освоить, нужно изучать официальную документацию или анализировать API для .NET, описанный выше.
Официальную документацию можно найти на странице загрузок LEGO MINDSTORMS EV3. Здесь вы можете скачать описание прошивки (EV3 Firmware Developer Kit) и комплект разработчика системы передачи данных (LEGO MINDSTORMS EV3 Communication Developer Kit). Эти два документа можно скачать и с нашего сайта:
EV3 Firmware Developer Kit ![]() | |
08.10.2015 686.56 KB 3909 | ![]() |
EV3 Communication Developer Kit ![]() | |
08.10.2015 274.19 KB 3542 | ![]() |
Все команды, которые вы будете использовать, разделяются на прямые и системные. Прямые команды представляют из себя микропрограммы, состоящие из набора определённых байт-кодов, и выполняются параллельно с работающими пользовательскими программами. Использовать прямые команды нужно очень осторожно, т.к. здесь нет никаких ограничений на использование «опасных» кодов или конструкций, например, здесь возможны блокировки и зацикливания. Однако, в таких случаях, пользовательская программа будет продолжать работать нормально. Описание прямых команд вы сможете найти в первом документе (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. Здесь я буду приводить примеры кода на языке Java для Android-приложения. Для начала рассмотрим самый простой пример, в котором по нажатию на кнопку мы подключаемся к EV3 и посылаем команду для проигрывания звука:
Подключение к EV3 производится во всех средах разработки и операционных системах по-разному, поэтому я не буду на этом останавливаться.
Сразу скажу, что в статье я не буду описывать все возможные команды и ответы, для этого есть официальная документация. Но я опишу сообщения, которые используются в примерах.
Итак, обратим внимание на сообщение, которое мы передали модулю EV3. В восьмеричной системе переданный массив байт будет выглядеть так: 0E00 0000 80 0000 94 0102 82 E803 82 E803. Первые два байта 0x0E00 – это размер сообщения в байтах (тип unsigned short), но без учёта этих двух байтов, т.е. если, как в примере, после первых двух байт идёт 14 байтов, то сюда записываем 14 (0x0E в восьмеричной системе). Младший байт записывается первым (порядок байт Little Endian).
Следующие 2 байта 0x0000 – это порядковый номер сообщения. Например, для первого сообщения нужно передавать 0, для второго – 1, и так далее по порядку. Если число достигнет максимума, т.е. 65535 (0xFFFF), можно начинать снова с нуля. Номер сообщения пригодится вам для идентификации ответа, ведь ответ будет пронумерован тем же порядковым номером, что и сообщение, для которого он получен. Порядок байт здесь тоже Little Endian.
Следующий байт – это тип команды или команд. Здесь возможны следующие варианты: 0x01 – системная команда, требуется ответ; 0x81 – системная команда, ответ не требуется; 0x00 – прямая команда или команды, требуется ответ; 0x80 (как в примере) – прямая команда или команды, ответ не требуется.
Остальные байты будут разными для разных типов команд. Для системных команд следующий байт обозначает команду, например, 0x92 – начало загрузки файла на EV3 (BEGIN_DOWNLOAD), 0x9E – запись в почтовый ящик (WRITEMAILBOX) и т.п. А затем идут байты специфичные для каждой системной команды.
Для прямых команд, как в примере, следующие два байта (в примере – это 0x0000 ) показывают, сколько места для локальных и глобальных переменных вы хотите зарезервировать. В примере мы не ждём ответа, поэтому место не резервируется. Формат здесь такой: в младших 10-ти битах здесь хранится количество байт выделенных для глобальных переменных, а в 6-ти старших битах – для локальных. С помощью глобальных переменных вы будете получать ответы от EV3. Если в сообщении у вас две команды, то нужно зарезервировать место для двух глобальных переменных, если три, то для трёх переменных и т.д. После получения ответа вы сможете считать результат из этих переменных. Подробнее об этом будет написано ниже.
Параметры передаются следующим образом: если значение параметра является числом меньшим 32, то такой параметр можно передавать в коротком формате, т.е. как есть одним байтом. В остальных случаях используется длинный формат, в котором первый байт определяет тип значения, а само значение идёт в следующих байтах. Вот возможные варианты:
Как видите, в примере, первые два параметра 0x01 и 0x02 меньше 32, и поэтому они передаются в коротком формате без указания типа значения, а третий и четвёртый параметры – это двухбайтовые числа имеющие значение 0xE803 и для них задаётся тип 0x82.
Теперь давайте отправим команду на чтение цвета с датчика, подключенного к порту 1, и считаем ответ:
Подробно об этом написано в разделе 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, если цвет не определён.
Для того, чтобы было проще записывать сообщения в поток в Java, я написал следующие функции:
Используя эти функции, сообщение, которое мы отправляли в первом примере, можно будет отправить так:
Как видите, с помощью функций, байт-код, отправляемый на EV3, стал понятным и удобным. А сообщение из второго примера теперь можно отправить так:
Теперь давайте с помощью этих функций рассмотрим ещё несколько примеров. Вот пример, в котором одновременно запускаются два двигателя, подключенных к порту B и C, делают 3 оборота, причём последние пол оборота двигатели постепенно замедляются:
А здесь мы узнаём, какие датчики и моторы подключены к EV3, и к каким портам (здесь описана лишь часть возможных вариантов, полный перечень см. в описании прошивки «EV3 Firmware Developer Kit» в пункте 5 «Device type list»):
Вот, собственно, и всё, что я хотел написать. Если у вас будут какие-то вопросы, задавайте их в комментариях.
С помощью описанного в статье коммуникационного интерфейса вы сможете сделать удалённое управление модулем EV3 для любых операционных систем на любых языках программирования. А разработчики .NET, iOS и Node.js смогут использовать уже готовые API.
Надеюсь, что в статье я дал достаточное количество знаний для старта. Возможно, кто-нибудь благодаря этой статье, сделает удобный пульт управления для смартфона или компьютера, или создаст API для ещё какого либо языка программирования или платформы. Своими разработками или замечаниями можете поделиться с помощью комментариев.























EV3 Firmware Developer Kit 
08.10.2015
686.56 KB
3909