Резюме.
Фотодисплей на электронной бумаге.
Пожалуйста, ознакомьтесь с полными подробностями наСтраница на GitHub.
Введение.
Этот проект превращает Raspberry Pi Zero 2 W с 7,5-дюймовым электронным чернильным дисплеем Waveshare в динамический фотопросмотрщик, который загружает изображения из Firebase Storage и отображает их с наложенными часами. Я создал этот проект для своих бабушки и дедушки в качестве подарка на Рождество 2024 года. Они были просто в восторге! Это прекра
Компоненты.
Необходимые детали.
-
7.5-дюймовый e-Paper HAT от Waveshare.
-
Raspberry Pi Zero 2 W.
-
Филамент PLA.
- Любая стандартная нить PLA для 3D-печати.
- Винты и гайки.
- 4 винта M2.5
- 4x гайки M2.5
Детали, напечатанные на 3D-принтере.
Файлы в формате STL.
Проект включает в себя 3D-печатные файлы для рамки дисплея e-Paper. Вы можете найти их в папке STL:
- Frame_Base.stl
- Frame_Lid.stl
Используйте ваше предпочитаемое программное обеспечение для 3D-печати для печати этих деталей. Убедитесь, что настройки вашего принтера соответствуют спецификациям, необходимым для вашей нити PLA.
Ассамблея.
-
Напечатайте рамку:
- Используйте предоставленные STL-файлы для печати Frame_Base.stl и Frame_Lid.stl.
-
Соберите дисплей:
- Прикрепите плату Waveshare e-Paper HAT к Raspberry Pi Zero 2 W с помощью винтов и гаек M2.5.
- Закрепите Raspberry Pi и дисплей e-Paper внутри 3D-печатной рамки.
- Подключите Power:
- Убедитесь, что Raspberry Pi подключен к надежному источнику питания.
Установка программного обеспечения.
1. Подготовьте свой Raspberry Pi.
Прежде чем продолжить, убедитесь, что ваш Raspberry Pi Zero 2 W:
-
Настроен с последней версией ОС:
- Установите Raspberry Pi OS Lite для минимальной настройки.
-
Подключено к сети:
- Отредактируйте файл wpa_supplicant.conf, чтобы включить в него ваши учетные данные Wi-Fi.
- SSH включен:
- Разместите пустой файл под названием ssh (без какого-либо расширения) в загрузочном разделе SD-карты, чтобы включить SSH.
Пример wpa_supplicant.conf:
страна=USctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ ssid="YOUR_WIFI_SSID" psk="YOUR_WIFI_PASSWORD"}2. Установить зависимости.
Подключитесь к своему Raspberry Pi через SSH и установите необходимые пакеты:
sudo apt updateПримечания:
-
Python 3:Убедитесь, что Python 3 установлен на вашем Raspberry Pi. Вы можете проверить версию с помощью:
python3 --version -
Пип3:Установщик пакетов Python должен быть доступен. Если нет, установите его с помощью:
sudo apt install -y python3-pip - Библиотека электронной бумаги Waveshare:Библиотека Waveshare-ePd необходима для взаимодействия с дисплеем e-Paper. Убедитесь в совместимости с вашей конкретной моделью e-Paper.
3. Настройте скрипт.
-
Клонируйте репозиторий:
Замените yourusername и your-repo-name на ваше настоящее имя пользователя и название репозитория на GitHub.
Git clone https://github.com/yourusername/your-repo-name.gitcd your-repo-name -
Редактируйте конфигурацию:
Откройте скрипт eink.py и замените пути и настройки-заполнители своими собственными.
nano eink.pyРаздел конфигурации:
# ============================# Конфигурация (замените следующее своими настройками)# ============================CACHE_DIR = '/путь/к/вашему/eink_cache' # ЗАМЕНЬТЕ на путь к вашей кэш-папкеFONT_PATH = "/путь/к/вашим/шрифтам/DejaVuSans.ttf" # ЗАМЕНЬТЕ на путь к вашему шрифтовому файлуDIS- КАШЕ-ДИРЕКТОРИЯ: Каталог для хранения кэшированных изображений.
- PATH_FONT: Путь к вашему файлу шрифта TrueType.
- ШИРИНА_ДИСПЛЕЯ И ВЫСОТА_ДИСПЛЕЯ: Разрешение вашего дисплея e-Paper.
- ПРОДОЛЖИТЕЛЬНОСТЬ ОТОБРАЖЕНИЯ ИЗОБРАЖЕНИЯВремя, в течение которого каждое изображение отображается (в секундах).
- ИНТЕРВАЛ ОБНОВЛЕНИЯ ЧАСОВИнтервал для обновления часов (в секундах).
- ПУТЬ К УЧЁТНЫМ ДАННЫМ FIREBASE.: Путь к файлу JSON учетной записи вашего сервиса Firebase.
- ИМЯ БУКЕТА FIREBASE: Название вашего хранилища Firebase.
- ИМЯ ПАПКИ: Папка в Firebase Storage, где хранятся изображения.
- КОЛЛЕКЦИЯ НАСТРОЕК И ДОКУМЕНТ НАСТРОЕККоллекция Firestore и названия документов для настроек отображения.
Сохранить и выйти:
Нажмите CTRL + X, затем Y и Enter, чтобы сохранить изменения и выйти из редактора.
4. Загрузите конфигурацию Firebase.
Безопасно передайте файл JSON учетной записи сервиса Firebase на Raspberry Pi. Вы можете использовать scp со своего локального компьютера:
scp /path/to/your/firebase-service-account.json pi@your_pi_ip:/path/to/your/firebase-service-account.jsonЗамените /path/to/your/firebase-service-account.json на фактический путь на вашем локальном компьютере и /path/to/your/firebase-service-account.json на желаемый путь на Raspberry Pi.
Пример:
scp ~/Downloads/firebase-service-account.json pi@192.168.1.100:/home/pi/your-repo-name/firebase-service-account.jsonОбеспечь разрешения:
На Raspberry Pi установите соответствующие разрешения для файла учетных данных Firebase:
chmod 600 /home/pi/your-repo-name/firebase-service-account.json5. Настройте скрипт для запуска при запуске.
Чтобы гарантировать, что скрипт запускается автоматически после того, как Raspberry Pi загрузится и подключится к сети, настройте его как сервис systemd.
-
Создайте файл службы:
sudo nano /etc/systemd/system/eink.service -
Добавьте следующий контент:
[Unit]Описание=Сервис отображения фотографий на электронном бумагеПосле=network-online.targetХочется=network-online.target[Сервис]ExecStart=/usr/bin/python3 /home/pi/your-repo-name/eink.pyРабочая директория=/home/pi/your-repo-nameСтандартный вывод=наследоватьСтандартная ошибка=наследоватьПерезапуск=всегдаПользова- ExecStart: Путь к интерпретатору Python и вашему скрипту.
- Рабочая директория.Каталог, в котором находится ваш скрипт.
- Пользователь.: Пользователь, чтобы запустить скрипт в качестве (pi по умолчанию).
-
Перезагрузите systemd и включите службу:
sudo systemctl daemon-reloadsudo systemctl enable eink.servicesudo systemctl start eink.service -
Проверьте статус службы:
sudo systemctl status eink.serviceУбедитесь, что служба активна и работает без ошибок.
Запуск проекта.
После сборки и настройки дисплей e-Paper автоматически начнет отображать изображения из Firebase Storage и обновлять часы в соответствии с вашими настройками.
Добавление изображений.
-
Загрузите изображения в хранилище Firebase:
- Перейдите в консоль Firebase.
- Перейдите наХранение.и загрузить изображения в указанную ПАПКУ_ИМЕНИ.
- Поддерживаемые форматы изображений:
- Убедитесь, что изображения находятся в поддерживаемом формате (например, JPEG, PNG).
Обновление настроек.
-
Настройка Firestore:
- Перейдите наFirestore.В вашей консоли Firebase.
- Найдите SETTINGS_COLLECTION и SETTINGS_DOCUMENT.
-
Доступные настройки:
{"show_clock": true,"show_photos": true,"timezone": "America/New_York"}- Показать часы.(Булевое значение): Показывать ли часы.
- Показать фотографии.(Булевое значение): Отображать ли фотографии.
- Часовой пояс.(Строка): Часовой пояс для часов (например, "America/New_York").
- Изменить настройки:
- Вы можете обновить эти настройки в любое время, и скрипт будет получать последние настройки в соответствии с установленными интервалами.
Устранение неполадок.
-
Шрифт не найден:
- Убедитесь, что FONT_PATH в скрипте указывает на действительный файл шрифта TrueType.
-
Ошибки инициализации Firebase:
- Проверьте, существует ли файл учетных данных Firebase по указанному пути и имеет ли он необходимые разрешения.
-
Проблемы с отображением:
- Проверьте соединения между Raspberry Pi и дисплеем e-Paper.
- Убедитесь, что установлена правильная библиотека e-Paper (waveshare-epd).
-
Служба не запускается:
- Проверьте состояние сервиса systemd с помощью:
- Проверьте журналы на наличие ошибок и убедитесь, что все пути в файле сервиса правильны.
-
Проблемы с сетью:
- Подтвердите, что Raspberry Pi подключен к интернету.
- Убедитесь, что учетные данные Wi-Fi правильно настроены в wpa_supplicant.conf.
- Неудачи при загрузке изображений:
- Убедитесь, что изображения в Firebase Storage доступны публично или что у учетной записи сервиса есть необходимые разрешения.
- Проверьте подключение к интернету.
Tags
Source du modèle
