Графическая среда программирования arduino. Программирование Arduino с помощью ArduBloсk на примере робота, движущегося по полосе

  • 10.10.2022

Ardublock


Графический Язык Программирования для Arduino

Руководство по использованию Ardublock Kit Ver 1.0

Что такое Ardublock

Ardublock это графический язык программирования для Arduino, предназначенный для непрограммистов и простой в использовании.

(напоминаем что программа в среде разработки Arduino IDE называется скетч)

Установка
Скачайте архив ardublock-all.jar
Откройте “Arduino IDE/Menu /Arduino/ Preferences”, там вы найдете строку “Sketchbook location”

3. Создайте папку “tools/ArduBlockTool/tool ” внутри папки “Arduino” в строке
“Sketch location” и скопируйте архив “ardublock-all.jar” в папку “tool”.

Если имя пользователя “abu,”

На Mac, /Users/abu/Documents/Arduino/tools/ArduBlockTool/tool/ardublock-all.jar

На Linux, /home/abu/sketchbook/tools/ArduBlockTool/tool/ardublock-all.jar

На Windows, C:\Users\abu\Documents\Arduino

4 Перезапустите Arduino IDE и у Вас должен появиться пункт “ArduBlock” в меню “Tool ”.

Обращайте внимание на написание названий папок прописными и строчными буквами.


Использование

Блоки ArduBlock разделены на несколько категорий.

Control
Блоки категории “Control” это управляющие блоки.

Цифры, константы и Переменные

Operators

Utilities

Эти блоки являются функциями, которые обычно используются в скетчах.

Bricks

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

Pin

Эти блоки действуют как виртуальные контакты на плате Arduino.

Как программировать

1. Компиляция должна завершиться успешно. Если порт, указанный в среде Arduino или сама плата не обнаружены, то появляется окно с сообщением об ошибке.

2. Графические блоки с разъемами одинаковой формы можно соединить друг с другом.

Соединение устанавливается просто, для этого нужно перетащить один блок к тому, с которым Вы хотите его соединить.

3. Как только будет нажата кнопка “upload”, ArduBlock автоматически сгенерирует код Arduino который потом будет загружен на плату Arduino (при этом в окне скетчей среды разработки Arduino появится текст программы, полученной в ходе компиляции).

Как запустить программу

Простой вывод

1 Пример 1 — Здравствуй Мир (Hello World!)

1.1 Аппаратное подключение

Arduino подключается к выводу 13.

1.2 Функционирование

Светодиод будет мигать 1 раз в секунду.

1.3 Скетч

1.4 Загрузить

Примечание
Вы можете загрузить файл abp напрямую - все описанные здесь примеры можно скачать вместе с файлом описания среды Ardublock (на английском языке) в виде файлов графических скетчей с расширением abp.

Файл abp можно загрузить нажатием на кнопку «load».


После чего нужно указать скачанный файл и нажать кнопку «open».

2 Пример 2 — Сигнал тревоги

2.1 Аппаратное подключение


Digital Blue LED Light Module подключается к выводу 12.

2.2 Функционирование

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

2.3 Скетч

2.4 Загрузить

Простой ввод

3 Включает светодиод при нажатии кнопки

3.1 Аппаратное подключение

Digital White LED Light Module подключается к выводу 13.

3.2 Функционирование

Если нажата кнопка, загорается светодиод.

3.3 Скетч


3.4 Загрузить

4 Азбука Морзе

4.1 Аппаратное подключение

Digital RED LED Light Module подключается к выводу 13.
Digital Buzzer Module подключается к выводу 12.
Digital Push Button подключается к выводу 8.

4.2 Функционирование

Когда нажата кнопка, красный светодиод загорается и слышен звук. Период звучания похож на азбуку Морзе.

4.3 Скетч

4.4 Загрузить

Аналоговый ввод и вывод

5 Датчик вращения

5.1 Аппаратные установки

Analog Rotation Sensor V1 подключается к выводу A0.

5.2 Функционирование

В этой программе можно узнать значение угла поворота.
Когда Вы загрузите программу, Вы сможете переключиться на arduino IDE, нажмите на иконку монитора. Окна последовательного монитора покажут Вам угол поворота в значениях от 0 до 1023.

5.3 Скетч

5.4 Загрузить

6 Погасающий свет

6.1 Аппаратные установки

Digital White LED Light Module подключается к выводу 11.

6.2 Функционирование

Эта программа покажет вам как свет загорается и медленно угасает.

6.3 Скетч

6.4 Загрузить

7 Измерение шума 1

7.1 Аппаратные установки

Digital White LED Light Module подключается к выводу11.

7.2 Функционирование

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

7.3 Скетч


7.4 Загрузить

8 Измерение шума 2

8.1 Аппаратные установки

Digital White LED Light Module подключается к выводу 11.
Analog Sound Sensor подключается к выводу A0.

8.2 Функционирование

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

8.3 Скетч


8.4 Загрузить

Здравствуйте! Я Аликин Александр Сергеевич, педагог дополнительного образования, веду кружки «Робототехника» и «Радиотехника» в ЦДЮТТ г. Лабинска. Хотел бы немного рассказать об упрощенном способе программирования Arduino с помощью программы «ArduBloсk».

Эту программу я ввел в образовательный процесс и восхищен результатом, у детей она пользуется особым спросом, особенно при написании простейших программ или для создания какого-то начального этапа сложных программ. ArduBloсk является графической средой программирования, т. е. все действия выполняются с нарисованными картинками с подписанными действиями на русском языке, что в разы упрощает изучение платформы Arduino. Дети уже со 2-го класса с легкостью осваивают работу с Arduino благодаря этой программе.

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

Даже всеми известные роботы LEGO, такие как NXT или EV3 нашим ученикам уже не так интересны с появлением в программировании Arduino программы ArduBloсk. Еще Arduino намного дешевле любых конструкторов LEGO и многие компоненты можно просто взять от старой бытовой электронной техники. Программа ArduBloсk поможет в работе не только начинающим, но и активным пользователям платформы Arduino.

Итак, что же такое ArduBloсk? Как я уже говорил, это графическая среда программирования. Практически полностью переведена на русский язык. Но в ArduBloсk изюминка не только это, но и то, что написанную нами программу ArduBloсk конвертирует в код Arduino IDE. Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин.

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

В результате работы на программе можно не только программировать Arduino, но и изучать непонятные нам команды в текстовом формате Arduino IDE, ну а если же «лень» писать стандартные команды - стоит быстрыми манипуляциями мышкой набросать простенькую программку в ArduBlok, а в Arduino IDE её отладить.

Чтобы установить ArduBlok, необходимо для начала загрузить и установить Arduino IDE с официального сайта Arduino и разобраться с настройками при работе с платой Arduino UNO. Как это сделать описано на том же сайте или же на Амперке , либо посмотреть на просторах YouTube. Ну, а когда со всем этим разобрались, необходимо скачать ArduBlok с официального сайта, вот . Последние версии скачивать не рекомендую, для начинающих они очень сложны, а вот версия от 2013-07-12 - самое то, этот файл там самый популярный.

Затем, скачанный файл переименовываем в ardublock-all и в папке «документы». Создаем следующие папки: Arduino > tools > ArduBlockTool > tool и в последнею кидаем скачанный и переименованный файл. ArduBlok работает на всех операционных системах, даже на Linux, проверял сам лично на XP, Win7, Win8, все примеры для Win7. Установка программы для всех систем одинакова.

Ну, а если проще, я приготовил на Mail-диске 7z архив , распаковав который найдете 2 папки. В одной уже рабочая программа Arduino IDE, а в другой папке содержимое необходимо отправить в папку документы.

Для того, чтобы работать в ArduBlok, необходимо запустить Arduino IDE. После чего заходим во вкладку Инструменты и там находим пункт ArduBlok, нажимаем на него - и вот она, цель наша.

Теперь давайте разберемся с интерфейсом программы. Как вы уже поняли, настроек в ней нет, а вот значков для программирования предостаточно и каждый из них несет за собой команду в текстовом формате Arduino IDE. В новых версиях значков еще больше, поэтому разобраться с ArduBlok последней версии сложно и некоторые из значков не переведены на русский.

В разделе «Управление» мы найдем разнообразные циклы.

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

В разделе «Числа/Константы» мы можем с вами выбрать цифровые значения или создать переменную, а вот то что ниже вряд ли будите использовать.

В разделе «Операторы» мы с вами найдем все необходимые операторы сравнения и вычисления.

В разделе «Утилиты» в основном используются значки со временем.

«TinkerKit Bloks»- это раздел для приобретенных датчиков комплекта TinkerKit. Такого комплекта у нас, конечно же, нет, но это не значит, что для других наборов значки не подойдут, даже наоборот - ребятам очень удобно использовать такие значки, как включения светодиода или кнопка. Эти знаки используются практически во всех программах. Но у них есть особенность - при их выборе стоят неверные значки обозначающие порты, поэтому их необходимо удалить и подставить значок из раздела «числа/константы» самый верхний в списке.

«DF Robot» - этот раздел используется при наличии указанных в нем датчиков, они иногда встречаются. И наш сегодняшний пример - не исключение, мы имеем «Регулируемый ИК выключатель» и «Датчик линии». «Датчик линии» отличается от того, что на картинке, так как он от фирмы Амперка. Действия их идентичны, но датчик от Амперки намного лучше, так как в нем имеется регулятор чувствительности.

«Seeedstudio Grove» - датчики этого раздела мной ни разу не использовались, хотя тут только джойстики. В новых версиях этот раздел расширен.

И последний раздел это «Linker Kit». Датчики, представленные в нем, мне не попадались.

Хочется показать пример программы на роботе, двигающемся по полосе. Робот очень прост, как в сборке, так и в приобретении, но обо всем по порядку. Начнем с его приобретения и сборки.

Вот сам набор деталей все было приобретено на сайте Амперка .

  1. AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
  2. AMP-B017 Troyka Shield 1 690 руб
  3. AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
  4. AMP-B018 Датчик линии цифровой 2 580 руб
  5. ROB0049 Двухколёсная платформа miniQ 1 1890 руб
  6. SEN0019 Инфракрасный датчик препятствий 1 390 руб
  7. FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
  8. A000066 Arduino Uno 1 1150 руб

Для начала соберем колесную платформу и припаяем к двигателям провода.

Затем установим стойки, для крепления платы Arduino UNO, которые были взяты от старой материнской платы ну или иные подобные крепления.

Затем крепим на эти стойки плату Arduino UNO, но один болтик прикрутить не получиться - разъемы мешают. Можно, конечно, их выпаять, но это уже на ваше усмотрение.

Следующим крепим инфракрасный датчик препятствий на его специальное крепление. Обратите внимание, что регулятор чувствительности находиться сверху, это для удобства регулировки.

Теперь устанавливаем цифровые датчики линии, тут придется поискать пару болтиков и 4 гайки к ним Две гайки устанавливаем между самой платформой и датчиком линии, а остальными фиксируем датчики.

Следующим устанавливаем Motor Shield или по другому можно назвать драйвер двигателей. В нашем случае обратите внимание на джампер. Мы не будем использовать отдельное питание для двигателей, поэтому он установлен в этом положение. Нижняя часть заклеивается изолентой, это чтобы не было случайных замыканий от USB разъема Arduino UNO, это на всякий случай.

Сверху Motor Shield устанавливаем Troyka Shield. Он необходим для удобства соединения датчиков. Все используемые нами сенсоры цифровые, поэтому датчики линии подключены к 8 и 9 порту, как их еще называют пины, а инфракрасный датчик препятствий подключен к 12 порту. Обязательно обратите внимание, что нельзя использовать порты 4, 5, 6, 7 так как оны используются Motor Shield для управлением двигателями. Я эти порты даже специально закрасил красным маркером, чтобы ученики разобрались.

Если вы уже обратили внимание, мной была добавлена черная втулка, это на всякий случай, чтобы установленный нами батарейный отсек не вылетел. И наконец, всю конструкцию мы фиксируем обычной резинкой.

Подключения батарейного отсека может быть 2-х видов. Первый подключение проводов к Troyka Shield. Также возможно подпаять штекер питания и подключать уже к самой плате Arduino UNO.

Вот наш робот готов. Перед тем как начать программировать, надо будет изучить, как все работает, а именно:
- Моторы:
Порт 4 и 5 используются для управления одним мотором, а 6 и 7 другим;
Скоростью вращения двигателей мы регулируя ШИМом на портах 5 и 6;
Вперед или назад, подавая сигналы на порты 4 и 7.
- Датчики:
У нас все цифровые, поэтому дают логические сигналы в виде 1 либо 0;
А что бы их отрегулировать, в них предусмотрены специальные регуляторы а при помощи подходящей отвертки их можно откалибровать.

Подробности можно узнать на Амперке . Почему тут? Потому что там очень много информации по работе с Arduino.

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

И программа конвертированная в Arduino IDE:

Void setup() { pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { if (digitalRead(12)) { if (digitalRead(8)) { if (digitalRead(9)) { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 50); digitalWrite(7 , LOW); } } else { if (digitalRead(9)) { digitalWrite(4 , LOW); analogWrite(5, 50); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } } } else { digitalWrite(4 , HIGH); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7 , HIGH); } }

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

Желаю успехов.

Возможно, правы разработчики операционных систем, считающие пользователя злейшим врагом и самым опасным вирусом. А, может быть, не правы, создают они свои творения не для себя, а для пользователей. Словом, не знаю. Но, что точно знаю, я хочу видеть работающую программу S4A не только в Windows, но в Linux, и не только в дистрибутиве Debian.

Начинаю я этот процесс с загрузки версии для Debian на сайте разработчиков: http://seaside.citilab.eu/scratch/arduino . Все загружаемые файлы располагаются по завершении загрузки в папке «Загрузка» или «Downloads». Архивированные файлы, предназначенные для Linux, распаковываются менеджером архивов. Скачанный мной в openSUSE файл имеет расширение deb, но, используя Ark, тот самый менеджер архивов, его можно распаковать. В openSUSE с графическим менеджером KDE 4 для этого достаточно щёлкнуть правой клавишей мышки по файлу и выбрать пункт выпадающего меню «Распаковать во вложенную папку». В итоге появляется папка с именем S4A.

Заглянем в неё.

Рис. 5.1. Содержимое скачанной папки S4A

Два файла с расширением tar.gz подлежат дальнейшей разархивации.

Рис. 5.2. Выпадающее меню работы с архивированными файлами

В результате рядом с архивами появляется ряд файлов и папка, озаглавленная «usr». Из опыта работы с Linux я знаю, что в этой папке могут находиться файлы, которые при установке размещаются по адресу /usr корневой файловой системы. Если открыть эту папку, то,

Глава 5. Arduino, визуальное программирование

действительно, в ней можно увидеть еще три папки.

Эти три папки соответствуют разделам, которые можно увидеть, если открыть в файловом менеджере раздел «Корневая папка» в директории /usr.

Рис. 5.4. Разделы директории usr файловой системы

Содержимое, скачанное ранее, папок bin, lib и share, как я полагаю, следует разместить в папки, отмеченные выше. Но, конечно, простому пользователю менять что-то в файловой системе никто не позволит. Поэтому в разделе основного меню «Система» находим пункт «Файловый менеджер», открывающий новое подменю, где есть «Менеджер файлов (с правами администратора)». Этот менеджер позволит перенести все нужные файлы в операционную систему. Ничего не выдумывая, открывая параллельно папки в двух проводниках, просто последовательно открывать нужные (они все названы) папки до появления файлов, а файлы копировать.

Глава 5. Arduino, визуальное программирование

Рис. 5.5. Перенос файлов программы в openSUSE

Особенно внимательно следует отнестись к папке share, поскольку она имеет много вложенных папок, и соответствующие папки следует отыскивать в файловой системе.

Завершив копирование, можно попытаться отыскать программу в основном меню. И, впрямь, на закладке «Приложения» в разделе «Разработка» (у меня ещё один раздел «Другие программы») появляется программа S4A. И её даже можно запустить. Но она после нескольких движений мышкой начинает виснуть...

В терминале, а в openSUSE есть терминал с правами суперпользователя; от имени суперпользователя, предварительно подключив модуль Arduino, запускаем программу. И она работает. Теперь её можно запустить обычным образом.

В других дистрибутивах Linux операции схоже с теми, что описаны выше, отличия не столь значительны. Хотя в Fedora 14 я просто сменил пользователя, войдя в систему под root, что делать, конечно, не следует, но так было проще всё разместить в нужных местах.

Установив программу в Linux, посмотрим, а для чего мы её устанавливали?

Во-первых, программа работает с модулем, показывая, что происходит на аналоговых и цифровых входах модуля. Что уже неплохо. Но не это главное. Главное, во-вторых - программа позволяет собирать программу, а не кодировать на языке Arduino.

Когда программа начинает работать, в левом окне есть ряд элементов, которые можно, подцепив мышкой, перенести в среднее окно - рабочее «сборочное» поле. Перенесём так элемент, который называется Start.

Глава 5. Arduino, визуальное программирование

Рис. 5.6. Перенос нужных программных элементов

Теперь, нажав клавишу с надписью «контроль» в окошке чуть выше, получим ряд новых элементов.

Рис. 5.7. Список элементов в группе «Контроль»

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

Глава 5. Arduino, визуальное программирование

Рис. 5.8. Добавление элементов в программу

Вернёмся к набору элементов, с которого начинали, нажав на клавишу «движение», и выберем элемент «digital 13 on», который перенесём и положим внутрь предыдущего.

Рис. 5.9. Команда включения цифрового вывода

Из набора элементов «контроль» возьмём элемент «ждать 1 секунду», который вставим внутрь элемента «всегда» под элемент «digital 13 on». Чтобы ускорить этот процесс, вставим элемент ожидания ещё раз, вернёмся к элементам движения и добавим элемент «digital 13 off» между двумя элементами ожидания.

Рис. 5.10. Программа Blink в графическом виде

Вам эта конструкция ничего не напоминает? Когда мы начинали описывать первую программу обычным языком, мы так и записывали её.

Дважды щёлкните по элементу «start» левой клавишей мышки и посмотрите на модуль Arduino

Молчавший до сих пор светодиод на выводе 13 исправно мигает раз в секунду.

Мы собрали программу, запустили её и заставили работать модуль согласно этой программе. И мы не написали ни строчки кода. Именно по этой причине я предпочитаю различать программирование и написание программного кода.

Глава 5. Arduino, визуальное программирование

Но, может быть, это работает ранее загруженная программа, а не нами собранная?

Остановим работу программы, вновь дважды щёлкнув мышкой по элементу «start». Щёлкнем левой клавишей по единичке элемента «ждать 1 секунду».

Рис. 5.11. Изменение параметров программных элементов

Впечатаем цифру 5 (как на нижнем элементе). Запустим программу... и убедимся, ничего мы не перепутали, светодиод мигает с интервалом раз в 5 секунд!

Мы не проверяли работу цифрового входа в «живом» виде. Не пора ли это сделать?

Соберём программу в S4A. Первые «кирпичики» те же, что и в предыдущей программе. Далее... нам понадобится выполнить условие: если кнопка нажата, включить светодиод, иначе выключить. Такой элемент есть - это «если... или...». В его верхней части есть «гнездо», куда можно вставить нужное нам условие «цифровой вход...».

Рис. 5.12. Добавление условия в элемент if ветвления программы

Осталось добавить действия, чтобы получить нужный вид программы.

Рис. 5.13. Окончательное формирование программы

Если сравнивать её с программой, написанной на языке Arduino, то можно сказать, что отличия только те, что были внесены сознательно: когда кнопка отпущена, светодиод не горит, когда нажата, светодиод загорается.

Глава 5. Arduino, визуальное программирование

Пора перейти к проверке. Но прежде небольшое предупреждение.

На схеме, приведённой в примерах, кнопка соединяется с выводом +5 В. Я бы советовал включить её несколько иначе.

Особенно, если вы проверяете все «на весу». При случайной ошибке может получиться так, как было у меня, из модуля пойдёт дымок, который очень подпортит настроение. А самый правильный путь - использовать макетную плату с переходными разъёмами (для Arduino Nano, думаю, найдётся подходящая панелька под микросхему).

Проверив правильность соединений на макетной плате, подключив к ней модуль Arduino, можно включить его в разъём USB компьютера и запустить программу S4A. Обратите внимание - когда вы между цифровым входом и землёй включили резистор 10 кОм, показания (в правом окошке программы) перестали случайным образом меняться между «false, ложно» и «true, истинно». Запускаем нашу программу двойным щелчком по элементу «start», добавим, зайдя в раздел основного меню «Редактировать», пошаговое выполнение.

Рис. 5.14. Добавление пошагового выполнения в отладочную процедуру

Можно ещё в пункте «установить единичный шаг...» выбрать скорость выполнения. И теперь, пока кнопка не нажата, мы видим, что светодиод не горит, а программа выполняется только в той части, где это задано.

Глава 5. Arduino, визуальное программирование

Рис. 5.15. Выполнение программы в режиме отладки

В правом верхнем окошке можно видеть состояние входа Digital1 - false. Вход на земле, на входе низкий логический уровень, а это, с точки зрения программы, состояние «ложно». Нажмём кнопку.

Рис. 5.16. Работа программы при нажатой кнопке

Изменилось состояние входа «true», горит светодиод, и программа входит в ту часть, где условие выполнено.

Если обратить внимание на оранжевые элементы в разделе «контроль», то видно, многие из

Глава 5. Arduino, визуальное программирование

них имеют «гнёзда» для вставки условий.

Условия могут быть разными. Выше мы использовали в качестве условия изменение состояния цифрового входа. Но это могут быть и другие условия.

Рис. 5.17. Гнёзда для добавления условий в элементах контроля

И ещё - обратите внимание на чёрные стрелочки «вниз» рядом со многими элементами.

Нажимаем эту стрелочку с помощью мышки...

Рис. 5.18. Стрелка, открывающая список возможных сенсоров

И получаем возможность менять, например, как в этом случае используемый вход. В других случаях меняется, скажем, выходной вывод или аналоговый вход. У нас большой выбор возможностей для экспериментов с модулем Arduino. Впрочем, отчего с модулем? Мы вправе использовать несколько модулей. Достаточно, не скажу, что это единственный способ, перейти на закладку «костюмы», щёлкнуть правой клавишей мышки по существующему «костюму» и выбрать раздел «переключиться к новому объекту».

Появится ещё один модуль Arduino. Если у вас он есть, если вы его подключили к USB порту, то можно, думаю, с ним тоже работать.

Глава 5. Arduino, визуальное программирование

Рис. 5.19. Добавление второго модуля Arduino

И последнее замечание. Всё, что мы делаем в программе S4A, мы делаем, используя язык программирования Scratch. Как вам это?

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

Официальную среду разработки про­грамм для модулей Arduino предла­гают пользователям под названием Arduino IDE (рис. 1 ).

Программирова­ние в ней происходит на языке ProcesSing/Wiring - диалекте языка С (скорее, C++). Среда представляет собой, по сути, обычный текстовый редактор с возможностью трансляции текста про­граммы в машинные коды и их загрузки в микроконтроллер модуля. Альтерна­тива Arduino IDE - предназначенная для микроконтроллеров семейства AVR ин­тегрированная среда AVR Studio (рис. 2 ). Она служит для разработки и отладки программ на языке ассемблера, но к ней можно подключить и компилятор языка С. В 2006 г. она сменила название на Atmel Studio.

С появлением визуальных языков программирования на них охотно пере­ключились не только радиолюбители, но и многие профессионалы. Сущест­вующие средства разработки этого типа условно можно разделить на три вида:

FBD (Function Block Diagram) - гра­фический язык программирования стандарта МЭК 61131-3. Программа представляет собой список цепей, за­полняемый последовательно сверху вниз. Цепи образуют из библиотечных блоков. Блок (элемент) - это подпро­грамма, функция или функциональный блок (И, ИЛИ, НЕ, триггер, таймер, счёт­чик, блок обработки аналогового сигна­ла, математическая операция и т. д).

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

LAD (Ladder Diagram) - язык релей­ной (лестничной) логики, известный также под названиями LD и РКС.

Синтаксис этого языка удобен для опи­сания логических узлов, выполненных на релейной технике. Язык ориентиро­ван на специалистов по автоматике, ра­ботающих на промышленных предприя­тиях. Он обеспечивает наглядное ото­бражение логики работы контроллера, облегчающее не только собственно про­граммирование и ввод системы в эксплуатацию, но и быстрый поиск неполадок в подключаемом к конт­роллеру оборудовании. Программа на языке ре­лейной логики имеет на­глядный и интуитивно по­нятный инженеру-электрику вид, представляя логические операции в виде электрических цепей с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в такой цепи соответствует результату логи­ческой операции (ток течёт - истина, ток не течёт - ложь). Пример схемы на языке LAD представлен на рис. 8 .

Основные элементы языка LAD - контакты, которые можно уподобить контактным парам реле или кнопок. Контактная пара отождествляется с логиче­ской переменной, а состояние этой пары - со значением пе­ременной. Различают нормаль­но замкнутые и нормально ра­зомкнутые контактные элемен­ты. Их можно сопоставить с нормально замкнутыми и нор­мально разомкнутыми кнопка­ми в электрических цепях.

Такой подход оказался очень удобным для лёгко­го вхождения инженеров-электриков в разработку систем автомати­ки. Разрабатывая проекты установок, они могут легко привязать их функ­ционирование к ал­горитмам работы контроллера. При обслуживании уста­новок на объекте очень важно, чтобы обслуживающий персонал мог легко проверить работу системы, найти и устранить проблему, не вызывая при этом по каждому пустяку программиста из «центра». Сегодня с помощью подобных средств разработки создают почти все системы промышленной автоматики.

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

В настоящее время существует бога­тый выбор как различных вариантов микроконтроллерных модулей Arduino (рис. 9 ), так и дополняющих их моду­лей, например, датчиков и исполнитель­ных устройств. Кроме того, в Интернете (например, на сайте http://robocraft.ru/ ) можно найти огромное число готовых проектов на основе этих модулей и адаптировать их под свои нужды.

В настоящее время система FLProg работает со следующими версиями мо­дулей: Arduino Diecimila, Arduino Duemila-nove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino Pro Mini, Arduino Pro (ATmega168), Arduino Pro (ATmega328), Arduino UNO. Недавно в списке появилась и плата Intel Galileo gen2. В дальнейшем предполагается пополнение и этого списка, возможно, и добавление модулей, основанных на микроконтроллерах STM.

Для создания FLProg был использован опыт программистов фирм Siemens, ABB, Schneider Electric и наработки в их средах программирования. При этом был не­сколько расширен классический функ­ционал языков для работы с промыш­ленными контроллерами путём добавле­ния функциональных блоков, отвечающих за работу с внешними устройствами. Программа работает на компьютерах под управлением ОС Windows и Linux.

Пользовательский интерфейс FLProg устроен так, что проект представляет собой набор виртуальных плат, на каж­дой из которых собран законченный модуль разрабатываемой системы. Каждая плата имеет наименование и снабжена комментариями. Для эконо­мии места в рабочей зоне её можно свернуть, если работа над ней законче­на, а при необходимости вновь развер­нуть и внести коррективы.

Красный индикатор у наименования платы на рис. 10 указывает на то, что в её схеме обнаружены ошибки. После ис­правления ошибок индикатор станет зелёным. Стрелка рядом с комментарием предназначена для свёртки изображения.

Правое окно рабочей области (рис. 11 ) отведено для библиотеки элементов. Добавить компонент в проект можно простым перетаскиванием, а двойной щелчок покажет информацию об эле­менте программы. Перечень блоков, предусмотренных в программе, их опи­сание и помощь по работе с програм­мой можно найти на интернет-странице . На интернет-странице имеется перечень периферийного оборудова­ния, поддерживаемого программой. Эти списки постоянно пополняются.

По мере развития программы плани­руется организация обмена информа­цией по Bluetooth, радиоканалу и интерфейсу RS-485, работа с трехосе­вым гироскопом, люксметром и други­ми датчиками. В дальнейших планах есть разработка SCADA-системы для доступа к системам, разработанным с помощью среды FLProg, с персональ­ного компьютера или мобильного уст­ройства.

Разработанную «принципиальную схему» FLProg переводит на язык Processing/Wiring. По завершении компи­ляции автоматически открывается про­грамма Arduino IDE с загруженным скет­чем проекта. В Arduino IDE необходимо указать COM-порт компьютера, к кото­рому подключён микроконтроллерный модуль, выбрать тип модуля и загрузить программу в его микроконтроллер.

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

ЛИТЕРАТУРА

  1. Создание Help-а для программы FLProg. - URL http://flprogwiki.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5Help-%DO%BO%D0%B4%D0%BB%D1%8F_%D0%8F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8BFLProg (23.06 15).
  2. Применяемое в проекте оборудование. - URL

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

Начнем по порядку.
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров.

Описание языка FBD

FBD (Function Block Diagram) - графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) - это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.


Описание языка LAD

Ladder Diagram (LD, LAD, РКС) - язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина - если ток течет; ложь - если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары - со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.


Я немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются обертками, над библиотеками, предназначенными для работы с ними.
Проект в FLProg представляет собой набор плат, на каждой, из которой собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Так же каждую плату можно свернуть (для экономии места на рабочей зоне, когда работа над ней закончена), и развернуть. Красный индикатор в наименовании платы указывает на то, что в схеме платы есть ошибки.

Вид окна программы в режиме языка FBD

Вид окна программы в режиме языка LAD

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

Так же для каждого функционального блока есть развернутое описание, которое доступно в любой момент и помогает разобраться в его работе и настройках.

При работе с программой пользователю нет необходимости заниматься написанием кода, контролем за использованием входов – выходов, проверкой уникальности имен и согласованностью типов данных. За всем этим следит программа. Так же она проверяет корректность проекта целиком и указывает на наличие ошибок.
Для работы с внешними устройствами создано несколько вспомогательных инструментов. Это инструмент инициализации и настройки часов реального времени, инструменты для чтения адресов устройств на шинах OneWire и I2C а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте. Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.

Список функциональных блоков существующих на сегодняшний день в языке FBD

Базовые элементы



Специальные блоки

Тригеры



Таймеры


Счетчики


Математика



Алгебра






Сравнение

Com - Порт

Send
SendVariable
ReceiveVariable

Переключатель


Моторы

ServoMotor
StepMotor

Часы реального времени


Дисплеи

Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C

Строки

Сложение строк

Датчики



SD карта

Запись переменной на SD карту
Выгрузка файла с SD карты

Конвертация типов

Преобразование строк
Преобразование Float в Integer

Микросхемы расширений

Расширитель выводов 74HC595

Операции с битами

Шифратор
Дешифратор
Чтение бита
Запись бита

Разное

Матричная клавиатура

Список функциональных блоков существующих на сегодняшний день в языке LAD

Базовые блоки

Контакт
Катушка
Защита от дребезга
Выделение переднего фронта

Специальные реле

Двустабильное реле
Реле времени
Генератор
Реле сравнения

Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM

Аналоговые блоки

Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соеденителя
Выход аналогового соединителя
Скоростной счетчик

ComPort

Передача в ComPort
Передача переменной через ComPort
Прием переменной через ComPort

Моторы

Сервомотор
Шаговый двигатель

Часы реального времени

Получить данные
Будильник
Установка времени

Дисплеи

Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора

Строки

Сложение строк

Датчики

Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085