Интернет‑радио на Raspberry Pi с сенсорным экраном

Зачем собирать интернет‑радио на базе Raspberry Pi
Создание собственного интернет‑радио — это полезный учебный проект. Вы научитесь работать с microSD, настраивать Raspberry Pi OS, устанавливать Linux‑сервисы и интегрировать сенсорный интерфейс. Кроме того, вы получите портативное устройство, которое воспроизводит тысячи мировых радиостанций и легко подключается к существующей аудиосистеме через AUX или Bluetooth.
Ключевые преимущества:
- Значительно дешевле готовых коммерческих решений.
- Гибкость: можно менять ПО, внешний вид корпуса и функционал.
- Отличный проект для обучения и демонстрации навыков.
Что потребуется
- Raspberry Pi (рекомендуется модель 3 или 4; подойдёт также Zero/Zero 2 W).
- Сенсорный дисплей (в статье использован DFRobot 7”; подойдёт официальный Raspberry Pi Touch Display или любой совместимый 5”–10”).
- microSD‑карта Class 10, минимум 8 ГБ.
- AUX‑кабель 3.5 мм или внешняя звуковая плата (HAT) для лучшего качества.
- Блок питания 5V, 3A (15W). Желательно официальный адаптер.
- Корпус (3D‑печатный или купленный) — опционально.
- USB‑ридер microSD для прошивки ОС с компьютера.
Факт‑бокс:
- Минимум microSD: 8 ГБ
- Рекомендуемый блок питания: 5V 3A
- Поддерживаемые дисплеи: 5”–10”
Обзор архитектуры и варианты ПО
Мини‑методология: соберите аппарат, установите ОС, подключите дисплей и сеть, установите плеер, настройте автозапуск.
Популярные ПО‑варианты для интернет‑радио (альтернативы Peppy):
- Peppy Player — гибкий, работает с Pygame и VLC.
- Mopidy — музыкальный сервер с веб/мобильным интерфейсом.
- Volumio — готовая аудио‑система с UI для плееров и интернет‑радио.
- RuneAudio — аудиофокусированная система для HiFi‑приложений.
Когда Peppy предпочтительнее: если нужен локальный сенсорный интерфейс и кастомизация Python/Pygame. Если хотите минимальной настройки и веб‑доступа — выбирайте Volumio или Mopidy.
Подготовка microSD — установка Raspberry Pi OS
- Скачайте Raspberry Pi Imager с официального сайта и запустите на Windows/macOS/Linux.
- Выберите Raspberry Pi OS (рекомендуется версия с рабочим столом) и флешните на microSD.
- При первой загрузке пройдите начальную конфигурацию (Wi‑Fi/Ethernet, локализация, автологин).
Важно: перед продолжением включите SSH (можно через Raspberry Pi Configuration или добавив пустой файл ssh в раздел boot microSD).
Подключение сенсорного дисплея
Если у вас официальный Raspberry Pi Touch Display:
- Подключите DSI‑шлейф к порту DSI на плате Raspberry Pi.
- Подайте питание дисплея на GPIO (как указано в документации дисплея).

Если у вас DFRobot 7” (HDMI):
- Подключите дисплей к HDMI‑порту Raspberry Pi.
- Для питания дисплея соедините micro‑USB дисплея с USB‑портом Raspberry Pi.
Совет: сначала соберите всё на столе, убедитесь в работоспособности дисплея, затем фиксируйте в корпусе.
Шаг 1 — базовая настройка Raspberry Pi
После первой загрузки выполните базовые шаги (можно через GUI или по SSH):
- Настройте Wi‑Fi или проводное подключение.
- Включите SSH для удалённого доступа.
- Включите автологин, если устройство будет работать автономно.
- Установите локализацию и раскладку клавиатуры.
- Расширьте файловую систему (если требуется).
Затем обновите пакеты (через SSH или терминал):
sudo apt update && sudo apt upgrade -yШаг 2 — права доступа TTY и Pygame
Добавьте основного пользователя (обычно pi) в группу tty и измените маски в udev, чтобы Pygame корректно работал от не‑root пользователя.
sudo usermod -a -G tty pi
sudo nano /lib/udev/rules.d/50-udev-default.rulesНайдите строку:
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620"Измените на:
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"Сохраните Ctrl+X, Y, Enter.
Установите Pygame:
sudo apt-get install python3-pygameШаг 3 — установка дополнительных библиотек и зависимостей
Установите pip3 и необходимые системные пакеты:
sudo apt-get install python3-pip git vlc sqlite3 udisks2 bluealsa eject
sudo apt install python3-smbus python3-serial
pip3 install python-vlc tornado RPi.GPIO discogs_client pynanosvg feedparser mutagen pexpect Pillow rpi-backlight pyudev pyowm pafy numpy psutil yahooquery pyaztroУстановка патч‑версии libsdl (пример из статьи):
wget https://www.dropbox.com/s/0tkdym8ojhcmbu2/libsdl1.2debian_1.2.15+veloci1-1_armhf.deb
sudo dpkg -i libsdl1.2debian_1.2.15+veloci1-1_armhf.deb
sudo apt-get -f installЕсли apt‑get выдаёт ошибки, запустите sudo apt –fix-broken install и повторите.
Дайте права на управление подсветкой экрана (чтобы не требовать sudo при управлении яркостью):
echo 'SUBSYSTEM=="backlight",RUN+="/bin/chmod 666 /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power"' | sudo tee -a /etc/udev/rules.d/backlight-permissions.rulesШаг 4 — клонирование и установка Peppy Player
Клонируйте репозиторий и подготовьте сервис автозапуска:
cd ~
sudo apt install git
git clone https://github.com/project-owner/Peppy.gitЗапустите Peppy как сервис (пример команды из репо):
wget https://raw.githubusercontent.com/project-owner/Peppy.doc/master/files/peppy.service
sudo mv peppy.service /etc/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable peppy.serviceЕсли сервис не стартует, смотрите логи:
sudo journalctl -u peppy.service -b --no-pagerКонфигурация аудио и дисплея
Откройте /boot/config.txt для настройки HAT или дисплея:
sudo nano /boot/config.txtДобавьте HAT‑осквер для внешней звуковой платы, например:
dtoverlay=hifiberry-dacplusДля DFRobot 7” добавьте настройки HDMI (убирают чёрные поля и выставляют режим):
disable_overscan=1
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_group=2
hdmi_mode=87Отключите встроенное аудио, если используете HAT:
#dtparam=audio=onНастройте Peppy в /home/pi/Peppy/config.txt, секция volume.control:
[volume.control]
type = amixer
amixer.scale = linear
amixer.control = DigitalСохраните и перезагрузите:
sudo rebootПодключение звука
- Для простого варианта подключите AUX‑кабель 3.5 мм от Raspberry Pi к усилителю или колонке.

- Для лучшего качества используйте HAT‑DAC (HiFiBerry и др.).
- Bluetooth‑колонки требуют дополнительной настройки bluealsa/BlueZ и сопряжения.
Экспресс‑образ Peppy
Можно найти готовые образы Peppy для конкретных дисплеев и просто прошить microSD — это ускорит установку. Однако при использовании headless‑режима и нестандартного дисплея образ может не работать. В таких случаях лучше ставить пакетно и настраивать вручную.
Тестирование и критерии приёмки
Критерии приёмки:
- Raspberry Pi успешно загружается с microSD и подключается к сети.
- Сенсорный экран отображает UI и реагирует на касания.
- Peppy Player запущен как сервис и воспроизводит поток из интернета.
- Звук идёт на выбранный вывод (AUX или HAT) без прерываний.
- Автозапуск работает после перезагрузки.
Короткие тесты (acceptance):
- Проверить ping до радиостанции или URL потока.
- Открыть логи systemd для peppy.service.
- Воспроизвести локальный аудиофайл через VLC (проверка подсистемы аудио).
Отладка — частые проблемы и решения
Проблема: сенсор не реагирует
- Проверьте кабель DSI/HDMI и питание дисплея.
- Убедитесь, что в config.txt указаны правильные параметры для дисплея.
Проблема: Peppy не стартует
- Просмотрите логи: sudo journalctl -u peppy.service
- Запустите Peppy вручную из каталога Peppy, чтобы увидеть ошибки в консоли.
Проблема: нет звука
- Убедитесь, что правильный вывод выбран в настройках (amixer, HAT).
- Если используете HAT, добавьте dtoverlay в /boot/config.txt.
Проблема: зависимости pip3 конфликтуют
- Попробуйте создать виртуальное окружение python3 -m venv venv и установить зависимости внутри.
Полезные проверки и сценарии тестирования
- Проверка сети: ping 8.8.8.8
- Проверка потока: curl -I
- Проверка VLC: cvlc
Варианты корпуса и дизайн
- 3D‑печать: распечатайте корпус, учитывая вентиляцию и доступ к разъёмам.
- Корпус из дерева: добавит эстетики для домашней аудиотехники.
- Крепления VESA: если хотите повесить устройство на стену.
Риски и советы по безопасности
- Используйте качественный блок питания: нестабильное питание вызывает глюки и повреждение SD.
- Делайте резервную копию конфигураций и образа microSD перед экспериментами.
- Ограничьте доступ по SSH паролем или используйте ключи.
Роли и чек‑листы
Для начинающего (цель — работающее радио):
- Приобрёл Raspberry Pi, кабеля и дисплей.
- Флешнул Raspberry Pi OS.
- Установил дисплей и подключил питание.
- Подключил к Wi‑Fi и включил SSH.
- Установил Peppy и проверил звук.
Для энтузиаста (цель — кастомизация):
- Подключил HAT‑DAC и проверил качество.
- Настроил автозапуск и восстановление сервиса.
- Сделал скрипт бэкапа конфигураций.
Для продвинутого (цель — релиз/установка в доме):
- Настроил secure SSH ключи и firewall.
- Подготовил image‑шаблон с предустановленными пакетами.
- Описал процедуру восстановления (rollback).
Альтернативные подходы и когда они подходят
- Volumio: если нужен «аудиофильский» интерфейс и простая настройка сетевых сервисов.
- Mopidy + Iris (веб UI): когда важен доступ с телефона и интеграция с потоковыми сервисами.
- Home Assistant + медиаплеер: когда нужно интегрировать радио в умный дом.
План действий для тиражирования (high‑level roadmap)
- Прототип: собрать один рабочий бокс и проверить стабильность.
- Шаблонизация: подготовить скрипты установки и настроек.
- Корпус и монтаж: подготовить дизайн корпуса и инструкцию по сборке.
- Тиражирование: клонировать microSD и тестировать на 3–5 устройствах.
Краткое резюме
Интернет‑радио на Raspberry Pi с сенсорным экраном — доступный и обучающий проект. Он комбинирует работу с Raspberry Pi OS, Pygame/VLC и настройку аудио. Изучите альтернативы (Volumio, Mopidy), подготовьте резервные образы и используйте чек‑листы для тестирования. Проект легко масштабируется и интегрируется в существующую аудиосистему.
Важно: если что‑то не получилось — восстановите образ microSD и повторите шаги. Лучше двигаться последовательно и проверять логи, чем менять множество параметров сразу.