Как подключить Nokia 5110 к Arduino

К плате «Ардуино» возможно подключение нескольких цветных дисплеев TFT. Аналог информационного табло создается путем использования нескольких экранов от Nokia 5110 с Arduino — подключение их должно быть одновременным. Возможности стандартной библиотеки TFT позволяют отображать даже анимированные фигурки.

Варианты подключения дисплея Nokia 5110 к Arduino и схемы

Дисплей к Нокиа 5110 выпускался на платах синего и красного цветов. Различие состоит в том, каким уровнем сигнала активируется подсветка. Для синих плат это происходит при подаче высокого уровня на пин 8, а для красных — подачей низкого уровня на тот же коннектор.

Распиновка Nokia 5110

С обратной стороны дисплея в два ряда расположены 8 маркированных контактов, соединенных между собой параллельно.

8 контактов нокиа
8 контактов Nokia, которые расположены в 2 ряда.

Их обозначения с пояснениями приведены в таблице:

Номер

Обозначение

Направление

Комментарий

1

VCC

вход

Питание от 2,7 до 3,3 В

2

GND

вход

Питание, земля

3

SCE

вход

Выбор чипа по 0

4

RST

вход

Перезагрузка по 0

5

D/C

вход

Выбор: режим команд по 0, данных по 1

6

DN(MOSI)

вход

Последовательный ввод данных

7

SCLK

вход

Тактовая частота

8

LED

вход

Питание подсветки LED 3,3 В

Особенности питания Нокиа 5110

На плате LCD Нокиа 5110 имеются 2 коннектора для подачи электропитания:

  1. Пин под номером 1 служит для подачи напряжения в пределах от 2,7 до 3,3 В на микросхемы платы, потребляющие ток силой до 7 мА.

  2. Пин под номером 8 подает напряжение 3,3 В на 4 светодиода белого свечения, размещенные по углам экрана. Их задача — обеспечивать подсветку. При подаче напряжения на этот пин нужно помнить, что в цепи отсутствуют резисторы, ограничивающие ток. При подаче 3,3 В ток потребления подсветки может достигать 100 мА, потому следует заранее продумать варианты его ограничения.

Плата и коннекторы
Коннекторы 8 и 1 предназначены для подачи электропитания.

Интерфейс управления

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

Управление осуществляется набором сигналов, подаваемых на коннекторы:

  • SCLK — временные метки;

  • DN — данные, входящие последовательно, выбор чипа (SCE) активируется низким уровнем;

  • SCE производит выбор чипа по низкому уровню;

  • D/C — сигнал, разрешающий отображение поступающей информации.

Полный набор команд описан в руководстве пользователя микросхемы PCD8544 в разделе Instructions. Имеются сигналы очистки дисплея, инверсии светимости пикселей, отключения питания и других.

Подготовка дисплея 5110 к подключению

До работы со скетчами следует подготовить «сборку» и определиться с соединением с Arduino. Понадобятся 8 коннекторов прямого типа или с загнутыми на 90 градусов ножками. Также нужно приготовить монтажную плату, «рельсу» с прямыми коннекторами или напаять переходники непосредственно к дисплею, расположить дисплей Nokia 5110 на монтажной плате.

Варианты подключения Нокиа 5110 к Arduino

Способ подключения LCD к Arduino затем можно применить в отношении других микроконтроллеров. Для высокой скорости передачи данных пины SCLK и DN(MOSI) выводятся на SPI Arduino. Коннекторы SCE, RST и D/C подключаются ко всем цифровым коннекторам микроплаты. Выход от светодиода соединяется с пином Arduino, поддерживающим ШИМ, что позволяет регулировать яркость подсветки. Питание дисплея 5110 нельзя напрямую соединять со стандартным выходом «Ардуино» из-за его 5-вольтовой логики.

Прямое соединение с Arduino

Этот способ подключения наиболее прост: применяются платы с 3 В питанием, такие как Arduino Pro 3.3V/8MHz либо Arduino Pro Mini. Применение версии микроконтроллера с питанием от 5 В допустимо, но это может негативно отразиться на продолжительности работы дисплея.

Подключение модуля
Подключение устройства к Arduino.

Пины подключаются так:

Пины дисплея

Пины «Ардуино»

Примечание

VCC

VCC 3,3 В

Только 3-вольтовая плата

GND

GND

 

SCE

7

Любой цифровой коннектор

RST

6

Любой цифровой коннектор

D/C

5

Любой цифровой коннектор

MOSI

11

Только этот коннектор

SCLK

13

Только этот коннектор

LED

9

Любой ШИМ-выход, ограничивающий R=330 Ом

Дополнительной защитой станут резисторы между пинами передачи данных от Arduino к экрану. При использовании Arduino Uno или иных 5-вольтовых плат можно применять резисторы на 10 и 1 кОм. Первые устанавливаются между пинами SCLK, DN, D/C и RST, а вторые между пинами SCE и 7. Резистор 330 Ом используется между коннектором светодиода и 9-ым пином.

Преобразователи уровня

Решить вопрос разного питающего напряжения можно с помощью преобразователей уровня. Для этого можно применить модули Bi-Directional Logic Level Converter либо TXB0104. Трудность состоит в том, что дисплей имеет 5 входов, а преобразователи обеспечивают только 4 контакта. Выход можно найти, если на RST подать высокий уровень через резистор на 10 кОм. Недостаток этого способа — невозможность перезагрузки дисплея при сохранении всех прочих функций.

Модуль преобразования
Модуль "Bi-Directional Logic Level Converter".

Скетч и библиотека для работы

После удачного подключения дисплея к «Ардуино» можно загружать скетч и пробовать выводить данные на экран. Содержание программы находится по этой ссылке cdn.sparkfun.com/tutorialimages/GraphicLCDNokia3310/nokia_5100_r03.zip.

Текст переносим в Arduino IDE и затем из него на плату. Основные события реализуются в теле функции lcdFunTime(). Код снабжен понятными комментариями, которые помогут быстро разобраться в нем.

Программа служит демонстрационным целям, отрабатывая простые анимации и графические примитивы:

  • отображает отдельные пиксели;

  • рисует линии, прямоугольники, круги, растровую картинку.

Скетч покажет данные, переданные с небольшой скоростью (9 600 бит/с) на экране. Точечное изображение 84х48 пикселей преобразуется в цифровой массив, далее встраиваемый в код программы и отправляемый на монитор LCD. В качестве основы следует взять любую графическую картинку указанного размера и преобразовать ее в монохромную, содержащую только 2 цвета. Это легко делается в любом графическом редакторе Windows.

Для преобразования файла в массив из 504 байт воспользуемся готовыми библиотечными программами, такими как LCD Assistant. Через меню File > Load Image открываем картинку, проверяем ее размер в точках, в свойствах Byte orientation указываем режим Vertical (вертикальная ориентация), а параметр Size endianness — в значении Little. Прочие поля остаются без изменений.

При помощи переходов по меню File > Save output создаем текстовый файл, в котором появится массив чисел. Открыв для редактирования, изменим тип массива на символьный. Используем простой тип char (без модификаций unsigned или const). Также требуется проверить отсутствие в имени массива запрещенных символов (тире, первого числа и т. д.) и скопировать изображение в тело скетча.

Библиотечная программа
Библиотечная программа LCD Assistant.

Текстовый массив может располагаться где угодно. Далее заменяем в скетче setup() и loop() строками из нижеприведенного кода (другие переменные и функции оставляем без изменений).

// … текстовый массив изображения размещен выше

void setup()

{

lcdBegin(); // инициализация и очистка LCD и установка режима пинов

setContrast(60); // задает контрастность, значения в диапазоне от 40 до 60

setBitmap(flameBitmap); // вместо flameBitmap ставится имя созданного массива

updateDisplay(); // обновление экрана для вывода изображения

}

void loop()

{

}

// ниже располагаются функции для управления дисплеем и графикой

Изображения, импортированные в текстовые массивы и последовательно отображаемые с задержкой, создают эффект анимации.

Библиотеки для работы с Нокиа-5110

Библиотечные функции сокращают время разработки проекта. Модуль Adafruit_GFX_Library содержит полезные программы. Перед работой эту библиотеку нужно загрузить, распаковать в папку Libraries каталога Arduino IDE. Чтобы среда смогла «увидеть» библиотеку и работать с ней, потребуется перезапуск IDE. Если при компиляции скетча происходит конфликт с другой библиотекой, RobotControl, то последнюю желательно переместить в другую папку.

Библиотека для LCD Nokia 5110

Библиотеки, работающие с этим дисплеем, обладают разными возможностями. Разработка предлагает набор различных функций, достаточный для использования возможностей экрана и сохраняющих простоту кода. Текст библиотеки LCD5110_Basic хранится по адресу www.rinkydinkelectronics.com/download.php?f=LCD5110_Basic.zip. Распаковывается содержимое архива в каталог «Arduino IDE/libraries».
Библиотека для устройства
Библиотека устройства.

Функции библиотеки позволяют реализовать следующие возможности:

Функция

Назначение

LCD5110 (SCK, MOSI, DC, RST, CS)

Объявляет стартовые объекты и указывает соответствие пинам Arduino.

InitLCD([contrast])

Инициализирует и устанавливает уровень контрастности (0-127), по умолчанию 70.

setContrast (contrast)

Изменяет контраст (0-127).

enableSleep()

Гасит дисплей.

disableSleep()

Пробуждает экран.

clrScr()

Стирает содержимое дисплея.

clrRow(row, [start], [end])

Очищает строки по их номеру.

invert(true)

Инвертирует отображаемые пиксели.

print(string, x, y)

В заданных координатах выводит строку 8-пиксельных символов; вместо x-координаты допускаются указания LEFT, CENTER и RIGHT.

printNumI (num, x, y, [length], [filler])

В указанной точке выводится целое число, допускается выбор типа формата.

printNumF (num, dec, x, y, [divider], [length], [filler])

Выводит число с плавающей запятой в заданном формате.

setFont(name)

Меняет шрифт; выбирает из встроенных SmallFont и TinyFont.

invertText(true)

Инвертирует отображенный текст.

drawBitmap (x, y, data, sx, sy)

Выводит в заданных координатах графический объект.

Осциллограф из Ардуино и Nokia 5110

Микроконтроллер Ардуино и дисплей от Нокиа позволяют создать измерительный прибор «Пультоскоп», обладающий приемлемыми для бытового уровня характеристиками. Потребуется больше времени для реализации проекта, однако возможность видеть форму поступающего сигнала оправдает затраченные усилия. АЦП, работающий с настройками Ардуино IDE, слишком медленный, и потому необходим «разгон» микроконтроллера. Команда analogRead выполнялась без ошибок, пока тактовый импульс не превысил частоту 27 МГц. Увеличение частоты возможно только при подключении внешнего АЦП.

Ссылка на основную публикацию