Программирование ардуино: используем scratch и mblock

Программируем Arduino с помощью Scratch и mBlock

В данном уроке мы научимся программировать Ардуино на языке программирования Scratch с использованием mBlock. Но во-первых, давайте быстро рассмотрим, что такое Arduino и Scratch, соответственно.

Ардуино платы

Arduino – небольшая плата, предназначенная в первую очередь для создания прототипов, которая воплощает любые идеи в жизнь. Используя Arduino, можно создать робота, электронный гаджет и многое другое. Нет предела! На фото ниже плата Ардуино Уно.

Плата Arduino Uno

Например, для запуска двигателей с заданными интервалами может использоваться плата Arduino, которая подключается к четырем двигателям (плюс к двигателю управления). Вы должны поручить Arduino управлять двигателями с использованием языка программирования, где вы пропишите шаги, а готовую программу загрузите в плату, чтобы проект заработал.

Микроконтроллер имеет собственный язык программирования, хотя этот язык состоит из функций, выведенных из C/C++.

Однако вы можете использовать другие языки для программирования Arduino, как правило, используя сторонний инструмент, такой как Snap4Arduino, ArduBlock и другие. Одной из таких программ является mBlock, которая позволяет использовать визуальный язык программирования Scratch с Arduino.

В этом уроке мы рассмотрим основы использования mBlock для программирования Arduino с Scratch.

Язык программирования Scratch

Scratch (Скретч) – это язык программирования, разработанный для детей, чтобы они могли изучать программирование в интерактивном режиме. В Scratch вы присоединяете помеченные блоки (которые служат фрагментами кода) для написания полноценной программы или игры.

Язык программирования Scratch

mBlock

Используя Scratch, некоторые пользователи разработали еще одно дополнение, называемое mBlock. Разница между mBlock и Scratch заключается в том, что mBlock позволяет вам запрограммировать Arduino простым и интерактивным способом.

Интересная вещь mBlock заключается в том, что вы можете увидеть исходный код на C++ после программирования Arduino.

mBlock

Мигаем светодиодом с использованием mBlock

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

Проверьте, насколько это просто:

В приведенной выше программе вы можете увидеть, что мы разместили блок Arduino и “вечный блок” (англ. – forever). Эти два блока являются обязательными для программирования Arduino.

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

Внутри блока forever установите, какой цифровой контакт будет использоваться. Этот может обеспечить высокое или низкое напряжение пина. Итак, если у меня есть светодиод, подключенный к контакту номер 13 Arduino (смотрите ниже), и я хочу включить его, я буду использовать «set digital pin 13 output HIGH», и мой светодиод загорится.

Эта программа использует задержки (delays) для приостановки программы в течение одной секунды между состояниями ON и OFF. Таким образом, мы можем видеть, как светодиод мигает.

Попробуйте подключить Arduino к светодиоду, как показано выше, и запустить код после подключения Arduino к компьютеру (убедитесь, что вы выбрали правую плату и последовательный порт с mBlock). Для этого вам обязательно нужна программная среда Arduino IDE.

Затем запустите код. Вы сможете увидеть, что светодиод мигает.

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

Как я первым роботов на Scratch и Arduino программировал

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

Смотря на текущее разнообразие образовательной робототехники радуешься, что детям доступно огромное количество конструкторов, готовых изделий и что планка «входа» в основы программирования опустилась достаточно низко (вплоть до детского сада). Массово идет тенденция приобщения сначала к модульно-блочному программированию с переходом затем на более продвинутые языки. Но такая ситуация была не всегда.

2009 год. Россия начала массово знакомиться с Arduino и Scratch. Доступная электроника и программирование начинают завоевывать умы как энтузиастов, так и преподавателей и идея все это соединить уже вовсю витала (а частично была реализована) в мировом инфопространстве. Уже есть Lego.

На самом деле Scratch в релизнувшейся в это время версии 1.4 имел поддержку внешнего оборудования. В нем была заложена поддержка Lego WeDo (Motor blocks) и платы PicoBoard. Никаких внешних плагинов и возможности работы с чем то еще реализовано не было.

Но хотелось Arduino и роботов на ее основе, причем желательно работающих на базовой версии. В это же время один из японских ардуинщиков придумал как совместить платформы и выложил схематику (хотя и не всю и пришлось «додумывать») и прошивки на всеобщий доступ (но увы даже не на английском). Взяв за основу этот проект в 2010 году родился ScratchDuino (я тогда вместе с женой работал в компании ЛинуксЦентр).

Концепция «заменяемого картриджа» (не напоминает Micro:bit ?), магнитные крепления для компонентов робота и использование встроенных возможностей Scratch в части обработки сенсоров и управления моторами.

Робот изначально задумывался Lego-совместимым. На то время это был единственный реальный конкурент в части “детской” робототехники.

В 2011 году платформа увидела свет и она до сих пор (уже после ухода из проекта меня и моей жены в 2013 году) живет и развивается в текущий момент под именем РОББО.

Кто-то может возразить, что были же похожие проекты. Да, примерно в это же время начал развиваться проект S4A, но они были нацелены на программирование именно в стиле Arduino (с его цифровыми и аналоговыми выходами) из видоизмененного Scratch, тогда как моя разработка могла работать с «ванильной» версией (хотя мы также ее видоизменили, чтобы отобразить блоки именно для сенсоров от 1 до 4).

Потом появился Scratch 2.0 а с ним и начали появляться плагины как для Arduino, так и популярных роботов, а Scratch 3.0 из коробки поддерживает большое число робоплатформ.

Blockly. Если посмотреть на популярных роботов, вида MBot (который кстати вначале тоже использовал видоизмененный Scratch), то они программируются на блочном языке, но это не Scratch, а модифицированный Blockly от Google. Я не знаю, повлияло ли на его разработку моя, но точно могу сказать, что когда мы в 2013 году в Лондоне показывали разработчикам Blockly платформу Scratchduino, роботами там еще «не пахло».

Сейчас же Blockly модификации лежат в основе множества робототехнических конструкторов и учебных роботов и это уже другая история, так как за последнее время появилось (и также кануло в лету) огромное число проектов как в России, так и в мире. Но в РФ именно в Scratch-реализации и «противостоянии» Lego мы были первыми 🙂

Что же произошло после 2013 года. Мы с женой в 2014 году основали свой проект ПРОСТОРОБОТ (он же SIMPLEROBOT) и ушли в разработку настольных игр. Но Scratch нас не отпускает.

У нас есть интересные наработки по моделированию роботов в Scratch и его потомке Snap!

PDF файл с описанием можно скачать и использовать свободно по ссылке

а готовые проекты найти тут.

Все работает и в 3 версии Scratch.

Также мы вернулись к программированию роботов на Scratch в нашей новой настольной обучающей игре «Битва Големов. Карточная лига Пароботов» (я писал о ней на Пикабу ранее).

Scratch for Arduino делает программирование под Arduino более наглядным

Windows / Mac / Linux: Программирование Arduino не так уж сложно, но если вы ищете что-то более наглядное, то Scratch for Arduino(S4A) это именно то, что вы искали. Она использует MIT’s Scratch в качестве основы для обучения детей (или просто начинающих) программированию Arduino.
Идея состоит в том, чтобы предоставить вам более наглядный язык программирования, чтобы вы лучше понимали как это работает. Даже если вы профессионал в программировании Arduino, то даже вам будет интересно поработать с данной программой. Это отличная программа для начала программирования Arduino, для того чтобы вы разобрались как с ним работать.
Интерфейс программы выглядит следующим образом:

Основные микроконтроллеры Arduino представляются в виде функциональных блоков; аналоговая и цифровая запись и чтение, а так более высоко-уровневые вещи.Здесь можно найти блоки для управления стандартным и непрерывным вращением серводвигателя:

В S4A, плата Arduino представляет собой особый вид спрайта. Спрайт Arduino автоматически найдет USB-порт, к которому подключена плата.
Существует возможность подключения к нескольким платам одновременно, просто добавьте новый спрайт Arduino.

Технические детали

Поддерживаемые платы

S4A работает с Arduino Diecimila, Duemilanove и Uno. Другие платы не были проверены, но они могут также работать.

Подключение

Компоненты должны быть связаны определенным образом. S4A поддерживает 6 аналоговых входов (аналоговые контакты), 2 цифровых входа (цифровые контакты 2 и 3), 3 аналоговых выхода (цифровые контакты 5, 6 и 9), 3 цифровых выхода (выводы 10, 11 и 13) и 4 специальных выхода для подключения серводвигателя (цифровые контакты 4, 7, 8 и 12).
Вы можете управлять платой путем присоединения к нему беспроводного RF модуля, такого как Xbee. Так же S4A позволяет управлять платой через USB порт.

Совместимость

S4A обратно совместим со Scratch, так что вы можете открывать Scratch-проекты в нем. Однако, вы не сможете поделиться своими проектами на веб-сайте сообщества Scratch, так как это идет вразрез с условиями использования Scratch. Имейте в виду, что эта совместимость не работает в обоих направлениях, так что вы не сможете открыть проект S4A с помощью оригинального Scratch. Использование платы PicoBoard вместе с Arduino также поддерживается.

Мастерская

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

Вот некоторые видео о возможностях данной программы:
Полнофункциональный робот. Робот с вращающейся камерой, датчиком расстояния и пультом дистанционного управления. Для этого используется две платы Arduino (пульт дистанционного управления + робот), модуль беспроводной XBee, три инфракрасных датчика, модуль камеры и три серводвигателя

S4A вводный семинар

mBlock для Arduino. Как скачать, с чего начать

mBlock – отличная программа для обучения навыкам программирования роботов и Arduino, основанная на известной среде Scratch. Ее очень легко скачать, установить и настроить, она совершенно бесплатна и доступна на русском языке для операционных систем Mac OS, Windows, Android и iOS. Возможность создания скетчей визуальным способом может помочь начинающим освоить навыки программирования. В этой статьей мы собрали вместе полезные советы и подготовили краткий урок о том, как работать в mBlock Arduino.

Программа mBlock

Среда программирования mBlock в первую очередь была создана для работы с робототехническими наборами MakeBlock. Сегодня она активно используется как для MakeBlock, так и для самого широкого спектра плат Ардуино. Программа русифицирована, базируется на Scratch 2, с ее помощью можно создавать собственных роботов произвольной конфигурации на Ардуино.

  • Иногда наблюдается нестабильность в интерактивном режиме;
  • Присутствуют потери контакта с микроконтроллером, из-за чего приходится перезагружать среду.

Настройка среды для работы c Arduino

После установки утилиты на ПК нужно сделать следующие настройки для дальнейшей работы c платами Ардуино:

  • Запустить программу mBlock.
  • Выбрать пункт в главном меню board, поставит галочку около нужной платы;
  • В верхнем меню language следует выбрать русский язык.
  • Затем в соединить – serial port нужно выбрать номер com порта, к которому подключен микроконтроллер. Если номер порта не был присвоен, нужно установить драйвер. В mBlock нужно выбрать connect – install arduino driver. Также драйвера можно найти в интернете, скачать и установить вручную.

На этом основные настройки закончены. Можно приступать к созданию программы.

mBlock для программирования Arduino

  • Есть возможность подсоединения к микроконтроллеру и обновления его прошивки. Это выполняется в верхнем меню в программе. Такая функция значительно облегчает процесс – например, в S4A приходится скачивать специальные файлы, открывать их в Arduino IDE и загружать на сам контроллер. В mBlock все значительно проще.
  • В верхнем меню есть возможность выбора нужной платы.
  • Существует специальный ящик команд, который называется Робот. В нем содержатся различные блоки, помогающие считывать данные и управлять контроллером. Их можно комбинировать с командами из других ящиков.
  • Присутствует возможность генерирования кода Ардуино и редактирования его в среде Arduino IDE. Код создается из виртуального скрипта. Таким образом, можно визуально оценить, как работает та или иная команда в программе, и изучить синтаксис языка программирования.
  • Для работы существует специальный робот на базе Ардуино – mBot. К нему есть специальные обучающие материалы и инструкции, которые будут полезны новичкам любого возраста.

Основное отличие mBlock – простота и интерактивность программирования.

Скачать mBlock на русском

Скачать Arduino mBlock можно с официального сайта. Скачивание бесплатное. Есть 2 версии программы – mBlock3 и mBlock5. Вторая версия более новая и находится на стадии разработки, поэтому рекомендуется устанавливать mBlock3. Нужно загрузить установочный deb пакет, подходящий для операционной системы. Затем среду нужно установить на компьютер. Установка стандартная, нужно следовать инструкциям,

Описание блоков программы mBlock

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

Как это работает на примере робота mBot, двигающегося вперед-назад:

Цикл будет повторяться до бесконечности. Можно усложнить программу, добавив блоки поворота на угол, перемещения в заданную координату и т.д.

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

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

Установка расширений

Для расширения функционала можно установить расширения. Одним из них является AdvancedArduino – оно может использоваться вместо стандартного Ардуино и выдавать дополнительные возможности в режиме Arduino Mode.

К таким возможностям относятся:

  • Графические блоки для функций min, max, map, pow и других, необходимых для преобразования значений.
  • Дополнительные графические команды для работы с шиной serial и serial
  • Названия блоков в соответствии с наименованиями библиотечных функций.
  • Применение блоков, позволяющих вставлять произвольные фрагменты кода на языке Wire.
  • Определение локальных и глобальных переменных параметров функций произвольного типа.

Установить расширение можно так:

Пример программы в mBlock

Давайте напишем свой первый проект в среде mBlock. В качестве примера будет рассмотрено мигание светодиодом. Сначала светоизлучающий диод нужно подключить к плате Ардуино. Ножки светодиода следует подключить к пинам 13 и GND.

Затем в mBlock пишется сама программа. Она выглядит следующим образом:

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

Суть блока проста – цикл должен повторяться бесконечно. В программе используются задержки для приостановки. Интервал составляет 1 секунду.

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

mBlock 5.0.1

Версия 5.0.1 с новым дизайном и более хорошей графикой, чем предыдущая версия, а так же с новой версией Scratch занимает хорошее место на рынке ПО для Ардуино. Но так как она еще на стадии разработки, можно предположить, (или даже с уверенностью сказать) что будут и другие апгрейды mBlock 5.

Сравнение версий

У mBlock 5 есть несколько отличий от mBlock 3:

  • Стала лучше графика
  • Все блоки переведены на русский язык
  • Есть возможность переносить программу mBlock в Piton.
  • Новый дизайн, который выглядит привлекательнее, чем прошлый

Пример программы

Вот так выглядит программа мигания светодиодом на mBlock 5:

Источники:

http://pikabu.ru/story/kak_ya_pervyim_robotov_na_scratch_i_arduino_programmiroval_6959827

http://habr.com/post/196752/

http://tapen.ru/3506-mblock-dlja-arduino-kak-skachat-s-chego-nachat.html

http://digitrode.ru/computing-devices/minipc/403-kak-nachat-programmirovat-na-python-v-raspberry-pi.html

Ссылка на основную публикацию