Когда я увидел реализацию программатора vusbtiny [2] на сайте simpleavr.com, построенную на ATtiny45, то подумал - было бы здорово создать его кит-версию минимально возможного размера. Тогда я разработал печатную плату и отправил первый прототип на изготовление. Затем пришла мысль, что если я хочу хорошо продать свою разработку, то проекту больше подойдет концепция открытого аппаратного обеспечения, что добавит ему популярности в продвижении. Я также попытался добавить кое-что новое к устройству, и так появился проект Little Wire (здесь приведен перевод авторской статьи [1]).
Little Wire представляет собой многофункциональный инструмент USB с открытой аппаратурой OSHW (Open Source Hardware, т. е. и схема, и разводка печатной платы, и программное обеспечение доступны для свободной закачки), собранной на плате небольшого размера (разработка ihsan Kehribar).
Я обратился за содействием к Seeedstudio, они сделали все подготовительные работы для меня, и первые киты Little Wire появились в июне 2012 года. После окончания контракта в апреле 2013 было принято решение не делать больше этот кит на заказ. Сейчас Вы не сможете купить готовые, собранные киты Little Wire, но поскольку это OSHW-проект, то Вы свободно можете изготовить свою собственную версию.
Текущая версия firmware/software для Little Wire v1.3. Если Ваш Little Wire загружен не версией firmware v1.3 или v1.2, то все еще можно посетить старую страничку проекта (http://littlewire.cc/oldsite/index.html) для получения нужной информации, или Вы просто можете загрузить архивные релизы software/firmware на странице загрузки (downloads) [1] (см. также [7]). Я советую использовать последнюю версию программного обеспечения. Ниже описано, как можно выполнить обновление.
Прим. переводчика: автор почему-то забыл упомянуть - наверное подумал, что все знают, само собой разумеется - firmware микроконтроллера, которое работает как устройство USB, написано на основе библиотеки V-USB.
Основные возможности Little Wire:
• usbtinyisp-совместимый программатор микроконтроллеров AVR [9]. • 4 канала GPIO (программируемые порты ввода/вывода). • ADC (цифро-аналоговый преобразователь) с разрядностью 10 бит. • 2 параллельно работающие, аппаратные выхода PWM (ШИМ, широтно-импульсная модуляция). • Интерфейс SPI. • Интерфейс I2C. • Интерфейс 1-Wire. • Интерфейс управления светодиодами RGB LED WS2812. • Поддержка нескольких устройств на шине USB.
Экспериментальные возможности:
• 3 параллельных канала программно организованного PWM. • printf-отладка через выводы программатора AVR-ISP. • Программатор PIC24F с ограниченной поддержкой устройств. • Преобразователь USB/UART (если в память микроконтроллера загрузить порт проекта CDC-232 [3]). Максимальная скорость обмена составляет около 4800 bps (бит/сек).
Примечание: Little Wire получает управляющие инструкции от хоста USB, поэтому он предназначен для работы только вместе с компьютером.
В таблице приведена цоколевка выводов Little Wire и их назначение.
Метка
usbtinyisp
Hard PWM
Soft PWM
ADC
I2C
SPI
Onewire
WS2812
CDC-232
pin1
MISO
CH_B
CH_2
-
-
DO
-
DATA
TX
pin2
SCK
-
CH_3
CH_1
SCL
SCK
DATA
DATA
RX
pin3
RESET
-
-
CH_0
-
CS
-
DATA
-
pin4
MOSI
CH_A
CH_1
-
SDA
DI
-
DATA
-
Схема и общий вид на разводку:
[Управляющее программное обеспечение (ПО хоста)]
При выходе первого релиза мной были написаны библиотеки с поддержкой C, C++, C# и Processing. Позже поддержка многочисленных библиотек стала обременительной, так что с релизом Little Wire v1.3 я забросил поддержку библиотек C++, C# и Processing. Если Вы все еще используете firmware версий v1.0 / v1.1, то нужные версии библиотек с поддержкой этих языков найдете в архивных релизах (можно скачать в архиве [7]). Предупреждаю Вас, что библиотеки ПО хоста не обратно-совместимые, и я определенно советую Вам залить firmware одной из последних версий (хотя бы v1.2) в память микроконтроллера Вашего устройства. Doxygen-документацию для библиотеки C можно найти тут: http://littlewire.cc/documentation/.
Если Вы хотите получить больше информации о том, как делать ПО хоста для Little Wire, просмотрите пожалуйста папку примеров examples. Если Вы хотите туда добавить свой пример (или если Вы нашли ошибку в одном из уже опубликованных примеров), то пожалуйста откройте тикет с запросом (или описанием проблемы).
Хотя это неофициальная, и неполная библиотека поддержки Little Wire, она хорошо разработана и заслуживает упоминания. Библиотека littlewire.rb поддерживается @Bluebie (http://twitter.com/bluebie), и в ней имеется поддержка большинства функций Little Wire. Если Вы пишете на языке Ruby, и заинтересованы в управлении своим устройством Little Wire из программы на Ruby, то стоит обратить внимание на эту библиотеку. Подробности см. [4].
• Сначала загрузите в память чипа USB-загрузчик (micronucleus bootloader) [5], и правильно установите фьюзы микроконтроллера. Для этого Вам понадобится внешний ISP-программатор. Ниже приведен пример загрузки firmware из командной строки с помощью кроссплатформенной утилиты avrdude [6] и программатора vusbtiny [2] (можно конечно использовать любые другие имеющиеся у Вас в наличии программаторы AVR).
• Вы можете загрузить нужное программное обеспечение (firmware) в память микроконтроллера с помощью утилиты командной строки. Пример:
micronucleus littlewire_v13.hex
• Альтернативно Вы можете использовать удобную GUI-утилиту "single-click littlewire firmware installer", которую можете скачать на страничке downloads [1].
• Утилиту командной строки для micronucleus можно скачать с сайта проекта [5].
Примечание: все бинарники прошивок и утилиты можно скачать в архиве [7].
Такая ситуация может возникнуть, если Вы купили Little Wire у Seeedstudio. К сожалению, micronucleus bootloader еще не появился, когда я разрабатывал релиз v1.0 Little Wire. В этом случае Вы можете загрузить последнюю версию firmware Little Wire через уже имеющийся загрузчик. Однако я не рекомендую цепляться за старый бутлоадер, Вы должны поменять его на новый. Micronucleus действительно очень хорош...
• Если Вы испытываете проблемы с загрузкой firmware в память микроконтроллера, или с установкой фьюзов, то Вы можете использовать высоковольтный программатор (HVSP) типа STK500, AVR Dragon или высоковольтный сбрасыватель фьюзов наподобие "HV Rescue Shield" или "HSVP Fuse Resetter", чтобы вернуть Ваш чип в исходное состояние по умолчанию. После того, как Вы запретите фьюз RSTDISBL, микроконтроллер начнет откликаться на сигнал сброса, и Вы сможете применить обычный ISP-программатор (можно перейти к шагам "Если у Вас просто чистый чип ATtiny85").
• Вы также можете купить пустой чип ATtiny85 и начать с чистого листа (см. "Если у Вас просто чистый чип ATtiny85").
• Вы можете заменить Ваш bootloader через загрузку "upgrader firmware". Этот тип firmware имеет очень специфичное предназначение (поставляется Blubie (Jenna Fox)) - делается замена уже прошитого загрузчика загрузчиком micronucleus. Вы можете получить больше информации об этой технике по ссылке https://github.com/Bluebie/micronucleus-t85/tree/master/upgrade. Это весьма экспериментальная техника, но многие пользователи сообщают, что она работает, так что Вы её тоже можете попробовать.
Всю документацию, схемы, разводку печатной платы, библиотеки ПО хоста, прошивки для Little Wire Вы можете получить в разделе downloads страницы проекта [1], или скачайте архив по ссылке [7].
Примечание: не используйте идентификаторы Adafruit USB VID/PID без разрешения от Adafruit Industries, LLC и Limor "Ladyada" Fried (support@adafruit.com). Разрешение было получено для littlewire, Ihsan Kehribar и Seeed Studio by Adafruit Industries, LLC при использовании Adafruit USB VID/PID для littlewire (SKU:AVR06071P).
[Ссылки]
1. Little Wire site:littlewire.cc. 2. Программатор AVR vusbtiny. 3. AVR-CDC: виртуальный COM-порт через Low-Speed USB (используется библиотека V-USB). 4. littlewire.rb site:github.com - Ruby-библиотека ПО хоста для Little Wire. 5. Micronucleus bootloader site:github.com. 6. Avrdude site:ru.wikipedia.org. Страничка загрузок: avrdude site:download.savannah.gnu.org. 7. 141017littlewire.zip - документация, прошивки, разводка и схема печатной платы Little Wire и все утилиты, упомянутые в статье. 8. Fast tiny & mega UART bootloader site:avrfreaks.net. 9. AVR programmer & SPI interface site:learn.adafruit.com - проект usbtinyisp.