В современном изменчивом мире технические средства обучения стремительно устаревают. Яркий тому пример - эволюция наборов образовательной робототехники. Мобильные робоплатформы Lego, fischertechnik и ТРИК совсем недавно казались пределом совершенства, а теперь начинают уступать отдельным наборам на базе Arduino не только в отношении стоимости, но и по целому ряду важных потребительских свойств. Появились альтернативы проприетарным решениям "всё включено", и это радует. Вместе с тем возникли и новые проблемы.
Любой педагог, начинающий преподавать робототехнику, сталкивается с вопросом выбора используемой для занятий материально-технической базы, а значит, и адаптированного для неё учебного курса. Любой методист, разрабатывающий подобные учебные курсы (или даже просто отдельные учебные задания), сталкивается с аналогичным вопросом. И в первом, и во втором случае приходится принимать в расчёт не только существующее в настоящий момент положение вещей, но и оценивать, не устареют ли эти учебные материалы слишком быстро, насколько они могут быть адаптированы для использования на другом оборудовании.
Опыт тестирования различных робототехнических Arduino-наборов в нашей школе (обычной общеобразовательной школе, хоть и являющейся экспериментальной площадкой) показал, что далеко не все они годятся для занятий с детьми. Не тратя время на сравнения и обзоры, хотелось бы сразу озвучить вывод, к которому мы пришли: в настоящий момент робототехническая платформа Makeblock mBot Educational Robot Kit является если и не самой лучшей (не будем обижать других производителей), то одной из самых лучших для образовательных целей. Стартовый комплект имеет оптимум возможностей, и их легко существенно увеличить с помощью готовых наборов расширений либо отдельных электронных и механических компонентов. Для робоплатформы mBot существует огромное количество уже разработанных учебных материалов. Но, на мой взгляд, каждому из нас важно иметь ответ на вопрос, так ли оправдано ориентироваться сегодня на использование mBot, имеет ли смысл разрабатывать для этой платформы новые учебные задания и курсы?
Давайте посмотрим, чем же этот набор выделяется на фоне своих "одноклассников". Казалось бы, робот-"тележка" вещь примитивная, для занятий подойдёт любой из существующих вариантов. Ан нет. То, что умеет Эмботик (мы так его называем) страшно нравится детям, и его "способности" действительно очень полезны и востребованы. Учебный курс, в котором робот лишь перемещается, слишком скучен, на дворе XXI век.
Перечислим, что у mBot есть в его стартовой конфигурации. Базовые функции, которые нужны нам с самого начала:
- проигрывание музыкальных нот произвольной высоты и длительности;
- управление свечением двух встроенных RGB-светодиодов с возможностью выбора любого произвольного оттенка цвета и яркости (для обоих светодиодов сразу, либо отдельно для правого или левого);
- встроенный датчик освещённости;
- кнопка на корпусе (очень простая и абсолютно необходимая вещь);
- внешний ультразвуковой дальномер;
- внешний сдвоенный датчик линии (с двумя цифровыми сенсорами и светодиодной индикацией);
- возможность подключения других внешних датчиков;
- сменный модуль беспроводной связи;
- наконец, два простых моторчика, для левого и для правого колеса;
- в заключение возможность не только управлять роботом интерактивно, с компьютера или планшета, но и загружать в робота программу для автономной работы.
Следует сказать, что до тех пор, пока не начнёшь использовать всё вышеописанное во время занятий с детьми, невозможно оценить по достоинству оптимальность данного набора функций. Разбираться со "светомузыкой" школьники любят, пожалуй, даже больше, чем возить свою "машинку". Не зря кое-кто из производителей, разрабатывая аналог Micro:bit, заменил светодиодную матрицу (казалось бы, более функциональную), на кольцо из RGB-светодиодов.
И ещё, небольшое лирическое отступление на техническую тему. Любой изучающий Arduino вам скажет, что не проблема подключить к микроконтроллеру "пищалку" и заставить её проигрывать музыкальные ноты. Либо заставить драйвер двигателя управлять двумя моторчиками. Либо RGB-светодиод выдавать любой произвольный оттенок цвета. Проблемой является заставить всё это работать одновременно. И эту задачу разработчики Makeblock блестяще решили.
Резюмируем. Вышеописанный набор функций крайне необходим любой современной (Arduino и не только) робоплатформе. И всё богатство уже разработанных для mBot методических материалов можно будет использовать с минимальной адаптацией, либо вообще в оригинальном виде. Особенно, если альтернативную робоплатформу можно будет также программировать в mBlock3 (по крайней мере, поначалу), используя функционально аналогичный набор визуальных блоков.
Рис.1
Но давайте вспомним о будущем и о перспективе. Какие дополнительные возможности есть у mBot?
"Факультативные" встроенные функции, редко используемые в школьных условиях (лишь для создания "продвинутых" проектов):
- встроенный инфракрасный приёмник (принимает сигналы с пульта ДУ либо от других Эмботиков);
- встроенный инфракрасный передатчик (позволяет передавать сообщения другим Эмботикам).
Рис.2
Факультативные в настоящий момент функции (не входящие в стартовый комплект), которые имеет смысл включить в число базовых:
- сервомотор (минимум один) для управления поворотом головы робота;
- гироскоп ("гирополукомпас", датчик пространственной ориентации "курс, крен, тангаж"), либо гироскоп+компас.
Рис.3
Думаю, не требуется объяснять, что нынешним роботам полезно будет наконец-то научиться поворачивать голову. А вот о пользе гироскопа следует рассказать поподробнее.
Во-первых, как это не странно на первый взгляд, гироскоп это самый простой в использовании аналоговый (возвращающий значение в виде действительного числа) датчик, не требующий калибровки ("Так ведь никакой калибровки не будет, всё уже до вас откалибровано!.."). Во-вторых, пользоваться гироскопом настолько просто, что не требуется даже вводить понятие "угол" (или "масштаб", например), мы просто собираем скрипт и видим (очами), что персонаж на экране компьютера повернулся "точно так же", как робот, всё очевидно и наглядно. В-третьих, поворотная голова и гироскоп прекрасно дополняют друг друга в отношении своих возможностей.
По вышеописанным причинам гироскоп может стать тем самым датчиком, который первым используется для знакомства с темой обработки аналоговых значений. Я думаю, что в учебных курсах завтрашнего дня на базе робоплатформ будущего так и может произойти. А пока при разработке учебных курсов сегодняшних приходится опираться на базовые (существующие в стартовой конфигурации) возможности наиболее передовых робоплатформ современности, в число которых входит mBot.
Эмботик хорош, но есть ли простые варианты для его замены на что-то другое? Да еще желательно такие, чтобы можно было без какой-либо адаптации использовать те же учебные материалы и то же самое программное обеспечение? Заменить Эмботик другой робоплатформой можно. Но… "щелчком пальцев" не получится. У "классических" восьмиразрядных микроконтроллеров Arduino слишком много ограничений, приходится использовать дополнительные "умные" электронные компоненты, и добиться той же функциональности – задача чрезмерно накладная (я с удовольствием изменю это своё мнение, как только кто-нибудь мне покажет рабочий полнофункциональный аналог базовой конфигурации mBot на основе того же Arduino Uno).
Однако существует один простой способ. Но это получится... самодельный Эмботик на базе "родного" контроллера Makeblock mCore. Длительное изучение данной темы убедило лично меня в том, что сэкономить на контроллере не выйдет, и если нам требуется обеспечить тот же набор функций за минимальные деньги и с минимальными усилиями, то самое очевидное и правильное решение - взять готовый контроллер mCore. Зато абсолютно все остальные компоненты можно использовать "безродные" и доступные. На фотографии - полностью функциональный "клон" mBot, собранный из набора "Робоняша". То, что потребовалось докупить - один резистор на 3.3Kom (для подключения дальномера HC SR-04), разъёмы RJ-25, разъем питания (всё это в ЧипДип), а ещё комплект сопряжённых коммуникационных модулей 2.4G с конвертором USB-UART и модуль гироскопа MPU-6050 (это на AliExpress). И если кого-то действительно интересуют инструкции по сборке подобного клона, мы можем их разместить на нашем сайте "Лаборатория проектов 169" (http://www.lab169.ru).
Рис.4
На мой взгляд, смотрится данный вариант робоплатформы не особо привлекательно, сборку тоже простой не назовёшь. Всё-таки "Структор" это не фрезерованный анодированный алюминий. Однако, и данная робоплатформа, и оригинальный mBot в любом случае не "само совершенство".
Чего не хватает Эмботику, почему нельзя о нём говорить как о продукте завтрашнего дня? К сожалению, mCore базируется на восьмиразрядном микроконтроллере ATMEGA328. А это значит, что обеспечить "истинную" многозадачность у нас не получится. Пока что мне не известно ни одного программного продукта, позволяющего с легкостью писать программы для Arduino Uno точно в таком же стиле, как мы пишем в Scratch, с использованием нескольких одновременно "прокручивающихся" циклов. Может быть, у восьмиразрядного микроконтроллера всё-таки хватит производительности для запуска пары-тройки параллельных процессов при решении несложных учебных задач? Но, похоже, никто не занимается разработкой подобного программного обеспечения, тридцатидвухразрядные микроконтроллеры становятся всё доступнее, и гораздо проще разрабатывать программное обеспечение не для старых, а для новых платформ, накладывающих гораздо меньше ограничений.
Еще одно лирически-техническое отступление. Я попытался обеспечить возможность использования некой "полумногозадачности" при программировании восьмиразрядных микроконтроллеров в расширении Advanved Arduino Extention for mBlock. Тот, кого интересует данная тема, может посмотреть примеры номер 18, 21, 24 по ссылке ниже.
http://www.lab169.ru/mblock/advanced-arduino-extension-c-v
Итак, давайте попробуем описать гипотетическую робоплатформу будущего, которая могла бы заменить собой mBot и унаследовать всю массу существующих методических материалов. Иными словами, давайте сформулируем своими словами техническое задание на разработку "робоплатформы нашей мечты" (кстати, вдруг она уже существует??).
- Она должна уметь делать практически всё, что умеет современный Эмботик в базовой конфигурации (либо немножко больше). Должны присутствовать изначально: программная кнопка (обязательно!!!), пара RGB-светодиодов, спикер, датчик освещённости, два ходовых двигателя, сменный модуль беспроводной связи, дальномер, сдвоенный цифровой датчик линии со светодиодной индикацией на каждом из сенсоров, необходимое количество портов для подключения дополнительных внешних модулей (сенсоров и актуаторов). Пожалуй, в условиях школы инфракрасные приемник и передатчик можно было бы перенести в разряд факультативного оборудования (не страшно, если будет требоваться подключить дополнительный внешний модуль). Однако для "домашнего" использования наличие встроенного ИК приёмника и входящего в комплект пульта ДУ (как у mBot) - несомненный плюс, это превращает набор в самодостаточный игровой комплект.
- Должны присутствовать поворотная голова на сервомоторе и гироскоп, а также некоторое количество дополнительных "бонусных" возможностей (например энкодеры двигателей или датчик цвета, захват для перемещения грузов и т.д.).
- Должна существовать возможность визуального программирования в активно развивающихся сейчас программных средах с поддержкой многозадачности, например Makecode или Microblocks. Ребенок должен быть способен без особых хлопот запрограммировать робоплатформу для автономной работы, чтобы она, например, ехала по линии, ожидая первого отворота направо, при этом плавно крутила головой, проверяя наличие препятствий спереди и по бокам, сигнализировала о своём намерении хитрым помигиванием светодиодами, и одновременно наигрывала весёлую мелодию. Любой знакомый со Scratch знает, что подобные задачи несложно решить путём организации нескольких параллельно исполняющихся циклов. А вот парадигма автоматного программирования, которую требуется использовать при наличии единственного цикла, слишком сложна, чтобы всерьёз надеяться на то, что дети её освоят.
- Должна существовать возможность создания интерактивных проектов, в которых действия виртуальных исполнителей (персонажей компьютерной игры, "черепашки", перемещающейся по экрану компьютера и оставляющей след, т.д.) взаимосвязаны с действиями реального исполнителя (робоплатформы), как в mBlock или Snap4arduino, например. Повернули робоплатформу – повернулось изображение "черепашки" на экране. Щёлкнули мышкой по экрану - "черепашка" повернулась в соответствующую сторону, и точно так же повернулась реальная робоплатформа.
- Наконец, очень желательно, чтобы новую робоплатформу можно было программировать с помощью старых привычных инструментов (mBlock3) и привычного набора визуальных блоков (см. рис.1). Это позволило бы использовать все существующие учебные материалы почти без какой-либо адаптации, а также сильно упростило бы и педагогам, и ученикам освоение новых учебных комплектов. То есть новая робоплатформа должна программироваться И с помощью старых программных средств (пусть при этом не все возможности будут доступны), И с помощью новых.
- Стоимость нового базового набора не должна сильно превышать стоимость современного Эмботика, а желательно быть такой же или даже чуть ниже.
На первый взгляд нереалистичный набор требований. Но в следующих своих публикациях я постараюсь продемонстрировать, что это осуществимо. Мы соберём прототип Эмботика на базе тридцатидвухразрядного микроконтроллера, а также модифицируем mBlock3, чтобы эту робоплатформу можно было программировать в старой привычной среде.
Существуют ли уже сейчас тридцатидвухразрядные аналоги Эмботика? Мне известно лишь о продукции компаний Kittenbot и DFRobot, которые вплотную приблизились по функциональности к mBot. Но... всё ещё не до конца. И то, чем эти компании не будут заниматься совершенно точно, это адаптацией среды mBlock3 для использования со своими продуктами. Но, может быть, найдется кто-то заинтересованный среди российских разработчиков?
В заключение несколько выводов (возможно, не совсем очевидных на основе лишь представленной в статье информации, но выстраданных и проверенных на практике).
- Пытаться делать функциональный аналог mBot на базе микроконтроллеров старого поколения не имеет особого смысла, это ресурсоёмкая задача. Однако осуществимо делать бюджетные робототехнические наборы на базе оригинального контроллера mCore (например, используя пластиковый конструктив, а не металлический), а также применять контроллер mCore вместе с широко распространёнными доступными Arduino компонентами. И сам набор mBot, и его самодельные аналоги на базе mCore можно по-прежнему рекомендовать для использования.
- Можно рассчитывать на то, что бюджетные робоплатформы будущего на базе тридцатидвухразрядных микроконтроллеров достаточно скоро получат набор функций, аналогичный mBot (и даже более широкий). С использованием современной элементной базы этого легко добиться. А значит, разработка новых учебных заданий и учебных курсов для платформы mBot продолжает иметь смысл, эти материалы можно будет использовать и с новыми робототехническими наборами.
- Забегая вперёд, можно сказать, что адаптация существующих учебных курсов и программных сред (речь главным образом о mBlock3) для использования с робоплатформами нового поколения возможна и осуществима. Реализация этой задачи была бы полезна всем тем, кто сегодня применяет продукцию компании Makeblock , а именно робототехнические наборы mBot и среду программирования mBlock3 (хоть эта работа и может не совсем укладываться в маркетинговые планы фирмы-производителя).
Продолжение следует.