Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками

Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками

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

Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками
Создаем миниатюрный e-ink монитор для сервера на базе ESP32-S3 своими руками

Проект родился из практической необходимости следить за аппаратными параметрами домашнего сервера, который размещен на кухне и укомплектован двумя производительными видеокартами Tesla P100. Полноразмерный монитор подключать некуда и нецелесообразно из-за лишнего энергопотребления, а постоянно проверять вкладку в браузере на мобильном устройстве неудобно. Черно-белый e-Paper экран с разрешением 200 на 200 пикселей подошел идеально: он не слепит глаза в темноте, не тратит энергоресурсы в статичном режиме и отлично читается при любом внешнем освещении.

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

Выбор аппаратной платформы и закупка комплектующих

Основой устройства стала доступная на маркетплейсах плата разработки, выполненная в защитном пластиковом боксе. Внутри скрывается микроконтроллер ESP32-S3-PICO, оснащенный восемью мегабайтами флеш-памяти и аналогичным объемом быстрой PSRAM. Сам дисплей функционирует на базе контроллера SSD1681. Производитель также заложил в комплект датчик температуры и влажности SHTC3, часы реального времени, аудиокодек с динамиком, слот под карточки памяти и разъем Type-C, хотя для простой роли аппаратного информера задействована лишь малая часть этого богатого потенциала.

Реклама
плата разработки ESP32-S3 e-Paper 1.54 дюйма
Типичный комплект поставки платы разработки с экраном e-Paper, доступный на популярных маркетплейсах.

Особенности написания прошивки и эволюция архитектуры

Первый макет картинки заработал уже через полтора часа после старта, однако последующая отладка преподнесла немало сюрпризов с цикличными перезагрузками без генерации понятных логов. В итоге устройство получило кодовое имя inkmetrics и развилось до стабильной версии. Изначально буфер кадра формировался на стороне хоста с помощью скрипта на Python и передавался через виртуальный COM-порт, но от этого подхода пришлось отказаться ради гибкости интерфейса. Теперь вся логика верстки и генерации шрифтов перенесена непосредственно на микроконтроллер, а операционная система ПК раз в минуту отправляет легкий пакет данных в формате JSON через локальный сетевой интерфейс.

пластиковый бокс с платой ESP32-S3 e-Paper в разобранном виде
Содержимое покупного комплекта, включающее защитный корпус и модуль микроконтроллера.

Переход на ESP-IDF и настройка USB-соединения

Стандартное Arduino-ядро не позволяло полноценно реализовать работу по USB-сети из-за ограничений встроенного стека TinyUSB, поэтому проект был полностью перенесен на официальный фреймворк ESP-IDF. Настройка сетевого класса RNDIS потребовала ручного описания дескрипторов и тщательной отладки обработки буферов, чтобы избежать фатальных сбоев памяти из-за некорректного чтения длины кадров. Также потребовалось корректно развести сетевые маршруты и параметры DHCP-сервера, чтобы подключенный по USB прибор не перехватывал основной интернет-трафик хост-машины.

настройка сетевого адреса хоста на устройстве
Сетевой адрес хоста фиксируется настройками прибора для предотвращения сбоев маршрутизации.

Эмуляция накопителя и особенности разметки

Для удобства установки агент сопряжения поставляется прямо на виртуальном диске самого устройства. В процессе экспериментов выяснилось, что операционная система Windows строго классифицирует накопители по их геометрическому размеру: стандартный объем дискеты заставлял систему монтировать устройство как медленный съемный диск типа A:. Увеличение объема до 3,69 мегабайт с таблицей разделов MBR и файловой системой FAT16 позволило корректно зарегистрировать устройство в системе как стандартный логический диск.

e-ink устройство определяется как съемный USB-накопитель
После подключения по USB микроконтроллер корректно монтируется операционной системой в качестве внешнего диска.

Интерфейс, функционал и веб-кабинет

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

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

Сбор метрик на стороне хоста

Для сбора системных показателей используется компактный агент, который разворачивается в фоновом режиме через простой командный файл. Утилита ежеминутно опрашивает штатные счетчики операционной системы, проверяет сетевое соединение с помощью ICMP-запросов и считывает параметры дискретных видеокарт. Для видеокарт NVIDIA задействована утилита командной строки, а для остальных адаптеров применяются низкоуровневые счетчики WDDM, что гарантирует стабильную работу мониторинга на любых конфигурациях железа.

экран настроек и конфигурации параметров
Меню настроек позволяет менять ориентацию экрана, выбираемые метрики и сетевые узлы проверки.

Процесс прошивки и развертывания

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

файловая структура на виртуальном диске устройства
На виртуальном носителе записаны скрипты автоматической установки агента и подробные инструкции.

Итоги разработки и затраты ресурсов

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

репозиторий проекта с утилитами прошивки на GitHub
Репозиторий проекта содержит всю необходимую документацию, скрипты автоматизации и образы.
01.