Підключення та програмування Ардуіно для початківців

Вивчення мікроконтролерів здається чимось складним і незрозумілим? До появи Арудіно – це було дійсно нелегко і вимагало певний набір программаторов та іншого обладнання.

Що таке Arduino?

Це свого роду електронний конструктор. Початкова завдання проекту – це дозволити людям легко навчатися програмуванню електронних пристроїв, при цьому приділяючи мінімальний час електронної частини.

Збірка найскладніших схем і з’єднання плат може здійснюватися без паяльника, а за допомогою перемичок з роз’ємними з’єднаннями «тато» і «мама». Так можуть підключатися як навісні елементи, так і плати розширення, які на лексиконі ардуінщіков звуть просто «Шілд» (shield).

Яку першу плату Arduino купити новачкові?

Базовою і найпопулярнішою платою вважається Arduino Uno. Ця плата розміром нагадує кредитну карту. Досить велика. Більшість Шілд які є у продажу ідеально підходять до неї. На платі для підключення зовнішніх пристроїв розташовані гнізда.

У вітчизняних магазинах на 2017 рік її ціна близько 4-5 доларів. На сучасних моделях її серцем є Atmega328.

Зображення плати Ардуіно і розшифровка функцій кожного виведення, Arduino UNO pinout

Мікроконтролер на даній платі це довга мікросхема в корпусі DIP28, що говорить про те, що у нього 28 ніжок.

Наступна за популярністю плата, коштує майже вдвічі дешевше за попередньою – 2-3 долара. це плата Arduino Nano. Актуальні плати побудовані тому ж Atmega328, функціонально вони аналогічні з UNO, відмінності в розмірах і вирішенні узгодження з USB, про це пізніше докладніше. Ще однією відмінністю є те, що для підключення до плати пристроїв передбачені штекера, у вигляді голок.

Кількість пінів (ніжок) цієї плати збігається, але ви можете спостерігати що мікроконтролер виконаний в більш компактному корпусі TQFP32, в корпусі додані ADC6 і ADC7, інші дві «зайвих» ніжки дублюють шину харчування. Її розміри досить компактні – приблизно, як великий палець вашої руки.

Aruino Nano pinout 

Третя за популярністю плата – це Arduino Pro Mini, на ній немає USB порту для підключення до комп’ютера, як здійснюється зв’язок я розповім трохи пізніше.

Порівняння розмірів Arduino Nano і Pro Mini

Це найменша плата з усіх розглянутих, в іншому вона аналогічна попереднім двом, а її серцем є як і раніше Atmega328. Інші плати розглядати не будемо, так як це стаття для початківців, так і порівняння плат – це тема окремої статті.

Arduino Pro Mini pinout, у верхній частині схема підключення USB-UART, пін «GRN» – розлучений на ланцюг скидання мікроконтролера, може називатися по іншому, для чого це потрібно ви дізнаєтеся далі.

підсумки:

Якщо UNO зручна для макетування, то Nano і Pro Mini зручні для фінальних версій вашого проекту, тому що займають мало місця.

Як підключити Arduino до комп’ютера?

Arduino Uno і Nano підключаються до комп’ютера через USB. При цьому немає апаратної підтримки USB порту, тут застосовано схемне рішення перетворення рівнів, що зазвичай називають USB-to-Serial або USB-UART (rs-232). При цьому в мікроконтролер прошитий спеціальний Arduino завантажувач, який дозволяє прошиваться по цим шинам.

В Arduino Uno реалізована ця в’язь на мікроконтролері з підтримкою USB – ATmega16U2 (AT16U2). Виходить така ситуація, що додатковий мікроконтролер на платі потрібен для прошивки основного мікроконтролера.

В Arduino Nano це реалізовано мікросхемою FT232R, або її аналогом CH340. Це не мікроконтролер – це перетворювач рівнів, цей факт полегшує збірку Arduino Nano з нуля своїми руками.

Зазвичай драйвера встановлюються автоматично при підключенні плати Arduino. Однак, коли я купив китайську копію Arduino Nano, пристрій було упізнано, але воно не працювало, на перетворювачі була наклеєна кругла наклейка з даними про дату випуску, не знаю навмисне чи це було зроблено, але відклеївши її я побачив маркування CH340.

До цього я не стикався з таким і думав, що все USB-UART перетворювачі зібрані на FT232, довелося завантажити драйвера, їх дуже легко знайти за запитом «Arduino ch340 драйвера». Після простий установки – все запрацювало!

Через цей же USB порт може і харчуватися мікроконтролер, тобто якщо ви підключите його до адаптера від мобільного телефону – ваша система буде працювати.

Що робити якщо на моїй платі немає USB?

Плата Arduino Pro Mini має менші габарити. Це досягли тим що прибрали USB роз’єм для прошивки і той самий USB-UART перетворювач. Тому його потрібно докупити окремо. Найпростіший перетворювач на CH340 (найдешевший), CPL2102 і FT232R, продається коштує від 1 долара.

При покупці зверніть увагу на яку напругу розрахований цей перехідник. Pro mini буває в версіях 3.3 і 5 В, на перетворювачах часто розташований джампер для перемикання напруги харчування.

При прошивці Pro Mini, безпосередньо перед її початком необхідно натискати на RESET, проте в перетворювачах з DTR це робити не потрібно, схема підключення на малюнку нижче.

Стикуються вони спеціальними клемами «Мама-Мама» (female-female).

Власне, всі з’єднання можна зробити за допомогою таких клем (Dupont), вони бувають як з двох сторін з гніздами, так і зі штекерами, так і з одного боку гніздо, а з іншого штекер.

Як писати програми для Arduino?

Для роботи зі скетчами (назва прошивки на мові ардуінщіков), є спеціальна інтегроване середовище для розробки Arduino IDE, скачати безкоштовно її можна з офіційного сайту або з будь-якого тематичного ресурсу, з установкою проблем зазвичай не виникає.

Так виглядає інтерфейс програми. Писати програми можна на спеціально розробленому для Ардуіно спрощеному мовою C AVR, по суті це набір бібліотек, який називають Wiring, а також на чистому C AVR. Використання якого полегшує код і прискорює його роботу.

У верхній частині вікна присутній звичне меню, де можна відкрити файл, налаштування, вибрати плату, з якої ви працюєте (Uno, Nano і багато-багато інших) а також відкрити проекти з готовими прикладами коду. Нижче розташований набір кнопок для роботи з прошивкою, призначення клавіш ви побачите на малюнку нижче.

У нижній частині вікна – область для виведення інформації про проект, про стан коду, прошивки і наявності помилок.

Основи програмування в Arduino IDE

На початку коду потрібно оголосити змінні і підключити додаткові бібліотеки, якщо вони є, робиться це в такий спосіб:

#include biblioteka.h; // підключаємо бібліотеку з назвою "Biblioteka.h"

#define peremennaya 1234; // Оголошуємо змінну зі значенням 1234

Команда Define дають компілятору самому вибрати тип змінної, але ви можете його задати вручну, наприклад, цілочисельний int, або з плаваючою точкою float.

int led = 13; // створили змінну "led" і присвоїли їй значення «13»

Програма може визначати стан Піна, як 1 або 0. 1 -це логічна одиниця, якщо пін 13 дорівнює 1, то напруга на його фізичної ніжці буде дорівнювати напрузі живлення мікроконтролера (для Ардуіно UNO і Nano – 5 В)

Запис цифрового сигналу здійснюється командою digitalWrite (пін, значення), наприклад:

digitalWrite (led, high); // запис одиниці в пін 13 (ми його оголосили вище) лог. Одиниці.

Як ви могли зрозуміти звернення до портів йде по нумерації на платі, відповідною цифрою. Ось приклад аналогічного попереднього коду:

digitalWrite (13, high); // встановлюємо висновок 13 в едііцу

Часто затребувана функція затримки часу викликається командою delay (), значення якої задається в мілісекундах, мікросекунди досягаються за допомогою

delayMicroseconds () Delay (1000); // мікроконтролер чекатиме 1000 мс (1 секунду)

Налаштування портів на вхід і вихід задаються в функції void setup {}, командою:

void setup () {

 pinMode (NOMERPORTA, OUTPUT / INPUT); // аргументи - назва змінної або номер порту, вхід або вихід на вибір

}

Void loop {}

Розуміємо першу програму «Blink»

Як своєрідний «Hello, world» для мікроконтролерів є програма миготіння світлодіодом, давайте розберемо її код:

На початку командою pinMode ми сказали микроконтроллеру призначити порт з світлодіодом на вихід. Ви вже помітили, що в коді немає оголошення змінної “LED_BUILTIN”, справа в тому, що в платах Uno, Nano і інших з заводу до 13 висновку підключений вбудований світлодіод і він розпаяний на платі. Він може бути використаний вами для індикації в ваших проектах або для найпростішої перевірки ваших програм-мигалок.

Далі ми встановили висновок до якого підпаяні світлодіод в одиницю (5 В), наступний рядок змушує МК почекати 1 секунду, а потім встановлює пін LED_BUILTIN в значення нуля, чекає секунду і програма повторюється по колу, таким чином, коли LED_BUILTIN дорівнює 1 – світлодіод ( та й будь-яка інша навантаження підключена до порту) включений, коли в 0 – вимкнено.

Все працює і все зрозуміло? Тоді йдемо далі!

Читаємо значення з аналогового порту і використовуємо прочитані дані

Мікроконтролер AVR Atmega328 має вбудований 10 бітний аналогово цифровий перетворювач. 10 бітний АЦП дозволяє зчитувати значення напруга від 0 до 5 вольт, з кроком в 1/1024 від усього розмаху амплітуди сигналу (5 В).

Щоб було зрозуміліше розглянемо ситуацію, припустимо значення напруги на аналоговому вході 2.5 В, значить мікроконтролер прочитає значення з Піна «512», якщо напруга дорівнює 0 – «0», а якщо 5 В – (1023). 1023 – тому що рахунок йде з 0, тобто 0, 1, 2, 3 і т.д. до 1023 – всього 1024 значення.

Ось як це виглядає в коді, на прикладі стандартного скетчу «analogInput»

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

void setup () {

 pinMode (ledPin, OUTPUT);

}

void loop () {

 sensorValue = analogRead (sensorPin);

 digitalWrite (ledPin, HIGH);

 delay (sensorValue);

 digitalWrite (ledPin, LOW);

 delay (sensorValue);

}

Схема підключення потенціометра до Arduino, за аналогією центральний висновок ви можете підключити до будь-якого аналогового входу.

Оголошуємо змінні:

  • Ledpin – самостійно призначаємо пін з вбудованим світлодіодом на вихід і даємо індивідуальне ім’я;

  • sensorPin – аналоговий вхід, задається відповідно маркування на платі: A0, A1, A2 і т.д .;

  • sensorValue – змінна для зберігання целочисленного прочитаного значення і подальшої роботи з ним.

Код працює так: sensorValue зберігаємо прочитане з sensorPin аналогове значення (команда analogRead). – тут робота з аналоговим сигналом закінчується, далі все як в попередньому прикладі.

Записуємо одиницю в ledPin, світлодіод включається і чекаємо час рівне значенню sensorValue, тобто від 0 до 1023 мілісекунд. Вимикаємо світлодіод і знову чекаємо цей період часу, після чого код повторюється.

Таким чином становищем потенціометра ми задаємо частоту спалахів світлодіода.

Функція map для Арудіно

Не всі функції для виконавчих механізмів (мені жодної не відомо) в якості аргументу підтримують «+1023», наприклад, сервопривід обмежений кутом повороту, тобто на підлогу оборотоа (180 градуов) (пів обороту) сервомоторчіка максимальний аргумент функції дорівнює «180»

Тепер про синтаксис: map (значення яке ми переводимо, мінімальна величина вхідного, максимальна величина вхідного, мінімальна вихідного, максимальна вихідного значення).

У коді це виглядає так:

(Map (analogRead (pot), 0, тисяча двадцять три, 0, 180));

Ми зчитуємо значення з потенціометра (analogRead (pot)) від 0 до 1023, а на виході отримуємо числа від 0 до 180

Значення карти величин:

  • 0 = 0;

  • 1023 = 180;

На практиці можна застосувати це до роботи коду того-ж сервоприводу, погляньте на код з Arduino IDE, якщо ви уважно читали попередні розділи, то він пояснень не потребує.

І схема підключення.

Висновки Ардуіно – дуже зручний засіб для навчання роботи з мікроконтролерами. А якщо використовувати чистий C AVR, або як його іноді називають «Pure C» – ви значно зменшите вагу коду, і його більше поміститися в пам’ять мікроконтролера, в результаті ви отримаєте відмінну отладочную плату заводського виконання з можливістю прошивки по USB.

Думка автора:

Мені подобається Ардуіно. Шкода, що її багато досвідчених програмісти мікроконтролерів безпідставно лають, що вона занадто спрощено. Спрощено, в принципі, тільки мова, але ніхто не змушує користуватися саме їм, плюс ви можете прошити мікроконтролер через ICSP роз’єм, і залити туди той код, який вам хочеться, без всяких непотрібних Вам бутлоадер.

Для тих, хто хоче погратися з електронікою, як просунутий конструктор – відмінно підійде, а для досвідчених програмістів як плата, яка не потребує збірки, теж стане корисною!

Ще більше інформації про Ардуіно і особливості його використання в різних схемах дивіться в електронній книзі – Ардуіно для чайників. Ілюстроване практичне керівництво

Олексій Бартош

Ссылка на основную публикацию