Продолжение... Музыкальный центр своими руками на основе STM32F103
Решил переделать свой музыкальный центр - остановился на использовании только одного устройства - проигрывателя в виде RPI. В малине уже присутствует WiFi, блютуз и дополнительно добавил usb сетевую карту.
Блютуз можно использовать только если RPI подключен к сети через usb сетевую карту. Зато сопряжение к телефону и переключение обратно проходит очень быстро.
Комплектующие:
- реализовал через microusb разъём, 5 вольт беру с дежурного блока питания.
Вот как это работает: оригинал
- У RPi в /boot/config.txt включен оверлей "dtoverlay=gpio-poweroff". Он обеспечивает на GPIO26 низкий логический уровень с момента запуска ядра.
- При выходе из ждущего режима сигнал STBY=1 от ampcontrol открывает транзистор Q1, который открывает Q2 и через STEP-DOWN U1 на Raspberry Pi подаётся 5В - она включается. Если в это время работает программный таймер на выключение RPi, он останавливается.
- Где-то через пару секунд ядро загружается и выставляет активный лог. 0 на GPIO26. Через разъём J2 (RPI_OFF) этот уровень закрывает транзистор Q4 и открывает транзистор Q3, "защёлкивающий" питание RPi.
- При входе в ждущий режим сигнал STBY пропадает (STBY=0), но Raspberry держит сама своё питание посредством цепочки Q4-Q3-Q2. В это же время запускается программный таймер на выключение RPi через 1 минуту. По истечении этого времени по UART в mpd-uart.py посылается команда на отключение ("poweroff"). Эта команда запускает скрипт "/home/pi/poweroff.sh", который запускает правильное отключение RPi.
- Когда RPi полностью завершит работу, ядро снимает активнй лог. 0 на GPIO26 - соответственно, транзистор Q4 открывается, транзистор Q3 закрывается, питание Raspberry пропадает.
60-секундная задержка введена для того, чтобы при кратковременных выключениях ampcontrol лишний раз не дёргать RPi зря, так как на RPi3B+ у меня включение RPi до момента, когда начинает играть музыка занимает целых 18 секунд. Не хочется ждать загрузки ещё раз после очередной прошивки или других кратковременных выходов в ждущий режим.
Спаял шилд для вертикального крепления RPI и сделал разводку для подключения цапа PCM5102, а также вывел разъём для подключения UART к AMPcontrol и кнопки - завершения работы.
Raspberry Pi Zero W
Так как у меня далеко расположен роутер решил отказаться от WiFi и перейти на LAN. Купил самый дешевую usb-сетевую карту. Брал с microusb - пришлось перепаять под usb. Через OTG переходник вывел usb разъём на заднюю панель для подключения сетевой карты.
Чип: CoreChips SR9700 - скорость USB 1.x, не впаян изолирующий трансформатор TS6121A - В общем так себе оказалась сетевая карта но рабочая.
обратная сторона
Схема подключения microusb на usb - OTG переходник.
Для управления и обмена данными был установлен скрипт на moode audio player.
Управление MPD реализовано так:
IP адрес можно увидеть после нажатия кнопки стоп которая реализована на IR пульте.
С помощью пульта есть возможность переключать до 1000 плей листов, т.е. если мы используем радио станции то каждую радио станцию прописываем в отдельный плейлист. Тогда под конкретной цифрой будет нужная радиостанция. Также можно использовать обычные плейлисты с музыкой.
Названия плейлистов в MPD должны быть - "Playlist_NNN", тогда нужный номер можно "набрать" на клавиатуре пульта.
Пример:
Playlist_001.m3u
Playlist_010.m3u
Сделал себе пульт на смарфоне с помощью бесплатной программы для андройд телефонов irplus. Скачать мой конфиг пульта можно на странице: ИК пульт из android мобильника для AMPcontrol
Если нет звукового сигнала более 20 секунд - включается заставка, независимо от таймера тишины.
Ссылки по теме: