Digispark. Начало работы, особенности

Digispark – неофициальное семейство Arduino-совместимых плат от Digistump. Эти ребята из США делают отладочные платы на различных микроконтроллерах и шилды для них. Китайцы быстро смекнули, что дигиспарк на базе ATtiny85 – отличная штука и начали продавать свою версию. До кризиса полупроводников плата стоила около 80 рублей – что весьма приятно для основы небольшого проекта. В этом уроке рассмотрим именно дигиспарки на базе ATtiny85, вы можете видеть их на картинке выше в разных модификациях.

Купить на Aliexpress


Дёшево купить Дигиспарк всех трёх видов можно тут: ссылка, ссылка, ссылка.

Версии плат


Первая сама плата вставляется в USB, вторая и третья – подключается по micro USB. Отдельное спасибо тому, кто проектировал плату: работать с ней на брэдборде – то ещё приключение.

Четвёртая плата является “пустышкой”, в которую можно вставить ATtiny в DIP-8 корпусе. Пины выведены так, что можно удобно подключать USB ASP программатор, но работать на макетке опять же не выйдет. Можно прошить загрузчик от дигиспарк и прошиваться по USB.

В чём прикол?


ATtiny85 – микроконтроллер AVR из младшей серии, имеет всего 8 ножек. А также:

  • Flash память: 8 кБ
  • SRAM память: 512 Б
  • EEPROM память: 512 Б
  • Частота ядра: до 32 МГц внутренний клок
  • Таймеры: 2 штуки 8 Бит
  • GPIO: 6 пинов (5 + RST)
  • ШИМ: 3 пина
  • АЦП: 10 Бит 4 пина
  • USI: UART, I2C
  • SPI
  • Макс. ток с пина: 20 мА

В то же время это относительно свежая модель и в ней используются некоторые новые технологии, которых нет в той же ATmega328 (Arduino UNO/Nano), например:

  • PLL – умножитель частоты. МК может тактироваться от внутреннего источника с частотой 16 МГц и выше (мы разгоняли до 32 МГц)
  • Соответственно высокочастотный ШИМ
  • Улучшенный таймер, умеет делать аппаратный deadtime
  • Встроенный усилитель АЦП – можно измерять термопару без внешних железок
  • Дифференциальный АЦП

Основная фишка этих плат – программный USB, то есть USB порт подключен напрямую к пинам микроконтроллера! Что это даёт:

  • Плата может прикидываться USB HID устройством (клавиатура, мышь, геймпад, MIDI)
  • Загрузка прошивки по USB (используется загрузчик Micronucleus)
  • Экономия на отсутствии USB-UART преобразователя, плата стоит дешевле
  • Можно спалить компьютер, если неаккуратно подключать USB пины во всякое

Официальная документация


Находится здесь.

Начало работы


Установка официального ядра DigistumpArduino:

  • Запустить Arduino IDE, перейти в Файл/Настройки/
  • В окошко “Дополнительные ссылки…” Вставить
    • http://digistump.com/package_digistump_index.json
    • или https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
  • Нажать ОК
  • Перейти в Инструменты/Плата/Менеджер плат… Начать вводить в поиске “Digispark”. Выбрать и установить Digistump AVR Boards
  • Теперь в списке плат Инструменты/Плата/ появится семейство плат Digispark! Выбираем первую Digispark (Default – 16.5mhz)

Новая версия ядра!


Официальное ядро сильно устарело (+ там старая версия компилятора, некоторые вещи не компилируются), рекомендую использовать ядро ATTinyCore:

  • Ссылка для менеджера плат: http://drazzy.com/package_drazzy.com_index.json
  • Плату выбирать ATtiny85 (Micronucleus / DigiSpark)

Драйвер


  • Нужно установить драйвера, скачать можно на официальном GitHub проекта (в разделе Релизы, вот прямая ссылка на архив), либо с моего FTP. Драйвера есть для Win, MacOS и Linux.
  • Пользователям Linux читать здесь

Прошивка загружается следующим образом: ПЛАТУ НЕ ПОДКЛЮЧАЕМ, ПОРТ НЕ ВЫБИРАЕМ, нажимаем загрузка, ждём компиляции. Появится надпись “подключите плату”. Втыкаем плату в USB и прошивка загружается.

Распиновка


Нумерация пинов:

  • Цифровые пины – по подписям на плате (без буквы): подадим HIGH на P0: digitalWrite(0, HIGH)
  • К аналоговым пинам – по номеру вывода АЦП (как на распиновке). Читаем с пина P2: analogRead(1)

Пройдёмся по особенностям пинов:

  • P0: ничего особенного
  • P1: подключен светодиод. Пин не может работать в режиме INPUT_PULLUP
  • P2: ничего особенного
  • P3: USB пин. Подтянут к VCC резистором на 1.5 кОм
    • Не трогать этот пин, если нужна работа USB, также на момент загрузки прошивки!
    • Нет смысла в режиме INPUT_PULLUP
  • P4: USB пин
    • Не трогать этот пин, если нужна работа USB, также на момент загрузки прошивки!
  • P5: на оригинальных платах “отключен” от RST при помощи программатора. На китайских платах – нет. Поэтому:
    • Не использовать как выход
    • Не подавать низкий сигнал (МК перезагрузится)
    • Можно измерять аналоговый сигнал до VCC/2 (до 2.5V при питании от 5V)

Стороннее ядро


Официальное ядро Digispark не обновлялось с 2016 года, при наличии ISP программатора рекомендуется использовать вот это ядро, для чего нужно будет прошить загрузчик (подробно разбирали вот в этом уроке).

Ссылка для менеджера плат: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

Библиотеки


Большинство Arduino-библиотек совместимы с дигиспарком, также у него есть свой набор встроенных библиотек (ссылка на библиотеки в новом ядре). Из них можно выделить:

  • Adafruit_NeoPixel – оптимизированная библиотека для адресной ленты
  • DigisparkJoystick – USB джойстик
  • DigisparkKeyboard – USB клавиатура
  • DigisparkMouse – USB мышь
  • DigisparkSoftSerial – программный Serial. Название отличается от стандартной библиотеки!
  • DigisparkTinyPinChange – прерывания на любых пинах

Полезные страницы


5/5 - (4 голоса)
Подписаться
Уведомить о
guest

20 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии