Опубликованное в свое время устройство SD Card Talking Device (Говорилка) приобрело у Вас, читателей блога, определенную популярность. Я давно собирался сделать (и сделаю в свое время) более серьезный вариант Говорилки с возможностью настройки устройства под свои нужды и более качественным звуком, (возможно с поддержкой SD-карт больше 2 Гиг). Но пока не сделал апдейт, решил немного поэксплуатировать плату Говорилки в другом устройстве.
Устройство сегодняшней статьи собрано (вернее работает) на плате Говорилки, но предназначено не для озвучивания Ваших проектов, а для их визуализации. Если есть Говорилка, почему бы не заиметь Показывалку!
На видео продемонстрирован один из вариантов применения – «оживление» глаз робота (планирую использовать в своем роботе Бендере). Кроме этого, применения могут быть более серьезные – различные динамические указатели, информационные вывески и т.д.
Показывалка (SD Card Showing Device) проигрывает avi-файлы сохраненные на SD-карте на двух светодиодных матрицах 8х8. Матрицы управляются, в свою очередь, микросхемами-драйверами MAX7219. Существуют готовые модули матрица+MAX7219 для Arduino, ими я и воспользовался.
MAX7219-MAX7221.pdf (1450 Загрузок)
Если у Вас уже есть Говорилка, то при наличии таких модулей, Вы получите новое устройство без пайки! Чуть позже сделаю вариант Показывалки с применением более простых микросхем — сдвиговых регистров 74HC595 и вариант с большим разрешением.
Принцип воспроизведения файлов перекочевал из Говорилки без изменений. В Говорилке воспроизводились несжатые wav-файлы, а в Показывалке – несжатые avi-файлы. Также действуют особые правила создания этих файлов и запись их на карту – об этом ниже.
Кардинально изменился способ управления. Теперь упор сделан на самостоятельность устройства – стали возможны автоматические циклические воспроизведения вперед, назад, случайные воспроизведения файлов и автономный Live-режим, при котором файлы воспроизводятся случайно с разной вероятностью (на видео выше именно он и продемонстрирован).
Дальше идет описание сборки Показывалки.
Это почти полный копипаст статьи про Говорилку – кто уже читал, можно пропускать кусками.
1 Карта памяти.
В устройстве используется SD карта памяти. О причинах выбора я уже писал. В данном устройстве поддерживаются SD карты размером до 2 Гб, включительно. Все что выше (SDHC и SDXC) – работать не будет.
Для устройства нет разницы, в каком форм-факторе карта (SD, MiniSD или MicroSD), но Вы должны правильно ее подключить, согласно распиновки карты.
2 Файловая система.
В устройстве работают карты, имеющие файловую систему FAT16. Эта система как нельзя лучше подходит для устройств подобных нашему, так как проста и легко реализуемая (FAT12 и FAT32, в принципе, тоже не сложно реализовать, но это нецелесообразно, в виду отсутствия каких либо достоинств по сравнению с FAT16).
Нет особых требований по форматированию карты – ее можно отформатировать в любом доступном устройстве. Стандартное форматирование Windows вполне подходит для этих целей.
Для корректной работы устройства видео файлы, расположенные на SD карте, должны соответствовать определенным требованиям:
а) Формат файла должен быть — несжатым avi. Я пользовался для преобразования в avi программой virtualdub. Если у Вас некорректно воспроизводятся файлы, возможно, они имеют другую разметку. В этом случае пересохраните Ваши файлы при помощи virtualdub (об этом дальше раскажу).
b) Файлы должны быть названы особым образом (для того чтобы устройство знало очередность файлов) первый символ имени файла должен быть заглавной буквой латинского алфавита (A-первый, B- второй …), остальная часть названия, как и расширение файла — игнорируется.
Например, корректными будут следующие названия файлов:
А_no_smoking.avi – первый трек
B-Это второй трек.avi – второй трек
С Warning! Error!.avi – третий трек
c) Для использования дополнительных возможностей устройства, файлы могут располагаться в двух папках с именами «1» и «2». Устройство имеет переключатель для выбора активной папки, то есть одна и та-же команда запуска воспроизведения может запускать файлы из папки «1» или «2». Если одной из папок (или сразу обеих) не существует, файлы воспроизводятся из корневого каталога.
d) Ввиду малого объема SRAM у ATtiny2313 невозможно создать буфер для предварительного чтения данных, поэтому данные из файла напрямую выдаются на матрицу. Соответственно, нет возможности (не хватает времени) выполнять поиск фрагментов файла по таблице FAT. Другими словами, файлы, записанные на карту, должны быть не фрагментированы.
На самом деле это не является большой проблемой, так как любая операционная система всегда пытается записать файл целым куском и пока у Вас на карте есть место то любые действия с файлами (удаление, копирование, переименования) не повлияют на их целостность. Если у Вас карта очень малого объема или Вы заполнили до отказа большую карту, для того, чтобы быть уверенным в нефрагментированности файлов, просто скопируйте их на жесткий диск компа, отформатируйте карту и верните файлы назад.
3 Схема. Печатная плата.
Сама базовая схема почти идентична Говорилке:
339.pdf (1572 Загрузки)Схема устройства максимально проста (конечно, если не считать две платы с матрицами). Фактически, кроме самого микроконтроллера и SD карты, в ней ничего нет. Для себя я сделал печатку под SMD компоненты, но можно собрать схему и на макетке в DIP варианте. В случае макетки, сборка устройства займет у Вас, от силы, 15 минут. Допустимое напряжение питания для SD карты от 2.7 до 3.6 вольт. В этом промежутке нормально работает и микроконтроллер, поэтому нет необходимости применять какие либо согласующие компоненты. В качестве кардхолдера для microSD я использовал адаптер, подпаявшись прямо к его контактам. Если нужны габариты поменьше лучше использовать настоящий кардхолдер для microSD.
Для прошивки микроконтроллера используется тот-же разъем, что и для SD карты, поэтому придется подумать как к нему подключить программатор (я специально сделал переходник).
Небольшая галерея готового устройства:
Небольшой нюанс по схеме.
При установке SD карты в кардхолдер (подключении карты к источнику питания) создается скачек тока и, соответственно, просадка напряжения в схеме (похоже, в карте в это время заряжаются значительные емкости). Просадка настолько значительная, что происходит сброс микроконтроллера. Я это использую для начала процедуры инициализации карты (установка карты перезапускает микроконтроллер и первое что делает прошивка это поиск и инициализация карты). Если у Вас при установке карты не происходит сброса МК (мощный источник питания или большие сглаживающие емкости), то Вам нужно позаботиться о кнопке сброса в схеме для ручного сброса микроконтроллера (это если планируется «горячая» смена карт).
4 Управление воспроизведением. Реализация автоматических режимов.
Устройство имеет всего один сигнальный выход и несколько входов. Выход имеет двойное назначение:
— индикация проигрывания файла
— реализация автоматических режимов работы.
При первом старте устройства автоматически воспроизведет (или попытается воспроизвести – если такого файла нет) А-файл. Это сделано, во-первых, для начальной инициализации матриц каким либо изображением (или очистки их), во-вторых, для старта автоматических режимов.
Выход On_Show:
— На все время воспроизведения файла выход устанавливается в 1 и сбрасывается в 0 по окончании воспроизведения. Посредством этого выхода реализуются автоматические режимы работы устройства. Еще этот вывод может управлять устройством отображения (его выбора или включения в момент начала воспроизведения файла). При попытке воспроизведения несуществующего файла, выход кратковременно устанавливается в 1 после чего снова возвращается в 0.
Выход реализован под «монтажное или» — это значит, что выход можно в любое время прижать к «земле» без риска сжечь его.
Set-входа
— имеют активный уровень низкий (действуют пока вывод прижат к «земле»):
Set_Dir — Состояние этого входа указывает из какой папки на SD-карте будут воспроизводится файлы. Вход прижат к «земле» — папка «2», отпущен — папка «1». Если какой либо из папок не существует воспроизведение будет из корня карты.
Set_Live — При замкнутом на «землю» устройство начинает работать в автоматическом «Живом» режиме. В этом режиме, со случайной периодичностью, запускаются на проигрывание случайные файлы с активной папки. А-файл запускается гораздо чаще остальных.
Set_Off — При удержании Set_Off прижатым к «земле» отображающее устройство отключено.
Do-входа
— работают по спаду (момент перехода от высокого уровня к низкому)
Do_Next — По спаду запускается следующий файл с SD-карты. После последнего файла «Z» запустится первый «А». При соединении этого входа с выходом On_Show реализуется непрерывное проигрывание всех файлов в папке по кругу «А» —> «Z».
Do_Prev — По спаду запускается предыдущий файл с SD-карты. После первого файла «А» запустится последний — «Z». При соединении этого входа с выходом On_Show реализуется непрерывное проигрывание всех файлов в папке по кругу «Z» —> «A».
Do_RND — По спаду запускается случайный файл с SD-карты. При соединении этого входа с выходом On_Show реализуется случайное непрерывное проигрывание всех файлов в папке.
Do_Last — По спаду запускается на воспроизведение последний, воспроизведенный до этого файл (после старта или сброса устройства – это A-файл). При соединении этого входа с выходом On_Show реализуется непрерывное проигрывание текущего файла.
5 Управление по UART
При запуске устройство в UART передает символы инициализации:
! — метка начала инициализации
@ — метка удачной инициализации карты памяти
& — метка поддерживаемой файловой системы
$ — метка отсутствия папки «1»
% — метка отсутствия папки «2»
^ — метка окончания инициализаций и перехода в режим ожидания воспроизведения файла
Например, при удачной инициализации устройство отправит по UART строку «!@&$%^A0». Символ А – выдается, так как устройство автоматически при старте запустит А-файл. 0 (ноль) выдается по окончанию воспроизведения файла.
В момент начала воспроизведения файла в UART выдается заглавная буква этого файла (“A”, “B” …). Если предпринята попытка воспроизвести несуществующий файл в UART выдается прописная буква этого файла (“a”, “b” …). По окончанию воспроизведения файла выдается символ «0» (ноль).
Для запуска определенного файла нужно послать в UART заглавную букву этого файла.
При приеме цифры «0» (ноль) устройство прекратит проигрывание файла.
6 Создание AVI-файлов для Показывалки
Для того, чтобы видео файлы правильно проигрывались на матрицах они должны иметь определенный формат: несжатый цветной AVI c разрешением 16х8 пикселей, частотой кадров 10Гц, без звука.
Формат AVI довольно сложная структура, так как, по сути, является контейнером, который может «наполнятся» различными форматами видео и аудио данных с возможностью применения различных кодеков сжатия. В виду этого довольно сложно работать с этим форматом полноценно, раскладывая все «по полочкам» средствами небольшого МК ATtiny2313. В устройстве используется очень упрощенный алгоритм извлечения кадров анимации для матриц и из-за этого возможно некоторые программы создающие AVI (или конвертирующие в AVI) будут создавать непонятные для устройства файлы. При создании устройства я ориентировался на формат AVI-файла создаваемый программой virtualdub. Поэтому, в случае проблем с воспроизведением, попробуйте переконвертировать видео при помощи virtualdub (http://www.virtualdub.org/)
Вообще, удобно создавать файлы для матрицы в программах для создания анимированных gif (во многих даже есть вариант сохранения прямо в AVI). Эти программы предоставляют возможности раскадровки, различные эффекты анимации, средства для работы с текстовыми строками и много чего интересного.
Бесплатно можно пользоваться хорошей программой RealWorld Paint http://www.rw-designer.com/image-editor Большой набор инструментов, русский язык, плагины. Жаль нет вывода в AVI (я пользовался virtualdub для конвертации gif-to-avi)
Еще одна программка с неплохим функционалом, но давно не поддерживаемая автором
Atani-4.5.zip (1762 Загрузки)
Довольно неплохо получается делать гифки при помощи Фотошопа, но тут нужны некоторые навыки.
В случае если программа кроме гифок не умеет сохранять в AVI, то воспользуйтесь virtualdub — он умеет конвертировать из Gif в AVI. Более того у virtualdub есть инструменты для обрезки, изменения размеров и т.д., что позволяет создавать необходимые AVI файлы из сторонних гифок и даже обычных видеофайлов.
115-SDC_Showing.zip (1518 Загрузок)
Архив с материалами для создания устройства содержит кроме всего и примеры видеофайлов и их варианты в гифе.
Не забываем, что на форуме есть специальный раздел для модификаций устройств, где можно посмотреть, показать_свои или попросить_изменить варианты этого устройства.