Устройство мультимедиа предназначено для воспроизведения аудио файлов и чтения файлов изображения со съемного носителя информации, а также измерения температуры.
Функции устройства:
Чтение данных с 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. На второй печатной плате находится микроконтроллер с приклеенным к нему датчиком температуры, разъемы для подключения дисплея и питания (справа). Снизу расположен светодиод индикации процесса измерения температуры, разъем подключения карты памяти и трехпиновый разъем (в проекте подключен температурный датчик).
Алгоритм работы устройства
При включении микроконтроллер инициализирует карту памяти, чтобы загрузить с нее динамическую картинку приветствия и интерфейс “рабочего стола”. Если карта памяти отсутствует, на дисплей будет выведено соответствующее сообщение “SDCARD NOT FOUND”. Как только карта памяти смонтирована, с нее загружается динамическое изображение “CXEM.NET” и интерфейс “рабочего стола” в формате “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-бит | PIC24HJ32GP304 | 1 | Поиск в магазине Отрон | ||
DA1 | DC-DC модульный преобразователь | TEN 3-0510 | 1 | Поиск в магазине Отрон | ||
DA2, DA3 | Датчик температуры | DS18B20 | 2 | Поиск в магазине Отрон | ||
VD1 | Диодный мост | DB102 | 1 | Поиск в магазине Отрон | ||
C1 | Конденсатор электролитический | 470 мкФ 16В | 1 | К50-29 | Поиск в магазине Отрон | |
C2 | Конденсатор | 39 нФ | 1 | К10-17б-М1500 | Поиск в магазине Отрон | |
C3 | Конденсатор | 0.1 мкФ | 1 | К10-17а-Н 50 | Поиск в магазине Отрон | |
C4 | Конденсатор электролитический | 100 мкФ 6.3В | 1 | К50-29 | Поиск в магазине Отрон | |
R1 | Резистор | 120 Ом | 1 | Поиск в магазине Отрон | ||
R2 | Резистор | 8.2 кОм | 1 | Поиск в магазине Отрон | ||
R3 | Резистор | 280 Ом | 1 | Поиск в магазине Отрон | ||
R4-R7 | Резистор | 5.6 кОм | 4 | Поиск в магазине Отрон | ||
R8 | Резистор | 47 Ом | 1 | Поиск в магазине Отрон | ||
HG1 | Индикатор жидкокристалический | HY32D | 1 | Поиск в магазине Отрон | ||
VD2, VD3 | Светодиод | 2 | Поиск в магазине Отрон | |||
SA1 | Тумблер клавишный | ПТ73-2-3 АГ0.360.077 ТУ | 1 | Поиск в магазине Отрон | ||
SA2 | Переключатель кнопочный | ПКн105-1-1 АГО.360.034 ТУ | 1 | Поиск в магазине Отрон | ||
XP1 | Вилка | 220В | 1 | Поиск в магазине Отрон | ||
XS1 | Аудиогнездо | ST-013 | 1 | Поиск в магазине Отрон | ||
XS2 | Держатель для SD/MMC карты | 104D-TCA0-R03 | 1 | Поиск в магазине Отрон | ||
FU1 | Предохранитель керамический | ВП1-1-0,5А, 250В | 1 | Поиск в магазине Отрон | ||
TV1 | Трансформатор понижающий | 1 | Поиск в магазине Отрон | |||
ZQ1 | Кварцевый резонатор | 40.000 МГц | 1 | HC49/U | Поиск в магазине Отрон | |
Скачать список элементов (PDF)
Прикрепленные файлы:
- pic.rar (388 Кб)
- перечень_элементов1.doc (152 Кб)
Комментарии (3) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]