Arduino

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Arduino Software
Arduino Logo.svg
Arduino IDE - v0011 Alpha.png
Arduino IDE с примером простой программы.
Тип

Интегрированная среда разработки

Разработчик

Arduino Software

Написана на

Java

Операционная система

Кроссплатформенная

Последняя версия

1.5[1] (21 мая 2012 года)

Лицензия

LGPL или GPL license

Сайт

arduino.cc

Arduino Software на Викискладе

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

Arduino может использоваться как для создания автономных объектов автоматики, так и подключаться к программному обеспечению на компьютере через стандартные проводные и беспроводные интерфейсы.

В концепцию Ардуино не входит корпусной или монтажный конструктив. Разработчик выбирает метод установки и механической защиты плат самостоятельно. Сторонними производителями выпускаются наборы робототехнической электромеханики, ориентированной на работу совместно с платами Ардуино.[2]

Проект Arduino был удостоен почётного упоминания при вручении призов Prix Ars Electronica 2006 в категории Digital Communities.[3][4]

Аппаратная часть[править | править вики-текст]

List of Arduino CPU boards, supported by Arduino IDE v1.0.6
Стандартный конструктив Ардуино с платами расширения

Под торговой маркой Ардуино выпускается несколько плат с микроконтроллером (англ. boards) и периферийные платы (англ. shields). Большинство плат с микроконтроллером снабжены минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.).

Конструктив[править | править вики-текст]

Ардуино и Ардуино-совместимые платы спроектированы таким образом, чтобы их можно было при необходимости расширять, добавляя в устройство новые компоненты. Эти платы расширений подключаются к Ардуино посредством установленных на них штыревых разъёмов. Существует ряд плат с унифицированным конструктивом, допускающим конструктивно жесткое соединение процессорной платы и плат расширения в стопку через штыревые линейки. Кроме того, выпускаются платы уменьшенных габаритов (например, Nano, Lilypad) и специальных конструктивов для задач робототехники. Независимыми производителями также выпускается большая гамма всевозможных датчиков и исполнительных устройств, в той или иной степени совместимых с базовым конструктивом Ардуино.

Микроконтроллер[править | править вики-текст]

В линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR ATmega328, ATmega168, ATmega2560, ATmega32U4 с частотой тактирования 16 или 8 МГц. В старых изделиях применялись ATmega8, ATmega1280 и другие. Есть также плата на процессоре ARM Cortex M3 AT91SAM3X8E с частотой тактирования 84 МГц.[5] В микроконтроллер предварительно прошивается загрузчик (BootLoader), поэтому внешний программатор не нужен. Тем не менее большинство плат имеет штыревой разьем для внутрисхемного программирования (ICSP).

Периферия[править | править вики-текст]

Порты ввода-вывода микроконтроллеров оформлены в виде штыревых линеек. Никакого буферизирования, защиты, конвертации уровней или подтяжек, как правило, нет. Микроконтроллеры питаются от 5В или 3,3В, в зависимости от модели платы. Соответственно порты имеют такой же размах допустимых входных и выходных напряжений. Программисту доступны некоторые специальные возможности портов ввода-вывода микроконтроллеров, например широтно-импульсная модуляция (ШИМ), аналогово-цифровой преобразователь (АЦП), интерфейсы UART, SPI, I2C. Количество и возможности портов ввода-вывода определяются конкретным вариантом микропроцессорной платы.

Помимо портов на платах микроконтроллеров иногда устанавливается периферия в виде интерфейсов USB или Ethernet. Опциональный набор внешней периферии на модулях расширения включает в себя[6]:

  • USB Device (чаще всего как виртуальный COM порт через FTDI FT232, имеются также версии с эмуляцией USB HID Class клавиатур и мышек).
  • Проводной и беспроводной Ethernet как на основной плате так и на платах расширения.[7]
  • Модуль GSM и другие беспроводные интерфейсы[8].
  • USB Host[9].
  • SD card.
  • Модуль управления низковольтным мотором на базе L298. Поддерживаются шаговый и коллекторный двигатели с напряжением до 12В и током до 2А на канал. Могут подключаться также реле, электромагниты и т. п. Модуль не имеет гальваноразвязки.
  • Графический ЖКИ индикатор.
  • Модуль с макетным полем.

Сторонние производители выпускают широкую гамму датчиков и исполнительных устройств, подключаемых к Ардуино. Например, гироскопы, компасы, манометры, гигрометры, термометры, релейные модули, индикаторы, клавиатуры и т. п.

Некоторые модели микроконтроллерных плат[править | править вики-текст]

Плата Arduino Diecimila

См. также List of Arduino boards and compatible systems (англ.)русск..

Оригинальные платы Arduino производит Smart Projects. Некоторые модели микроконтроллерных плат:[10]

  1. Serial Arduino, программируется через последовательное соединение (разъём DB-9), используется ATmega8.
  2. Arduino Extreme, с USB-интерфейсом для программирования, используется ATmega8.
  3. Arduino Mini, миниатюрная версия Arduino, использующая поверхностный монтаж ATmega328. Не содержит конвертера USB-UART.
  4. Arduino Nano 3.0, ещё миниатюрнее, с питанием от USB и поверхностным монтажом ATmega328.
  5. LilyPad Arduino, минималистичный дизайн для носимых применений с поверхностным монтажом ATmega168 (в новых версиях ATmega328).
  6. Arduino NG, с USB-интерфейсом для программирования, используется ATmega8.
  7. Arduino NG plus, с USB-интерфейсом для программирования, используется ATmega168.
  8. Arduino BT, с Bluetooth-интерфейсом для программирования, используется ATmega168 (в новых версиях ATmega328).
  9. Arduino Diecimila, использует USB-интерфейс и Atmega168 в DIP28 корпусе.
  10. Arduino Duemilanove («2009»), на основе ATmega168 (в новых версиях ATmega328), с автоматическим выбором питания от USB или внешнего источника.
  11. Arduino Mega («2009»), на основе ATmega1280.
  12. Arduino Mega2560 R3 («2011»), на основе ATmega2560. Используется конвертер USB-UART на базе ATmega16U2.
  13. Arduino Uno R3 (2011), на основе ATmega328. Используется конвертер USB-UART на базе ATmega16U2.
  14. Arduino Ethernet (2011), на основе ATmega328. Конвертера USB-UART нет. Ethernet чип — W5100, также содержит модуль MicroSD.
  15. Arduino Mega ADK for Android (2011), на основе ATmega2560. Содержит USB-хост для соединения с телефонами на базе ОС Android (м/с MAX3421e). Конвертер USB-UART на базе ATmega8U2.
Arduino Процессор Напряжение питания Флеш-память,
КБ
EEPROM,
КБ
SRAM,
КБ
Двоичные
входы/выходы
…c
ШИМ
Аналоговые
входы
USB-интерфейс Прочие
интерфейсы
Размеры,
мм
Due Atmel SAM3X8E ARM Cortex-M3 3.3 В 512 Нет 256 54 12 12 + 2ЦАП ATmega16U2 CAN, JTAG, I2C 101,6 × 53.3
ADK ATmega2560 5 В 256 4 8 54 14 16 ATmega8U2 MAX3421E
USB хост
101,6 × 53.3
BT (Bluetooth) ATmega328 5 В 32 1 2 14 4 6 Нет Bluegiga WT11 Bluetooth
Diecimila ATmega168 5 В 16 0.5 1 14 6 6 FTDI 68,6 × 53.3
Duemilanove ATmega168/328P 5 В 16/32 0.5/1 1/2 14 6 6 FTDI 68,6 × 53.3
Ethernet ATmega328 5 В 32 1 2 14 4 6 Нет Wiznet Ethernet
MicroSD
Fio ATmega328P 3.3 В 32 1 2 14 6 8 Нет 40,6 × 27.9
Leonardo Atmega32u4 5 В 32 1 2 14 6 12 Atmega32u4 68,6 × 53.3
LilyPad ATmega168V или ATmega328V 2.7-5.5 В 16 0.5 1 14 6 6 Нет 50 ⌀
Mega ATmega1280 5 В 128 4 8 54 14 16 FTDI 101,6 × 53.3
Mega2560 ATmega2560 5 В 256 4 8 54 14 16 ATmega8U2 ATmega16U2 101,6 × 53.3
Nano ATmega168 или ATmega328 5 В 16/32 0.5/1 1/2 14 6 8 FTDI 43 × 18
Uno ATmega328P 5 В 32 1 2 14 6 6 ATmega8U2 ATmega16U2 68,6 × 53.3

Концепция программирования[править | править вики-текст]

Программирование ведется целиком через собственную программную оболочку (IDE), бесплатно доступную с сайта Ардуино. В этой оболочке имеется текстовый редактор, компилятор и инструмент для закачивания программы в микроконтроллер. Закачка программы в микроконтроллер Ардуино происходит через предварительно запрограммированный специальный загрузчик (все микроконтроллеры от Ардуино продаются с этим загрузчиком). Загрузчик может работать через интерфейсы RS-232, USB или Ethernet в зависимости от состава периферии конкретной процессорной платы. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется отдельный переходник.

Язык программирования[править | править вики-текст]

Среда разработки основана на языке программирования Processing и спроектирована для программирования новичками, не знакомыми близко с разработкой программного обеспечения. Язык программирования аналогичен используемому в проекте Wiring[11]. Строго говоря, это C++, дополненный некоторыми библиотеками. Программы обрабатываются с помощью препроцессора, а затем компилируется с помощью AVR-GCC.

Простейшая Ардуино-программа состоит из двух функций:

  • setup(): функция вызывается однократно при старте микроконтроллера.
  • loop(): функция вызывается после setup() в бесконечном цикле все время работы микроконтроллера.

Так выглядит полный текст простейшей программы мигания светодиодом:

#define LED_PIN 13
 
void setup () {
  pinMode (LED_PIN, OUTPUT); // Enable pin 13 for digital output
}
 
void loop () {
  digitalWrite (LED_PIN, HIGH); // Turn on the LED
  delay (1000); // Wait one second (1000 milliseconds)
  digitalWrite (LED_PIN, LOW); // Turn off the LED
  delay (1000); // Wait one second
}

Все используемые в примере функции являются библиотечными. Полный список функций Arduino API можно найти на сайте Ардуино. В комплекте программной оболочки имеется множество примеров программ. Существует перевод документации по Arduino на русский язык[12].

Альтернативные IDE[править | править вики-текст]

Fritzing
Язык Minibloq

Fritzing (англ.)русск. — простая Ардуино-ориентированная система проектирования и документирования схемотехники.

Minibloq (англ.)русск. — IDE для графического языка программирования.

Открытые архитектура и код[править | править вики-текст]

Документация, прошивки и чертежи Arduino распространяются под лицензией Creative Commons Attribution ShareAlike 2.5 и доступны на официальном сайте Arduino. Рисунок печатной платы для некоторых версий Arduino также доступен.[10] Исходный код для интегрированной среды разработки и библиотек опубликован и доступен под лицензией GPLv2.[13]

Клоны[править | править вики-текст]

Несмотря на то что документация на аппаратную часть и программный код опубликованы под лицензией «copyleft», разработчики выразили желание, чтобы название «Arduino» (и производные от него) было торговой маркой для официального продукта и не использовалось для производных работ без разрешения. В официальном документе об использовании названия Arduino подчеркивается, что проект открыт для всех желающих работать над официальным продуктом.[14]

Результатом защиты названия стало ответвление от версии платы Arduino Diecimila, сделанное группой пользователей, что привело к выпуску эквивалентной платы, названной Freeduino. Название Freeduino не является торговой маркой и может использоваться в любых целях.[15]

Некоторые программно и аппаратно совместимые продукты избегают названия «Arduino», используя в вариантах собственного названия только «duino». Они были коммерчески выпущены другими производителями.

Команда разработчиков[править | править вики-текст]

Ядро команды разработчиков Arduino составляют: Массимо Банци (Massimo Banzi), Девид Куартиллье (David Cuartielles), Том Иго (Tom Igoe), Джанлука Мартино (Gianluca Martino), Девид Меллис (David Mellis) и Николас Замбетти (Nicholas Zambetti).

См. также[править | править вики-текст]

  • Simplecortex (англ.)русск. — проект, аналогичный Ардуино, но с собственным процессором и IDE. Совместим с Ардуино по платам расширения.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]