"Очень странный выбор дисплея, по моему этот дисплей ни на что не годен" - написали в комментариях. На самом деле если в проекте нужен просто "показометр" - этот дисплей идеальное решение:
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 (точнее, контроллер PCD8544) использует SPI интерфейс для связи с микроконтроллером. Итак, мы должны использовать контакты SPI микроконтроллера ESP32. Где они находятся можно посмотреть тут:
У меня получилась вот такая схема подключения:
Переменный резистор на входе D34 предназначен для установки контрастности дисплея. В отличии от текстового дисплея, контрастность в Nokia 5110 устанавливается программно, поэтому оптимальное значение можно подобрать при прототипировании проекта, а в готовый проект резистор регулировки контрастности не ставить совсем!
Для работы с дисплеем необходимо загрузить две библиотеки для ЖК-дисплея Nokia 5110 в Arduino IDE. Это специфичная для устройства «Adafruit PCD8544 Nokia 5110 LCD Library» и вспомогательная библиотека «Adafruit GFX». Если вы работали с ЖК-дисплеем Nokia 5110 и ранее устанавливали эти библиотеки, то этот шаг можно пропустить.
Библиотеки также будут в папке с примером. Их можно установить и через менеджер библиотек:
Поскольку использовать мы будем аппаратный, а не программный 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 будет выглядеть следующим образом:
Можно писать "Hello World".
Если писать шрифтом первого размера, то на такой дисплей влезет 6 строк по 14 символов в каждой => 84 символа. На текстовый дисплей 20х4 символов влезет почти столько-же, но говорить о компактности уже не приходится.
На дисплее от Nokia 5110 можно использовать более крупные шрифты - поэтому, если требуется выводить всего 1-2 параметра, то лучшую замену такому "показометру" будет придумать уже сложно. Пример который будет в папке с архивом, выводит значение контрастности:
Пин подсветки можно без зазрения совести, через резистор 220 Ом повесить на свободный выход микроконтроллера и управлять подсветкой программно.
В библиотеке есть пример с блэкджеком и шл, который демонстрирует все возможности графического ядра Adafruit GFX.
Он также будет в папке с архивом, скорректированный с учетом подключения к ESP32, но контрастность все равно лучше подобрать первым примером.
Дома у меня, еще есть модуль красного цвета.
Для него значение оптимальной контрастности совсем другое, и подсветка у него подключается через токоограничивающий резистор к земле. (все как всегда, чисто по-китайски).
Примеры кода и библиотеки ищите тут:
Оглавление канала тут:
Всем удачи!