Рубрики
Схемы на Arduino

Подключение дисплея E-Paper к Arduino Uno

Технология E-paper (electronic paper) известна под названием «электронная бумага» или «электронные чернила». Основная цель создания дисплеев E-Paper – это имитация обычной бумаги, то есть с такого дисплея текст читать практически так же удобно, как и с листа обычной бумаги.

Дисплеи E-paper появились в начале 2000-х годов и даже получили на некоторое время широкое распространение в электронных «читалках». Им пророчили большое будущее и в качестве экранов для смартфонов, но, к сожалению, в этой нише им не удалось выдержать конкуренции с используемыми сейчас дисплеями, в основном, из-за большой инерционности изображения на них. Но, тем не менее, дисплеи E-paper продолжают выпускаться и заняли свою узкую нишу в ряде применений. Поэтому в данной статье мы рассмотрим подключение дисплея E-Paper с диагональю 1,54 дюйма к плате Arduino Uno.

Кроме платы Arduino дисплеи E-paper можно подключать и к другим микроконтроллерным платам, например, Raspberry Pi, STM32, jetson. В данной статье мы рассмотрим печать символов и изображений на экране дисплея E-paper, проанализируем энергопотребление подобного дисплея и рассмотрим преимущества и недостатки подобных дисплеев.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. 1.54-Inch E-Paper Display (дисплей E-Paper с диагональю 1,54 дюйма) (купить на AliExpress).

Основные принципы работы дисплея E-Paper 1,54′

Модуль дисплея типа «электронные чернила» (e-Ink Paper) с диагональю 1,54 дюйма от компании Waveshare работает по протоколу SPI, имеем разрешение 200×200 пикселов и содержит встроенный модуль контроллера. Подобные дисплеи отличаются крайне низким энергопотреблением поскольку они не содержат панели фоновой подсветки и не требуют непрерывной подачи энергии для отображения информации на экране – энергия в них тратится только при смене изображения на экране. Также они отличаются широкими углами обзора и хорошей «читаемостью» на солнце, что делают их очень удобными в ряде случаев. В нашем проекте мы будем использовать подобный дисплей стоимостью около 15$.

Основные особенности дисплеев E-Paper

  • отсутствие фоновой подсветки, длительное отображение информации на экране дисплея без подачи на него энергии;
  • очень низкое потребление энергии, энергия расходуется только при смене изображения на экране дисплея;
  • интерфейс SPI, который обеспечивает простое подключение дисплея к таким платам как Raspberry Pi/Arduino/Nucleo и т.п.;
  • встроенный преобразователь напряжения, возможность работать с уровнями напряжения 3.3V/5V;
  • поставляется вместе с руководством и ресурсами для разработки (есть примеры программ для Raspberry Pi/Jetson Nano/Arduino/STM32).

Технические характеристики дисплея E-Paper 1,54′

  • рабочее напряжение: 3.3V/5V;
  • интерфейсы: 3-х проводный SPI, 4-х проводный SPI;
  • размеры модуля дисплея: 48mm × 33mm;
  • размеры экрана дисплея: 27.6mm × 27.6mm;
  • размер точки дисплея: 0.138 × 0.138;
  • разрешение: 200 × 200 пикселов;
  • цвет дисплея: черный, белый;
  • число уровней серого цвета: 2;
  • время частичного обновления экрана: 0.3 с;
  • время полного обновления экрана: 2 с;
  • мощность, необходимая для обновления экрана: 26,4 мВт;
  • потребляемая мощность в режиме ожидания: <0,017 мВт;
  • угол обзора: >170°.

Протокол связи дисплея E-Paper

E-Paper осуществляет взаимосвязь с другими устройствами на по протоколу SPI, но протокол SPI, используемый им, немного отличается от стандартного SPI протокола. Используемый в дисплее SPI протокол необходим только для передачи данных, которые используются для формирования изображения на экране дисплея, поэтому линия передачи данных от ведомого (slave) к ведущему (master) устройству не нужна, в отличие от стандартного SPI протокола. В следующей таблице представлено описание контактов (распиновка) дисплея E-Paper.

Контакт Описание
VCC 3.3V/5V
GND земля
DIN SPI MOSI pin (передача данных)
CLK SPI SCK pin (линия синхронизации)
CS SPI chip selection, low active (выбор чипа)
DC выбор режима команд/данных (high — данные, low — команды)
RST External reset, low active (внешний сброс)
BUSY Busy status output, high active

Протокол SPI в дисплее E-Paper имеет следующие особенности:

(a) Когда на контакте CS низкий уровень (low) – чип готов к работе, а когда на CS высокий уровень (high) – чип отключен (disabled).

(b) Контакт DC управляет переключением между режимами передачи команд/данных. Когда на DC 0 – включен режим команд, а когда на DC 1 – включен режим данных.

(c) Контакт (линия) синхронизации протокола SPI в данном случае имеет обозначение SCLK.

(d) Контакт (линия) передачи данных от ведущего к ведомому протокола SPI в данном случае имеет обозначение DIN.

Тайминги (временные моменты) передачи данных в протоколе SPI в данном случае определяются с помощью параметров CPHA и CPOL.

1 – в холостом (незанятом) состоянии (idle state) CPOL показывает уровень линии синхронизации данных. Когда CPOL равен 0, то на линии низкий уровень (low). С другой стороны, CPOL оказывает незначительное влияние на передачу данных.

2 – Когда CPHL = 0 данные собираются (забираются) на первом тактовом фронте линии синхронизации (serial synchronous clock), когда CPHL = 1 данные собираются на втором тактовом фронте линии синхронизации.

(e) Существует 4 доступные настройки протокола SPI. Широкое применение находит способ SPI0 с параметрами CPHL = 0 и CPOL = 0. Передача данных начинается на первом спадающем фронте линии SCLK как показано на диаграмме ниже, 8 бит данных объединяются в один временной цикл. Данные передаются побитно, сначала наиболее значащие биты (MSB).

Схема проекта

Схема подключения дисплея E-Paper к плате Arduino Uno представлена на следующем рисунке.

Дисплей E-Paper имеет разрешение 200×200 пикселов, поэтому пропускной способности протокола SPI вполне хватит для передачи данных на этот дисплей. Дисплей E-Paper поддерживает питающее напряжение 3.3V, поэтому он подключен к контакту 3.3V платы Arduino Uno. Остальные контакты дисплея толерантны (могут работать) с напряжением 5V. Контакт GND дисплея подключен к контакту GND платы Arduino Uno. Контакт DIN дисплея подключен к цифровому контакту 11 платы, контакт CLK – к контакту 13 платы, CS – к контакту 10, DC – к контакту 9, контакт RST – к контакту 8, контакт BUSY – к контакту 7. Полная схема соединений между дисплеем E-Paper и платой Arduino Uno представлена в следующей таблице.

Дисплей E-Paper Плата Arduino Uno
3.3V 3.3V
GND GND
DIN D11
CLK D13
CS D10
DC D9
RST D8
BUSY D7

Собранная конструкция проекта показана на следующем рисунке.

Объяснение программы для Arduino

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

В данном проекте мы будем выводить на экран дисплея E-Paper картинку и надпись CircuitDigest. Скачать код программы для данного проекта и необходимые библиотеки вы можете по следующей ссылке. В проекте мы будем использовать библиотеку SPI.h для связи по протоколу SPI и библиотеку imagedata.h для вывода изображений на экран дисплея E-Paper.

Далее в программе мы будем использовать функцию Serial.println для вывода надписи “welcome to” на первой строке дисплея. Для дисплея E-Paper нам доступны всего два цвета – черный и белый. Для задания цвета и размера выводимого на дисплей сообщения мы будем использовать функцию Paint.DrawString. Затем на следующей строчке дисплея мы выведем надпись “Circuit Digest”.

Затем мы отобразим на экране дисплея картинку, для этого сформируем для картинки шестнадцатеричный (HEX ) код. Это можно сделать, например, с помощью конвертера Image2cpp. В качестве картинки, выводимой на экран дисплея, мы будем использовать лого сайта CircuitDigest (ссылка на него приведена в конце статьи). Шестнадцатеричный код (hex code) этой картинки необходимо записать в библиотеку imagedata.cpp.

На следующей картинке показан результат работы нашего проекта – на экран дисплея выведена одна строка текста и картинка (лого сайта CircuitDigest). Но даже вывод одного такого изображения отнял очень много памяти у платы Arduino Uno. Поэтому для полноценной работы с дисплеями E-Paper желательно использовать микроконтроллерные платы с большим объемом памяти, например, ESP8266, ESP32, STM32, Raspberry Pi. У дисплея E-Paper есть такая особенность как возможность обновления изображения части экрана, не обновляя при этом содержимое всего экрана дисплея. Обновление всего экрана дисплея занимает около 2 секунд и на это затрачивается достаточно много энергии. А обновление части экрана и происходит быстрее, и требует значительно меньшего количества энергии.

Энергопотребление дисплея E-Paper

Мы измерили энергопотребление дисплея E-Paper с помощью USB измерителя тока (USB current meter). Когда происходит обновление экрана дисплея на это затрачивается достаточно много тока (приблизительно 7-9 mA), а когда дисплей не обновляется он потребляет совсем мало так (0.02 mA). Таким образом, дисплеи E-Paper можно использовать в устройствах, получающих питание от батареек.

Измерения тока дисплея E-Paper показаны на следующих картинках (во время процесса обновления экрана и после его завершения). Но здесь следует учитывать тот факт, что мы измерили немного большее значение тока чем потребляет непосредственно сам дисплей, поскольку в данном случае мы измерили его энергопотребление совместно с платой Arduino Uno.

Преимущества дисплеев E-Paper

Дисплеи E-Paper (электронная бумага) не излучают свет, а отражают его. В этом плане они не похожи на традиционные ЖК или OLED-дисплеи. Они больше похожи на обычные чернила на бумаге. Данная особенность делает дисплеи E-Paper очень удобными для чтения и они обладают отличной читаемостью даже под прямыми солнечными лучами. Еще одна замечательная особенность подобных дисплеев заключается в том, что они могут хранить статичный текст и изображения в течение нескольких месяцев без потребления электричества. Дисплеи E-Paper могут отображать текст и изображения, даже когда они выключены (!), что делает их идеальными для применения в маломощных проектах.

Недостатки дисплеев E-Paper

Стоимость дисплеев E-paper значительно выше чем у других типов дисплеев. Другим существенным недостатков данных дисплеев является большое время, необходимое для обновления информации на экране дисплея – около 2-3 секунд. Таким образом, они хорошо подходят для отображения статичных изображений и текста и очень плохо – для отображения меняющихся изображений (анимации). Поэтому они и находят применение только, в основном, в различных “читалках” и почти никогда не применяются в проектах, требующих отображения видео.

Исходный код программы (скетча)

В данном проекте мы использовали дисплей E-Paper с диагональю 1,54 дюйма версии V2. Следует помнить о том, что коды программ для различных версий данного дисплея отличаются. Например, здесь мы использовали библиотеку apd1in54_V2.h, а библиотека epd1in54.h в нашем случае работать уже не будет – она подходит только для первой версии дисплея.

Видео, демонстрирующее работу проекта

Источник статьи

4 ответа к “Подключение дисплея E-Paper к Arduino Uno”

Пытался с помощью этого примера подключить Arduino Uno к E-Ink Heltec, но не получилось. Там немного другое подключение:
VDD GND D/C SDI CS CLK BUSY
RST отсутствует, и заявлено, что для работы достаточно использовать только CLK DC CS SDI.
Как ни старался, так и не смог найти рабочего примера под такой дисплей и плату Uno.
Попробую на плате Nano, может поможет.

Ну что поделать, при современных темпах развития электроники многие статьи на эти темы устаревают достаточно быстро. Но я надеюсь у вас все получится

Да, спасибо за конструктивный комментарий. А как вы обнаружили эту опечатку?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *