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. Они бывают разных цветов: белый, голубой, синий с желтым. Обращаю ваше внимание! Понятие «двухцветный» в описание или названии данного экрана означает полоску одного цвета вверху экрана и второй цвет весь оставшийся экран, а не возможность отображать этим экраном два цвета! Все экраны этого типа отображаю только один цвет, или вверху полоска одного цвета внизу – другого. Как, например, тот, что буду использовать я. Вверху полоска желтая, весь остальной экран синий. Вы можете выбрать любого цвета, какой понравится.
Насчет остального, думаю, вопросов не возникнет, так что переходим к изготовлению корпуса.
Шаг 2 Сборка корпуса.
Корпус часиков будем изготавливать из тонкого пластика. У меня под руками был пластиковый планшет с зажимом для бумаги. Он достаточно жесткий чтобы держать форму, и при этом можно резать обычными ножницами и канцелярским ножом. Подошел отлично. Если его нет под руками, планшет можно купить в канцелярском магазине или подыскать подходящий пластик для замены планшета. Делаем разметку на пластике согласно схеме:
Вырезаем все сплошные линии. Пунктирные — слегка прорезаем канцелярским ножом. Пунктирные – это линии сгиба. Как вы уже поняли, это обычная схема куба. Далее необходимо припаять провода к экрану, лучше всего брать разноцветные и записать какой к чему ведет. Экран приклеиваем на термоклей в середине, как чтобы лицевой стороной он выходил с обратной стороны. Как вы видите, мы закрыли обозначения контактов экрана. Поэтому и нужно было их записать. Я слегка передавил на нож, и тем самым отрезал нижнюю часть корпуса. Ничего страшного в этом нет, все можно приклеить. Но лучше не повторять моих ошибок.
В итоге должно получиться вот так:
На этом корпус готов. Можно еще вырезать заднюю крышку из того – же пластика, но это по желанию.
Шаг 3 Паяем.
Корпус у нас маленький, а впихнуть туда мы должны много. Поэтому берем обрезок монтажной платы размером не больше 2.8 х 2.8 мм и впаиваем туда две кнопки, датчик ds18b20, резистор и несколько контактов. По следующей схеме:
Припаивать провода сразу к Attiny не нужно, так как для прошивки необходимо все отключать. В итоге должно получится примерно так:
Кнопки нужны для установки времени. Питание можно брать от USB порта компьютера. Соединив плюс и минус соответственно:
Если хотите обойтись без проводов, необходимо найти маленькую литиево-ионную аккумуляторную батарею. Вот такую, например:
Этот аккумулятор помещается внутрь корпуса. Надо только предусмотреть выводы для заряда аккумулятора.
Шаг 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 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 шаге. В сборе получается примерно так:
Экран маленький, поместить и время и температуру, так чтобы было видно, невозможно. Поэтому часы сменяют время показаниями температуры каждые 10 секунд.
Доставка новых самоделок на почту
Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!
*Заполняя форму вы соглашаетесь на обработку персональных данных
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.Регулятор оборотов микродрели на микроконтроллере 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 — экономичные 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) останавливается ЦПУ и все модули ввода-вывода, кроме АЦП, за счет чего достигается снижение цифровых шумов во время преобразования АЦП. Параметры: — Программируемая схема контроля напряжения питания
Datasheet
Дополнительные возможности портов ввода-вывода ATtiny85 (ATtiny45) Все порты микроконтроллера ATtiny85 могут работать не только как простые ножки ввода вывода GPIO. Они также могут нести дополнительные функции, привязанные к богатой внутренней аппаратуре ядра AVR. В таблице ниже представлено краткое описание этих функций (полное описание см. в даташите на микроконтроллер ATtiny85).
Примечания: (1) Если задействовано подключение к USB, то порты PB0 и PB2 использовать нельзя, потому что они обслуживают сигналы USB D- и D+ соответственно. Сигналы совпадения таймера OC0A, ~OC1A, OC0B, OC1A, ~OC1B, OC1B могут использоваться для генерации постоянного аналогового уровня и звуковых сигналов с помощью ШИМ (PWM). Сигнал совпадения выдается, когда содержимое счетчика таймера совпало с предопределенным заранее значением. |