RSS блога
Подписка
Attiny85 - мозг гирлянды
Как и обещал где-то в комментариях, расскажу как запрограммировать микроконтроллер Attiny85 без программатора при помощи Arduino. Мощности и памяти контроллера хватает чтобы гонять около 100 «умных» диодов WS2812B. А для новогоднего светильника в бутылке хватит и отрезка ленты с тремя десятками диодов. Если у вас завалялась плата ардуино, светодиоды и ATtiny85, то одного вечера будет достаточно для создания гирлянды со светоэффектами.
Эта инструкция написана для чайников, каковым я и себя считаю. Так что прошу прощения заранее за некоторый непрофессионализм в терминах и подходе. Расписано будет подробно по шагам, так что нужны только базовые знания, чтобы знать как выглядит чип, как считать ножки и подключать проводки. В сети полно инструкций как запрограммировать контроллер при помощи Arduino UNO. Но найти правильную инструкцию для Arduino Mega было нелегко. В конце концов я это преодолел.
Чтобы ориентироваться где какие ноги у контроллера, привожу распиновку тиньки. В сети встречаются картинки с неправильной нумерацией. Цианом нарисованы номера цифровых пинов, которые нужно использовать в коде программы.
Чтобы избежать разночтений, я буду использовать физические номера ног контроллера в корпусе dip8. Со стороны Ардуино Уно/Мега используются номера написанные на плате у разъемов.
Самое сложное — подключить ATtiny.
Вариант для Arduino Mega 2560:
Для 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я ножка чипа)
Выбираем:
Может так случиться, что прошивальщик выдаст ошибку, что не совпадает сигнатура. В этом случае скорее всего где-то плохой контакт. У меня пару раз такое случилось. Надо поправить ножки контроллера, хорошенько вдавить его в отверстия breadboard или воспользоваться разъемом, поправить/поменять провода. После того как прошивка удалась, собираем тестовую схему (простенький светодиод и сопротивление 220Ом) для проверки, что светодиод моргает, как написано в программе, с интервалом в 1 сек.
Начнем с разгона нашего контроллера. Так как никаких внешних компонент мы не используем, то ограничимся внутренним генератором, который максимально поддерживает 16МГц. Выбираем Tools->Clock->Internal 16MHz. Далее Tools->Burn Bootloader. Внешне ничего не произойдет, но в чипе буду перешиты фьюзы, которые определяют режим работы контроллера. Будьте осторожны с выбором частоты. Если вы случайно прошьете Clock->External ??MHz то без внешнего кварца с этим чипом вы уже работать не сможете.
Далее ставим библиотеку FastLED и открываем пример File-->Examples-->FastLED->DemoReel100
Меняем:
В этом году решил сделать настольную праздничную лампу:
Всё получилось, всё работает, бутылка лежит на работе и создает праздничное настроение команде.
Использованные материалы:
ЗЗЫ. Вискарь из бутылки лучше выпить заранее, чтобы работе ничего не мешало.
Обновление: добавил картинку с тестовой схемой к мигалке простым светодиодом.
Эта инструкция написана для чайников, каковым я и себя считаю. Так что прошу прощения заранее за некоторый непрофессионализм в терминах и подходе. Расписано будет подробно по шагам, так что нужны только базовые знания, чтобы знать как выглядит чип, как считать ножки и подключать проводки. В сети полно инструкций как запрограммировать контроллер при помощи Arduino UNO. Но найти правильную инструкцию для Arduino Mega было нелегко. В конце концов я это преодолел.
Чтобы ориентироваться где какие ноги у контроллера, привожу распиновку тиньки. В сети встречаются картинки с неправильной нумерацией. Цианом нарисованы номера цифровых пинов, которые нужно использовать в коде программы.
Чтобы избежать разночтений, я буду использовать физические номера ног контроллера в корпусе 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:
Для 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
Может так случиться, что прошивальщик выдаст ошибку, что не совпадает сигнатура. В этом случае скорее всего где-то плохой контакт. У меня пару раз такое случилось. Надо поправить ножки контроллера, хорошенько вдавить его в отверстия breadboard или воспользоваться разъемом, поправить/поменять провода. После того как прошивка удалась, собираем тестовую схему (простенький светодиод и сопротивление 220Ом) для проверки, что светодиод моргает, как написано в программе, с интервалом в 1 сек.
Гирлянда
Теперь мы готовы делать наш светильник/гирлянду. Ставим чип из нашей диодной моргалки обратно на прошивку. Тут как раз удобно иметь разъем для чипа, который всегда будет подключен как надо, а мы будем только втыкать чип уже не думая о том куда какие провода подключать. У меня год пролежал сокет подключенным к ардуине и через год я воткнул микроконтроллер и без проблем прошился. Для этой статьи я только проверил, что всё работает как надо и зарисовал схему.Начнем с разгона нашего контроллера. Так как никаких внешних компонент мы не используем, то ограничимся внутренним генератором, который максимально поддерживает 16МГц. Выбираем Tools->Clock->Internal 16MHz. Далее Tools->Burn Bootloader. Внешне ничего не произойдет, но в чипе буду перешиты фьюзы, которые определяют режим работы контроллера. Будьте осторожны с выбором частоты. Если вы случайно прошьете Clock->External ??MHz то без внешнего кварца с этим чипом вы уже работать не сможете.
Далее ставим библиотеку 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 диодов. Для длинной гирлянды источник нужен мощнее.
Всё получилось, всё работает, бутылка лежит на работе и создает праздничное настроение команде.
Использованные материалы:
- DIP8 sockets
- ATtiny85 сейчас по ссылке только 2 штуки за раз, год назад я брал десяток
- Диоды в ленте WS2813
- Разъемы micro USB
- Arduino Mega 2560
ЗЗЫ. Вискарь из бутылки лучше выпить заранее, чтобы работе ничего не мешало.
Обновление: добавил картинку с тестовой схемой к мигалке простым светодиодом.
Самые обсуждаемые обзоры
+102 |
3959
231
|
+158 |
5142
124
|
+45 |
2035
66
|
+37 |
1708
40
|
Была также идея без всякого шланга залить в бутылку масло. Но больше нравится идея — разрезать бутылку и засунуть внутрь аккумулятор и зарядку, может даже беспроводную. Тогда работать сможет без проводов.
Стенки бутылки приятно рассеивали свет от WS2811.
С контроллером я халявил, конечно, и поставил ESP8266 и 18650.
я не говорю уже о покупке
не надо все доводить до идиотизма (бабская манера)
Просто не нужно в вопросах программирования пользоваться гиперболизацией, любой значит любой, почти любой значит почти любой, на порядок значит в 10 раз итд итп.
ты на них писал, я про них слышал краем уха
как думаеш, есть ли тут еще кто-то, кто про них вообще что-то знает?
если я говорю все, то значит это все авр и автоматом подразумеваются тиньки и меги ходовые у паял
не у профи каких-то, а у простых паял, т.к. тут сидит немного домашних паял, а в основном просто обычные, кто хотел бы, да «всерукинедоходят» и тупо поглощают контент
чем страдают совковые ботаны? непомерным чсв и стремлением показать свои никому не нужные крутые знания, за что их обычно бьют или чморят
или проще говоря — не надо умничать
А уж если и это «верх возможностей», то рано еще за паяльник браться.
Дигиспарк so8w платка в два раза дешевле :)
Главное, что они решают вопрос «здесь и сейчас», а цена… ну за скорость цена растет, что поделать.
В оффлайне (Промэлектроника) одна микруха в дип стоит емнип 168р.
tiny85 стоит 4,5$ за две штуки.
Arduino Nano стоит от 2$ за штуку. При этом имеет на борту всё нужное.
Если надо помельче (хотя зачем), то Pro MIni где-то от 1.5$. Правда требует адаптера USB-USART.
Или это как демонстрация работоспособности идеи? Ну так понятно, что работать будет — куда оно денется.
Да, кстати, на питание AVR очень рекомендуется вешать керамический конденсатор от 0.1мкФ. Ну и на RST тоже.
Если уж навесным монтажём вешаете.
Конструктивная критика приветствуется. Я ж написал — я чайник :) Я понимаю, что ногам болтаться в воздухе негоже, особенно RST. Но тут и железка не такая ответственная.
— как использовать Arduino Mega 2560 в качестве прошивальщика. Год назад упарился искать правильное подключение.
— показать, что копеечного контроллера с крошечным объемом памяти хватает на вполне жизненную поделку
— pro mini — под пробку не засунешь, уже будет торчать и надо как-то облагородить плату
— pro mini накладывает меньше ограничений, т.к. имеет в 2-4 раза больше памяти
Вот это совсем неочевидно — памяти мало.
Если поковыряться, может можно так же шить через ардуино без адаптера?
если паяльник не 100ваттный «топор», то без проблем можно подпаяться и к ней, или посадить на soic-dip адаптер.
а залить прошивку можно вообще 1000 и 1 способом, вплоть до — вручную, с несколькими проводками и батарейкой из кокоса))
Лучше уж тогда лот из 10 штук у этого же продавца взять за 9.73 с бесплатной доставкой.
сейчас пойду мусор выносить и думаю в ящике уже пришла эта платка и еще куча всего
но можно сделать пробку побольше и батарейку туда еще засунуть
Остальное всё как написано.
ХОЧУ!!!!1111адынадын
Мало того, что питание 1.5 вольта так еще и через резистор…
Да и для «тиньки» маловато 1.5 вольта.
3 батарейки подключены на рисунке параллельно!
Вся затыка с Blynk, не компилируется, да и знаний не хватает. Но постараюсь разобраться и успеть.
уже повторил сегодня на arduino pro mini с гирляндой на 50 светодиодов :))