Site Loader

Oled часы на Attiny85

Добрый день и снова я со своими игрушками. Сегодня я представляю вам инструкцию по изготовлению маленьких, но симпатичных часов с комнатным датчиком температуры.
Oled часы на Attiny85
Oled часы на Attiny85

Список того что нам надо:
— Digispark Attiny85
— Oled дисплей 128х64 I2C
— Датчик температуры ds18b20
— Резистор 4.7 Ком 0.25 Вт
— ISP программатор или Arduino плата для прошивки Digispark Attiny85
— Пластиковый планшет с зажимом для бумаги или лист тонкого пластика
— Провода
— Dupont 2.54 мм «мама» разъемы
— Кнопки 2 шт.
— Маленькая монтажная плата или небольшой обрезок
— Паяльник
— Припой, канифоль
— Ножницами
— Канцелярским нож
— Термоклеевой пистолет
— Термоклей

Шаг 1 Выбор компонентов.
В качестве основного контролера будем использовать Digispark Attiny85. Их есть несколько видов. Нам нужна плата с разъемом Микро USB. Остальные просто не поместятся в корпус часов.

Для отображения нам понадобится Oled дисплей 128х64 I2C. Они бывают разных цветов: белый, голубой, синий с желтым. Обращаю ваше внимание! Понятие «двухцветный» в описание или названии данного экрана означает полоску одного цвета вверху экрана и второй цвет весь оставшийся экран, а не возможность отображать этим экраном два цвета! Все экраны этого типа отображаю только один цвет, или вверху полоска одного цвета внизу – другого. Как, например, тот, что буду использовать я. Вверху полоска желтая, весь остальной экран синий. Вы можете выбрать любого цвета, какой понравится.
Так же нам понадобится интегральный датчик температуры DS18B20. Выбран он не случайно. Во-первых, DS18B20 обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. В нашем случае это важно, так как выводов Attiny85 и без датчика мало. Во-вторых, этот датчик цифрой, то есть производит все замеры сам и просто передает данные о температуре, не расходуя вычислительные ресурсы Attiny85.

Насчет остального, думаю, вопросов не возникнет, так что переходим к изготовлению корпуса.

Шаг 2 Сборка корпуса.
Корпус часиков будем изготавливать из тонкого пластика. У меня под руками был пластиковый планшет с зажимом для бумаги. Он достаточно жесткий чтобы держать форму, и при этом можно резать обычными ножницами и канцелярским ножом. Подошел отлично. Если его нет под руками, планшет можно купить в канцелярском магазине или подыскать подходящий пластик для замены планшета. Делаем разметку на пластике согласно схеме:

Oled часы на Attiny85

Вырезаем все сплошные линии. Пунктирные — слегка прорезаем канцелярским ножом. Пунктирные – это линии сгиба. Как вы уже поняли, это обычная схема куба. Далее необходимо припаять провода к экрану, лучше всего брать разноцветные и записать какой к чему ведет. Экран приклеиваем на термоклей в середине, как чтобы лицевой стороной он выходил с обратной стороны. Как вы видите, мы закрыли обозначения контактов экрана. Поэтому и нужно было их записать. Я слегка передавил на нож, и тем самым отрезал нижнюю часть корпуса. Ничего страшного в этом нет, все можно приклеить. Но лучше не повторять моих ошибок.

Oled часы на Attiny85
Oled часы на Attiny85

В итоге должно получиться вот так:

Oled часы на Attiny85

На этом корпус готов. Можно еще вырезать заднюю крышку из того – же пластика, но это по желанию.

Шаг 3 Паяем.
Корпус у нас маленький, а впихнуть туда мы должны много. Поэтому берем обрезок монтажной платы размером не больше 2.8 х 2.8 мм и впаиваем туда две кнопки, датчик ds18b20, резистор и несколько контактов. По следующей схеме:

Oled часы на Attiny85

Припаивать провода сразу к Attiny не нужно, так как для прошивки необходимо все отключать. В итоге должно получится примерно так:

Oled часы на Attiny85
Oled часы на Attiny85

Кнопки нужны для установки времени. Питание можно брать от USB порта компьютера. Соединив плюс и минус соответственно:

Oled часы на Attiny85

Если хотите обойтись без проводов, необходимо найти маленькую литиево-ионную аккумуляторную батарею. Вот такую, например:

Oled часы на Attiny85

Этот аккумулятор помещается внутрь корпуса. Надо только предусмотреть выводы для заряда аккумулятора.

Шаг 4 Подготовка программатора.
Digispark Attiny85 можно программировать через находящийся на плате микро USB разъем, использую в качестве среды программирования Arduino IDE. Но при этом приходится жертвовать 2 Кб памяти под загрузчик. У Attiny 85 всего 8 Кб Flash. Мой скетч не помещается вместе с загрузчиком, поэтому необходимо программировать через ISP программатор. У меня такого программатора нет, но есть плата Arduino Uno, которую я буду использовать в качестве программатора. Если у вас есть ISB программатор – можете пропустить этот пункт. Открываем Arduino IDE и заливаем в нашу Arduino Uno скетч называющийся ArduinoISP. Найти его можно так Файл – Примеры — Arduino ISP. Вначале скетча содержится подсказка о том, как подключить Arduino к программируемому контролеру. Вместо Arduino Uno может быть любая другая Arduino плата.

// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK

Схема подключения к Digispark Attiny85:

Arduino UNO - Digispark Attiny85
D11 – P0
D12 – P1
D13 – P2
D10 – P5

Шаг 5 Подготовка среды программирования.
Для редактирования прошивки и заливки скетча в Attiny 85 необходимо подготовить не только программатор, но и саму среду программирования. Для этого установите Arduino IDE с официального сайта Arduino.cc, а также установите дополнение для микроконтроллеров Attiny, через Boards Manager.

Запустите Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставьте ссылку:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

нажмите OK (В это поле вы можете вводить несколько ссылок, разделенных запятой). Далее Инструменты — Плата — Boards Manager в поле фильтра введите Attiny и кликните на «attiny by David A. Mellis». Кликните Install и дождитесь окончания загрузки. Теперь в меню Инструменты выберете:
Плата — Attiny 25/45/85
Процессор — Attiny 85
Clock — internal 16
и выберете последовательный порт, к которому подключен ISP программатор или Arduino в качестве программатора.

Я пробовал много разных библиотек для работы с экраном. На мой взгляд самая удобная и рабочая на Attiny85 : TinyOzOLED.

Для датчика температуры нужна библиотека OneWire.

Установите эти две библиотеки. Устанавливать сторонние библиотеки можно прямо в среде программирования. Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт Добавить .Zip библиотеку. В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. Снова откройте меню Скетч – Подключить библиотеку. В самом низу выпадающего списка вы должны увидеть новую библиотеку. Теперь библиотеку можно использовать в программах. Не забудьте после всего этого перезагрузить Arduino IDE. Если не помогло, просто распакуйте архивы в папку «libraries», находящуюся в папке с установленной Arduino IDE.

Шаг 6 Редактирование и заливка скетча.
Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства — 64-разрядный код. Ресурсов Attiny не достаточно для того чтобы каждый раз искать этот код. Поэтому необходимо вначале подключить датчик к любой плате Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты — Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес нашего датчика. Открываем скетч Attiny85_Oled_SPI_Term_2 , ищем строку:

byte addr[8]={0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; 

Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика. После этого подключаем Attiny к программатору или Arduino в качестве программатора (это описано в Шаге 4) и заливаем скетч. Осталось отключить программатор и подключить все согласно схеме в 3 шаге. В сборе получается примерно так:

Oled часы на Attiny85

Экран маленький, поместить и время и температуру, так чтобы было видно, невозможно. Поэтому часы сменяют время показаниями температуры каждые 10 секунд.


Oled часы на Attiny85 Oled часы на Attiny85 Доставка новых самоделок на почту

Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!

*Заполняя форму вы соглашаетесь на обработку персональных данных

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

Регулятор оборотов микродрели на микроконтроллере ATtiny85

Здоровья всем читателям Муськи!
Благодаря этому замечательному сайту обзавелся множеством полезных вещей и знаний и в ответ решил написать первый отчет о недавно разработанном устройстве. В процессе разработки устройства столкнулся с рядом проблем и успешно их разрешил. Возможно, кому-то из коллег-новичков описание некоторых решений поможет в творчестве.
Для изготовления печатных плат обзавелся микродрелью и стойкой для нее, превращающей дрельку в сверлильный микростанок. Необходимость этого возникла после кучки переломанных сверл 0.5-1мм при использовании в шуруповерте и китайском дремеле. Но, как оказалось, пользоваться таким инструментом без регулятора оборотов невозможно. Регулятор решил сделать самостоятельно, попутно получив новые знания.

Радиолюбительский опыт у меня небольшой. В детстве по книге Борисова собрал несколько приемников, да моргалок на мультивибраторах. Потом пошли другие увлечения и дела.
А тут по случаю заметил Arduino, лихо наваял макетов метеостанций, роботов, и захотелось автоматизировать при помощи микроконтроллеров все, до чего дотянусь. Размеры контроллеров шли по убыванию размеров и облегчению встраивания – Arduino UNO, Arduino Pro Mini, потом кучка ATMega328P, и для самых мелких и простых устройств приобрел ATtiny85.
Тиньки покупал более года назад и они лежали и ждали свой очереди.

Скриншот заказа


(там еще термоусадка в заказе была, потому общая цена выше)

МК приехали как обычно в пакете с пупыркой, сами кучкой в отдельном полиэтиленовом пакетике. Лучше бы конечно в жестком коробке или в пенке, но и так ничего не погнулось и все рабочие.

Поначалу паял схемки на макетных платах, но почитав про ЛУТ, понял, что вполне реально и гораздо удобнее все собирать на нормальных печатных платах.
Также понемногу начал собирать полезный инструмент, среди которого оказалась микродрелька МД-3 с цанговым патроном и станочком для сверления мелких отверстий. Можно было бы конечно купить только цангу, а двигатель откуда-нибудь выковырять, но решил приобрести готовое в местном магазине.

Микродрель МД-3


Самодельные часы-кольцо на ATtiny85 / Habr

Китайский мейкер Чэнь Лян (陳亮) опубликовал пошаговую инструкцию, как собрать симпатичные часы-кольцо на микроконтроллере ATtiny85.

По сравнению с прошлым проектом ATtiny Watch Core, автор решил, что система будет работать при электрическом напряжении 2.0 V, поэтому сойдёт маленький микроконтроллер ATTINY85V-10SU. К нему — малюсенькая отладочная плата Digispark.

Батарейки CR1220 должно хватить на полгода работы.

Для дисплея автор взял OLED-дисплей SSD1306, самый маленький такой экран имеет разрешение 64х32 пикселя.

Корпус проще всего напечатать на 3D-принтере, а дисплей покрыть прозрачным кусочком пластика.

Для сборки понадобятся ещё три винтика M2, три кнопки, два резистора (более 1k), медные провода с изоляцией, тонкая пластинка, переходная плата с SOP8 на DIP8 и небольшой кусок многоцелевой платы PC.

Автор подробно описывает установку и настройку Arduino, приводит ссылки на исходники всего софта, необходимого для работы часов, он также выложил файлы для 3D-печати корпуса часов.

Далее см. инструкцию по спаиванию контактов.

Подключение кнопок и дисплея.

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

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

Большой обзор Digispark Attiny85 — блог

Сигнализатор открытой двери

Одним из самых насущных примеров применения устройства на базе ATtiny85 является сигнализатор дверного замка. Любой из жителей городской квартиры сталкивался с проблемой не закрытой входной двери.

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

Чтобы этого не делать раз за разом, достаточно собрать небольшое устройство на базе ATtiny85. Для этого кроме микроконтроллера понадобится микропереключатель, пьезокерамическая пищалка и батарейка.

Для работы устройства необходим будет простой код, который будет включать звук через 3-5 минут после начала работы микроконтроллера. Для включения контроллера необходим микропереключатель, который будет взаимодействовать с ригелем дверного замка. Если ригель не давит на включатель, то устройство срабатывает через заданный тайм аут. Звук предупредит, что замок входной двери не закрыт.

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

Сигнализатор открытой двери имеет компактные габариты, легко помещается в дверной коробке.

Автоматическая подсветка гардероба

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

Кроме микроконтроллера ATtiny85 для создания подобного устройства понадобиться корпус от светильника, датчик света, батарейный отсек, передатчик на 433 МГц и датчик движения.

Датчик света можно взять от сломанного фонаря на солнечной батарее, датчик движения – надежный и простой HC-SR 501. Сборка все это в единое целое не займет много времени, а код и отладочная плата прекрасно завершат работу.

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

Для этого можно использовать в конструкции выключатели Livolo, принимающие сигнал по радио. При отсутствии движения ATtiny85 выключает светильник, тайм аут можно настроить на любое время, оптимальным вариантом является 1 минута.

Это позволяет экономить энергию, которая в спящем режиме потребляется не менее 60 мкА. В процессе работы устройство потребляет 8-9 мА.

Датчик контроля протечек

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

Теоретически, при протечке должна быстро увеличиваться влажность, так как ситуация развивается в небольшом по объему помещении. За основу прибора по этой причине был взят популярный датчик влажности и температуры, для подключения которого был написан соответствующий код.

Минусом данного устройства, как датчика протечки, оказался порог срабатывания. Тестировался прибор в сантехническом шкафу и оказалось, что влажность в нем на протяжении суток может колебаться в значительных пределах без каких-либо протечек.

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

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

Начало работы с Digispark., а для кого то просто ATtiny85 с USB . Установка драйверов и работа с arduino IDE

Итак начнем с разбора самой платы и ёё возможностей .

ATtiny85 — небольшой микроконтроллер с приличными возможностями и приятными особенностями, включая:


Плата разработчика ATTINY85 предназначена для разработки устройств с минимальными требованиями к периферии и возможностью непосредственного подключения к USB интерфейсу компьютера для программирования и отладки. Для подключения к компьютеру не требуется кабеля — контроллер подключается непосредственно в USB разъем. У контроллера выведено 6 выходов и все они доступны для использования. Два зарезервировано для работы с USB интерфейсом, к одному подключен светодиод. Для разработки можно использовать среду разработки Arduino IDE (OSX/Win/Linux).

Питаться устройство может от USB интерфейса, внешнего источника напряжением 5В и напряжением от 7В до 12В от внутреннего стабилизатора напряжения 5В 500мА. Переключение источника питания происходит автоматически.

Функции выводов контроллера:

  • Р0 — ARef, SDA, DI, PWM
  • P1 — DO, PWM
  • P2 — D/A, SCK
  • P3 — D/A, USB+
  • P4 — PWM, D/A, USB-
  • P5 — D/A

Характеристики:

  • Микроконтроллер: ATTINY85
  • Внутренний генератор: 8МГц
  • Встроенный умножитель частоты: 8
  • Объем памяти программ: 8Кбайт (6Кбайт доступных)
  • Аппаратные интерфейсы: SPI, I2C
  • ШИМ: 3 канала
  • АЦП: 4 канала
  • Индикаторы: Питание Состояние (Pin0)

    Источник https://arduino.ua/prod1985-plata-razrabotchika-attiny85-usb-ot-digispark

Пинмапинг и распиновка 

 

Покупал я платы на Алиэкспресс :

Самая простая версия  http://ali.pub/2ak39d   

Версия с микро USB  http://ali.pub/2ak3dn 

Версия с микроюсб про http://ali.pub/2ak3iw  


Устанавливаем своеобразный плагин для среды Arduino (поддерживается начиная с версии 1.6.5). 

Открываем настройки:

Вставляем в поле Additional Boards Manager URLs строку

http://digistump.com/package_digistump_index.json    


Переходим в меню Инструменты — Boards Manager:


В выпадающем списке Type выбираем Contributed, а затем щелкаем по Digistump AVR Boards, при этом появится кнопочка Install, которую и нажимаем:


Начнется скачивание и установка софта и драйверов. Говорим, что согласны на все:

(Так же драйвера можно скачать здесь https://github.com/digistump/DigistumpArduino/releases  )



Выбираем рекомендованную для начинающих плату Digispark (Default — 16,5mhz) — выбираем вашу плату :


Теперь можем перейти в раздел примеры — digispark и выбрать понравившийся вам тестовый скетч :

В отличие от классических плат Arduino, эту плату не нужно подключать к компьютеру перед загрузкой прошивки. Наоборот, сначала нужно запустить загрузку из среды Arduino и дождаться приглашения к подключению контроллера. Вот теперь — можно.

Таймаут на загрузку — 60 секунд:

Связано это с особым режимом работы загрузчика: при старте контроллера он ждет загрузки кода через USB в течение 5 секунд, а потом переключается в режим исполнения имеющегося в памяти контроллера кода.

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

Загрузка пошла:


Знакомство с платой прошло успешно ! )))) 

Подписывайся на Geek каналы :

➤ VK — https://vk.com/denis_geek

➤ VK — https://vk.com/club_arduino

➤ VK — https://vk.com/chinagreat

➤ VK — https://vk.com/solar_pover

➤ VK — https://vk.com/my_vedroid

➤ VK — https://vk.com/3dprintsumy

➤ Youtube — http://www.youtube.com/c/Danterayne

★ Моя партнёрка с Aliexpress ★

http://ali.pub/1j9ks1 

★ Получай 10.5% скидку с любой покупки на Aliexpress! ★

http://ali.pub/1lx67o

★ Полезное браузерное приложение для кэшбэка  ★




РадиоКот :: Японский WAV-плеер… по-русски

РадиоКот >Схемы >Цифровые устройства >Игрушки >

Японский WAV-плеер… по-русски

            В статье описан вариант изготовления простого WAV-плеера на основе известной разработки японца Чана. Исходный проект был доработан с целью введения возможности запоминания последнего проигранного трека, а также перебора треков не только вперёд, но и назад. Для удобства использования и придания разработке законченного вида также добавлен УНЧ с регулировкой громкости и схема зарядки аккумулятора.

            Встал как-то передо мной вопрос: что подарить 4-х летней племяннице на день рождения. Как известно, лучший подарок – это сделанный своими руками. После некоторых раздумий, учитывая её пристрастие к музыке,  выбор пал на японский WAV-плеер от ChaN на ATtiny85 (Simple SD Audio Player with an 8-pin IC https://elm-chan.org/works/sd8p/report.html):

           Естественно, что дарить ребёнку набор в виде платки с проводками к батарейке и наушникам глупо, тем более что долгое прослушивание музыки в наушниках портит слух безвозвратно. Поскребши по сусекам, на свет божий был извлечен старый карманный СВ радиоприёмник с неплохим динамиком 0,25ГД-19-8Ω. В корпусе приемника и было решено собрать плеер. Для питания схемы был приобретён Li-Ion аккумулятор на 320мАч от MP3-плеера, чтобы не беспокоиться о частой смене батареек.

            В итоге вырисовалась следующая схема:
        
           На VT1, VT2, DA2 собрана защита от чрезмерной разрядки аккумулятора. При включении питания переключателем SA1 транзистор VT1 открывается через незаряженный C2, подаётся питание на супервизор DA2 MCP100T-315I/TT, на выходе которого устанавливается высокий лог. уровень, открывающий VT2 и VT1. Зелёный светодиод HL2 сигнализирует о включенном питании плеера. Для более резкого уменьшения яркости свечения при снижении напряжения аккумулятора светодиод включен последовательно через диодную сборку VD1. При снижении на аккумуляторе напряжения ниже 3,15В на выходе супервизора устанавливается низкий логический уровень  и схема обесточивается. Остаётся лишь небольшой ток порядка 1,5 мкА через разрядный резистор R1. Для зарядки аккумулятора использована специализированная микросхема DA1 MCP73812T-420I/OT. Зарядка осуществляется от внешнего источника +5В через USB-разъём. Можно использовать USB-выход ПЭВМ или отдельную зарядку от мобильника с напряжением не более 6 В. Ток зарядки задаётся сопротивлением резистора R7 и выбран как 0.7C=0.7*320мА∙ч =224 мА. Пересчитать его на другой ток можно по формуле Iзар.(мА)=1000/R7(кОм). Красный светодиод HL1 сигнализирует о подключенном внешнем питании.

            Для питания микроконтроллера DD1 ATtiny85 и карты памяти применён линейный стабилизатор DA3 TPS76330DBVT на 3В с малым падением напряжения. Микроконтроллер и карта памяти включены по схеме “МОНО HF” (16 бит), т.к. в 8-битном варианте “МОНО” заметен довольно существенный шум, особенно в паузах. Резистором R16 можно подобрать такой коэффициент суммирования сигналов с микроконтроллера, при котором будет наименьший уровень шума. После фильтров C7, R10, C8, R11, C11, R14 сигнал поступает на регулятор громкости R12. В качестве УНЧ применена микросхема DA4 ILA7052N (аналог TDA7052) в мостовом включении. Питание на неё подано непосредственно после VT1 от аккумулятора. Типовая выходная мощность по datasheet при напряжении питания 6В и сопротивлении нагрузки 8Ω составляет 1 Вт. Также на плате предусмотрено место для установки DA4’ ILA7050 (аналог TDA7050) на случай проблем с приобретением ILA7052N.

            Вся схема собрана на односторонней печатной плате размерами 38х69мм под имеющийся корпус. Выключатель питания использован уже имеющийся в корпусе приёмника, и соединён последовательно с выключателем регулятора громкости. Держатель карты памяти microSD использован покупной (самый дешевый):

         Вид плеера в сборе показан ниже:

            Аккумулятор приклеен к корпусу на двухсторонний скотч. Микроконтроллер ATtiny85 удалось приобрести только в широком SOIC-8 корпусе, поэтому запаян на переходную (зелёную на фото) платку. Слева от микросхемы УНЧ видны два электролита. Они запаяны на плату уже в процессе доработки схемы для устранения просадки напряжения аккумулятора при пиковых уровнях громкости. Забегая вперёд, следует отметить, что звучание плеера получилось на удивление громкое и качественное с присутствием басов, чего не скажешь о многих китайских поделках. Ёмкость добавленных электролитов 1000мкФ+1500мкФ.

            А это вид спереди:

            Название Sonya – это никакая не имитация известной фирмы Sony, а имя племянницы.

            Для программирования микроконтроллера использован самодельный программатор AVRISP MkII (USB) и среда CodeVisionAVR. В PonyProg запрограммировать фьюз RSTDISBL не возможно. На скриншоте ниже показаны программируемые фьюзы:

            Внимание!!! Вначале прошивается flash-память микроконтроллера прилагаемым hex-файлом, а затем фьюзы! После программирования фьюза RSTDISBL микроконтроллер станет недоступен для внутрисхемного SPI-программирования. Сбросить фьюзы в исходное состояние можно лишь параллельным программатором или, например, таким вот Atmega fusebit-доктором (https://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/):

            Прошивка для микроконтроллера была доработана. Очень существенным недостатком выявлялось то обстоятельство, что после выключения и включения питания воспроизведение начиналось с самого первого трека на карте памяти. Поэтому в программу внесено сохранение в EEPROM микроконтроллера номера последнего проигрываемого трека и начало воспроизведения при включении питания с него. Согласитесь, что когда на карте памяти записано несколько сотен песен и требуется добраться до нужной, перебирать их все с самого начала как-то неудобно. Также значительное неудобство доставило то, что перебор треков в исходном проекте возможно  было осуществлять только вперёд одной единственной кнопкой. Для повторного воспроизведения понравившейся песни приходилось опять-таки последовательно перебирать все несколько сотен треков. Этот недостаток также был исправлен, причём, не внося никаких изменений в схему. Единственная кнопка использована также и для перемотки треков назад при её удержании более 3-х секунд с функцией автоповтора. Т.е. удерживая кнопку нажатой, можно слушать 3-х секундные отрывки каждого трека с перебором их в обратной последовательности.

            Для изменения исходника проект был собран и скомпилирован в двух средах: AVR Studio 4 (с AVR Toolchain 3.3.0.710) и в WinAVR-20060125. В AVR Studio размер hex-файла прошивки получился несколько меньше, но не удалось добиться работоспособности варианта “МОНО” 8 бит. В WinAVR работоспособны все 3 варианта.

            В качестве карты памяти были успешно опробованы microSD на 1 ГБ, microSD на 2ГБ и microSDHC на 4ГБ. Файловая система была оставлена стандартная FAT32.

            Треки записывались в корень карты памяти. Название – не более 8 латинских символов или цифр, т.е. в виде ХХХХХХХХ.wav.

            Для подготовки mp3 файла к записи на карту памяти использовался бесплатный звуковой редактор Audacity. Порядок действий таков.

1.Перетащить конвертируемый файл в окно программы

2. Выбрать пункт разделить стерео на моно

3. Экспортировать выделенное

Название – не более 8 символов, формат WAV 16 bit PCM

Очистить все метаданные!!! Если этого не сделать, данный трек воспроизводиться не будет!

ОК

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

            Измеренный ток потребления плеера при максимальной неискаженной громкости составил около 60…70 мА. При ёмкости аккумулятора 320мА∙ч время непрерывной работы составляет 5…10 ч в зависимости от громкости. Качество звука получилось вполне приличное с присутствием басов. Максимальной громкости с запасом хватает для озвучивания небольшой комнаты. Подбором сопротивления резистора R15 можно ограничить максимальную громкость до появления заметных на слух искажений.

 

            Список литературы:

1)      https://elm-chan.org/works/sd8p/report.html.

2)      Японский WAV-плеер на ATtiny85. Сергей Рюмик. Радиохобби №6-2011.

 

Файлы:
DataSheet
Проект в AVR Studio 4
Проект в WinAVR
Плата+схема
Прошивка

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

Микроконтроллеры ATtiny25 ATtiny45 ATtiny85 — 23 Декабря 2014

Общая информация по ATtiny25/ ATtiny45 / ATtiny85 — экономичные 8-разр. КМОП микроконтроллеры, выполненные по усовершенствованной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл микроконтроллеры ATtiny25/45/85 достигают производительности 1млн. оп. в сек. при тактировании частотой 1МГц, что позволяет разработчику оптимизировать потребляемую мощность и быстродействие.

 

 

ATtiny25/45/85 содержит следующие элементы: 2/4/8 кбайт внутрисистемно-программируемой флэш-памяти, 128/256/512 байт ЭСППЗУ, 128/256/256 байт статического ОЗУ, 6 линий ввода-вывода общего назначения, 32 универсальных рабочих регистров общего назначения, один 8-разр. таймер-счетчик с режимами сравнения, один 8-разр. высокоскоростной таймер-счетчик, универсальный последовательный интерфейс, внутренние и внешние прерывания, 4-канальный 10-разр. АЦП, программируемый сторожевой таймер с внутренним генератором, а также три программно выбираемых экономичных режима. В режиме холостого хода (Idle) останавливается ЦПУ при этом продолжают работу статическое ОЗУ, таймер-счетчик, АЦП, аналоговый компаратор и система прерываний. В режиме пониженной мощности (Power-down) сберегается содержимое регистров, отключаются все встроенные функции до следующего прерывания или аппаратного сброса. В режиме снижения шумов АЦП (ADC Noise Reduction) останавливается ЦПУ и все модули ввода-вывода, кроме АЦП, за счет чего достигается снижение цифровых шумов во время преобразования АЦП.

Параметры:
Высокопроизводительный, экономичный 8-разр. AVR-микроконтроллер
— Усовершенствованная RISC-архитектура
— Обширный набор из 120 инструкций большинство которых выполняются за один цикл- 32 x 8 универсальных регистров общего назначения
— Полностью статическая работа
— Энергонезависимые памяти программ и данных
— Внутрисистемно программируемая флэш-память программ размером 2, 4, 8 кбайт (Atiny25, Atiny45, Atiny85) с износостойкостью 10 тыс. циклов запись/стирание
— 128/256/512 байт внутрисистемно-программируемого ЭСППЗУ (ATtiny25/45/85) с износостойкостью 100 тыс. циклов записи/стирания
— 128/256/512 байт внутреннего статического ОЗУ (ATtiny25/45/85)
— Программируемые биты защиты флэш-памяти и ЭСППЗУ
Отличительные особенности периферийных устройств
— 8-разр. таймер-счетчик с предделителем и двумя каналами ШИМ
— 8-разр. высокоскоростной таймер-счетчик с отдельным предварительным делителем
— 2 высокочастотных выхода ШИМ с отдельными регистрами задания порога сравнения
-Программируемый генератор паузы
— Универсальный последовательный интерфейс с отдельным детектором условия старт
— 10-разрядный АЦП 4 несимметричных канала 2 дифференциальных канала с программируемым усилением (1x, 20x)
— Программируемый сторожевой таймер с отдельным встроенным генератором
— Встроенный аналоговый компаратор
Специальные функции микроконтроллера
— Встроенная отладочная система debugWIRE
— Внутрисистемное программирование через порт SPI
— Внешние и внутренние источники прерываний
— Экономичные режимы: холостой ход (Idle), уменьшение шумов АЦП (ADC Noise Reduction) и пониженная мощность (Power-down)
— Усовершенствованная схема сброса при подаче питания               

— Программируемая схема контроля напряжения питания
— Встроенный калиброванный генератор Ввод-вывод и корпуса
— Шесть программируемых линий ввода-вывода
— 8-выв. корпус PDIP и 8-выв. SOIC
Рабочее напряжение- 1.8 — 5.5В для ATtiny25V/45V/85V и 2.7 — 5.5В для ATtiny25/45/85
Градации по быстродействию
— ATtiny25/45/85V: 0 — 4 МГц при 1.8 — 5.5В, 0 — 10 МГц при 2.7 — 5.5В- ATtiny25/45/85: 0 — 10 МГц при 2.7 — 5.5В, 0 — 20 МГц при 4.5 — 5.5В
Промышленный температурный диапазон
Малый потребляемый ток
— Активный режим: 1 МГц, 1.8В: 450 мкА
— Режим пониженной мощности: 0.1 мкА при 1.8В

 

Datasheet

 

 

 

 

Дополнительные возможности портов ввода-вывода ATtiny85 (ATtiny45)

Все порты микроконтроллера ATtiny85 могут работать не только как простые ножки ввода вывода GPIO. Они также могут нести дополнительные функции, привязанные к богатой внутренней аппаратуре ядра AVR. В таблице ниже представлено краткое описание этих функций (полное описание см. в даташите на микроконтроллер ATtiny85).

Порт Функции Описание
PB0(1) MOSI
AIN0
OC0A
~OC1A
DI
SDA
AREF
PCINT0
MOSI: сигнал данных интерфейса SPI, выход мастера, вход подчиненного устройства (Master Data Output / Slave Data Input).
AIN0: неинвертирующий вход аналогового компаратора (Analog Comparator, Positive Input).
OC0A: выход сигнала события сравнения A таймера/счетчика 0 (Timer/Counter0 Compare Match A output).
~OC1A: комплементарный выход сигнала события сравнения A таймера/счетчика 1 (Complementary Timer/Counter1 Compare Match A Output).
DI: вход данных универсального последовательного интерфейса в трехпроводном режиме (USI Data Input, Three Wire Mode).
SDA: вход данных универсального последовательного интерфейса в двухпроводном режиме (USI Data Input, Two Wire Mode)
AREF: внешнее опорное напряжение для АЦП (External Analog Reference).
PCINT0: вход 0 прерывания по изменению логического уровня (Pin Change Interrupt 0, Source 0).
PB1 MISO
AIN1
OC0B
OC1A
DO
PCINT1
MISO: сигнал данных интерфейса SPI, вход мастера, выход подчиненного устройства (SPI Master Data Input / Slave Data Output).
AIN1: инвертирующий вход аналогового компаратора (Analog Comparator, Negative Input).
OC0B: выход сигнала события сравнения B таймера/счетчика 0 (Timer/Counter0 Compare Match B Output).
OC1A: выход сигнала события сравнения A таймера/счетчика 1 (Timer/Counter1 Compare Match A Output).
DO: выход данных универсального последовательного интерфейса, трехпроводный режим (USI Data Output, Three Wire Mode).
PCINT1: вход 1 прерывания по изменению логического уровня (Pin Change Interrupt 0, Source 1).
PB2(1) SCK
ADC1
T0
USCK
SCL
INT0
PCINT2
SCK: тактовый сигнал SPI (Serial Clock Input).
ADC1: вход канала 1 АЦП (ADC Input Channel 1).
T0: тактовый вход таймера/счетчика 0 (Timer/Counter0 Clock Source).
USCK: такты универсального последовательного интерфейса в трехпроводном режиме (USI Clock, Three Wire Mode).
SCL: такты универсального последовательного интерфейса в двухпроводном режиме (USI Clock, Two Wire Mode).
INT0: вход внешнего прерывания 0 (External Interrupt 0 Input).
PCINT2: вход 2 прерывания по изменению логического уровня (Pin Change Interrupt 0, Source 2).
PB3 XTAL1
CLKI
ADC3
~OC1B
PCINT3
XTAL1: вход тактового генератора для подключения резонатора (Crystal Oscillator Input).
CLKI: внешний тактовый вход (External Clock Input).
ADC3: вход канала 3 АЦП (ADC Input Channel 3).
~OC1B: комплементарный выход сигнала события сравнения B таймера/счетчика 1 (Complementary Timer/Counter1 Compare Match B Output).
PCINT3: вход 3 прерывания по изменению логического уровня (Pin Change Interrupt 0, Source 3).
PB4 XTAL2
CLKO
ADC2
OC1B
PCINT4
XTAL2: выход тактового генератора для подключения резонатора (Crystal Oscillator Output).
CLKO: выход тактового сигнала ядра (System Clock Output).
ADC2: вход канала 2 АЦП (ADC Input Channel 2).
OC1B: выход сигнала события сравнения B таймера/счетчика 1 (Timer/Counter1 Compare Match B Output).
PCINT4: вход 4 прерывания по изменению логического уровня (Pin Change Interrupt 0, Source 4).
PB5(2) ~RESET
dW
ADC0
PCINT5
~RESET: вход сброса (Reset Pin).
dW: сигнал однопроводного интерфейса для отладки (debugWIRE I/O).
ADC0: вход канала 0 АЦП (ADC Input Channel 0).
PCINT5: вход 5 прерывания по изменению логического уровня (Pin Change Interrupt, Source 5)

Примечания:

(1) Если задействовано подключение к USB, то порты PB0 и PB2 использовать нельзя, потому что они обслуживают сигналы USB D- и D+ соответственно.
(2) Порт PB5 по умолчанию работает как ножка сброса (~RESET) или как вход для подключения отладчика debugWIRE. Чтобы можно было его использовать как порт ввода/вывода, или задействовать как ADC0 или PCINT5, то нужно разрешить это программированием фьюзов микроконтроллера.

Сигналы совпадения таймера OC0A, ~OC1A, OC0B, OC1A, ~OC1B, OC1B могут использоваться для генерации постоянного аналогового уровня и звуковых сигналов с помощью ШИМ (PWM). Сигнал совпадения выдается, когда содержимое счетчика таймера совпало с предопределенным заранее значением.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *