Товары из Китая

Attiny85 — мозг гирлянды



Attiny85 - мозг гирлянды

Как и обещал где-то в комментариях, расскажу как запрограммировать микроконтроллер Attiny85 без программатора при помощи Arduino. Мощности и памяти контроллера хватает чтобы гонять около 100 «умных» диодов WS2812B. А для новогоднего светильника в бутылке хватит и отрезка ленты с тремя десятками диодов. Если у вас завалялась плата ардуино, светодиоды и ATtiny85, то одного вечера будет достаточно для создания гирлянды со светоэффектами.

Attiny85 - мозг гирлянды

Эта инструкция написана для чайников, каковым я и себя считаю. Так что прошу прощения заранее за некоторый непрофессионализм в терминах и подходе. Расписано будет подробно по шагам, так что нужны только базовые знания, чтобы знать как выглядит чип, как считать ножки и подключать проводки. В сети полно инструкций как запрограммировать контроллер при помощи Arduino UNO. Но найти правильную инструкцию для Arduino Mega было нелегко. В конце концов я это преодолел.

Чтобы ориентироваться где какие ноги у контроллера, привожу распиновку тиньки. В сети встречаются картинки с неправильной нумерацией. Цианом нарисованы номера цифровых пинов, которые нужно использовать в коде программы.

Attiny85 - мозг гирлянды

Чтобы избежать разночтений, я буду использовать физические номера ног контроллера в корпусе dip8. Со стороны Ардуино Уно/Мега используются номера написанные на плате у разъемов.

Ардуино как программатор

  • Готовим Arduino IDE для работы с Attiny85. Идем Tools—> Board—>Boards Manager, набираем в поиске ATtiny и ставим пакет «ATtiny by David. A Mellis». В списке должен появиться ATtiny 25/45/85. Если не появился (старый IDE), то перегружаем программу.
  • Подключаем Arduino к компьютеру, открываем File—>Examples—> 11. Arduino ISP—>ArduinoISP. Ничего менять не надо. Выбираем Tools-> Board -> Arduino/Genuino Mega or Mega 2560 (или Uno если вы используете ее), далее выбираем Tools->Processor->ATmega2560, прошиваем плату ардуино — теперь она будет нашим программатором.

Самое сложное — подключить ATtiny.

Вариант для Arduino Mega 2560:

Attiny85 - мозг гирлянды

Для Arduino UNO используется другой набор:

Arduino Uno—> ATtiny85

5V -> 8 Vcc

GND -> 4 GND

13 -> 7 SCK

12 -> 6 MISO

11 -> 5 MOSI

10 -> 1 Reset

Выбираем простой пример (File—>Examples—>01. Basics->Blink) Его и будем шить в тиньку, чтобы убедиться, что всё работает и программируется. В примере везде меняем LED_BUILTIN на 0 (0й цифровой пин — это будет 5я ножка чипа)

Выбираем:

  • Tools-> Board -> ATtiny25/45/85
  • Tools->Processor->ATtiny85
  • Tools->Clock->Internal 1MHz
  • Tools->Programmer->Arduino as ISP

Теперь прошиваем программу моргания светодиодом — Sketch-> Upload using programmer.

Attiny85 - мозг гирлянды

Может так случиться, что прошивальщик выдаст ошибку, что не совпадает сигнатура. В этом случае скорее всего где-то плохой контакт. У меня пару раз такое случилось. Надо поправить ножки контроллера, хорошенько вдавить его в отверстия breadboard или воспользоваться разъемом, поправить/поменять провода. После того как прошивка удалась, собираем тестовую схему для проверки, что светодиод моргает, как написано в программе, с интервалом в 1 сек.

Гирлянда

Теперь мы готовы делать наш светильник/гирлянду. Ставим чип из нашей диодной моргалки обратно на прошивку. Тут как раз удобно иметь разъем для чипа, который всегда будет подключен как надо, а мы будем только втыкать чип уже не думая о том куда какие провода подключать. У меня год пролежал сокет подключенным к ардуине и через год я воткнул микроконтроллер и без проблем прошился. Для этой статьи я только проверил, что всё работает как надо и зарисовал схему.

Начнем с разгона нашего контроллера. Так как никаких внешних компонент мы не используем, то ограничимся внутренним генератором, который максимально поддерживает 16МГц. Выбираем Tools->Clock->Internal 16MHz. Далее Tools->Burn Bootloader. Внешне ничего не произойдет, но в чипе буду перешиты фьюзы, которые определяют режим работы контроллера. Будьте осторожны с выбором частоты. Если вы случайно прошьете Clock->External ??MHz то без внешнего кварца с этим чипом вы уже работать не сможете.

Attiny85 - мозг гирлянды

Далее ставим библиотеку FastLED и открываем пример File—>Examples—>FastLED->DemoReel100

Меняем:

  • DATA_PIN 0

    Помним — это будет 5я ножка на ATtiny85.

  • LED_TYPE WS2812B

    Или загляните в файл FastLED.h чтобы найти ваш тип диодной ленты.

  • NUM_LEDS 30

    Пропишите сколько диодов вы отрезали для своей гирлянды. До 100 должны работать почти все эффекты. Для экспериментов можно ленту не резать, а посмотреть сколько диодов потянет чип с выбранными эффектами. Некоторые эффекты требуют больше памяти, некоторые меньше, так что реальное количество вы узнаете экспериментируя с программой.

  • FRAMES_PER_SECOND 30

    Изначально стоит 120, но особого смысла в этом не вижу, а частота и мощность нашего контроллера ограничена. 30 кадров в секунду работает неплохо.

  • Находим строчку со списком эффектов, которые будут сменять друг друга

    SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };

    Для своей гирлянды в бутылке я оставил 4 эффекта:

    SimplePatternList gPatterns = { rainbowWithGlitter, confetti, sinelon, juggle };

  • Можно поиграться с интервалом смены эффектов и смены базового цвета. Для этого поправьте цифры в следующих строчках:

    EVERY_N_MILLISECONDS( 20 ) { gHue++; }

    EVERY_N_SECONDS( 10 ) { nextPattern(); }

Готово — гирлянда работает. Год назад я так и оставил. Прицепил к одному чипу две ленты диодов и они управлялись одним сигналом. Повесил обе гирлянды на елку.

Лампа

В этом году решил сделать настольную праздничную лампу:

  • отрезал 30 диодов
  • припаял USB разъем к ленте
  • перешил чип на 30 диодов
  • чип припаял прямо к контактам ленты и скрыл в термоусадке
  • чтобы елочная мишура случайно не закоротила чего на ленте, все контактные площадки закрыл термоусадкой, а открытые контакты диодов замазал клеем PVA, так как лака дома не нашлось 🙂
  • в бутылку из под виски засунул гирлянду и елочную мишуру
  • подключил к простой 1.5А зарядке для телефонов. Её достаточно для 30 диодов. Для длинной гирлянды источник нужен мощнее.

Attiny85 - мозг гирлянды

Attiny85 - мозг гирлянды

Всё получилось, всё работает, бутылка лежит на работе и создает праздничное настроение команде.

Использованные материалы:

  • DIP8 sockets
  • ATtiny85 сейчас по ссылке только 2 штуки за раз, год назад я брал десяток
  • Диоды в ленте WS2813
  • Разъемы micro USB
  • Arduino Mega 2560

ЗЫ. Прошивал чип впервые год назад, когда делал гирлянду, поэтому некоторые подробности мог упустить. Спрашивайте, если что не получается.

ЗЗЫ. Вискарь из бутылки лучше выпить заранее, чтобы работе ничего не мешало.


СМОТРИ ТАКЖЕ