Приближается новый учебный год. Хочется встретить его во всеоружии, ведь нас наверняка ждёт масса сюрпризов. В каких условиях и в каком режиме придётся проводить занятия, до сих пор не совсем понятно. Особенно это касается внеурочной и кружковой деятельности.
Сегодня я хотел бы сделать небольшой обзор новых версий программных продуктов, служащих для визуального программирования микроконтроллеров. Со времени прошлого обзора очень многое успело поменяться, есть что рассказать.
- Обзор визуальных средств программирования микроконтроллеров (часть 1)
https://novator.team/post/558 - Обзор визуальных средств программирования микроконтроллеров (часть 2)
https://novator.team/post/566
Прежде всего напомню, что как и в прошлый раз буду говорить в основном о тех продуктах, которые способны создавать программы для автономной работы микроконтроллера, и при этом имеют интерактивный режим, позволяющий сэкономить время занятий, сделать их интересными даже для учеников младших классов. Основоположник данного подхода - среда программирования mBlock компании Makeblock. Я предполагаю, что читателям материал первого обзора уже знаком. Список важных для меня (и думаю, не только для меня) критериев оценки каждого приложения - в конце этой статьи.
MindPlus v.1.6.4 RC2.0
http://mindplus.cc/download-en.html
Эта среда программирования на базе Scratch3 избавилась от многих своих "детских болезней". Прежде всего надо сказать, что теперь и операции записи, и операции чтения состояния портов микроконтроллера Arduino в интерактивном режиме происходят очень быстро. Это позволяет реализовывать и игровые проекты с использованием платы Arduino или Micro:bit в качестве игрового "джойстика", и разнообразные робототехнические. Любимый многими робот Mcqueen программируется именно в этой среде. Правда, как обстоят дела с беспроводным управлением, непонятно.
Из плюсов - поддерживается управляющая структура "if - else if - else", это удобно и делает скрипты компактнее.
Что приятно, есть расширение для модуля видеозрения HuskyLens. Есть и расширение ML5 ("Machine Learning") для реализации проектов с элементами искусственного интеллекта на базе видеозрения.
Но следует учитывать, что программа MindPlus сориентирована всё-таки не на универсальные микроконтроллеры, а в первую очередь на коммерческие продукты компании DFrobot. И даже здесь возможности на мой взгляд урезаны. В частности, при подключении шаговых двигателей запускать их можно лишь поочерёдно, робота-художника сделать не получится.
И к большому сожалению, пока нет средств для добавления собственных расширений (точнее, формально они существуют, но не используются).
Kittenblock v.1.84z
https://www.kittenbot.cc/pages/software
"Одноклассник" программы MindPlus. Настолько же быстро работает в интерактивном режиме, но у меня возникло ощущение, что соединение чуть менее стабильно.
Прежде всего хочется отметить, что в списке доступных расширений, причём частично уже предустановленных, оборудование сторонних разработчиков. Среда Kittenblock явно ориентирована на хорошую совместимость с разными аппаратными платформами, и это крайне импонирует. И свидетельствует об уверенности компании Kittenbot в своих силах. Добавлять можно и собственные расширения, но к сожалению, лишь через сервис Github, по веб-ссылке. Этот механизм ещё недоработан, и библиотека расширений хоть и присутствует, но пока не сравнится с библиотекой mBlock.
Тем не менее, компания Kittenbot со своей программой Kittenblock явно рассчитывает оказаться в числе лидеров. И у неё есть козыри в виде специализированных проработанных наборов для изучения робототехники и основ искусственного интеллекта. Само собой, есть собственный модуль видеозрения (он входит в набор) и расширения для работы с ним, а также расширения для реализации элементов искусственного интеллекта, в частности, TensorFlow и тот же ML5.
Можно управлять одновременно обоими шаговыми двигателями. В отличие от MindPlus Kittenblock способен заставить робота крутить сразу двумя колёсами, чтобы тот ехал прямо - большое достижение!
Кроме того, Kittenbot предлагает единственное пока что известное мне средство для решения проблемы беспроводной коммуникации между компьютером и платой Micro:bit. Это специализированный, предназначенный именно для Micro:bit USB-модуль стандарта BLE.
https://aliexpress.ru/item/32911028409.html
Kittenblock понадобится и тому, кто рассчитывает перейти на использование "старшего брата" Micro:bit с шестью встроенными кнопками и цветным жидкокристаллическим экраном с разрешением 160 на 128 точек. Называется это чудо "Meowbit".
https://www.kittenbot.cc/products/meowbit-codable-console-for-microsoft-makecode-arcade
Текущая версия Kittenblock имеет достаточно богатый набор средств для программирования классической платы Arduino вместе со всяческой распространённой периферией, можно создавать и интерактивные, и автономные проекты. Очень существенно, что разработчики Kittenblock не стали увлекаться модной идеей, не стали прятать от пользователей команду "pinMode" для переключения режимов работы портов ввода вывода. В результате среда Kittenblock годится для реализации множества проектов продвинутого уровня.
Но и здесь не обошлось без недостатков. Мне неизвестен способ создания и использования в Arduino-проектах массивов, а также целочисленных и строковых переменных. И это серьёзное ограничение возможностей.
MagicBlock v.1.2.3.0
http://www.emakefun.com/en/download
Ещё один клон mBlock (даже по названию) почти того же класса, что две предыдущие программы, новичок от компании eMakeFun.
Эта среда, мягко говоря, ещё сыровата, и огрехов в ней полно. Достаточно сказать, что пока можно создавать лишь что-то одно, либо автономные проекты для микроконтроллеров, либо интерактивные проекты без участия микроконтроллеров. Использовать плату Arduino с джойстик-шилдом как приставку для придуманной самостоятельно и запрограммированной игры не получится. И язык следует выбирать исключительно английский, чтобы не смотреть на экран с недоумением.
Однако потенциал у этой программы есть. Кому-то несомненно понравится набор средств: работа со строками, с прерываниями, управляющие структуры "if - else if - else", циклы с предварительной и конечной проверкой условия, операция "pinMode", возможность создавать целочисленные переменные произвольного типа, а также функции, возвращающие значения (наконец-то!).
Но к сожалению, создание и использование массивов недоступно и здесь, хотя есть надежда, что с тем подходом, который практикуют разработчики, это дело недалёкого будущего.
Можно добавлять собственные расширения, сохранённые в виде локального файла. Конечно, необходимо вначале разобраться, каким образом подобные расширения создавать, однако это свидетельствует о том, что разработчики MagicBlock подумали о пользователях тех компьютеров, которые не имеют выхода в интернет.
Имеет смысл следить за развитием данного проекта, не говоря уже о том, что сами продукты компании eMakeFun, для программирования которых и предназначен MagicBlock, хороши и интересны.
- https://aliexpress.ru/item/4000834837807.html
- https://aliexpress.ru/item/4000079733651.html
- https://aliexpress.ru/item/4000560743590.html
Mixly v.0.999
http://www.emakefun.com/en/download
Скажу и об этой среде программмирования, используемой теми же разработчиками. Несмотря на то, что средств создания интерактивных проектов в ней нет совсем, это очень интересный и функциональный вариант для тех случаев, когда нас интересуют исключительно программы для автономной работы микроконтроллера. Но следует учесть, что интерфейс данной среды для пользователей Scratch во многом непривычен.
Snap4arduino v.6.1.2 RC
Очень мощная среда программирования, в первую очередь с точки зрения создания интерактивных проектов. Эталон в отношении скорости и надёжности соединения между компьютером и микроконтроллером. Использует очень продуктивный подход - любой файл с экспортированным набором блоков уже и является расширением, которое можно хранить у себя на диске или в облаке (это делает созданное расширение доступным для всех). Имеет серьёзные средства объектного программирования. В свежей версии добавились некоторые новые возможности, интересные скорее для ценителей данной программы.
К сожалению, эта среда программирования так пока и не избавилась от основного своего недостатка - необходимости использовать Arduino IDE для загрузки на микроконтроллер прошивки StandartFirmata. Но можно установить MindPlus для удобной загрузки альтернативной совместимой прошивки, об этом я писал в прошлом обзоре.
Другой недостаток - по-прежнему бедноватый набор предустановленных средств для создания проектов, работающих в автономном режиме. Более того, для этого потребуется ещё и загружать сгенерированный текстовой скетч в Arduino IDE, что малоприменимо при занятиях со младшими школьниками.
microBlocks v.0.6.2
http://microblocks.fun/download#download
Это среда программирования с особыми возможностями. Она является своего рода антиподом Snap4arduino, при этом повторяя многие его особенности. Оптимальным вариантом было бы объединить эти две среды в одной программе, такой проект существовал, но к огромному сожалению, уже долго остаётся заброшенным.
В текущей версии microBlocks нельзя использовать Сцену и спрайты, можно лишь создавать программы для автономной работы микроконтроллера. Зато результат мы видим немедленно при добавлении того или иного блока - скрипты дозагружаются на микроконтроллер непосредственно во время их создания. И остаются работать после выключения питания и перезагрузки. Идеально при обучении детей.
Программировать возможно лишь 32-разрядные микроконтроллеры, в числе которых Micro:bit и ESP32. Причём прошивка загружается очень легко прямо из меню. Допустимо использовать и Arduino M0 или Arduino Due, если прошить плату при помощи Arduino IDE. Достаточно сделать это один раз.
Из недостатков можно отметить отсутствие поддержки использования гироскопа (сегодня каждому роботу пора уже научиться ориентироваться в пространстве) и микросхемы PCA9685, повсеместно применяемой для управления двигателями.
В числе уникальных особенностей программы - возможность добавления нескольких параллельно исполняющихся циклов. Это радикально упрощает создание сложных проектов. Также как в Snap4arduino легко использовать собственные и чужие библиотеки расширений, функции, возвращающие значения и т.д. Не стоит забывать и о том, что данный проект отличается целостностью. С любым микроконтроллером мы работаем сходным образом и способны использовать переменные с динамической типизацией, списки и прочие программные инструменты, ставшие привычными в Scratch.
Makecode Microbit v.3.0.17
https://makecode.microbit.org/
Программная среда, которую используют для работы с Micro:bit чаще всего. Отличается проработанностью средств управления аппаратными компонентами и наличием документации по созданию расширений. В результате множество разработчиков ориентируется именно на неё при выборе программной среды для своих продуктов (робототехнических контроллеров, сенсоров и т.д.).
О наличии какой-то интерактивности можно было бы не говорить, если бы не встроенный эмулятор платы Micro:bit. Это решение не без недостатков, но действительно серьёзное достоинство программы.
Другое очень серьёзное достоинство - возможность создания нескольких параллельно работающих циклов, как у microBlocks.
Ранее интерфейс Makecode вызывал много недоумения и раздражения. Реализовать сколько-нибудь объёмный проект было сложно. Но после обновления ситуация улучшилась, разработчики явно учли замечания пользователей.
mBlock5 v.5.2.0
https://www.mblock.cc/en-us/download
Обновление этой программы и её расширений наконец-то позволило создавать не только автономные, но и интерактивные проекты с универсальными микроконтроллерами. Скорости работы несколько маловато для проектов с чтением состояния большого количества портов, но эту проблему есть способ решить (об этом чуть позже). И главное, благодаря большому наработанному контингенту пользователей и механизму загрузки собственных расширений компании Makeblock удалось получить уже достаточно обширную библиотеку для новой "реинкарнации" mBlock.
Хоть большинство пользовательских расширений отличается "сыростью", некоторые из них действительно полезны. Например, есть расширение для создания и использования массивов. Конечно, логичный и целостный набор средств, удобный для проведения занятий с детьми, ещё только предстоит создать, но теперь стало понятно, что mBlock5 - по прежнему перспективный продукт, имеющий свои сильные стороны при работе с открытыми аппаратными платформами. Конечно, нельзя не заметить, что mBlock3 имел более "дружественный" набор инструментов для этого. Но несмотря на собственные коммерческие успехи компания Makeblock всё-таки продолжает поддержку оборудования сторонних производителей.
Итог
В ходе своего мини-исследования мне очень хотелось найти свою "программу мечты", годящуюся для всех случаев жизни, и способную заменить старенькую проверенную среду mBlock3 с расширением "Advanced Arduino".
https://www.lab169.ru/mblock/extensions/advanced-arduino-extension-c-v/
Я опирался на следующие критерии:
- возможность создавать автономные проекты;
- возможность создавать интерактивные проекты, в том числе с использованием спрайтов и Сцены, а также с "моментальной" реакцией платы на команды, отправляемые с компьютера;
- поддержка использования разнообразных типизированных переменных или переменных с динамической типизацией;
- поддержка использования массивов или списков;
- поддержка работы с параллельным соединением на разных скоростях в автономных проектах;
- поддержка переключения режимов работы портов ввода-вывода в автономных проектах;
- поддержка использования прерываний в автономных проектах;
- поддержка параллельных циклов либо заданий, запускаемых по таймеру в автономных проектах;
- поддержка наиболее критичного для разных робототехнических платформ оборудования - светодиодов Neopixel, гироскопа, микросхемы PCA9685 драйвера двигателя;
- лёгкость добавления расширений, в том числе своих собственных;
- достаточно высокая скорость чтения большого количества портов в интерактивном режиме.
Что же, полноценную замену мне пока найти так и не удалось. При использовании платы Arduino Uno связка "mBlock3 + Advanced Arduino Extension" всё ещё оказывается по функциональности значительно лучше.
Самый главный недостаток по сравнению со средами Snap4arduino, Kittenblock и MindPlus, это меньшая скорость работы в интерактивном режиме, препятствующая созданию проектов, в которых требуется читать состояние сразу нескольких портов. Но этот недостаток можно устранить и даже превратить в интересную учебную задачу. Об этом я хочу рассказать в одной из своих следующих публикаций.
И всё-таки для "mBlock3+AAE" уже следует потихоньку подбирать "дублёра". Компания Adobe заявила о будущем прекращении использования Adobe Flash Player. А это значит, что веб-страница Scratch2 перестанет быть доступной. Радует то, что оффлайн-версия Scratch2 и mBlock3, базирующиеся на Adobe AIR, ещё какое-то время продолжат работать, и вполне можно успеть найти подходящую замену.