Cover Image

Музыкальный центр своими руками на основе STM32F103

Август 19, 2020 - Время чтения: 12 минуты

Нашёл проект который меня заинтересовал - "Темброблок - анализатор спектра на STM32F103".

ФОРУМ, прошивка

Проект поддерживает:

    • Графические дисплеи на основе разных контроллеров:
      160x128: ILI9163, S6D0144, ST7735
      176x132: L2F50126, LPH9157, LS020, SSD1286A
      220x176: HX8340, ILI9225, LGDP4524, S6D0164
      320x240: HX8347A, HX8347D, ILI9320, ILI9341, MC2PA8201, S6D0129, S6D0139, SPFD5408, SSD1289, SSD2119
      400x240: ILI9327, S6D04D1, ST7793
      480x320: HX8357C, ILI9481, ILI9486, R61581, RM68140

  • Аудиопроцессоры с шиной I²C:
    TDA7439, TDA731X, PT232X, TDA7418, TDA7719
  • FM-тюнеры с шиной I²C:
    RDA580X, SI470X, TEA5767
  • Модули Bluetooth 
    CSR8645, BK8000L (управление на основе GPIO через расширитель PCF8574x I²C)
    BT201 (управление на основе USART)
    USB HID
  • Плеером Meida на ПК можно управлять (воспроизведение / пауза и т. Д.) с устройства
  • Устройство может работать как "плагин KaRadio" через USART.

Начал собирать музыкальный центр на основе проекта "Темброблок - анализатор спектра на STM32F103"

Параметры системы анализтора спектра 

Я использовал в своём проекте:

  • Графические дисплей - 2,8 дюймов TFT SPI 240X320 ILI9341
  • Аудиопроцессор - TDA7719
  • Модули Bluetooth - BT201
  • Интернет радио - проект KaRadio32

КОМПИЛЯЦИЯ прошивки

  1. Скачать мой архив: drive.google.com
  2. Распаковать на диск Д
  3. В папку распаковать архив с гитхаб с новой прошивкой. Переименуйте папку в ampcontrol-f103
  4. Запустить файл RUN.bat
    — дать команду для перехода в папку с прошивкой: ampcontrol-f103\src

    cd d:\Compiler_AMPcontrolF103\ampcontrol-f103\src
    make -j2 all

    По пути найдете свой .bin
    d:\Compiler_AMPcontrolF103\ampcontrol-f103\src\flash\ampcontrol_f103_ili9341_spi.bin

    При компиляции создается папка \ampcontrol-f103\src\build — для чистоты перед последующей компиляцией удаляйте: make clean — чистит ./build/

    make [-jN] — собирает прошивку (в N потоков, если запросить);
    make -J2 all
    make clean — чистит ./build/;
    make flash — прошивает (с помощью STLinkV2 и OpenOCD — нужно иметь этот программатор и рабочий OpenOCD);
    make ee_erase — очищает пользовательские настройки "EEPROM" в значения по умолчанию;
    make ee_backup — сохраняет пользовательские настройки "EEPROM" в файл;
    make ee_flash — прошивает ранее сохранённые пользователем настройки.
    Под настройки выделены последние 4кБ (4 страницы) flash, под названия радиостанций — ещё одна страница перед этими.

Править нужно только Makefile. А ampcontrol-f103.config - это вспомогательный файл для проекта в QtCreator, обеспечивающий правильный парсинг кода (правильное затемнение условных конструкций препроцессора #if / #else / #endif и т.п.). Его править имеет смысл только если собираешься писать код.

В принципе, и Makefile можно не трогать. А собирать (в консоли) наподобие:

make clean

make DISPLAY=RM68140 DISPVAR=8BIT

Так, например, работает скрипт массовой сборки прошивок build.sh. Кому интересно, может и в него заглянуть.

Прошивка

Для начала нужно скачать и установить с сайта STMicroelectronics софт Flash Loader Demonstartor. Подключаем  USB ttl конвертер к UART1 (J3 на схеме).

Зажимаем кнопку BTN_2 и подаем питание, загрузится bootloader.  В программе на первом экране выбираем нужный СОМ порт, больше ничего менять не нужно, программа должна увидеть подключенный проц и пустить дальше, а там уже выбрать размер памяти 128кБ, указываем путь к файлу прошивки, и в принципе, все. Пойдет загрузка, после чего нужно перезапустить проц без нажатой BTN_2, на дисплее должны появиться часы.

Если STLink - то да, шьётся по SWD. Кнопку reset нажимать не надо, но в первый раз (кто знает, что там в МК было) лучше нажать.

Прошивка STM32 с помощью ST-Link программатора

Подключение

UART1 — занят под BT201
UART2 — занят под KaRadio
SWDIO/SWCLK используются для прошивки

Темброблок на TDA7719

Спаял темброблок на TDA7719 на одной плате с Lumazoid (цветомузыка) — звук взял с разъёма SP который идет на анализатор спектра.

TDA7719 - входы идут в порядке 0-4-1-2-5-6 — конфигурация CFG2 по даташиту. В конфигурации CFG2 на 6 входов, недоступен "вход" IN3.

Темброблок TDA7719 + расширитель портов и блок питания

tda77189_02.jpg 

На схеме с TDA7719 есть три резистора R1, R2, R3 но номиналы их не указаны.

R2 и R3 не нужны (они уже есть на самом ampcontrol), R1 - либо перемычка, 0 Ом, при подключении на IN2 обычного источника сигнала, либо не ставить (∞ Ом), если не подключается псевдо-дифференциальный источник сигнала.

Базовая поддержка модуля BT201

Пока — только управление воспроизведением (play/next/prev).
Принудительное переключение источника на модуле ВТ201 (ВТ-->TF-->USB) — отдельная кнопка пульта, с передней панели — длинное нажатие кнопки 2.
Подключается к системе по UART1
Сборка - модуль bt201 и KaRadio32 

Настройка модуля BT201

Восстановить заводские настройки

AT+CW  Восстановить заводские настройки, очистить все ранее запомненные параметры

AT + CW \ r \ n Чип восстанавливает заводские параметры по умолчанию

Отключит входящие звонки

AT+B2 call settings Ditto

Отключает все звуки ( включения, коннекта, перехода в режим проигрывателя)

AT+CN01\r\n Turn on -- The chip will automatically play the prompt sound

AT+CN00\r\n Turn off -- the chip will turn off the prompt sound at this time -- power off and save

Отключить переключение на разговор при игре флэшки при входящем

AT+CK00\r\n Turn off -

AT+CK01\r\n Turn on - если играет флешка и идет входящий то автоматом переключается на разговор.

Выключить блютуз из фона

AT+CG00\r\n Close-Bluetooth does not run in the background

AT+CG01\r\n Open-Bluetooth Background

Установите имя и пароль Bluetooth [BD] [BE] [BM]

AT + BDAUDIO \ r \ n Установите имя Bluetooth на «AUDIO»

Отключить BLE

AT+B400\r\n Here is the function to turn off BLE.The default is 0x01

Управление

Управление питанием - подключение всех модулей

Блок управления питанием 

 

Подключение:

Menu AUDIO: вход 0 - Bluetooth, вход 1 - ФМ тюнер, вход 3 - KaRadio

TDA7719: вход 0 - Bluetooth, вход 2 - KaRadio, вход 1 - ФМ тюнер

PCF8574 и PCF8574A - Расширитель портов 8 бит I2C DataSheet

P.S. Адреса могут быть только чётными — потому что нечётность означает чтение.
0x27, соответствует адресу 0x4E в даташите PCF8574 и в настройках.

Используем пины: P0 - Bluetooth, P1 - ФМ тюнер, P3 - KaRadio

PCF8574.jpg 

Линии MUTE/STBY — выходы непосредственно МК. В ждущем режиме на них обеих уровень 0В.
При включении устройства сначала логический уровень единицы (3.3В) появляется на выходе STBY,
которым через, например, реле можно подать питание на УНЧ. Через некоторое время логическая единица
появляется на выходе MUTE, одновременно аудиопроцессор начинает выдавать звук на УНЧ.
При отключении (выходе в ждущий режим) MUTE и STBY выключаются в обратной последовательности,
что может помочь избавиться от щелчков в динамиках. Очень часто интегральные усилители
сразу имеют подобные входы MUTE/STBY, и можно подключаться и к ним. Только надо иметь,
что 3.3В активного уровня может быть недостаточно для УНЧ и, возможно,
нужно ставить дополнительную схему согласования уровней.
Так, например, у популярной TDA7293/TDA7294 для включения на её входах MUTE/STBY должно быть не менее 3.5В.

Как выставить часы:

При включённом AMP зажать кнопку INPUT и удержать её около 3 сек - отпустить и тут же зажать и подержать пару сек

Задействовать режим работы 2.1

Есть возможность в меню понизить функциональность в порядке 5.1 => 4.1 => 4.0 => 2.1 => 2.0, что убирает ненужные в данный момент регулировки из меню.

Дополнительно, для TDA7719:

1) если выбрать 2.1 или 4.1 режимы, то на выходы сабвуфера включаются встроенное микширование L+R плюс НЧ-фильтр

2) если выбрать 4.0 режим, то на выходах сабвуфера будет не зависящий от уровня громкости аудиосигнал.

3) если выбрать 2.0 или 2.1 режимы, то на тыловых выходах не зависящий от уровня громкости аудиосигнал.

Во 2 или 3 случае эти "лишние" выходы удобно подключать к собственно анализатору спектра, т.к. TDA7719 не имеет промежуточных выходов с селектора входов, как другие аудиопроцессоры.

IR-Пульт

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

Можно назначить тот же код, что у кнопки STBY. Это самая первая функция в списке на обучение, поэтому код отработает только для неё.

Для часов используется:

Резонатор кварцевый часовой 32.768 кГц KX-38T 6pF

Инверсия дисплея ST7735

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

Подключение:

BCKL - LED, SCK - SCK, WR - SDA, RS - A0, RST - RESET, CS - CS, GND - GND, 3.3V - VCC

Подключение блютуз модуля CSR8645 или BK8000L через PCF8574

В этих модулях (аналогично, возможно, и в других) есть возможность управления плеером на телефоне через кнопки. Кнопки в этих модулях подключатся к питанию.

Таким образом, идея управления следующая. PCF8574 держит на своих выводах (эмулирующих кнопки) уровень 0. Когда на передней панели (или пульте) ampcontrol нажимается медиакнопка (Play/Prev/Next), соответствующий выход PCF8574 на 200мс становится лог. 1, эмулируя нажатие кнопки. Затем снова опускается.

На CSR8645 работает нормально, на BK8000L не проверял, но тоже не вижу причин, почему бы нет. Выводы PCF8574 и BT-модуля соединял через резисторы 10кОм. Но это, вероятно, не критично.

Разводка следующая (можно подсмотреть в bt.h исходников).

У PCF8574 есть выходы P7..P0. Они играют роль кнопок для BT модуля. Ну а к проекту подключаются по I²C.

Код:

Bluetooth   PCF8574

VOL_MINUS     P7

VOL_PLUS       P6

NEXT_TRACK  P5      - реализовано

PREV_TRACK  P4      - реализовано

NEXT INPUT     P3      - реализовано

PLAY_PAUSE    P2     - реализовано

LED1        P1

LED0        P0

Адрес PCF8574 для контроля BT-модулей задаётся также в настройках, аналогично статусу входов.

  1. KaRadio32 - интернет радио
  2. KaRadio32 - как прошить
  3. KaRadio32 - создаем файл конфигурации
  4. KaRadio32 - ВЭБ интерфейс от bazooka07

LINKS from Nadim

Static Pages