Устройство мультимедиа (Multimedia device)

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

Функции устройства:
Чтение данных с MMC/SD карт в форматах “WAV”, “BMP”.
Измерение температуры от –55°C до +125°C.
Разрешение “статических” файлов в формате “BMP” не должно превышать 240х320 (обусловлено разрешением дисплея ), а глубина цвета 24 бит.
Размер кадра “динамических” файлов в формате “BMP” равен 240х99 (задается программно), а глубина цвета 24 бит. Скорость вывода около 10 к/с.
Инициализация написана для карт памяти MMC и SD v1.x.
Частота дискретизации “WAV” файлов не должна быть более 44,1 кГц.
Устройство измеряет температуру двумя независимыми датчиками DS18В20.

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

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

Устройство собрано на 2-х печатных платах, одной из которых является дисплей HY32D. На второй печатной плате находится микроконтроллер с приклеенным к нему датчиком температуры, разъемы для подключения дисплея и питания (справа). Снизу расположен светодиод индикации процесса измерения температуры, разъем подключения карты памяти и 3-хпиновый разъем (в проекте подключен температурный датчик).

Алгоритм работы устройства

При включении микроконтроллер инициализирует карту памяти, чтобы загрузить с нее динамическую картинку приветствия и интерфейс “рабочего стола”. Если карта памяти отсутствует, на дисплей будет выведено соответствующее сообщение “SDCARD NOT FOUND”. Как лишь карта памяти смонтирована, с нее загружается динамическое изображение “BESTSCHEMES.RU” и интерфейс “рабочего стола” в формате “BMP”. Нажимая стилусом на определенном значке, заходим в соответствующее меню.

При входе в меню “Pictures” на дисплей сразу выводится первая, считанная с карты памяти картинка. Для просмотра следующего изображения достаточно коснуться стилусом в любой точке экрана. Для выхода из меню “Pictures” нужно нажать стилусом на значке “*”, который находится за видимой областью экрана, но является полем тачскрина.

Для прослушивания аудио композиций нужно нажать на значок “Audio”. На дисплее появится название композиции, «глубина» звучания (BITS) и кол-во каналов (CHANNELS). Воспроизведение начнется автоматически. Для остановки воспроизведения трека необходимо нажать кнопку. Для воспроизведения следующего трека коснуться стилусом в любой точке экрана, а для выхода из меню “Audio” нужно нажать стилусом на значке “*”.

Данные о системе можно получить нажав стилусом на значке “System”. Данная информация заранее приписана в программе. Температура “снимается” приклеенным к микроконтроллеру датчиком температуры. Для обновления информации о температуре контроллера коснуться стилусом в любой точке экрана. Для выхода из меню “ System ” нужно нажать стилусом на значке “*”.

Также имеется простенькая “рисовалка” типа Paint. Меню “Paint” состоит из палитры основных цветов (увеличение их кол-ва никакого труда не представляет) и области нанесения рисунка. Нажимаем стилусом на необходимый цвет и рисуем. Цвет рабочего стола (белый) в палитре является так же ластиком ( логично) ). Диаметр “кисти” 2 пикселя. Для выхода из меню “Paint” нужно нажать стилусом на значке “*”.

В меню “Thermo” содержится информация о температуре окружающей среды, “снимаемой” со второго термодатчика подключенного к разъему. Для обновления данных о температуре достаточно коснуться стилусом в любой точке экрана. Для выхода из меню “ Thermo ” нужно нажать стилусом на значке “*”.

Описание работы схемы электрической принципиальной и программы микроконтроллера.

Биты конфигурации программно не прописаны.

При инициализации МК DD1 настраиваются: порты на ввод-вывод, SPI1 для тачскрина на частоту 200 кГц в 16 битном режиме, SPI2 для работы с MMC/SD (XS2) картами на частоту 200 кГц в 8 битном режиме, частично ШИМ модуль. После инициализации портов МК происходит инициализация дисплея HG1:1: направление вывода данных, глубина цвета (16 бит: RGB-5,6,5 бит соответственно) и т д. Данные на дисплей выводятся по 16 битной шине используя порты МК В0…В15 – для вывода данных, С6 – указатель данныекоманда, С7 – разрешение записи данных, А7 – сброс дисплея. Дисплей HY32D работает под управлением контроллера SSD1289.

В конце инициализации экран «зальется» черным цветом.

Paint_Area();

Далее МК DD1 по SPI2 отсылает команды инициализации MMC/SD (разъем ХS2). (Работа с картой памяти MMC/SD основана на “библиотеках” Джасио ( не Чена) ).)

initMedia();

Если ответ подпрограммы инициализации отличен от нуля, то карта памяти отсутствует, повреждена или не MMC/SD.

При успешной инициализации  скорость работы SPI2 увеличивается. Далее МК DD1 “пройдясь” по всем смещениям карты памяти, ее секторам и кластерам “монтирует” карту памяти, что бы иметь представление о ней.

mount();

Т. к. при сборе данных о карте памяти программа выделяет некоторую область памяти МК, при компиляции проекта могут возникнуть ошибки с “хипом”. Во избежание этого в настройках необходимо выделить память.

Далее МК DD1 выводит на дисплей анимационную заставку и изображение рабочего стола.

pic(«L2.BMP»);

pic(«T.BMP»);

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

fopenM( name, «r»);

При совпадении того и другого определяем размер файла (ширина-высота), глубина цвета и смещение для определения первого байта изображения. Выводим изображение на дисплей по-пути преобразуя цвет 24 бит в 16.

После вывода изображения МК DD1 переходит в подпрограмму работы с тачскрином HG1:2.

SPI_touch();

Тачскрин дисплея HY32D работает под управлением контроллера XPT2046.

Там в цикле опрашиваются координаты тачскрина (экрана) “Х” и “Y”. При отсутствии воздействия на тачскрин, координата “Х” имеет значение 0, а “Y” 2048. Как лишь значение по оси “Х” изменилось, измеряется 5 значений “Х” и “Y”. Отбрасываются по 2 максимальных и минимальных значения. Полученные данные преобразуются в значения в соответствии с координатами LCD дисплея. Зная положение и размер иконок выведенного на дисплей изображения, определяем “принадлежность” полученной координаты тачскрина одной из иконок.

Touch_at();

Далее в зависимости от меню происходит работа с картой памяти, тачскрином и т д.

При работе с “WAV” файлами по аналогии с файлами изображения определяем все параметры файла.

playWAV( );

В схеме электрической принципиальной и на печатной плате реализован лишь “Моно” режим звучания (RC9, C4, XS1). Для прослушивания файла в режиме “Стерео” потребуется собрать второй фильтр воспользовавшись свободным выходом МК, программно  этот режим уже реализован и определяется автоматически. Для оперативного чтения данных с карты памяти и их ШИМирования, реализован двойной буфер по 512 байт. Это значение можно изменить (но оно должно оставаться кратным 512) в зависимости от кол-ва свободной памяти данных МК.

B_SIZE 512

ABuffer[ 2][ B_SIZE];

Измерение температуры происходит по средством датчиков DS18В20. Обмен данными с ними происходит по интерфейсу 1-wire, реализованному программно.

Dallas_work();

Каждый датчик DS имеет уникальный номер. Это дает возможность “повесить” на один выход МК несколько таких датчиков. Функция определения такого номера тоже реализована программно, но не задействована.

Вывод линий и фигур на дисплей происходит по оптимальным алгоритмам — Брезенхэма.

LCD_Draw_Circle();

LCD_Draw_Line();

Устройство питается от постоянного напряжения 3,3 В. Максимальный ток потребления (на частоте 80 МГц) 130 мА.

Кратко по схеме

Блок питания (на схеме электрической принципиальной А1) был введен условно и на печатной плате отсутствует. Можно воспользоваться любым БП со стабилизированным напряжением от 3 до 3,6 В и током 200 мА. 

R3 — токоограничивающий резистор светодиода. R8 — токоограничивающий резистор подсветки дисплея. R5…R7 подтягивающие резисторы SPI. R4 — токоограничивающий резистор кнопки SA2. Так же в схеме необходимо добавить резисторы номиналом 5,6 кОм (0,125 Вт). Один между RA4 и питанием +3,3 В, второй между RC2 и питанием +3,3 В.

Почти все эл-ты взаимозаменяемы. Все позиции конденсаторов и резисторов позволяют некоторое отклонение при подборе номиналов, кроме конденсатора С3. 

Дополнительные возможности устройства, отсутствующие в демонстрационном видео: чтение и запись файлов в формате “TXT”; вывод на дисплей всех данных о карте памяти, файлах “BMP” и “WAV”; подключение нескольких датчиков DS18B20 к порту А4, вывод на дисплей линий и фигур (как закрашенных, так и полых).


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

DD1
МК PIC 16-битPIC24HJ32GP3041
DA1
DC-DC модульный преобразовательTEN 3-05101
DA2, DA3
Датчик температурыDS18B202
VD1
Диодный мостDB1021
C1
Конденсатор электролитический470 мкФ 16В1
К50-29C2
Конденсатор39 нФ1
К10-17б-М1500C3
Конденсатор0.1 мкФ1
К10-17а-Н 50C4
Конденсатор электролитический100 мкФ 6.3В1
К50-29R1
Резистор120 Ом1
R2
Резистор8.2 кОм1
R3
Резистор280 Ом1
R4-R7
Резистор5.6 кОм4
R8
Резистор47 Ом1
HG1
Индикатор жидкокристалическийHY32D1
VD2, VD3
Светодиод2
SA1
Тумблер клавишныйПТ73-2-3 АГ0.360.077 ТУ1
SA2
Переключатель кнопочныйПКн105-1-1 АГО.360.034 ТУ1
XP1
Вилка220В1
XS1
АудиогнездоST-0131
XS2
Держатель для SD/MMC карты104D-TCA0-R031
FU1
Предохранитель керамическийВП1-1-0,5А, 250В1
TV1
Трансформатор понижающий1
ZQ1
Кварцевый резонатор40.000 МГц1
HC49/UДобавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

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

Ваш адрес email не будет опубликован.