Как подключить экран Нокиа 5110 к Ардуино

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

Подключение Nokia 5110 к Arduino

Дисплей Nokia 5110 характеристики, распиновка

Все необходимые функции дисплея упакованы в небольшой контроллер Philips PCD8544, который работает при очень низком напряжении. Чип PCD8544 более экономичный, точный и надежный, чем контроллер у LCD 1602 дисплея. Модуль Nokia 5510 имеет 8 разъемов (см. картинку ниже) для подключения, рабочее напряжение дисплея и подсветка экрана находится в диапазоне 2,7 – 3,3 Вольта.

Дисплей Nokia 5110 распиновка, характеристики
Дисплей Nokia 5110 распиновка, характеристики

Характеристики дисплея Nokia 5110 (datasheet)

  • Рабочее напряжение: 2.7 — 3.3 В
  • Микросхема: PCD8544
  • Интерфейс: SPI
  • Размер экрана: 84 х 48
  • Тип: TFT
  • Цвет: монохромный
  • Частота тактирования: до 4 Мгц
  • Время сброса: 100 нс

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

  • контакт RST используется для сброса
  • контакт LIGHT предназначен для подсветки
  • контакты VCC и GND используются для питания модуля
  • контакты CE, DIN и CLK используются для управления экраном
  • контакт DC используется для указания, будет ли следующая передаваемая информация командой или данными

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

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • display Nokia 5110 84х48
  • провода «папа-мама»
  • библиотеки Adafruit_PCD8544.h и Adafruit_GFX.h
Схема подключения дисплея Нокиа 5110 к Ардуино
Схема подключения дисплея Нокиа 5110 к Ардуино
LCD Nokia 5110 Arduino Uno Arduino Nano Arduino Mega
RST 7 7 7
CE 6 6 6
DC 5 5 5
Din 4 4 4
Clk 3 3 3
VCC 5V 5V 5V
BL 5V 5V 5V
GND GND GND GND

Скетч для вывода текста на дисплее Nokia 5110

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_PCD8544.h"

// указываем пины подключения дисплея
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);

void setup() {
  display.begin();
  display.setContrast(20); // контрастность экрана от 0 до 100
  display.setTextSize(1); // размер текста (1 - минимальное значение)
  display.clearDisplay(); // очистка экрана дисплея 
}

void loop() {
  display.setTextColor(BLACK); // цвет текста
  display.setCursor(5, 0); // положение текста по оси X и Y
  display.println("Hello, World");
  display.display(); // функция для вывода текста на экране
  delay(1000);
  display.clearDisplay();

  display.setTextColor(WHITE, BLACK); // инверсия цвета
  display.setCursor(6, 20);
  display.println(" Nokia 5110 ");
  display.display();
  delay(1000);
  display.clearDisplay();
}

Пояснения к коду:

  1. функция display.setCursor(10, 10); имеет два аргумента: первый — это координата X (увеличивается вправо), второй аргумент — координата Y (увеличивается вниз);
  2. в функции display.setTextColor(WHITE, BLACK); первый аргумент отвечает за цвет текста, а второй аргумент за цвет экрана.

Как вывести изображение на дисплей Nokia 5110

einshtein

Чтобы вывести на экране Нокиа 5110 изображение, его необходимо создать в формате BMP с разрешением 84 х 48. Можно скачать картинку с Интернета или взять из нашего примера в котором мы используем изображение Эйнштейна (картинка размещена выше). На первом этапе необходимо готовую картинку загрузить на следующий сайт:

http://javl.github.io/image2cpp/

Импорт картинки на сайте javl.github.io/image2cpp
Импорт картинки на сайте javl.github.io/image2cpp

На втором этапе можно указать различные настройки (инвертировать изображение, растянуть или перевернуть картинку, выбрать фон и т.д.). На сайте доступен предварительный просмотр, как будет отображаться загруженная картинка на монохромном LCD дисплее Nokia 5110 — смотри скриншот ниже.

Настройка параметров изображения для дисплея Нокиа
Настройка параметров изображения для дисплея Нокия

На последнем этапе нажмите на кнопку «Generate code» и в нижнем окошке скопируйте массив. Копировать следует только массив, остальные строчки кода нам не нужны. Далее этот код вставьте в скетч. Обращайте внимание на имя массива (оно создается на сайте автоматически из имени файла) а также на разрешение картинки.

Создание кода для вывода изображения на экране Нокиа
Создание кода для вывода изображения на экране Нокия

Скетч для отображения картинки на Nokia 5110 Arduino

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_PCD8544.h"

// указываем пины подключения дисплея
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);

// 'einshtein', 84x48px
const unsigned char epd_bitmap_einshtein [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
  0x46, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x80, 0xc0, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x01, 0x7e, 0x10, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5c, 0x28, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x06, 0x00, 0x41, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xca, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x04, 0x00, 0x0e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x1a, 
  0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x04, 0x01, 0x40, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0xcd, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x00, 
  0x68, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa8, 0x00, 0x04, 0x01, 0xc0, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x01, 0x29, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6a, 
  0x00, 0x70, 0x14, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6b, 0xa0, 0xe0, 0x0a, 0xe0, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x01, 0x71, 0xe0, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
  0x52, 0x20, 0x60, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x20, 0x80, 0x06, 0x58, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40, 0x30, 0x0b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0xb0, 0x40, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x44, 0x00, 0x22, 
  0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x10, 0xc5, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x60, 0x40, 
  0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 
  0x41, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfb, 0x01, 0x20, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x81, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
  0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x00, 0x80, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x01, 0x42, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x10, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0xa8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

void setup() {
  display.begin();
  display.setContrast(20); // контрастность экрана от 0 до 100
  display.clearDisplay(); // очистка экрана дисплея

  // вывод картинки
  display.drawBitmap(0, 0, epd_bitmap_einshtein, 84, 48, BLACK);
  display.display();
}

void loop() {

}

Пояснения к коду:

  1. при выводе картинки на экран Nokia PCD8544 учитывайте имя массива и разрешение картинки.

Заключение. При выводе переменных или информации с датчиков на дисплей в команде display.println(x); не следует ставить кавычки. Т.е. правила такие же как, при работе с монитором порта Arduino IDE. Если вы выполните все действия, которые подробно описаны в этом обзоре, то у вас появится такая же текстовая и графическая информация на экране, как на анимации в начале этой записи.



4 Replies to “Как подключить дисплей Nokia 5110 к Arduino”

  1. У меня ардуино вообще перестало работать с интернетом. Ни какие примеры не работают, даже ваша метеостанция. Где-то 2 месяца назад всё работало. Что делать? Хотел получать погоду и интернета.Низнаю с чем это связано.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.