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». Датчики, представленные в нем, мне не попадались.
Хочется показать пример программы на роботе, двигающемся по полосе. Робот очень прост, как в сборке, так и в приобретении, но обо всем по порядку. Начнем с его приобретения и сборки.
Вот сам набор деталей все было приобретено на сайте Амперка .
- AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
- AMP-B017 Troyka Shield 1 690 руб
- AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
- AMP-B018 Датчик линии цифровой 2 580 руб
- ROB0049 Двухколёсная платформа miniQ 1 1890 руб
- SEN0019 Инфракрасный датчик препятствий 1 390 руб
- FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
- 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, что позволит применять для работы с ними российское программное обеспечение.
ЛИТЕРАТУРА
- Создание 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).
- Применяемое в проекте оборудование. - 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 - Порт
SendSendVariable
ReceiveVariable
Переключатель
Моторы
ServoMotorStepMotor
Часы реального времени
Дисплеи
Дисплей на чипе НD44780Подсветка дисплея на чипе НD44780 I2C
Строки
Сложение строкДатчики
SD карта
Запись переменной на SD картуВыгрузка файла с SD карты
Конвертация типов
Преобразование строкПреобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595Операции с битами
ШифраторДешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатураСписок функциональных блоков существующих на сегодняшний день в языке LAD
Базовые блоки
КонтактКатушка
Защита от дребезга
Выделение переднего фронта
Специальные реле
Двустабильное релеРеле времени
Генератор
Реле сравнения
Алгебра
SINCOS
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
Коммуникации и связь в израиле Какую связь выбрать туристам
Одноклассники – социальная сеть: регистрация нового пользователя через логин и пароль: правила регистрации
Как бесплатно зарегистрироваться в социальной сеть одноклассники
Обновление ПО MegaFon Login SP-AI
Как увеличить свой доход на ютуб