Найти в Дзене
Заметки кота

Вывод изображения на E-paper дисплей WeAct 4.2" (ESP32 + GxEPD2)

В этой статье мы рассмотрим подключение монохромного E-paper дисплея WeAct 4.2 дюйма (разрешение 400x300, контроллер SSD1683) к микроконтроллеру ESP32 и выведем на него изображение максимальной детализации. Дисплей подключается по интерфейсу 4-wire SPI.
Важно помнить, что на плате WeAct подписи пинов могут вводить в заблуждение: SDA — это данные (MOSI), SCL — это тактовый сигнал (SCK). Пин модуля WeAct E-paper <--> Пин ESP32 -------------------------------------------------- VCC <--> 3.3V GND <--> GND SDA (MOSI) <--> GPIO 23 SCL (SCK) <--> GPIO 18 CS <--> GPIO 5 DC <--> GPIO 17 RES (RST) <--> GPIO 16 BUSY <--> GPIO 4 Для работы с экраном мы используем библиотеку GxEPD2 (автор ZinggJM), так как она идеально поддерживает чипы WeAct. Использую сервис: Загружаем исходное изображение. Выс
Оглавление

В этой статье мы рассмотрим подключение монохромного E-paper дисплея WeAct 4.2 дюйма (разрешение 400x300, контроллер SSD1683) к микроконтроллеру ESP32 и выведем на него изображение максимальной детализации.

Схема подключения

Дисплей подключается по интерфейсу 4-wire SPI.
Важно помнить, что на плате WeAct подписи пинов могут вводить в заблуждение:
SDA — это данные (MOSI), SCL — это тактовый сигнал (SCK).

Пин модуля WeAct E-paper <--> Пин ESP32

--------------------------------------------------

VCC <--> 3.3V

GND <--> GND

SDA (MOSI) <--> GPIO 23

SCL (SCK) <--> GPIO 18

CS <--> GPIO 5

DC <--> GPIO 17

RES (RST) <--> GPIO 16

BUSY <--> GPIO 4

-2

Основные положения реализации

Для работы с экраном мы используем библиотеку GxEPD2 (автор ZinggJM), так как она идеально поддерживает чипы WeAct.

  1. Библиотека: GxEPD2_BW (Black & White) и GxEPD2_3C (Color).
  2. Формат изображения: Для вывода графики используется формат XBM (X Bitmap). Это массив const unsigned char (hex-данные), который компилятор помещает во флеш-память (PROGMEM), что экономит оперативную память ESP32.
  3. Генерация массива: Для перевода обычной картинки (PNG/JPG) в код XBM используется онлайн-сервис image2cpp. При генерации для всего экрана (400x300) следует выбирать настройки "Canvas size: 400x300" и "Scaling: Nearest Neighbor" (для сохранения четкости пикселей).

Генерация изображения

Использую сервис:

image2cpp

Загружаем исходное изображение.

Выставляем параметры:

-3
-4

Нажимаем "Generate code". Получаем массив байт, его поместить в исходный код.

Особенности экранов E-paper (Важно!)

Электронные чернила (E-ink) работают иначе, чем привычные OLED или LCD дисплеи. Игнорирование этих особенностей может привести к быстрому выходу дисплея из строя.

Ограниченность циклов обновления (Update Cycles)

Это критический параметр. Кристалл E-paper имеет ограниченный ресурс обновлений.

  • Правило: Никогда не обновляйте экран в бесконечном цикле loop() без нужды (например, с задержкой 100 мс).
  • Решение: Рисуйте картинку только при изменении данных (событие) или один раз при старте в setup(). В нашем коде используется метод display.hibernate() после отрисовки, чтобы перевести дисплей в спящий режим.

Время обновления (Refresh Time)

E-paper — это "медленная" технология. Полное обновление экрана занимает от 0.5 до 2 секунд. В это время дисплей может несколько раз моргнуть (заменить оттенки серого) — это нормальный процесс перезарядки частиц.

Эффект призраков (Ghosting)

Если долго выводить новую картинку поверх старой без полной очистки, старые контуры могут проступать. Библиотека GxEPD2 имеет функцию setFullWindow(), которая производит полную очистку перед выводом, убирая "призраки".

Энергоэффективность

Главное преимущество — энергонезависимость. Экран потребляет ток только в момент обновления. После завершения отрисовки и вызова hibernate() дисплей может держать изображение годами без подачи питания.

Исходный код:

Epaper_4.2_400x300__ESP32.ino