Елочка на WS2812 и ATTiny13A

402Уже на за горами новогодние праздники и душа периодически просит праздника. Душа радиолюбителя может эти праздники создавать.

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

000

Решил, что эффект метеора или стартующей ракеты в данной елке будет неплохо смотреться. Но не Ардуину же туда ставить! Нужно что-то предельно простое и миниатюрное, работающее от батарейки. И чудо — получилось создать эффект метеора на самом младшем AVR контроллере — Attiny13. Итак, статья о том что и как получилось.

 

Использованные компоненты

Итоговый бюджет около $3

Если запитать елочку от USB Или зарядника, то не нужна схема преобразователя и держатель батареек и бюджет уменьшается до $2 — $2.5, а если найти готовую игрушку, в которую можно встроить схему, то и во все 100 руб.

Для микроконтроллера с 64 байтами!!! оперативной памяти и 1 Кбайтом флэша под программу нечего думать об использовании ардуиновских библиотек вроде NeoPixel, которые я использовал в предыдущих проектах с WS2812. Для маленьких тинек я нашел библиотеку с минимумом возможностей, написанную на ассемблере и влезающую даже в ATtiny10.

Светодиоды WS2812 очень прожорливые и яркие и работают от 5В (ну хотя бы от лития 3.7В). Поэтому никакие литиевые CR2032 И прочие в этом проекте не годятся. Использовал повышающий стабилизатор на BL8530 о котором рассказывал в этой статье. Получилось, что для экономии места можно запитать мою поделку от 1-й или 2-х батареек (АА или ААА).

Правда одного аккумулятора ААА хватает только на два часа непрерывной работы, зато двух уже на 5 часов, а одной алкалиновой батарейки АА часов на десять. Можно упростить питание и использовать литиевый аккумулятор 3.7В напрямую или 5В от USB или на худой конец три штуки ААА. Тогда преобразователь можно не делать.

Я же сделал универсальную схему для встраивания в различные елочные игрушки, макушечки и прочее.

%d1%81%d1%85%d0%b5%d0%bc%d0%b0-attiny13-1

В качестве микроконтроллера подойдет любая тинька начиная с ATtiny13A

AVR-ки я прошиваю через самодельный программатор на Arduino Nano

102

Подробнее о программировании тинек в Arduino IDE я рассказывал в этой статье.

На программаторе сразу удобно прогнать все эффекты до впаивания микроконтроллера в плату.

101

И проверять их в корпусе елочки.

403

Вырезаю на станке простейшую миниатюрную плату с монтажом на стороне меди

%d0%bf%d0%bb%d0%b0%d1%82%d0%b0

Размер платы 40х10 мм, что вполне позволяет ей замещать одну батарейку в держателе.

Лета припаивается прямо к плате либо при помощи трех проводков.

200

Загрузив программу, можно все это добро собирать вместе с елочкой

Дизайн этой платы немного другой, в корпусе DIP8 на панельке, на котором удобнее отлаживаться.

400

И вот елочка собрана

402

Эффект метеора или ракеты на ATtiny13

Полученный эффект можно посмотреть здесь

Эффект радужной волны

Прошлогоднего эффекта метеора или стартующей ракеты (в зависимости от направления) мне показалось мало и я сделал елочке эффект радужной волны.

К сожалению, оба эффекта в память ATtiny13 не влезли. Зато отлично поместились в новогодний фонарик-ночник вместе с другими эффектами и управлением по хлопку через микрофон в память ATtiny85. Но это уже совсем другая статья.

300

Скетчи, подправленная библиотека (выкинул немного кода) и чертеж платы можно взять здесь.

 

Вы можете оставить отзыв или трекбек со своего сайта.

42 комментария на «Елочка на WS2812 и ATTiny13A»

  1. Алексей, а можно то же самое, только на пять лучей на 13-й или только на ардуино?

    • Alexey Alexey:

      На 13-й тиньке больше 10 диодов не далось подключить
      Разве что всех лучей у звездочки/снежинки соединить вход данных параллельно
      А так 85-я тинька или Мега любая

  2. Алексей, у вас комменты то на русском то на инглиш

  3. Игорь:

    Скажите Алексей, а у Вас нет hex файла для прошивки тиньки через usb asp?

  4. Игорь:

    Извините Алексей, забыл спросить, какие фьюзы выставлять?

  5. лом:

    light_ws2812.cpp:72:5: error: #error «Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?»

    выдает при компиляции, 9.6 мгц

  6. serenya:

    Алексей, можно Вас попросить исходники «фонарика с хлопком» или хотя бы подправленный hex? Хочу в елочку засунуть бесхозную digispark без микрофона и управления.

  7. Андрей AG:

    Здравствуйте, Алексей. У меня валяется ATtiny12, у которой предельная тактовая — 8 МГц. Хочу запихать в неё «радугу» Для применения в танцевальном костюме для дочки. Если правильно понимаю, то простое выставление частоты в фьюзах на 8Мгц собьёт тактовую частоту для управления WS2812. В какой из подключаемых библиотек надо внести коррективы под эту частоту и насколько? Подозреваю, что это . Программа сама вроде не должна меняться?
    ЗЫ: и можно ссылочку, откуда загрузить все эти библиотеки?

  8. Андрей AG:

    блин, фразу обрезало: Подозреваю, что это util/delay.h

  9. Julio Rojas:

    Друг очень добрый день. Прекрасная работа. Я из Боготы Колумбии и поклонник электроники. Я хочу спросить тебя, что у меня есть мотоцикл, и я хотел бы сделать некоторые огни с этим типом светодиода ws2812, а attiny13a разместить их на задней части мотоцикла будет вы можете помочь мне, это мой адрес электронной почты, чтобы связаться с нами, спасибо вам большое. Julroj07@gmail.com

  10. А есть исходник под тини 13? Хекса маловато будет!

    • Alexey Alexey:


      /*
      * Эффект метеора на ATTINY13
      * Copyright (C) 2016 Алексей Шихарбеев
      * http://samopal.pro
      */

      #include
      #include
      #include

      #include "light_ws2812.h"

      // Количество светодиодов в ленте 8 - 15
      #define NUM_PIXEL 8
      #define TM 60

      struct cRGB led[NUM_PIXEL];
      uint8_t num_pixel = NUM_PIXEL;
      uint8_t DX = 2;

      int main(void)
      {

      while(1) {
      // Цикл перебора пары цветов 0-5
      for( uint8_t i=0; i<6; i++)Mode1(TM,i);
      }
      }

      /*
      * Эффект метеора
      * @param wite - Таймаут между фазами эффекта, мс
      * @param pair - пара цветов 0-5
      */
      void Mode1(uint16_t wait, uint8_t pair){
      uint8_t x = 1;
      if( num_pixel > 8 ) x = 0;
      // Метеор летит
      for( uint8_t i1=0; i1 15 )br=15;
      if( br < 8 ){ switch( pair ){ case 0 : case 3 : led[n].r = br*32; break; case 1 : case 4 : led[n].g = br*32; break; case 2 : case 5 : led[n].b = br*32; break; } } else { switch( pair ){ case 0 : led[n].r = 255; led[n].g = (br-8)*32; break; case 1 : led[n].g = 255; led[n].b = (br-8)*32; break; case 2 : led[n].b = 255; led[n].r = (br-8)*32; break; case 3 : led[n].r = 255; led[n].b = (br-8)*32; break; case 4 : led[n].g = 255; led[n].r = (br-8)*32; break; case 5 : led[n].b = 255; led[n].g = (br-8)*32; break; } } }

      Библиотеки для Тини нужны только по ссылке из статьи

  11. Andrej:

    Добрый день.
    Если Вы тут еще бываете, может поможете?
    Хотел бы на основе Вашей работы разобраться с библиотекой Light_WS2812. Нет ли у Вас исходника НЕ для ARDUINO IDE? Или надо в ARDUINO IDE загнать платформу ATTiny?
    Кстати, по ходу дела вопрос, как же в АТТини13-ю залез НЕХ больше 1 кВ?
    С ув.,
    Андрей

    • Alexey Alexey:

      Можно для поддержки Attiny поставить пакет поддержки в Ардуино IDE
      Можно попробовать компилировать в любой другой среде. В коде нет привязки к Arduino IDE в виде loop() и прочих. Обычный Си++
      HEX больше одного килобайта потому что это не BIN-формат. Каждый байт кодируется двумя байтами — его шестнадцатеричной записью

  12. Arman:

    Hi!I’m Arman from Bangladesh.Your project is very nice.After seeing your project,i got inspired to make it.But when i went to do this project.I’m facing some difficulties.
    I’m using Arduino Uno to programme ATTiny13a(Using latest arduino ide&Attiny hardware library).When i upload the simple blink sketeches,i can upload the code in ATTiny using Arduino as ISP.But whenever i went to use your code for this project,the arduino ide says»Compiling Error for ATTiny13A».Then i used your method to compile the code from your another blog where you told how to programme ATTiny13A using Arduino IDE.I followed this tutorial according to your instructions as well as same version(1.6.5)of Arduino ide,same hardware librabry also same library of WS2812B.Nevertheless,i got the same error message.I’m trying to make this project from around two weeks ago.I did my best.But i failed.Would you mind helping me?
    One things should be noted that i didn’t understand this line «I am flashing AVRs through a makeshift programmer on the Arduino Nano».I googled it but didn’t find any necessary things.

  13. Артем:

    Здравствуйте. Решил по вашей статье повторить эффект радуги для небольшого ночника. При компиляции в Arduino IDE получаю ошибку:

    light_ws2812.cpp:72:5: error: #error «Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?»

    #error «Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?»

    ^~~~~

    exit status 1
    #error «Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?»

    Что и где нужно поправить? Спасибо!

  14. Андрей:

    Собрал снежинку 10 диодов в луче плюс маленькие «рожки» по середине и в конце луча. Залил эффект переливание. Я в полном восторге. Огромное спасибо за ваш труд.

  15. Alex:

    Привет, Алексей! Эффект радужной волны попытал в Протеус, пока тиньки и светики едут от наших друзей. Нет оранжевого и желтого цвета, это глюк симуляции? И как сделать смену цветов ну очено медленно — 1-2 минуты?

    • Alexey Alexey:

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

Ваш отзыв на Alexey

Вы должны войти, чтобы оставлять комментарии.