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

Через месяц после заказа ко мне пришла посылка с Arduino, точнее, ее вариацией — Seeeduino. Вот, что в ней было:


Слева направо / сверху вниз:

Черно-белый графический жк-дисплей, 128*64 (ST7565/67 ctrl)
Serial port bluetooth module (slave)
Пара джойстиков — маленький 4-позиционный и большой аналоговый Playstation2 analog joystick
Seeeduino Mega — собственно сам мини-компьютер, а справа от него — набор прилагавшихся «гребенок»
Пара каких-то зеленых плат, макетная плата, набор из 20 мини-кнопочек
Набор деталей «Seeeduino Catalyst Pack» (что входит в этот набор, можно посмотреть здесь)
Набор проводков для макетной платы
Пакет с деталями для подключения батарейки «Крона» или блока питания
USB/miniUSB кабель

Зачем мне все это богатство? Носимый компьютер требует нестандартных устройств — таких, как, к примеру, аккордная клавиатура. Можно, конечно, заказать из Штатов трехсотдолларовый Twiddler2 (или уже нельзя — кажется, их прекратили выпускать). А можно — с помощью Arduino попробовать самостоятельно сделать аналогичное устройство, заодно попытавшись найти боолее удобное решение. Кроме аккордной клавиатуры мне хотелось бы получить беспроводной текстовый дисплей (чтобы наголовный дисплей работал через bluetooth, а не по проводам), а также беспроводные биометрические датчики. Тем более, что в сети есть инструкции по сборке простейших датчиков пульса на базе Arduino. В сети вообще тысячи Arduino-проектов самого разного уровня — этот конструктор собрал вокруг себя большую аудиторию энтузиастов.

Arduino — открытая платформа. Каждый при желании и соответствующей квалификации может заняться выпуском подобных «кубиков» и продавать их. Но для того, чтобы продавать их «под лейблом» Arduino, нужно пройти сертификацию. Впрочем, никто не мешает внести в конструкцию незначительные изменения и продавать свои устройства под другим названием. В результате появились клоны Arduino разной степени совместимости — Seeeduino, Freeduino и другие. Все они собраны на базе микроконтроллеров семейства ATmega. Разные модели этих микроконтроллеров отличаются друг от друга быстродействием, объемом ОЗУ/ППЗУ и, естественно, ценой. Я купила Seeeduino Mega на базе одного из самых мощных процессоров, используемых в Arduino — ATmega1280.

Чтобы начать работать с Arduino, нужно установить на компьютер среду для разработки — Arduino IDE. Так как она написана на Java, то работает и под линуксом, и под виндами, и под Mac OS. Загрузить эту программу и ознакомиться с инструкцией по установке можно на официальном сайте Ardiono: www.arduino.cc/playground/Main/DevelopmentTools

Установка под линуксом

У меня на нетбуке — Eeebuntu (Jaunty Jackalope). Java уже установлена. Почитав довольно невнятные инструкции по установке софта, я на всякий случай проделала следующее:

1) В /etc/apt/sources.list дописала строку
deb archive.ubuntu.com/ubuntu jaunty main restricted universe multiverse

2) Выполнила:
$ sudo apt-get update
$ sudo apt-get install gcc-avr
$ sudo apt-get install avr-libc

3) Скачала, распаковала и запустила arduino-0018.tgz

Установка под MS Windows XP
(http://arduino.cc/en/Guide/Windows)

Скачиваем и распаковываем архив с софтом. В отличие от неполных 4 мегабайт линуксного дистрибутива архив для виндов весит 87 Мб. Подключаем к USB-порту компьютера Arduino. Появившемуся визарду установки нового оборудования (или как он у них называется? помощник?) говорим, что искать дравера в сети не стоит, а в качестве каталога поиска драйверов указываем "папка, куда распаковался ардуиний софт\drivers\FTDI USB Drivers\". После первого визарда придет второй — настроить COM-порт. Со вторым визардом поступаем так же, как с первым — после чего имеем компьютер, способный общаться с Arduino-платой.

Написание скетчей



Программы для Arduino называются скетчами. Для написания скетчей есть разные языки. С помощью Arduino IDE можно писать скетчи на C-подобном языке Processing. Если изучение C многие начинают с классического «Hello World!», то для Arduino таким «хелло» стал скрипт, мигающий светодиодом. Запустим Arduino IDE и в появившемся окне напечатаем:
// Определим, к какой ножке микросхемы будет подключен  светодиод
#define LED 13

void setup() {
  // Укажем, что данная ножка будет использоваться для вывода
  pinMode(LED, OUTPUT);
}

void loop() {
  // Зажжем светодиод, подав напряжение на ножку
  digitalWrite(LED, HIGH);
  // Подождем секунду
  delay(1000);
  // Погасим светодиод, убрав напряжение с ножки
  digitalWrite(LED, LOW);
  // Подождем секунду
  delay(1000);
}

В данном скетче — две основных функции. setup() выполняется один раз при старте приложения, здесь как правило, устанавливаются режимы, в которых будут работать ножки микроконтроллера, инициализируются данные. loop() выполняется бесконечно (пока не будет выключено питание). Кстати, при выключении питания записанный в Arduino скетч не стирается. Так что при включении питания микроконтроллер начнет выполнять скетч — сначала исполнив setup(), а затем циклически повторяя loop().

Откомпилируем написанный скетч, нажав клавишу Verify . Если скрипт откомпилировался без ошибок (сообщения компилятора выводятся внизу, в черном окошке), загрузим его на устройство. Сначала соберем схему, для которой написан скетч. В нашем случае — полключим к Arduino светодиод. Катод светодиода (короткая ножка) вставим в гнездо Gnd, анод (длинная ножка) — в гнездо 13.



Теперь подсоединим Arduino к USB-разъему компьютера и нажмем клавишу Upload . Плата помигает служебными лампочками и начнет выполнение скетча.



Для освоения Arduino стоит прочесть книгу Massimo Banzi «Getting started with Arduino». Кроме бумажного экземпляра, выпущенного издательством O'Reilly существует абсолютно легальная электронная версия книги, которую несложно нагуглить.