logo
Пристрій автоматичного закривання жалюзі

1.1 Arduino Uno R3. Будова та основні характеристики платформи

Arduino -- апаратна обчислювальна платформа, основними компонентами якої є плата вводу/виводу та середовище розробки на мові Processing/Wiring. Arduino - це інструмент для проектування електронних пристроїв (електронний конструктор) більше взаємодіючих з навколишнім фізичним середовищем, ніж стандартні персональні компютери, які фактично не виходять за рамки віртуальності. Ця платформа призначена для побудови фізичних систем шляхом використання програмних та апаратних засобів, які можуть сприймати та реагувати на зміни в навколишньому середовищі. Arduino застосовується для створення електронних пристроїв з можливістю прийому сигналів від різних цифрових і аналогових давачів, які можуть бути підключені до неї, і управління різними виконавчими пристроями. Проекти пристроїв, засновані на Arduino, можуть працювати самостійно або взаємодіяти з програмним забезпеченням на компютері (наприклад Flash, Processing, MaxMSP). Плати можуть бути зібрані користувачем самостійно або куплені в зборі. Середовище розробки програм з відкритим вихідним кодом доступна для безкоштовного скачування. Оригінальні плати Arduino виробляються фірмою Smart Projects. На даний момент доступно 20 версій плат, які різняться характеристиками мікроконтролера та кількістю аналогових і цифрових виводів. Найбільш розповсюдженою версією плат Arduino є плата Arduino Uno.

Arduino Uno R3 це контролер, що побудований на основі мікроконтролера ATmega 328(рисунок 1.1). Дана платформа відрізняється від усіх попередніх тим, що вона не використовує USB-послідовний порт FTDI. Замість цього плата, в якості перетворювача інтерфейсів USB-UART, використовує мікроконтролер MEGA16U2. Платформа має 14 цифрових входів/виходів (6 з яких можуть використовуватися як виходи ШІМ), 6 аналогових входів, кварцовий резонатор на 16 МГц, розєм USB, розєм живлення, розєм для внутрішньосхемного програмування (ICSP) та кнопку скидання. [1]

Рисунок 1.1 Arduino Uno R3 вигляд зовнішній

Основні характеристики платформи Arduino Uno R3 подані у таблиці 1.1

Таблиця 1.1Основні характеристики Arduino Uno R3

Мікроконтролер

ATmega328

Робоча напруга

5 В

Вхідна напруга (рекомендовано)

7-12 В

Вхідна напруга (межі)

6-20 В

Цифрові входи/виходи

14 (з яких 6 забезпечують вихід ШІМ)

Аналогові входи

6

Флеш-память

32 кб(ATmega328) з яких 0.5 кб використовується для завантажувача

ОЗП

2 Кб(ATmega328)

EEPROM

1 Кб(ATmega328)

Тактова частота

16 МГц

Arduino Uno може отримувати живлення через підключення USB або від зовнішнього джерела живлення. Джерело живлення вибирається автоматично. В якості зовнішнього джерела живлення (не USB) може використовуватися мережевий AC / DC-адаптер або акумулятор / батарея. Штекер адаптера підключається за допомогою розєму 2.1 мм з центральним позитивним полюсом. У разі живлення від батареї її проводи необхідно підєднати до виводів Gnd і Vin розєма Power. Напруга зовнішнього джерела живлення може бути в межах від 6 до 20 В. Однак, зменшення напруги живлення нижче 7В призводить до зменшення напруги на виводі 5V, що може стати причиною нестабільної роботи пристрою. Використання напруги більше 12В може призвести до перегріву стабілізатора напруги і виходу плати з ладу. З урахуванням цього, рекомендується використовувати джерело живлення з напругою в діапазоні від 7 до 12В. Нижче перераховані виводи живлення, що розміщені на платі:

· VIN. Напруга, що надходить в Arduino безпосередньо від зовнішнього джерела живлення(не повязано з 5В від USB або іншою стабілізованою напругою). Через цей вивід можна як подавати зовнішнє живлення, так і споживати струм, коли пристрій живиться від зовнішнього адаптера.

· 5V. На вивід надходить напруга 5В від стабілізатора напруги на платі, в незалежності від того, як живиться пристрій: від адаптера (7 - 12В), від USB (5В) або через вивід VIN (7 - 12В). Живити пристрій через виводи 5V або 3V3 не рекомендується, оскільки в цьому випадку не використовується стабілізатор напруги, що може привести до виходу плати з ладу.

· 3.3V. 3.3В, що надходять від стабілізатора напруги на платі. Максимальний струм, споживаний від цього виводу, становить 50мА.

· GND. Вивід землі.

· IOREF. Цей вивід надає платам розширення інформацію по робочій напрузі мікроконтролера Arduino. Залежно від напруги, яка зчитується з виводу IOREF, плата розширення може переключитися на відповідне джерело живлення або задіяти перетворювачі рівнів, що дозволить їй працювати як з 5В, так і з 3.3В-пристроями.

З використанням функцій pinMode(), digitalWrite() і digitalRead() кожен з 14 цифрових виводів може працювати в якості входу або виходу. Рівень напруги на виводах обмежений 5В. Максимальний струм, який може віддавати або споживати один вивід, становить 40мА. Усі виводи сполучені з внутрішніми підтягуючими резисторами (за замовчуванням відключеними) номіналом 20-50 кОм. Окрім цього, деякі виводи Arduino можуть виконувати додаткові функції:

· Послідовний інтерфейс: виводи 0 (RX) і 1 (TX). Використовуються для отримання (RX) і передачі (TX) даних по послідовному інтерфейсу. Ці виводи зєднані з відповідними виводами мікросхеми MEGA16U2, яка виконує роль перетворювача USB-UART.

· Зовнішні переривання: виводи 2 і 3. Можуть служити джерелами переривань, що виникають при фронті, спаді або низькому рівні сигналу на цих виводах.

· ШІМ: виводи 3, 5, 6, 9, 10 і 11. За допомогою функції analogWrite() можуть виводити 8-бітові аналогові значення у вигляді шім-сигналу.

· Інтерфейс SPI: виводи 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Із застосуванням бібліотеки SPI дані висновки можуть здійснювати звязок по інтерфейсу SPI.

· Світлодіод: 13. Вбудований світлодіод, що приєднаний до виводу 13. При відправці значення HIGH світлодіод включається, при відправці LOW - вимикається.

· TWI: вивід A4 або SDA і вивід A5 або SCL. З використанням бібліотеки Wire дані виводи можуть здійснювати звязок по інтерфейсу TWI.

· AREF. Опорна напруга для аналогових входів. Може задіятися функцією analogReference ().

· Reset. Формування низького рівня (LOW) на цьому виводу призведе до перезавантаження мікроконтролера. Зазвичай цей вивід служить для функціонування кнопки скидання на платах розширення.

Також в Arduino Uno є 6 аналогових входів (А0-А5), кожен з яких може представити аналогову напругу у вигляді 10-бітного числа (1024 різних значення). За замовчуванням, вимір напруги здійснюється щодо діапазону від 0 до 5В. Проте, верхню межу цього діапазону можна змінити, використовуючи вивід AREF і функцію analogReference().[1]

Arduino Uno надає ряд можливостей для здійснення звязку з компютером, ще одним Arduino або іншими мікроконтролерами. В ATmega328 мається прийомопередавач UART, що дозволяє здійснювати послідовний звязок за допомогою цифрових виводів 0 (RX) і 1 (TX). Мікроконтролер ATmega16U2 на платі забезпечує звязок цього прийомопередавача з USB-портом компютера, і при підключенні до ПК дозволяє Arduino визначатися як віртуальний COM-порт. Прошивка мікросхеми 16U2 використовує стандартні драйвера USB-COM, тому установка зовнішніх драйверів не потрібна. На платформі Windows необхідний тільки відповідний .inf-файл. В пакет програмного забезпечення Arduino входить спеціальна програма, що дозволяє зчитувати і відправляти на Arduino прості текстові дані. При передачі даних через мікросхему-перетворювач USB-UART під час USB-зєднання з компютером, на платі будуть блимати світлодіоди RX і TX. (При послідовній передачі даних за допомогою виводів 0 і 1, без використання USB-перетворювача, дані світлодіоди не задіюються). Бібліотека SoftwareSerial дозволяє реалізувати послідовний звязок на будь-яких цифрових виводах Arduino Uno. У мікроконтролері ATmega328 також реалізована підтримка послідовних інтерфейсів I2C (TWI) і SPI. У програмне забезпечення Arduino входить бібліотека Wire, що дозволяє спростити роботу з шиною I2C. Для роботи з інтерфейсом SPI використовується бібліотека SPI.

Arduino Uno програмується за допомогою програмного забезпечення Arduino. ATmega328 в Arduino Uno випускається з прошитим загрузчиком, що дозволяє завантажувати в мікроконтролер нові програми без необхідності використання зовнішнього програматора. Взаємодія з ним здійснюється за оригінальним протоколом STK500. Проте, мікроконтролер можна прошити і через розєм для внутрішньосхемного програмування ICSP (In-Circuit Serial Programming), не звертаючи уваги на завантажувач. Вихідний код прошивки мікроконтролера MEGA16U2 знаходиться у вільному доступі. Прошивка MEGA16U2 включає в себе DFU-завантажувач (Device Firmware Update), що дозволяє оновлювати прошивку мікроконтролера. Для активації режиму DFU на платі, для спрощення переходу в режим DFU, присутній резистор, що підтягує до землі лінію HWB мікроконтролера 16U2. Після переходу в DFU-режим для завантаження нової прошивки можна використовувати програмне забезпечення Atmels FLIP (для Windows) або DFU programmer (для MacOS X і Linux). Альтернативний варіант прошити мікроконтролер через розєм для внутрішньосхемного програмування ICSP за допомогою зовнішнього програматора, проте в цьому випадку DFU-завантажувач затреться. [1]

Найголовнішим елементом, який виконує майже усю роботу платформи Arduino Uno є мікроконтролер фірми ATmel ATmega328 (рисунок 1.2).

Рисунок 1.2 ATmega 328 вигляд загальний

автоматичний закривання жалюзі програмний

Мікроконтролер виконана у вигляді мікросхеми спеціалізована мікропроцесорна система, що включає мікропроцесор, блоки памяті для збереження коду програм і даних, порти вводу-виводу і блоки зі спеціальними функціями (лічильники, компаратори, АЦП та інші). Використовується для керування електронними пристроями. По суті, це -- однокристальний компютер, здатний виконувати прості завдання.

Мікроконтролер ATmega 328 мікроконтролер сімейства AVR, як і всі інші має 8-бітний процесор і дозволяє виконувати більшість команд за один такт. Мікросхема виготовляється по КМОП-технології, яка в поєднанні з удосконаленою RISC-архітектурою дозволяє досягти найкращого відношення вартості/швидкодії/енергоспоживання.[2, 10]

Ядро мікроконтролера AVR сімейства Mega виконано по удосконаленій RISC-архітектурі (Рисунок 1.3).

Рисунок 1.3 Архітектура ядра мікроконтролера AVR

Арифметико-логічний пристрій (АЛП) підключений безпосередньо до 32 робочих регістрів, які обєднані в регістровий файл. Завдяки цьому, АЛП може виконувати одну операцію (читання вмісту регістрів, виконання операції та запис результату назад в регістровий файл) за такт. Крім того, практично кожна із команд (за виключенням команд, у яких одним із операндів є 16-бітний адрес) займає одну комірку памяті програм.

В мікроконтролерах AVR реалізована Гарвардська архітектура, яка характеризується розділеною памяттю програм та даних, кожна з яких має власну шину доступу. Така організація дозволяє одночасно працювати як з памяттю програм, так і з памяттю даних.[2, 12-13]

Основні характеристики мікроконтролера ATmega 328 подані у таблиці 1.2.

Таблиця 1.2 Основні характеристики мікроконтролера ATmega 328

Память

1

2

Обєм flash-памяті

32 кб

Обєм SRAM-памяті

2 кб

Обєм EEPROM-памяті

1 кб

Швидкість процесора та напруга живлення

При частоті до 4 МГц

1,8-5,5 В

При частоті до 10 МГц

2,7-5,5 В

При частоті до 20 МГц

4,5-5,5 В

Споживаний струм

Споживаний струм в режимі роботи

0,2 мА(1 МГц, 1,8 В)

Споживаний струм в режимі сну

0,75 мкА

Периферійні пристрої

Кількість лічильників

1 (реального часу з окремим генератором)

Кількість таймерів

2 восьмибітних, 1 шістнадцятибітний

Загальна кількість портів

23

Кількість ШІМ (PWM) виходів

6

Кількість каналів АЦП(аналогові входи)

6

Кількість апаратних USART(Serial)

1

Кількість апаратних SPI

1 Master/Slave

Кількість апаратних I2C/SPI

1

Розширення АЦП

10 біт

Даний мікроконтролер може виконувати наступні спеціальні функції:

· Скидання при включенні живлення і програмне розпізнавання зниження напруги живлення;

· Внутрішній калібрований генератор тактових імпульсів;

· Обробка внутрішніх та зовнішніх переривань;

· 6 режимів сну (знижене енергоспоживання і зниження шумів для більш точного перетворення АЦП).