DIY информационный дисплей на Raspberry Pi: музыка, погода и уведомления
Создайте свой собственный информационный дисплей на базе Raspberry Pi для отображения информации о воспроизведении Spotify/Sonos, прогноза погоды и других данных. Пошаговое руководство с настройкой программного обеспечения.
Подготовка системы и компонентов
Установка Raspberry Pi OS, настройка SSH и обновление системы. Подготовка компонентов: Raspberry Pi 3B+ или новее, OLED-дисплей 1.3" SSD1351, карта памяти microSD, блок питания.
sudo apt update
sudo apt upgrade -yУстановка и настройка OLED-дисплея
Установка библиотеки luma.oled и настройка подключения дисплея к GPIO пинам Raspberry Pi. Создание конфигурационного файла для дисплея.
pip3 install luma.core luma.oled
# В display_config.py
from luma.core.serial import spi
from luma.oled.device import ssd1351
serial = spi(device=0, port=0)
device = ssd1351(serial, width=128, height=128, rotate=0)Установка необходимых библиотек
Установка библиотек для работы с API Spotify, OpenWeatherMap, Sonos и обработки изображений.
pip3 install spotipy pyowm requests soco pillowНастройка Spotify API
Регистрация приложения в Spotify Developer Dashboard, получение Client ID и Client Secret. Создание конфигурационного файла и скрипта для авторизации.
# В spotify_config.py
CLIENT_ID = 'ваш-client-id'
CLIENT_SECRET = 'ваш-client-secret'
REDIRECT_URI = 'http://localhost:8080/callback'
SCOPE = 'user-read-currently-playing user-read-playback-state'Настройка API погоды
Регистрация на OpenWeatherMap и получение бесплатного API-ключа. Создание конфигурационного файла для погоды.
# В weather_config.py
API_KEY = 'ваш-api-ключ-openweathermap'
CITY = 'Ваш город'
COUNTRY = 'Ваша страна (например, RU)'Создание основного приложения
Разработка основного приложения для отображения информации на OLED-дисплее. Оптимизация кода для работы с ограниченными ресурсами Raspberry Pi.
# Основной цикл приложения
while True:
display_spotify_info()
time.sleep(15)
display_weather_info()
time.sleep(15)Настройка автозапуска
Создание системного сервиса для автоматического запуска приложения при загрузке Raspberry Pi.
# /etc/systemd/system/spotify-display.service
[Unit]
Description=Spotify Display Service
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi
ExecStart=/usr/bin/python3 /home/pi/display_app.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetДобавление Sonos и расширение функциональности
Интеграция поддержки Sonos для отображения информации о воспроизведении. Добавление отображения системной информации, новостей и других данных.
# Функция для Sonos
def display_sonos_info():
try:
current_track = sonos.get_current_track_info()
if current_track['title']:
track_name = current_track['title']
artist_name = current_track['artist']
# Отображение информации на дисплее
except Exception as e:
print(f"Ошибка отображения Sonos: {e}")