ATtiny – это серия самых маленьких микроконтроллеров из семейства AVR. Эти микроконтроллеры могут использовать большинство библиотек, доступных для платформы Arduino. ATtiny85 – это 8-пиновый 8-битный микроконтроллер семейства AVR. Его исключительно малый размер и низкое энергопотребление делают его чрезвычайно удобным для реализации небольших (в особенности переносных) проектов. Но его программирование может вызвать некоторые сложности у начинающих радиолюбителей поскольку у него нет USB интерфейса как у современных микроконтроллерных плат (например, Arduino).
В сети можно найти статьи по программированию микроконтроллера ATtiny85 с помощью платы Arduino Uno. Но использование платы Arduino в качестве ISP (In System Programming — внутрисистемное программирование) программатора для ATtiny85 не очень удобно и отнимает достаточно много времени. Поэтому в данной статье мы рассмотрим создание простого программатора для ATtiny85, который можно подключать к USB интерфейсу и, таким образом, программировать ATtiny85 как микроконтроллерную плату (с USB).
Также подобную готовую плату можно купить на Aliexpress (есть платы как с уже установленным микроконтроллером, так и с местом под его установку), в сети ее называют Digispark ATtiny85. В интернете можно найти достаточно много обзоров данной платы, лично мне понравился больше всего вот этот обзор — https://voltiq.ru/digispark-attiny85-review/.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress) — необходима только на начальном этапе, для первоначальной загрузки загрузчика.
- Микроконтроллер ATtiny85 (купить на AliExpress).
- USB A-type Plug Male – USB разъем “папа” A-типа.
- Резисторы 47 Ом (2 шт.) и 1 кОм (купить на AliExpress).
- Zener Diode (2 шт.) – диод Зенера, стабилитрон.
- Диод IN5819.
- 8-Pin IC Base — 8-пиновая основа (база) для микросхемы (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Краткие сведения о микроконтроллере ATtiny85
ATtiny85 – это высокопроизводительный 8-битный микроконтроллер с низким энергопотреблением, построенный на основе архитектуры Advanced RISC. Он имеет 8 Кбайт перепрограммируемой флеш-памяти (память программ), 512 Байт EEPROM (энергонезависимой памяти), 512 Байт оперативной памяти (SRAM), 6 контактов ввода/вывода общего назначения 32 регистра общего назначения, один 8-битный таймер/счетчик с режимом сравнения, один 8-битный высокоскоростной таймер/счетчик, USI (универсальный последовательный интерфейс), внутренние и внешние прерывания, 4-х канальный 10-битный АЦП (аналого-цифровой преобразователь), программируемый сторожевой таймер с внутренним генератором, 3 программно управляемых режима энергопотребления.
Назначение контактов (распиновка) микроконтроллера ATtiny85 приведено на следующем рисунке.
Большинство контактов ATtiny85 могут выполнять несколько функций.
Перепрограммируемый загрузчик ATtiny85 с использованием платы Arduino Uno
Для программирования ATtiny85 без использования платы Arduino мы сначала должны загрузить в него загрузчик используя плату Arduino Uno. Этот процесс выполняется один раз и в дальнейшем у нас не будет необходимости в использовании платы Arduino для программирования микроконтроллера ATtiny85. Загрузчик (bootloader) – это специальная программа, которая выполняется в микроконтроллере, который необходимо запрограммировать. Использование загрузчика – это один из самых удобных способов загрузки программы в микроконтроллер. Загрузчик находится в микроконтроллере и выполняет поступающие команды, а затем записывает новую программу в память микроконтроллера.
Перепрограммируемый загрузчик в микроконтроллере устраняет необходимость в использовании специальных внешних аппаратных средств (плат программирования, программаторов) для программирования микроконтроллера и позволяет загружать программу в микроконтроллер непосредственно с помощью USB соединения. Платы Digispark ATtiny85 (а выбор подобных плат сейчас достаточно большой) работают на загрузчике “micronucleus tiny85”, первоначально написанным Bluebie. Загрузчик – это программный код, который заранее загружен в плату Digispark и позволяет работать ей как USB устройство, которое можно программировать с помощью Arduino IDE. Мы будем использовать аналогичный подход и загружать загрузчик digispark attiny85 в наш микроконтроллер ATtiny85.
Для реализации этой задачи необходимо выполнить следующую последовательность шагов.
Шаг 1. Конфигурирование платы Arduino Uno в качестве ISP программатора.
Поскольку ATtiny85 является всего лишь микроконтроллером, для его программирования требуется ISP (In-System Programming — внутрисистемное программирование). Поэтому для программирования ATtiny85 нам необходимо сначала сконфигурировать плату Arduino Uno в качестве ISP программатора. Для этого подключите плату Arduino Uno к компьютеру и запустите Arduino IDE. После этого откройте пункт меню File > Example > ArduinoISP и загрузите в Arduino ISP код.
Шаг 2. Схема перепрограммируемого загрузчика ATtiny85.
Схема перепрограммируемого загрузчика ATtiny85 представлена на следующем рисунке.
Конденсатор 10 мкФ подключен между контактами Reset и GND платы Arduino. Все соединения схемы представлены в следующей таблице:
ATtiny85 Pin | Arduino Uno Pin |
Vcc | 5V |
GND | GND |
Pin 2 | 13 |
Pin 1 | 12 |
Pin 0 | 11 |
Reset | 10 |
После сборки схемы подключите плату Arduino Uno и запустите Arduino IDE. Определите к какому COM порту подключена плата Arduino Uno (в диспетчере устройств Windows). В нашем случае это COM5.
После этого скачайте файлы для загрузчика ATtiny85 по следующей ссылке. Откройте файл «Burn_AT85_bootloader.bat» и измените в нем COM порт с именем «PCOM5» на тот COM порт, к которому подключена у вас плата Arduino Uno. Сохраните изменения.
После этого скопируйте отредактированный файл «Burn_AT85_bootloader.bat» и файл ATtiny85.hex» в корневой каталог Arduino IDE (C:\Program Files (x86)\Arduino).
После этого сделайте клик правой кнопкой мыши на файле «Burn_AT85_bootloader.bat» и выберите «Run as Admin» (запуск от администратора). Необходимо примерно 5-6 секунд чтобы загрузчик загрузился. Если все прошло успешно, то вы должны увидеть сообщение «AVRdude done. Thank you. Press any key to continue…».
После выполнения этой операции загрузчик будет успешно установлен в микроконтроллер ATtiny85. После этого микроконтроллер ATtiny85 можно будет программировать через USB с помощью нашего самодельного программатора, который описан далее в статье.
Схема USB программатора для ATtiny85
Схема USB программатора для ATtiny85 представлена на следующем рисунке. В ней мы подключаем микроконтроллер ATtiny85 к разъему Male USB Plug. За основу схемы была взята схема платы Digispark ATtiny85, расположенная по следующему адресу.
R3 в данной схеме выполняет роль подтягивающего резистора и подключен между контактами Vcc и PB3 микроконтроллера. Стабилитроны D1-D2 используются для защиты USB интерфейса. После сборки программатора на перфорированной плате у нас получилась конструкция следующего вида:
Установка драйверов Digispark
Чтобы программировать ATtiny85 через USB вам необходимо установить на свой компьютер драйверы Digispark. Скачайте их по приведенной ссылке, извлеките их из zip архива и запустите на выполнение файл “DPinst64.exe” чтобы установить эти драйверы.
После того как драйверы будут успешно установлены, подключите собранную плату программатора с установленным в нее ATtiny85 к компьютеру. После этого откройте диспетчер устройств в Windows и найдите в нем устройство ATtiny85 в устройствах “libusb-win32 devices” под именем “Digispark Bootloader”. Если таким образом вам не удается найти ‘libusb-win32 devices’ в диспетчере устройств, нажмите в нем обзор и выполните поиск скрытых устройств (‘Show hidden Devices’).
Конфигурирование Arduino IDE для программирования ATttiny85
Для того, чтобы программировать плату ATtiny85 с помощью Arduino IDE сначала нам необходимо добавить поддержку платы Digispark в Arduino IDE. Для этого откройте пункт меню File > Preferences, добавьте следующую ссылку в Additional Boards Manager URLs в Arduino IDE и нажмите ‘OK.’
http://digistump.com/package_digistump_index.json
После этого откройте пункт меню tools > Board > Board Manager, выполните поиск ‘Digistump AVR’ и установите его последнюю версию.
После этого в инструментах вы обнаружите новый пункт меню с именем ‘Digispark’.
Затем откройте пункт меню file > Examples > Basics и откройте Blink example (пример с мигающим светодиодом).
Измените в коде этого примера номер контакта с LED_BUILTIN на 0.
После этого откройте пункт меню Tools -> Board и выберите плату “Digispark (Default – 16mhz)”. После этого в Arduino IDE нажмите кнопку загрузки кода.
Примечание: подключайте плату программатора ATtiny85 к компьютеру только тогда, когда в Arduino IDE появится сообщение “Plugin device now”.
После того как код программы будет загружен в плату с микроконтроллером, светодиод, подключенный к ATtiny85, начнет мигать.
Более подробно процесс работы платы нашего программатора можно посмотреть в следующем видео.
11 ответов к “USB программатор для ATtiny85 на основе загрузчика Digispark”
А на какое напряжение стоят Zener Diodes ?
Стабилитроны D1-D2 используются для защиты USB интерфейса, поэтому, я думаю, они должны быть на напряжение 5 В или чуть меньше
диод необходимо перевернуть. Строго говоря он тамвообще ненужен. Посмотрите любуюсхему USBASP программаторов. Этотдиодна дигиспарках защищает USB компа при питании от внешнего источника. Не более.
Хорошо, не буду спорить потому что не специалист в этих вопросах. Подождем, может быть еще специалисты здесь в комментариях отпишутся
Прошу прощения, я не понял почему так включен диод D2. Если микроконтроллер получает питание +5В от разъема USB, то при таком включении через диод на МК ничего не пройдет (если только нет внешнего питания, как на исходной схеме, но на видео все питается от USB). В чем секрет?
Честно говоря, не знаю, не очень силен в схемотехнике. Но если посмотреть оригинал данной схемы, то там данный диод включен точно таким же образом.
Это косяк того, кто публиковал эту схему. Диод шоттки, нужен для защиты USB порта, к которому может быть подключена плата во время подачи на нее внешнего питания. На китайских платах Digispark’a дион стоит в правильном положении, катодом в схему, анодом в USB.
Мы даже знаем имя этого чОрта:
Created by Erik Kettenburg. Digistump LLC — digistump.com 2012
т.е. рукожопы не только в россии живут)))
Ну ошибки в публикации результатов иногда у разработчиков случаются, что поделать
Добрый день! Не совсем понимаю. После всех действий с ардуино если я другой чип в колодку вставлю, для него все заново надо делать?
Добрый вечер. Да, без этого никак. Если вы вставите другой микроконтроллер, то в него нужно будет заново записать загрузчик. Но если ранее вы уже записывали в данный микроконтроллер загрузчик, то эта операция уже не потребуется