Тема
4. Платформа
Arduino
Arduino
- торгова марка апаратно-програмних засобів для побудови простих систем
автоматики і робототехніки, орієнтована на непрофесійних користувачів.
Програмна частина складається з безкоштовної програмної оболонки (IDE) для написання
програм, їх компіляції і програмування апаратури. Апаратна частина являє собою
набір змонтованих друкованих плат, що продаються як офіційним виробником, так і
сторонніми виробниками. Повністю відкрита архітектура системи дозволяє вільно
копіювати або доповнювати лінійку продукції Arduino.
Arduino
може використовуватися як для створення автономних об'єктів автоматики, так і
підключатися до програмного забезпечення на комп'ютері через стандартні
провідні та бездротові інтерфейси.
Під
торговою маркою Arduino випускається кілька плат з мікро контролером (англ.
Boards) і плати розширення (так звані шілди - від англ. Shields). Більшість
плат з мікроконтролером забезпечені мінімально необхідним набором обв'язки для
нормальної роботи мікроконтролера (стабілізатор живлення, кварцовий резонатор,
ланцюжки скидання і т. П.).
Arduino
і Arduino-сумісні плати спроектовані таким чином, щоб їх можна було при
необхідності розширювати, додаючи в пристрій нові компоненти. Ці плати
розширень підключаються до Arduino допомогою встановлених на них штирьових
роз'ємів. Існує ряд плат з уніфікованим конструктивом, допускає конструктивно
жорстке з'єднання процессорной плати і плат розширення в стопку через штирові
лінійки. Крім того, випускаються плати зменшених габаритів (наприклад, Nano,
Lilypad) і спеціальних конструктивів для завдань робототехніки. Незалежними
виробниками також випускається велика гамма всіляких датчиків і виконавчих
пристроїв, в тій чи іншій мірі сумісних з базовим конструктивом Ардуіно.
У
концепцію Arduino не входить корпусних або монтажний конструктив. Розробник
вибирає метод установки і механічного захисту плат самостійно. Сторонніми
виробниками випускаються набори робототехнической електромеханіки, орієнтованої
на роботу спільно з платами Arduino.
Мініатюрні клони
Arduino
Крім
стандартних конструктивів Ардуіно сторонні розробники створили безліч
мініатюрних клонів, зберігши лише архітектурну і програмну сумісність. Серед
цих клонів виділяється лінійка продуктів Microduino. Лінійка містить
повноцінний набір конструктивно сумісних процесорних модулів, модулів зв'язку,
сенсорів і виконавчих пристроїв, практично не поступаючись асортименту
класичних модулів Arduino. Як і Arduino, збірка плат проводиться в стопки.
Мікроконтролери
для Arduino відрізняються наявністю попередньо прошитого в них завантажувача
(bootloader). За допомогою цього завантажувача користувач завантажує свою
програму в мікроконтролер без використання традиційних окремих апаратних програматорів.
Завантажувач з'єднується з комп'ютером через інтерфейс USB (якщо він є на
платі) або за допомогою окремого перехідника UART-USB. Підтримка завантажувача
вбудована в Arduino IDE і виконується в один клік мишею.
На
випадок затирання завантажувача або покупки мікроконтролера без завантажувача
розробники надають можливість прошити завантажувач в мікроконтролер самостійно.
Для цього в Arduino IDE вбудована підтримка декількох популярних дешевих
програматорів, а більшість плат Arduino має штирьовий роз'єм для внутрішньосхемного
програмування (ICSP для AVR, JTAG для ARM).
В
Arduino IDE від компанії, що базується на сайті arduino.cc, вбудована
можливість створення своїх програмно-апаратних платформ. Цією можливістю
користуються сторонні компанії, що додають в Arduino IDE свої набори плат і
компіляторів-завантажувачів до них.
У
лінійці пристроїв Arduino в основному застосовуються мікроконтролери Atmel AVR
ATmega328, ATmega168, ATmega2560, ATmega32U4, ATTiny85 з тактовою частотою 16
або 8 МГц. У старих виробах застосовувалися ATmega8, ATmega1280 і інші.
Є
також плати на процесорі ARM Cortex M.
Сторонні
розробники портувала в Arduino підтримку популярного Wi-Fi мікроконтролера
ESP8266. Тепер компілювати і завантажувати прошивку для ESP8266 зі своїми
скетчами і підтримкою Wi-Fi можна прямо з Arduino IDE, отримуючи одноплатну
схему з підтримкою мережі Wi-Fi.
В
рамках співпраці зі сторонніми виробниками в Arduino IDE була включена
підтримка деяких апаратних засобів Intel x86. Intel Galileo (Процесор Intel
Quark X1000 400 МГц), Intel Edison і Arduino 101 - Arduino-сумісні плати на
Intel x86 архітектурі. Плати механічно і електрично сумісні з периферійними
платами Ардуіно. Плати функціонують під власною ОС Linux, поверх якої працює
додаток, що дозволяє завантажувати і виконувати скетчі Arduino.
Порти
введення-виведення мікроконтролерів оформлені у вигляді штирьових лінійок.
Ніякої буферизації, захисту, конвертації рівнів або підтяжок, як правило,
немає. Мікроконтролери живляться від 5В або 3,3, в залежності від моделі плати.
Відповідно порти мають такий же розмах допустимих вхідних і вихідних напруг.
Програмісту доступні деякі спеціальні можливості портів введення-виведення
мікроконтролерів, наприклад широтно-імпульсна модуляція (ШІМ),
аналогово-цифровий перетворювач (АЦП), інтерфейси UART, SPI, I2C. Кількість і можливості
портів введення-виведення визначаються конкретним варіантом мікропроцесорної
плати.
Крім
портів на платах мікроконтролерів іноді встановлюється периферія в вигляді
інтерфейсів USB або Ethernet.
Сторонні
виробники випускають широку гаму датчиків і виконавчих пристроїв, що
підключаються до Arduino. Наприклад, гіроскопи, компаси, манометри, гігрометри,
термометри, релейні модулі, індикатори, клавіатури і т.п.
Програмування
ведеться цілком через власну програмну оболонку (IDE), безкоштовно доступну на
сайті Arduino. У цій оболонці є текстовий редактор, менеджер проектів,
препроцесор, компілятор і інструменти для завантаження програми в
мікроконтролер. Оболонка написана на Java на основі проекту Processing, працює
під Windows, Mac OS X і Linux.
Мова
програмування Arduino є стандартним C++ (використовується компілятор AVR-GCC) з
деякими особливостями, які полегшують новачкам написання першої працюючої
програми.
Програми,
написані програмістом Arduino називаються скетчами (від англ. Sketch) і
зберігаються в файлах з розширенням ino. Ці файли перед компіляцією
обробляються препроцесором Ардуіно. Також існує можливість створювати і
підключати до проекту стандартні файли C ++.
Найпростіша
Arduino-програма складається з двох функцій:
setup
(): функція викликається одноразово при старті мікроконтролера.
loop
(): функція викликається після setup () в нескінченному циклі весь час роботи
мікроконтролера.
Закачування
програми в мікроконтролер Arduino відбувається через попередньо запрограмований
спеціальний завантажувач (всі мікроконтролери від Ардуіно продаються з цим
завантажувачем). Завантажувач створений на основі Atmel AVR Application Note
AN109. Завантажувач може працювати через інтерфейси RS-232, USB або Ethernet
залежно від складу периферії конкретної процессорной плати. У деяких варіантах,
таких як Arduino Mini або неофіційною Boarduino, для програмування потрібен
окремий перехідник.
Користувач
може самостійно запрограмувати завантажувач в чистий мікроконтролер. Для цього
в IDE інтегрована підтримка програматора на основі проекту AVRDude.
Підтримується декілька типів популярних дешевих програматорів.