понедельник, 18 февраля 2013 г.

Электронные выходные: Arduino + Scratch

Поголовно все призеры состязаний "Hello Robot!" на РОБОФЕСТ-2013 получали в качестве награды конструкторы на базе платформы Arduino от компании "Амперка". Призы были не совсем по возрасту - не вина создателей конструктора, а скорее организаторов, но в этой заметке речь не об этом.
Естественное желание после получения такого приза - посмотреть, что у него там внутри и, раз это конструктор, получить что-нибудь рабочее. Собрать простые устройства не сложно - примеры их можно легко найти, например, в первых разделах официального учебника на сайте arduino.cc, здесь или же в учебном пособии "Основы программирования микроконтроллеров", который является частью образовательного набора "Амперка". Все недостающие элементы электронных схем можно приобрести в специализированных магазинах, но можно пойти и по простому пути - купить все разом, в составе какого-нибудь расширенного набора.


Трудности могут начаться, особенно у школьников младшего возраста, на этапе программирования. Стандартная среда "Arduino IDE" предполагает определенные знания в языке С, что, согласитесь, для новичков довольно нетривиальная задача.


Поэтому следующее нормальное желание возникающее при знакомстве с миром Arduino - найти графическую среду программирования более или менее понятную, тем, кто только начинает знакомиться с миром алгоритмов. Одна из альтернатив - проект S4A (Scratch 4 Arduino) - программное обеспечение, базирующаяся на популярной образовательной среде Scratch и специально измененная для простоты работы с платами семейства Arduino.


У среды есть несколько нюансов, о которых лучше знать заранее:
  1. Нельзя создавать автономные устройства - они будут работать только при подсоединенном компьютере, и только если запущен соответствующий скрипт в S4A.
  2. По сути скрипт опрашивает цифровые и аналоговые входы платы в реальном времени и посылает соответствующие сигналы в порты выхода, поэтому на самой Arduino должно быть запущенно соответствующее программное обеспечение - прокси, которое бы позволяло выполнять эти задачи. Его можно скачать на сайте проекта в виде исходного кода (на сайте оно называется Firmware), после чего его нужно скомпилировать и загрузить на плату с помощью "Arduino IDE". Единожды загруженное, оно будет запускаться автоматически при каждом включении платы.
  3. S4A подразумевает, что только определенные порты будут выполнять определенные задачи. Нет механизма , что бы переназначить задачи для портов, и поэтому это назначение нужно учитывать заранее при сборке электронной схемы.
    А именно:
    • порты 10, 11, 13 - работают только на выход (запись) для цифрового сигнала
    • порты 2 и 3 - только на вход (чтение) для цифровых датчиков
    • аналоговые порты с 0 по 5 - для чтения аналогового сигнала через АЦП (аналогово-цифровой преобразователь)
    • порты 5, 6 и 9 - на запись аналогового сигнала через ШИМ (широтно-импульсную модуляцию)
    • порты 4, 7, 8 и 12 зарезервированы для управления моторами.
  4. Довольно низкая скорость работы с портам - 35-40 раз в секунду.
В остальном же, программирование Arduino не будет отличаться от обычной работы в среде Scratch.

Может возникнуть вопрос, а стоит ли на блоге о LEGO робототехнике так много писать об Arduino? Конечно, да! Существует несколько способов объединить эти два направления:
  1. Подключать NXT датчики и моторы к плате Arduino через мезонинные платы, например, таких производителей как Mindsensors и Bricktronics
  2. Подключать Arduino плату к NXT блоку по I2C шине (например, так), что позволит собирать свои собственные датчики на основе Arduino, которые будут и дешевле и интереснее, тех, что можно найти в продаже.
Ниже можно найти фотографии схем и соответствующие программы для S4A, которые получилось собрать и запрограммировать за всего лишь за два выходных - это говорит о том, на сколько просто работать с конструктором даже младшим школьникам.

Светофор

Многоцветная свеча

Изменяем яркость светодиода

Изменяем частоту щелчков

Счетчик цифр

4 комментария:

  1. Есть еще возможность работать с платой ARDUINO с помощью ROBOTC.
    Из плюсов - возможность отладки программы и ее пошагового исполнения, использование стандартных команд ROBOTC (опрос датчиков, управление моторами), наличие примеров.

    Из минусов - небольшие различия в командах между ROBOTC и Си (который используется в скетчах), что требует некоторой модификации программы.
    Невозможность работы с типами данными long и float на платах ARDUINO UNO

    ОтветитьУдалить
    Ответы
    1. Спасибо, Александр! Полезная информация! Идея статьи была как раз в том, что текстовые языки не очень-то годятся для младших школьников.
      К тому же RobotC - платный. Об этом все время забывают во время сравнения его с другими средами.

      Удалить
    2. Еще совсем недавно был бесплатный для ARDUINO, а теперь да, к сожалению платный

      Удалить
  2. Александр, наконец-то я собрался сказать вам спасибо за этот замечательный материал и интересный опыт со S4A! Еще есть интересный проект modk.it, который, к сожалению, все никак не выйдет из альфа-версии. Modk.it тоже использует графическую среду программирования, но при этом позволяет увидеть, как выглядит то, что вы создали, в виде кода на языке Си.

    А вот информация про возможности объединения Лего и Ардуино прямо-таки просится в отдельную статью. :)

    ОтветитьУдалить

Related Posts Plugin for WordPress, Blogger...