Найти тему
Электроника, ESP32, Arduino

Подключение дисплея от Nokia 5110 к ESP32

"Очень странный выбор дисплея, по моему этот дисплей ни на что не годен" - написали в комментариях. На самом деле если в проекте нужен просто "показометр" - этот дисплей идеальное решение:

1. Цена на Али чуть больше 100 рублей (бюджетно)

2. Разрешение 84×48 пикселей достаточно для вывода важной, критичной информации и в тоже время не жрет ресурсы микроконтроллера.

3. Данные на дисплее можно прочитать без использования подсветки (низкое энергопотребление)

4. Дисплей не светится в темноте (в некоторых случаях это плюс - не нужно гасить пикселы или отключать подсветку на ночь)

5. В отличии от недорогих текстовых LCD, умеет отображать графику.

Да, сейчас не сложно купить графический дисплей даже с возможностями сенсорного экрана. Но если нужен простой дисплей с приличным разрешением и меньшей стоимостью - ЖК-модуль Nokia 5110 отличный выбор для этой цели.

Первоначально использовавшийся в мобильных телефонах Nokia 3110 и Nokia 5110, ЖК-дисплей Nokia 5110 стал популярным устройством отображения в сообществе DIY благодаря низкой стоимости, компактным размерам и простому интерфейсу.

ЖК-модуль Nokia 5110 основан на микросхеме контроллера ЖК-дисплея PCD8544 от Phillips. Он способен управлять 84 столбцами и 48 строками.

Важно помнить, что ЖК-дисплей Nokia 5110 и контроллер PCD8544 работают от источника питания 3,3 В. ESP32 также является устройством на 3,3 В. Но если вы планируете использовать ЖК-дисплей Nokia 5110 с Arduino (или другими 5-вольтовыми микроконтроллерами), вам необходимо правильно преобразовать логические уровни.

Подробнее про согласование уровней при подключении к Arduino можно посмотреть в этом видео:

С зачем определились - переходим к "как?"

Дисплей от Nokia 5110
Дисплей от Nokia 5110

Назначение выводов:

Nokia 5110 пин аут
Nokia 5110 пин аут

Как видно из таблицы, ЖК-дисплей Nokia 5110 (точнее, контроллер PCD8544) использует SPI интерфейс для связи с микроконтроллером. Итак, мы должны использовать контакты SPI микроконтроллера ESP32. Где они находятся можно посмотреть тут:

Где находятся контакты SPI и I2C на ESP32 при работе из среды Arduino IDE
Электроника, ESP32, Arduino8 сентября 2020

У меня получилась вот такая схема подключения:

Тест дисплея Nokia 5110
Тест дисплея Nokia 5110

Переменный резистор на входе D34 предназначен для установки контрастности дисплея. В отличии от текстового дисплея, контрастность в Nokia 5110 устанавливается программно, поэтому оптимальное значение можно подобрать при прототипировании проекта, а в готовый проект резистор регулировки контрастности не ставить совсем!

Для работы с дисплеем необходимо загрузить две библиотеки для ЖК-дисплея Nokia 5110 в Arduino IDE. Это специфичная для устройства «Adafruit PCD8544 Nokia 5110 LCD Library» и вспомогательная библиотека «Adafruit GFX». Если вы работали с ЖК-дисплеем Nokia 5110 и ранее устанавливали эти библиотеки, то этот шаг можно пропустить.

GitHub - adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library: Arduino driver for PC8544, most commonly found in small Nokia 5110's
GitHub - adafruit/Adafruit-GFX-Library: Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from

Библиотеки также будут в папке с примером. Их можно установить и через менеджер библиотек:

Установка библиотеки Adafruit PCD8544 Nokia 5110 LCD Library
Установка библиотеки Adafruit PCD8544 Nokia 5110 LCD Library
Установка библиотеки Adafruit GFX
Установка библиотеки Adafruit GFX

Поскольку использовать мы будем аппаратный, а не программный SPI, настройки библиотеки для нашей схемы будут следующие:

// SCK is LCD serial clock (SCLK) - this is pin D18 on ESP32
// MOSI is LCD DIN - this is pin D23 on ESP32
// pin 16 - Data/Command select (D/C)
// pin 17 - LCD chip select (CS)
// pin 5 - LCD reset (RST)

Adafruit_PCD8544 display = Adafruit_PCD8544(16, 17, 5);

Задаем только D/C, CS, RST. Где находятся SCK и MOSI библиотека
разберется самостоятельно.

Кстати последняя фраза из описания библиотеки достаточно странная....

// Note with hardware SPI MISO and SS pins aren't used but will still be read
// and written to during SPI transfer. Be careful sharing these pins!

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

Если вы совсем ничего не поняли - рекомендую посмотреть вот это:

Шапка скетча для ESP32 будет выглядеть следующим образом:

-7

Можно писать "Hello World".

Если писать шрифтом первого размера, то на такой дисплей влезет 6 строк по 14 символов в каждой => 84 символа. На текстовый дисплей 20х4 символов влезет почти столько-же, но говорить о компактности уже не приходится.

Размеры Nokia 5110 и текстового LCD экрана 2004
Размеры Nokia 5110 и текстового LCD экрана 2004

На дисплее от Nokia 5110 можно использовать более крупные шрифты - поэтому, если требуется выводить всего 1-2 параметра, то лучшую замену такому "показометру" будет придумать уже сложно. Пример который будет в папке с архивом, выводит значение контрастности:

Подсветка выключена.
Подсветка выключена.
Код который это делает.
Код который это делает.

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

В библиотеке есть пример с блэкджеком и шл, который демонстрирует все возможности графического ядра Adafruit GFX.

-11

Он также будет в папке с архивом, скорректированный с учетом подключения к ESP32, но контрастность все равно лучше подобрать первым примером.

В отредактированном примере переменный резистор
В отредактированном примере переменный резистор

Дома у меня, еще есть модуль красного цвета.

-13

Для него значение оптимальной контрастности совсем другое, и подсветка у него подключается через токоограничивающий резистор к земле. (все как всегда, чисто по-китайски).

Примеры кода и библиотеки ищите тут:

Зачем и как подключать дисплей от Nokia 5110 к ESP32.zip

Оглавление канала тут:

Всем удачи!