Тема 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. Підтримується декілька типів популярних дешевих програматорів.