Участник:Коллектив Авторов/Arduino

Материал из Lurkmore

Перейти к: навигация, поиск
Recycle.pngЭта статья находится на доработке.
Эта статья всё ещё не взлетела и не соответствует нынешним реалиям /lm/. Но добрый Коллектив Авторов приютил её в своём личном пространстве, и теперь она может тихо гнить неспешно дописываться здесь вечно.Дата последней правки страницы: 26.03.2015

Ардуино (англ. Arduino, рус. пердуина) — электронный конструктор на базе микроконтроллера AVR и простой среды программирования. Ввиду своей простоты и доступности весьма популярен как среди небыдло-школоты, так и среди взрослых дядек, всерьез занимающихся разработкой электронных устройств.

Содержание

Область применения

Сабж изначально заточен под создание интерактивных устройств (получили сигнал с датчика — отреагировали включением или отключением исполнительного устройства). Из этого непосредственно следуют его основные применения:

  1. Любительские поделки. Типичный пример — домашняя автоматизация: от напоминания злобным писком, что посетитель сортира забыл за собой смыть и выключить свет, и до… на что хватит фантазии и комплектующих.
  2. Обучение основам цифровой электроники и программирования. Мигающий светодиод™ — это здесь.
  3. Проектирование и макетирование цифровой электроники. Особенно ценится студентами соответствующих специальностей, так как позволяет за один вечер сделать курсовую работу, собрав и запрограммировав прототип на базе сабжа.

Матчасть

Основная плата

Arduino Uno — сабж образца 2014 года.
Размер платы 68*53 мм.

Плата, что неудивительно для конструктора, ничего особенного собой не представляет: собственно контроллер (на фото — ATmega 328P), минимальный набор всякой мелочи и — самое главное! — разъемы под периферию. На самом деле, у Arduino Uno на плате целых два контроллера: квадратная фиговина с 32 ногами являет собой точно такой же контроллер AVR ATmega модели 16U2, который не сильно отличается от 328P (16 кб памяти вместо 32 кб, зато с аппаратной поддержкой УПШ) и обеспечивает связь «главного» контроллера с компутером, выполняя функции программатора и аппаратного отладчика. Инженер-ага намекает, что вспомогательный контроллер тоже может быть доступен разработчику, хотя это и требует сильного колдунства (спойлер: два шестиконтактных разъема внутрисхемного программирования (ICSP) на плате служат для подключения внешнего программатора к соответствующему контроллеру).

Периферия

В результате надмозгового перевода с итальянского на аглицкий внешние модули сабжа получили название «щит» (англ. shield; по-русски их, разумеется, никто щитами не называет). Тысячи их! Строгой классификации нет и быть не может, но большинство из них принадлежит одной из следующих категорий:

  1. датчики (температуры, влажности, освещенности, магнитного поля, черта лысого итд.)
  2. исполнительные устройства (от светодиодных индикаторов до мощных симисторов с опторазвязкой, позволяющих коммутировать многокиловаттные нагрузки — например, электрочайник)
  3. накопители (мелкосхемы памяти, SD-флешки итд.)
  4. коммуникационные устройства (например, Bluetooth и WiFi)
  5. свистелки
  6. дуделки
  7. перделки
  8. прочая хуйня

Программирование

Среда разработки

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

Язык

Си, синьоры! Точнее, специальное его подмножество, специально разработанное для сабжа и поддерживаемое средой разработки. Упрощенно говоря, можно считать, что где-то в недрах описана куча хитрых макросов (посредством #define) и определена функция main() примерно такого содержания:

void main(void)
{
 setup();
 
 for(;;)
  loop();
}

К счастью, никто не мешает использовать для разработки канонiчный C/C++, а результат работы компилятора avr-gcc заливать в контроллер посредством дешевого программатора — именно такое использование сабжа считается единственно кошерным.

Пример программы

// мигающий светодиод™
#define LED_PIN 13 // см. фото: к этой ноге прямо на плате припаян светодиод
 
void setup()
{
  pinMode (LED_PIN, OUTPUT); // будем использовать для вывода
}
 
void loop()
{
  digitalWrite (LED_PIN, HIGH); // включаем светодиод
  delay (1000); // ждем секунду (1000 миллисекунд)
  digitalWrite (LED_PIN, LOW); // выключаем светодиод
  delay (1000); // опять ждем секунду
}

Где взять?

Если хочется дешево и сердито — Китайпосылторг в помощь: для этого в простейшем случае достаточно зайти на Aliexpress и сказать «хочу сабж», после чего выбрать продавца, у которого рейтинг повыше, а цены пониже. Если сердитость важнее цены — есть Digikey, Mouser, Sparkfun и прочие наркодилеры.

В чем наебалово?

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

Инженер-ага рекомендует более бюджетный и интересный, хотя и более сложный вариант: купить макетную плату («solderless prototype board»; прямо так и искать), в которую можно воткнуть дополнительные детали, а потом все это соединить между собой и подключить к сабжу проводами («jumper wire»). Ну а после того, как все номиналы деталей подобраны и большинство багов отловлено, уже можно собирать окончательный вариант устройства.

Альтернативы

Идея с использованием макетной платы имеет вполне очевидное дальнейшее развитие. Зададим себе вопрос «чем контроллер ATmega328P-PU принципиально отличается от других комплектующих» и ответим на него: «ничем». А это означает, что его можно точно также воткнуть в макетную плату, подключить шестью проводами программатор («AVR USB ISP»), рядом воткнуть кучку разноцветных светодиодов и хоть обмигаться.

А еще есть STM32F103. Но это уже ARM — то есть, совсем другая история архитектура.

См. также

Радиолюбитель