[Из песочницы] Программирование Arduino с помощью ArduBloсk на примере робота движущегося по полосе

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

Эту программу я ввел в образовательный процесс и восхищен результатом, у детей она пользуется особым спросом, особенно при написании простейших программ или для создания какого-то начального этапа сложных программ. 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. Вся работа с программой очень проста и разобраться в ней сможет любой школьник.

image

В результате работы на программе можно не только программировать 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. Установка программы для всех систем одинакова.

image

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

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

958ac417f2864ac68958a5c379f74930.png

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

0b2320dc89a84f2684d9ffbe70f75aac.png

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

75e9e936041a4435b334eb8b43fa1a3f.png

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

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

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

6e830193586c40ad85680a1de233869b.JPG

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 руб 2b64e50d68804db783beae97018c4dfd.JPG

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

c3e40c5b61024c1a835172e303d943f7.JPG

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

342985bc311842ae99a67d3e2361896a.JPG

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

ac57592dc66f4c6e9922b1f2e8f25b27.JPG

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

a68c9cd18b8846e98778b56d16339d78.JPG

4d947d39ea104a51b06ef49189676c93.JPG

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

01bec3b5810d4c4e96d5bb33437d1856.JPG

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

045b65881cde470ca5da0b87eb089a61.JPG

3d654d8454ed4d01871a9c55498821b0.JPG

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

b21530eabef74b21a6a48f9e15a914c2.JPG

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

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

5676d3d0281144d89954a9380f454eeb.JPG

387db54d2aff435cbea148843b9d4dbb.JPG

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

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

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

1f85e283d3e049b1a12f68f1220873d4.png

И программа конвертированная в 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. Так называемый «глюк» дает возможность задумываться и стараться запоминать команды для точной отладки программ.

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

[embedded content]

© Habrahabr.ru