Программа для управления ev3 с телефона
- Программа для управления ТВ с телефона и установки приложенийMi TV Assistant
- Если трансляция с телефона на устройство (ТВ, проектор) не работает по каким-либо причинам, то можно использовать AirScreen (Беспроводной дисплей, Miracast, Chromecast, Googlecast, Airplay). Установить на устройство. В телефоне включить функцию Беспроводного дисплея. Данное приложение на телефон устанавливать не требуется. Подходит, например для XGIMI H3 и конечно для других Android устройств.
- Также для трансляции с телефона на устройство можно использовать Cetus Play (есть в магазине приложений Aptoide)
- Узнать какая матрица стоит в телевизоре Xiaomi можно скачав приложение Mi Info, но приложение часто показывает Unknown в строке Display Vendor
- Программа StartSettings (настройки Android на ТВ). Если не запускается StartSettings на телевизоре Xiaomi, тогда установите сначала версию из строки выше, а затем Start Settings 6.0.1. Данное приложение не применимо для Android 8 и выше. Приложение используется для смены часового пояса и ранее использовалось для смены языка
- Русская клавиатура. Требуется установить 2 файла: этот и этот
- Другая русская клавиатураFire TV style keyboard, но лучше используйте клавиатуру, которая указана выше.
- Магазин приложенийAptoide TV (замена Play Market + следит за обновлениями приложений и не требует входа в аккаунт).
- Браузер для Android TV: Firefox, TV Bro, Puffin TV
- Рабочий столATV лаунчер, это лучше чем шафа лаунчер (shafa launcher). Используется для замены стандартного китайского рабочего стола на удобный.
- Файловый менеджерES Проводник пригодится для установки приложений на проекторы XGIMI и для смены обоев в ATV лаунчере
- ПроигрывательVLC, MX Player,MX Player PRO
- Программа для управления смарт устройствами Xiaomi с телефона Mi Homeна русском языке (устанавливается на телефон)
- Иконка стандартного проигрывателя Mi tv video player, если Вы пользуетесь лаунчером, а не стандартным китайским рабочим столом
- Иконки входов HDMI 1,HDMI 2,HDMI 3 если Вы пользуетесь лаунчером и не можете перейти в HDMI с рабочего стола
. Ещё больше приложений ( подойдут для телевизоров, проекторов, тв-приставок на Android) есть на форуме 4PDA в шапке темы MI TV 3 в разделе "Спойлер (+) (Приложения)"
Эта статья будет интересна тем, кто хочет сделать программу для дистанционного управления роботом EV3 со стандартной заводской прошивкой через Bluetooth, WiFi или USB и не важно, с какого устройства или операционной системы. Здесь мы рассмотрим протокол взаимодействия между модулем 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 для ещё какого либо языка программирования или платформы. Своими разработками или замечаниями можете поделиться с помощью комментариев.
воспитательная: воспитывать трудолюбие и стремление добиваться выполнения поставленной задачи.
Оборудование: компьютер, конструктор Lego Mindstorms EV3, проектор, smart доска.
Ход занятия
Организационный момент.
Блиц опрос.
Какую функцию в среде программирования Lego Mindstorms EV3 выполняет компонент Мой блок?
Какую функцию выполняет ультразвуковой датчик?
3) В каких режимах может работать датчик цвета?
4) Какую зубчатую передачу называют повышающей?
5) Какие виды циклов вы знаете?
Изучение нового материала.
О способах дистанционного управления.
На сегодняшний день для конструкторов Lego Mindstorms EV3 наиболее популярными являются 3 способа дистанционного управления:
С помощью ИК датчика и ИК пульта (удаленного маяка).
Чтобы все успешно работало: на маяк нужно поставить 2 батарейки типа ААА, а в модуль EV3 робота нужно загрузить составленную программу и запустить на выполнение. Способ хороший и надежный, но датчик и маяк нужно отдельно купить.
Использование бесплатных программ: Robot Commander, RemotEV3, для управления роботом по Bluetooth с телефона (или планшета).
Скачиваем программу с Play Market и устанавливаем. Включаем Bluetooth на телефоне (планшете) и на модуле EV3 нашего робота, делая их видимыми. Сопрягаем устройства между собой.
Управление роботом простое. Можно менять направление движения, но не скорость (мощность).
Использование пульта управления по Bluetooth из расширенного набора Lego Mindstorms EV3.
Пульт получается громоздким (инструкция состоит из 76 шагов). А программы для пульта и управляемого робота необходимо настроить.
В качестве альтернативы к 3 варианту можно предложить более компактный пульт управления, состоящий только из 5 кнопочного переключателя.
Главный модуль
Присваиваем нашему модулю имя EV3_2 (теперь это будет главный модуль) и загружаем в него программу EV3_2:
Подчиненный модуль
Присваиваем модулю на роботе имя EV3 (теперь это будет подчиненный модуль) и загружаем в него программу EV3:
Сопрягаем модули (EV3_2 и EV3) главный и управляемый.
На модуле EV3_2 заходим в общие настройки, выделяем пункт Bluetooth и открываем настройки Bluetooth.
Важно обратить внимание, чтобы активным было свойство Visibility (видимость). Далее выбираем и открываем пункт Connections (связь) и в нем пункт Search (поиск), чтобы главный модуль обнаружил управляемый (потребуется немного подождать). При обнаружении название модуля отобразится!
Далее, аналогичную процедуру нужно проделать и на управляемом модуле EV3, чтобы он обнаружил главный модуль EV3_2.
Таким образом сопряжение модулей будет выполнено!
Запуск робота по Bluetooth.
Осталось сделать самое простое - проверить работу Bluetooth соединения.
Размещаем управляемого робота в удобном месте. Запускаем на главном модуле (его вы держите в руках) программу EV3_2, а на управляемом роботе программу EV3 и можно управлять роботом с помощью пульта ДУ.
Подведение итогов.
Оценка деятельности обучающихся.
Вопросы по проведённому занятию:
а) Что вызвало у вас наибольшие затруднения при работе?
б) Какой полезный вывод можете сделать для себя?
в) Где вы смогли бы применить знания, полученные на сегодняшнем занятии?
В последнее время возрастает интерес со стороны государства к проблеме развития научно-технического творчества детей. Поэтому в Концепции развития дополнительного образования, принятой в сентябре 2014 г., дополнительное образование детей рассматривается как одно из приоритетных сфер инновационного развития России и должно соответствовать целям опережающего развития.
Таким требованиям отвечает LEGO-конструирование и робототехника.
Еще Конфуций говорил: «Скажи мне - и я забуду, покажи мне - и я запомню, дай мне сделать - и я пойму». Это наиболее применимо именно к использованию робототехники и теме нашего мастер-класса.
А сейчас немного о нас. В нашем центре реализуются направления: Легоконструирование с 2011 года и Робототехника с января 2016 г. Созданы условия для развития научно-технического творчества учащихся: кабинет оборудован наборами образовательных конструкторов LEGO MINDSTORMS edication EV 3: базовый и ресурсный наборы и программным обеспечением как инструментом для обучения учащихся конструированию, моделированию и компьютерному программированию.
Мы выстраиваем образовательную траекторию учащихся, начиная с 1 по 9 класс. В объединении занимаются более 80 мальчишек.
На уровне начального общего образования учащиеся занимаются легоконструированием по ДОП «Легоконструирование» для детей 7-10 лет.
На занятиях используется игровая и проектная деятельность. Слово «проект» удачно вписалось в систему работы. Дети имеют возможность проявить свою индивидуальность, реализовать свои творческие задумки, фантазию, выразить свое видение мира. Учитывая развитие современного образования, в программу включены занятия с выходом в интернет, мультимедийные презентации. В своей работе использую программу LEGO DigitalDesigner – это удобный виртуальный конструктор, позволяющий создавать различные ЛЕГО объекты как с нуля, так и разбирать или дополнять уже готовые предлагаемые конструкции, что очень нравится детям.
На уровне основного общего образования для детей 10-16 лет усложняется как уровень моделирования, так и уровень программирования роботов.
Безусловно, помимо основных занятий, мы проводим другие различные мероприятия, позволяющие привлечь интерес к данному направлению: соревнования по робототехнике, выставки работ из легоконструктора, викторины, мастер-классы по конструированию и программированию роботов, где юные таланты соревнуются и делятся собственным опытом.
Непосредственными участниками образовательного процесса являются не только учащиеся, но и родители.
Традиционным стало мероприятие совместно с родителями «ЛЕГО - БУМ!», которое вот уже в течение 3 лет проходит в атмосфере заинтересованности и плодотворного сотрудничества.
В прошлом году в рамках творческого отчета ребята 7 класса приняли участие в образовательном Форуме «Радуга творчества», где выступили перед родителями и своими сверстниками на тему: «ПОЧЕМУ Я ЗАНИМАЮСЬ ТЕМ, ЧЕМ ЗАНИМАЮСЬ!». И защитили проект «Робот Центрик», который встречал ребят, родителей, гостей и открывал творческий отчет «Весеннее настроение - 2018!» в конце учебного года.
Мы понимаем, что для развития технической направленности, увеличения охвата детей программами технического творчества недостаточно ресурсов одного нашего учреждения, поэтому на районном форуме ПДО мы предложили расширять партнерство с организациями и учреждениями района по вопросам развития технического творчества и внесли предложение - создать сообщество педагогов по работотехнике для дальнейшего развития этого направления в районе.
Последующим шагом - мы зарегистрировались как участники комплекса учебно-тренировочных и спортивных мероприятий всероссийской программы «Робототехника: инженерно-технические кадры инновационной России».
Одним из основных направлений работы является подготовка к робототехническим соревнованиям и участие в них. Соревнования – это не только подведение промежуточных итогов, но и явный и неявный обмен опытом, выработка вариативности профессиональных навыков, умения работать в команде над общей задачей. Это систематическая подготовка к районным, республиканским и всероссийским соревнованиям, где мы являемся постоянными участниками и призерами.
И сегодня на мастер-классе хочется поделиться опытом по управлению роботом с помощью планшета, смартфона.
Читайте также: