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 - прерывания на любых пинах
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])