Найти в Дзене
merkulss

Умный информационный дисплей на Raspberry Pi с E-Paper экраном 7.5 дюймов

Этот проект создавался (не без помощи замечательного DeepSeek) для привлечения дочери к изучению python и linux на летние каникулы, демонстрации возможностей и представляет собой универсальное информационное табло на базе Raspberry Pi и 7.5-дюймового E-Paper дисплей. Устройство отображает: Особенность проекта - управление через Telegram бота, что позволяет удаленно обновлять информацию на дисплее. Этот проект демонстрирует, как можно создать информационное табло с минимальным энергопотреблением и удобным управлением через Telegram. E-Paper технология идеально подходит для таких решений, обеспечивая четкое изображение даже при ярком освещении и отсутствие мерцания. Проект может быть легко адаптирован под конкретные нужды, будь то домашнее использование, офисный информационный дисплей или специализированное решение для отображения данных. Себе запуск делал через скрипт run.sh с активацией venv (внутри пути поправить нужно на свои). Так же в диске есть requirements.txt для зависимостей,
Оглавление

Описание проекта

Этот проект создавался (не без помощи замечательного DeepSeek) для привлечения дочери к изучению python и linux на летние каникулы, демонстрации возможностей и представляет собой универсальное информационное табло на базе Raspberry Pi и 7.5-дюймового E-Paper дисплей. Устройство отображает:

  • Аналоговые и цифровые часы
  • Календарь с выделением текущей даты
  • Текущую погоду и прогноз на ближайшие часы
  • Пользовательские напоминания
  • Возможность вывода пользовательских изображений

Особенность проекта - управление через Telegram бота, что позволяет удаленно обновлять информацию на дисплее.

Технические особенности

Аппаратная часть

  • Raspberry Pi (любая модель с поддержкой Python)
  • в своем варианте использовал RaspberryPi 3B
  • 7.5-дюймовый E-Paper дисплей (например, Waveshare 7.5" V2)
  • в текущем варианте использовался 7.5inch HD e-Paper E-Ink Display HAT for Raspberry Pi, 880×528, Black / White, SPI ссылка: https://www.waveshare.com/7.5inch-hd-e-paper-hat.htm
  • Источник питания

Программная часть

  • Python 3 с использованием библиотек:
  • waveshare_epd для работы с дисплеем
  • Pillow для работы с изображениями
  • python-telegram-bot для управления через Telegram
  • requests для получения данных о погоде

Ключевые функции

  1. Отображение времени:
  2. Аналоговые часы с плавным ходом стрелок
  3. Цифровое время с датой
  4. Календарь:
  5. Месячный вид с выделением текущего дня
  6. Автоматическое определение количества дней в месяце
  7. Погода:
  8. Текущая температура и ощущения
  9. Описание погодных условий
  10. Прогноз на ближайшие часы
  11. Иконки погоды (требуется специальный шрифт)
  12. Кэширование данных для работы при отсутствии интернета
  13. Напоминания:
  14. Добавление/удаление через Telegram бота
  15. Сохранение между перезагрузками
  16. Отображение до 5 напоминаний
  17. Управление через Telegram:
  18. Отправка изображений для вывода на дисплей
  19. Управление напоминаниями
  20. Принудительное обновление погоды
  21. Сброс к стандартному виду

Установка и настройка

  1. Установите необходимые библиотеки:
  2. pip install pillow python-telegram-bot requests pytz
  3. Скопируйте библиотеки для работы с дисплеем в папку lib
  4. Создайте файл settings_epaper.json или он создастся автоматически при первом запуске
  5. Настройте API ключи в скрипте:
  6. Ключ OpenWeatherMap для погоды
  7. Токен Telegram бота
  8. строки:
  9. WEATHER_API_KEY = '***' # Replace with your API key
  10. TELEGRAM_TOKEN = '***' # Replace with your bot token
  11. Настройте регион для погоды в строках:
  12. current_url = f"http://api.openweathermap.org/data/2.5/weather?q=Akhtubinsk,ru&units=metric&lang=ru&appid={WEATHER_API_KEY}&units=metric"
  13. forecast_url = f"http://api.openweathermap.org/data/2.5/forecast?q=Akhtubinsk,ru&units=metric&lang=ru&appid={WEATHER_API_KEY}&units=metric&cnt=4"
  14. Запустите скрипт:
  15. python rpi_epaper.py

Особенности реализации

  • Энергоэффективность: E-Paper дисплей потребляет энергию только при обновлении
  • Устойчивость к ошибкам: автоматическое восстановление после сбоев
  • Кэширование данных: работа с погодой возможна даже при временном отсутствии интернета
  • Потоковая обработка: основной цикл обновления экрана работает в отдельном потоке
  • Защита от конфликтов: использование блокировок при обращении к дисплею

Заключение

Этот проект демонстрирует, как можно создать информационное табло с минимальным энергопотреблением и удобным управлением через Telegram. E-Paper технология идеально подходит для таких решений, обеспечивая четкое изображение даже при ярком освещении и отсутствие мерцания.

Проект может быть легко адаптирован под конкретные нужды, будь то домашнее использование, офисный информационный дисплей или специализированное решение для отображения данных.

rpi_epaper

Себе запуск делал через скрипт run.sh с активацией venv (внутри пути поправить нужно на свои). Так же в диске есть requirements.txt для зависимостей, файл шрифтов и содержимое юнит файла для автозапуска. Чтобы настроить автозапуск, кладем в /etc/systemd/system/epaper.service, и включаем, перезапускаем сервис:

sudo systemctl daemon-reload

sudo systemctl enable epaper.service

sudo systemctl start epaper.service

можно проверить статус:

sudo systemctl status epaper.service