Arduino - приклади, експерименти - кіт в пальто

В одній з попередніх статей я міркував як можна здешевити виріб на Arduino.
І згадав версію, яка називається Arduino Pro mini. Купив я її на ebay за 120р, зараз вже можна знайти дешевше 100р. Виглядає вона так, з рукою для масштабу:

Arduino - приклади, експерименти - кіт в пальто


Дешевизна її обумовлена ​​тим, що на ній горазда менше деталей, ніж на простий Arduino Uno. Відразу кидається в очі відсутність USB порту і виникає питання, як її прошити?

Прошивати потрібно программатором. У минулій статті я використовував програматор USBASP

Arduino - приклади, експерименти - кіт в пальто

Можна використовувати його, але я хочу в цій статті показати, як можна використовувати іншу Arduino як програматора. Для цього не знадобиться взагалі нічого крім самої ардуінкі. Розробники вже все продумали і написали потрібний софт. Беремо будь-яку іншу Arduino з USB портом

Arduino - приклади, експерименти - кіт в пальто

Підключаємо його до комп'ютера і завантажуємо в нього програму, яка зробить з нього програматор ArduinoISP.

Для цього в середовищі розробки Arduino вибираємо Файл-Приклади-ArduinoISP.

Arduino - приклади, експерименти - кіт в пальто

І завантажуємо цю програму в нашу Arduino звичайним способом (налаштувавши в меню "Інструменти" пункти "Плата" і "Порт"

Arduino - приклади, експерименти - кіт в пальто

Тепер можна використовувати цю ардуінку як програматор, що б запрограмувати нашу Arduino Pro mini. Для прошивки нам потрібно підключити 6 висновків MISI, MOSI, SCK, RESET, VCC і GND. Подивимося що написано ззаду нашої Arduino Pro mini:

Arduino - приклади, експерименти - кіт в пальто

Зліва ми бачимо потрібні нам висновки. Відповідні висновки на нашому программаторе ми можемо підглянути в тексті тільки що прошитої програми:

Arduino - приклади, експерименти - кіт в пальто

Тобто MOSI - 11 цифровий висновок, MISO - 12, SCK - 13, RESET - 10.
VCC - це харчування, GND - земля.
Підключаємо наш програматор до Arduino Pro mini

Arduino - приклади, експерименти - кіт в пальто

Тепер спробуємо прошити в Pro mini програму моргання світлодіодом.

Відкриємо стандартний приклад Blink

Arduino - приклади, експерименти - кіт в пальто

Відкрився текст програми, приведу його тут:


void setup () <
// initialize digital pin LED_BUILTIN as an output.
pinMode (LED_BUILTIN, OUTPUT);
>

// the loop function runs over and over again forever
void loop () <
digitalWrite (LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay (1000); // wait for a second
digitalWrite (LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay (1000); // wait for a second
>


Після останнього оновлення середовища розробки Arduino приклад Blink змінився! Ось як він виглядав раніше (у мене збереглося зображення з попередньої статті):

Arduino - приклади, експерименти - кіт в пальто


В чому різниця? Раніше ми підключали до Ардуіно світлодіод на потрібний нам цифровий висновок, який за замовчуванням був зазначений 13. Зараз замість виведення 13 коштує константа LED_BUILTIN, що говорить сама за себе. Більшість Arduino мають вбудований світлодіод. І ось збіг, він як раз і підключений до цифрового висновку 13. А константа LED_BUILTIN має значення 13 (по крайней мере для нашої Arduino UNO, за інші відповідати не буду). Так що по суті приклад моргання светодиодом не змінився, але зате ми дізналися про константу LED_BUILTIN.

Ми можемо підключити світлодіод до 13 цифровому висновку, а можемо не підключати і просто подивитися як буде моргати вбудований в Arduino Pro mini світлодіод.

Щоб завантажити програму в Arduino Pro mini необхідно в меню "Інструменти" вибрати пункт програматор - Arduino as ISP (не переплутайте з ArduinoISP)

Arduino - приклади, експерименти - кіт в пальто


І тепер завантажуємо програму в Ардуіно через меню "Скетч" - "Завантажити через програматор"

Arduino - приклади, експерименти - кіт в пальто

Програма скомпілюється і заллється на наш Arduino Pro mini. Після чого ми побачимо моргання вбудованого світлодіода.

Як бачите в прошивці Arduino Pro mini немає нічого складного. І точно таким же способом можна прошити голі чіпи Atmega.

Arduino - приклади, експерименти - кіт в пальто

У цій статті я покажу як управляти через Ардуіно ось таким ось дисплейчик:

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

Купив я його на ebay.com за 100р. Знайти подібний дисплей можна за запитом "tm1637". Я купив перший-ліпший мені на очі дисплей і пізніше, коли він прийшов і я спробував його запалити, я зрозумів, що дисплеї ці, виявляється, бувають різні. Різниця в тому, що вони управляються різними драйвером. Мій дисплей працює на двох чіпах TM74HC595, а є такий, який працює на одному чіпі TM1637. Виглядає він так:

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

У дисплея на TM1637 всього 4 ніжки: 2 харчування і 2 - управління. Так ось, якщо б мені попався цей дисплей, я б без зусиль знайшов на нього робочу бібліотеку для Arduino і легко навчився б їм управляти. Але мені прийшов на двох чіпах TM74HC595 і будь-якої бібліотеки під Arduino для нього я не знайшов. Зате знайшов на зарубіжних форумах пару робочих рядків коду, розібрався в їх суті і написав свою бібліотеку для роботи з цим дисплеєм на Arduino. Завантажити бібліотеку можна тут. Сподіваюся полегшив комусь життя.

Отже приступимо. Встановлюємо завантажену бібліотку в папку Arduino / libraries, запускаємо середу розробки і відкриваємо мій приклад.

Arduino - приклади, експерименти - кіт в пальто

У прикладі задані 3 виведення

Замість великої Arduino Uno, я буду використовувати мікроконтролер Atmega328.

Arduino - приклади, експерименти - кіт в пальто

Підключаю відповідні ніжки до дисплея і завантажую програму на мікроконтролер.

Програма спочатку виводить цифру "0" на перший індикатор.
Потім цифру "3" на 2й і 3й індикатор
Потім букву "А" на всі індикатори
Потім веде відлік 0-99 на перших двох індикаторах
Потім веде відлік 0-99 на 3м і 4м індикаторі
Потім веде відлік 0-100 з провідними нулями, тобто 0001 0002, 0003.
І в кінці веде відлік 0-9999 без ведущіз нулів, тобто 1, 2, 3.

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто


В кінці виявив, що при від'єднанні від дисплея дроти живлення, він все одно продовжує працювати, отримуючи харчування від керуючих дротів.

Arduino - приклади, експерименти - кіт в пальто
Arduino - приклади, експерименти - кіт в пальто



Я покажу як прямо з середовища програмування Arduino прошити мікроконтролери Atmega328 і Atmega8. Перший у мене є в DIP корпусі, а другий в TQFP.

Для програмування я використовую програматор USBasp. Купив його на ebay.com. коштує він в межах 150р.

Arduino - приклади, експерименти - кіт в пальто


Перша проблема з якою зіткнуться користувачі Windows8 і Windows10 - установка драйвера для USBasp.

Arduino - приклади, експерименти - кіт в пальто

Проблема в тому, що ці операційні системи просять, щоб у драйвера була якась цифровий підпис, а у драйверів для USBasp на сьогоднішній день її немає. Проблема вирішується відключенням перевірки цих цифрових підписів. Для цього перезавантажуємо комп'ютер, натиснувши клавішу Shift. З'являється екран, на якому вибираємо "Діагностика"

Arduino - приклади, експерименти - кіт в пальто

Далі - "Додаткові параметри"

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

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

Arduino - приклади, експерименти - кіт в пальто

Його вистачило що б мікроконтролер перепрошити. Якщо ж ваш мікроконтролер спочатку налаштований на роботу від внутрішнього тактового генератора, то для прошивки кварц вам не потрібен, можна обійтися і без нього.

Для того, що б можна було прошивати мікрочіп прямо з середовища розробки Arduino, потрібно залити на чіп ардуіновскій завантажувач. Для цього скористаємося програмою avrdude і онлайн конструктором загрузчиков для Ардуіно. На сторінці онлайн конструктора загрузчиков переходимо до самого низу і бачимо конструктор

Arduino - приклади, експерименти - кіт в пальто

1. Вибираємо "Внутрішній генератор" якщо не хочемо використовувати кварцовий резонатор, або вибираємо "Зовнішній генератор" якщо хочемо збільшити швидкість роботи чіпа.

2. Вибираємо модель мікроконтролера (в нашому випадком Atmega328)

3. Натискаємо "Створити HEX"

З'являється таке вікно:

Arduino - приклади, експерименти - кіт в пальто

Перше що ми робимо - завантажуємо наш завантажувач у вигляді hex файлу. Якщо конструктор з якоїсь причини не працює, можна викачати завантажувач для atmega328 для внутрішнього генератора тут.

Нижче ми бачимо блок файлу boards.txt для Arduino IDE. Я довго намагався підключити цей блок, що б в середовищі Ардуіно з'явився вибір плати, але мені це чомусь не вдалося, в результаті обійшовся без цього.

Ще нижче ми бачимо підказку як залити завантажувач через програму avrdude і програматор USBasp. Я роблю так:

-Підключаю програматор до комп'ютера через USB.

-Копіюю HEX файл в папку avrdude

-Створюю bat файл в папці avrdude і копіюю в bat цей рядок

avrdude -c usbasp -p atmega328p -U flash: w: a328p_8MHz_e2_de_5.hex -U lfuse: w: 0xe2: m -U hfuse: w: 0xde: m -U efuse: w: 0x5: m

@echo This batch file

-Запускаю bat файл. Якщо ліньки створювати bat файл, можете завантажити його тут.

Arduino - приклади, експерименти - кіт в пальто

Якщо все зроблено правильно, ви побачите щось подібне

Arduino - приклади, експерименти - кіт в пальто

Це означає, що все пройшло добре і на наш мікроконтролер залився завантажувач Ардуіно. Тепер ми зможемо прошивати його прямо з середовища програмування Arduino.

Якщо ви десь накосячілі і щось зробили неправильно, можете побачити таке повідомлення:

Arduino - приклади, експерименти - кіт в пальто

Тут можуть бути різні причини:

-Можливо ви не правильно з'єднали програматор з мікрочіпом. Перевірте з'єднання.

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

-І третій варіант про який я не сказав, але з яким теж зіткнувся, коли порушували Atmega8. На якомусь форумі мені підказали, що мікрочіп працює на зниженій частоті і щоб прошити його, потрібно на программаторе замкнути перемичку JP3. Що власне мені і допомогло.

Arduino - приклади, експерименти - кіт в пальто

Якщо проблем у вас не виникло і завантажувач Arduino успішно записався на чіп, то переходимо до прошивці чіпа через середу програмування Arduino.
По-перше, якщо ви в онлайн конструкторі завантажувача вибирали "Внутрішній генератор", то кварцовий резонатор можна прибрати зі схеми.

Відкриємо середу розробки Arduino і запустимо класичний приклад моргання светодиодом:

Arduino - приклади, експерименти - кіт в пальто

Arduino - приклади, експерименти - кіт в пальто

Бачимо, що в прикладі вказано цифровий вихід 13. На мікрочіпі він відповідає ніжці 19

Arduino - приклади, експерименти - кіт в пальто

Оскільки цей висновок у нас зараз підключений до программатору під висновок SCK, то змінимо в програмі 13 висновок на 5.

Arduino - приклади, експерименти - кіт в пальто

І підключимо до нього світлодіод.

Arduino - приклади, експерименти - кіт в пальто

Вибираємо в Інструментах плату, чіп і програматор