· 

СПО в школе. Давайте вместе заполним список! Часть 1. Поддержка робототехники и конструирования

Есть предложение! Тут пару раз искал именно свободные продукты по тем или иным направлениям деятельности и понял, что какой-то единой таблицы с аннотированным выбором, именно в плане образовательного использования, нет. Даже по облачным сервисам больше. Вот и начал создавать такую таблицу, а потом сообразил, что всем миром этот процесс можно сделать и быстрее и веселее. Вот и предлагаю всем желающим заполнить начатую мной таблицу:

В таблице сделаны вкладки по основным направлениям (офисные программы, работа с видео и т.д.) В каждой вкладке хотелось бы увидеть САМЫЕ-САМЫЕ лучшие программы из разряда свободных или (ладно, пропустим) официально бесплатных (в последнем случае указать, для домашнего пользования, или и в школе можно). Небольшая аннотация, если есть ссылки на интересные ресурсы - тоже сюда. По сути, можно заполнять не все ячейки, потом всем миром добьем.
По ходу создания я буду делать резервные копии, чтобы случайно не потерять материал. Может получиться хороший инструмент для учителя.

Немного о вставке гиперссылок. Если не хочется вставлять длиннющую гиперссылку, можно в ячейку вставлять код по образцу:
=hyperlink("http://snap.berkeley.edu/snapsource/snap.html";"Страница online версии ")

Присоединяйтесь. Кто-то просто может заполнить пару ячеек, рассказав о любимом ПО, кто-то создаст блог по направлению (скажем, обработка звука) и там, опять же, даст ссылку и расскажет о данном направлении. Если какой-то продукт оправданно попадет в несколько рубрик - отлично.

Я попробую начать, рассказав о применении СПО в конструировании и робототехнике, заодно объединив материалы с коллегой - Александром Григорьевым.

Данное направление в отношении СПО имеет радикальное преимущество))) Почему? Все просто: последние годы в «домашнем»(и не только) конструировании электронных устройств наблюдается явный прогресс, связанный с появлением доступных контроллеров серий Arduino/Genuino. Одноплатные компьютеры с открытой архитектурой (Raspberry Pi и появляющиеся с каждым днем все новые его конкуренты-одноклассники) также весьма интересны, но именно появление Arduino привело к новому витку массового технического творчества. Дешевизна и доступность, наличие нескольких видов контроллера под разные задачи, огромное число дополнений и расширений, появление которых и является следствием той самой открытой архитектуры устройства, удобные монтажные платы для прототипирования беспаечным способом – все это обеспечило огромную популярность схемотехнике на базе Arduino, в том числе и в образовательных учреждениях. Ну а если мы используем свободную аппаратную платформу, то логично опираться и на СПО для управления ею. Доступность аппаратной части умножается на доступность программной. Да, конечно, можно использовать собственно Arduino IDE , но текстовое программирование – довольно «взрослый» уровень, к которому еще надо подойти. А образовательная робототехника и конструирование на основе Arduino вполне возможны и на более ранних ступенях, если использовать визуализированные среды разработки и управления. Вот о них и поговорим. 

Робототехника.
• Ardublock 
Плагин визуализации для Arduino IDE. ОС: Windows, Mac,Linux.
Страница загрузки: https://sourceforge.net/projects/ardublock/files/
Подробно о плагине, выборе версии и установке в нашем блоге goo.gl/d2izY1
Плагин добавляет возможность создания программ для Arduino устройств в визуализированном виде (собираем из блоков). Готовая программа преобразуется в код Arduino IDE и загружается на плату. 
Существует достаточное количество специализированных расширений Ardublock для конкретных устройств. Например, разработчики российского контроллера Трекдуино создали на базе Ardublock и Arduino IDE собственную среду разработки, постаравшись ее как можно больше "заточить" для работы с собственным контроллером. Однако для массового пользователя интерес в первую очередь представляет базовый набор блоков, позволяющий с удобством работать с ЛЮБЫМИ Arduino совместимыми платами. Требуется лишь добавить расширение Ardublock в стандартную среду Arduino IDE. Очень хороший вариант для первоначального ознакомления с программированием контроллера, а также для вводных занятий по программированию в коде. 
Достоинства: визуализированная среда, удобная для пользователей начального уровня, программирование в стиле «Scratch», преобразование визуального алгоритма в код Arduino IDE позволяет не только загружать скетчи в устройства, но и изучать синтаксис языка, сопоставляя визуальные блоки и текст программы.
Недостатки: сложно писать большие программы (но, как следствие, возникает стремление перейти на текстовый код), нет интерактивной составляющей для управления устройством непосредственно из среды разработки, (как в далее рассматриваемых продуктах), для проверки работы требуется полностью скомпилировать и загрузить программу в контроллер, что занимает время.
Пример использования Ardublock (блоки и получаемый код).

• S4A - Scratch for Arduino
ОС: Windows, Mac,Linux.
Страница проекта - http://s4a.cat/
Известный и хорошо зарекомендовавший себя проект. Для использования S4A требуется предварительно загрузить в контроллер прошивку при помощи Arduino IDE. Базируется на Scratch 1.4, а значит, хорошо работает на старых слабеньких компьютерах, что оказалось очень важным аргументом в пользу установки этой программы в одном из наших компьютерных классов, например. Удобна для использования в простых проектах, но есть проблемы неполной совместимости с уже готовыми аппаратными конфигурации. Например, на ScratchDuino робоплатформе не получится использовать готовые блоки-команды управления моторами. Нет возможности определять новые блоки. И самое главное, никакой автономности, робот управляется по каналу связи с компьютера. Требуется подключение проводом либо Bluetooth.
Тем не менее, многие интересные проекты с теми же лабораториями ScratchDuino были реализованы именно на этом программном обеспечении.

Достоинства: работает на слабых компьютерах, удобная среда на основе Scratch 1.4, самостоятельно находит подключенный Arduino контроллер.
Недостатки: поддерживает не всякую аппаратную конфигурацию Arduino устойства, не получится загрузить программу в контроллер для автономной работы, ограниченные возможности в плане изучения программирования, требуется заранее прошивать устройство при помощи Arduino IDE.

• Snap4Arduino
Страница разработчиков - http://snap4arduino.org
ОС: Windows, Mac,Linux.
Очень интересный и активно развивающийся проект с интерфейсом в стиле Scratch. Для образовательных задач принципиально несколько особенностей данной программной среды. Есть возможность работы с любым цифровым или аналоговым портом, то есть аппаратная конфигурация устройства может быть произвольной. Можно определять собственные блоки, а значит, создавать новые высокоуровневые команды. Более того, эти блоки могут быть с параметрами и использовать рекурсию. Использование рекурсивных алгоритмов позволит нам рисовать фрактальные изображения, в том числе при помощи роботов-художников. Управлять можно любой Arduino-совместимой платой, поскольку используется стандартный протокол Firmata, а скетч для прошивки входит в состав Arduino IDE. 

Существует множество расширений стандартного набора команд, в которых есть возможность использовать код Java script. Скорость обмена данными между платой и компьютером увеличена в 7 раз по сравнению с S4A. Мы в реальном времени видим и можем менять состояние каждого контакта ввода-вывода. То есть проект сохранил все достоинства Scratch4Arduino, приобретя при этом много новых. В том числе существует возможность конвертировать проект в код Arduino IDE и загрузить программу на контроллер для автономной работы. Таким образом, проект объединяет в себе основные достоинства Scratch4Arduino и Ardublock.
Достоинства: бурно развивающийся проект, отличная и стабильная работа в режиме интерактивного управления, широкие возможности для применения в самых разных сферах, в том числе для изучения современных концепций и средств программирования.
Недостатки: лишь недавно вышел из стадии бета-тестирования, существует достаточно много недоработок, пока менее удобен для генерации скетчей Arduino IDE, чем Ardublock, сгенерированный код не настолько "прозрачен".

На рисунке - самостоятельно созданные блоки управления роботом-художником на шаговых двигателях.

В целом – отлично подходит для интерактивного управления по каналам связи, хуже – для создания автономных роботов.

Подробнее о проекте Snap - http://progopedia.ru/implementation/snap/

• mBlock
Страница разработчиков: 
http://www.mblock.cc/ 
ОС: Windows, Mac (к сожалению, Linux не поддерживается, но есть ссылки на весь исходный код, базирующийся на Scratch 2.0.
Пример простого программирования автономного робота в mBlock – в нашем блоге goo.gl/nOKNLk
Данной средой программирования комплектуются робототехнические наборы MakeBlock. Наборы весьма интересны, но это тема отдельной статьи. Нас же радует то, что разработчики не ограничились поддержкой своей платформы, а создали довольно универсальный инструмент для работы с большинством Arduino плат. Радует и то, что русский есть в списке поддерживаемых языков. Этот бесплатный продукт с открытым кодом базируется на Scratch 2 (поэтому все знакомо и понятно) и позволяет программировать Arduino роботов произвольной конфигурации. Можно ограничиться базовой системой команд Arduino. Но в большинстве случаев можно (и нужно) пользоваться всем спектром подключаемой периферии и высокоуровневыми командами, выбрав в качестве системы команд Me Orion, поскольку это Arduino Uno совместимая плата. К радости владельцев ScratchDuino робоплатформы схема управления моторами полностью совпадает. Поддерживаются все распространенные Аrduino контроллеры, к которым можно подключать гироскопы, дальномеры и массу другой периферии, от которой разбегаются глаза, причем как из визуальной среды, так и при программировании непосредственно в Arduino IDE, подключив библиотеку MakeBlock.
Обновление прошивки контроллера для работы с mBlock реализовано удобно, достаточно в меню выбрать команду Соединить-Обновить прошивку.
К сожалению, работа в интерактивном режиме проходит не всегда гладко и без сбоев. Самым полезным можно назвать режим "Arduino mode", о нем стоит сказать отдельно. При создании программы из визуальных блоков есть возможность наблюдать, как тут же меняется текстовой скетч, который можно будет загрузить в контроллер одним нажатием на кнопку (либо в Arduino IDE для дальнейшего редактирования).
Достоинства: поддерживает большинство разновидностей плат Arduino, можно определять и использовать свои собственные блоки, как в "Snap!" и Scratch 2, с параметрами и возможностью рекурсии, легко пользоваться библиотеками и наработками MakeBlock для собственных проектов, независимо от того, на какой базе они построены, самый удобный инструмент создания небольших Arduino программ для автономной работы, неплохо подходит для изучения синтаксиса языка.
Недостатки: некоторая нестабильность в интерактивном режиме управления (впрочем, стабильность увеличивается от версии к версии), часто теряет коннект с Arduino контроллером.

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

• ScratchDuino 2.0
Среда визуального управления на базе Scratch 2.0 от петербургских разработчиков.
Сайт компании - http://scratchduino.ru/ 
Страница загрузки: http://files.scratchduino.ru/Software/ScratchDuino2.0/ 
Доступны версии для Windows, Mac, Linux.

В программу встроен блок команд для управления роботами. Несмотря на то, что программа, в первую очередь, ориентирована на поддержку робоплатформы от тех же разработчиков, ее можно использовать и для других роботов на основе Arduino Uno.
Пример использования программ ScratchDuino и mBlock для управления распространенной робоплатформой с 4 моторами, в нашем блоге:
«Дерзай! Программирование мобильной робоплатформы в mBlock, конфигурация MakeBlock-Scratchduino» - goo.gl/cDwTth
К плюсам программы можно отнести автоматизацию определения сопряженного устройства, к минусам – отсутствие возможности записи программ для автономного использования роботом, реализовано только интерактивное управление.

Конструирование и 3D – прототипирование.
Разработка и создание своих собственных конструкций, дополнений для робота и «умных» устройств требует и своего инструментария для проектирования, рисования и последующего воплощения в виде той же модели, элемента, узла. Мы несколько ограничены пространством статьи, поэтому не рассмотрим ряд интересных программных продуктов для собственно проектирования устройств (построители разводки электронных схем, программы-конструкторы кинематических схем и т.д.). На первоначальном этапе задачи обычно чуть проще: нарисовать и распечатать на 3D принтере (или нарезать в ЧПУ-фрезере, или выжечь на ЧПУ-лазере) отдельную деталь, корпус нового устройства, шестеренку для привода и т.д. И все чаще в школе для этого используются 3D принтеры. Вот СПО для таких целей мы и представим.

• Fritzing
Страница разработчиков - http://fritzing.org
Операционные системы – Windows, Linux, Mac
Программа позволяет удобно рисовать схемы размещения электронных компонентов в проектах на основе схемотехники Arduino. Представлен широкий выбор плат Arduino, есть возможность работать с платой прототипирования. Огромная коллекция электронных компонентов позволяет в несколько движений выбирать тип и номинальные параметры размещаемых элементов. Получаются красивые схемы, которые можно предлагать в качестве раздаваемых учебных материалов. 

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

• FreeCad
Страница разработчиков - http://www.freecadweb.org
ОС: Windows, Mac, Linux (Ubuntu).
Очень удобный инструмент для «инженерного» черчения деталей. 

Имеется возможность экспорта в популярный формат stl для передачи сразу на печать в 3D-принтер, а также в целый ряд других форматов (в том числе для фрезерных ЧПУ и т.п.). В сети можно найти большое количество дополнений-расширений, позволяющих автоматизировать самые разные операции, например, при разработке шестеренок.
На странице ОЭР в нашей школе представлены ссылки на учебные материалы, позволяющие за 3-4 урока освоить основные приемы работы с FreeCad. Короткая ссылка - goo.gl/V3pt4p
Достоинства: полноценный бесплатный CAD, с неплохим дружественным интерфейсом.
Недостатки: нестабильная работа (проект развивается), малое количество учебных материалов по продукту на русском языке. 

По сути, для задач робототехники и конструирования данного ПО вполне достаточно, но, разумеется, говоря о свободном ПО для моделирования, нельзя не упомянуть Blender.

• Blender
Страница разработчиков - https://www.blender.org/ 
ОС: Windows, Mac, Linux
Очень красивый продукт для 3D дизайна и моделирования. Можно рисовать героев компьютерных игр, создавать интерьеры, а можно и рисовать детали для роботов. Для данной программы создано много учебников, том числе и на русском языке, в сети множество видео по приемам работы. Так же умеет экспортировать модели в stl формат, но… вероятность совершить ошибку и не получить нужный результат значительно выше, чем во FreeCad. Тут дело практики.

Итак, подводя итоги. Огромное количество компонентов Arduino просто просится в состав учебных проектов по робототехнике и конструированию. Использование СПО для программирования контроллеров в визуализированном, блочном виде снижает возрастную планку вхождения в мир свободной робототехники вплоть до начальной школы. При этом ряд продуктов обеспечивает возможность успешного перехода от блочного к кодовому программированию.
Многие современные 3D принтеры (например, работающие у нас MZ3D и PRIZM Mini российского производства) основаны на свободных программно-аппаратных платформах и их прекрасно дополняет СПО для 3D моделирования и подготовки к печати. Все это может стать отличной основой школьных курсов робототехники и конструирования. Надеемся, наш обзор поможет начинающим (в данной области) преподавателям сделать свой выбор.