Arduino nokia 5110: настраиваем подключение к микроконтроллеру
Подключение дисплея Nokia 5110 к Arduino
В данной статье мы научимся работать с графическими LCD дисплеями на примере экрана Nokia 5110. Это довольно популярный дисплей, выделяющийся низкой стоимостью и возможностью выводить в удобном виде не только текстовые, но и графические данные (графики, изображения и т.д.). Разрешение экрана Nokia 5110 – 48×84 точки. Мы узнаем, как подключать дисплей Нокиа к Ардуино и приведем пример скетча для работы с ним.
Подключение дисплея 5110 к Ардуино
Для начала давайте рассмотрим подключение данного дисплея к Arduino и разберемся с интерфейсом передачи данных. На плате дисплея имеются 8 выводов:
- RST — Reset (сброс);
- CE — Chip Select (выбор устройства);
- DC — Data/Command select (выбор режима);
- DIn — Data In (данные);
- Clk — Clock (тактирующий сигнал);
- Vcc — питание 3.3В;
- BL — Backlight (подсветка) 3.3В;
- GND — земля.
Соединение
Как вы уже могли заметить, питание дисплея (Vcc) должно осуществляться напряжением не выше 3.3В, то же напряжение является максимальным и для подсветки дисплея (BL). Тем не менее, логические выводы толерантны к 5В логике, используемой Arduino. Но все же рекомендуется подключать логические выводы через резисторы 10 кОм, тем самым вы сможете продлить срок службы дисплея.
Также стоит отметить, что существуют версии дисплеев (как правило с красной платой) с выводом LIGHT вместо BL. В таком случае включение подсветки осуществляется подключением данного вывода к минусу питания (GND).
Пин RST (активный LOW) отвечает за перезагрузку дисплея, а с помощью пина CE (активный LOW) контроллеру дисплея сообщается что обмен данными происходит именно с ним. Вход DC отвечает за режим ввода – ввод данных, либо ввод команд (LOW – данные, HIGH – команды). Вход Clk позволяет контроллеру дисплея определять скорость передачи данных, а через пин DIn происходит непосредственно передача данных в контроллер дисплея.
Скетч и библиотека для работы с дисплеем
Для работы с данным дисплеем существует множество библиотек, мы же будем использовать весьма простую и функциональную библиотеку , доступную по адресу http://www.rinkydinkelectronics.com/library.php? >
Функция | Назначение |
LCD5110(SCK, MOSI, DC, RST, CS) | Объявление дисплея с указанием пинов подключения. |
InitLCD([contrast]) | Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70. |
setContrast(contrast) | Изменение контрастности (0-127). |
enableSleep() | Переводит экран в спящий режим. |
disableSleep() | Выводит экран из спящего режима. |
clrScr() | Очищает экран. |
clrRow(row, [start], [end]) | Очищает выбраную строку (номер row), от позиции start до end (опционально). |
invert(true), invert(false) | Включает и выключает инверсию содержимого LCD экрана. |
print(string, x, y) | Выводит строку символов (string) с заданными координатами (x, y); вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8. |
printNumI(num, x, y, [length], [filler]) | Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “). |
printNumF(num, dec, x, y, [divider], [length], [filler]) | Выводит число (num) с плавающей запятой; dec – число знаков после запятой; опционально: divider – знак десятичного разделителя, по умолчанию точка “.”, length и filler – по аналогии с предыдущей функцией. |
setFont(name) | Выбирает шрифт; встроенные шрифты – SmallFont, MediumNumbers и BigNumbers. |
invertText(true), invertText(false) | Инвертирует текст, выведенный с помощью функций print, printNumI и printNumF (вкл./выкл.). |
drawBitmap(x, y, data, sx, sy) | Выводит картинку на экран по необходимым координатам (x, y); data – массив, содержащий картинку; sx и sy – ширина и высота рисунка. |
Рассмотрим работу с дисплеем с помощью данной библиотеки на примере простого скетча:
После того как мы рассмотрели базовые функции библиотеки, остановимся более подробно на функции drawBitmap и рассмотрим особенности вывода изображений на экран.
Для начала нам понадобится интересующее изображение в формате .bmp.
Далее необходимо скачать программу Image Generate от Alex_EXE по адресу https://alex-exe.ru/programm/image-generate/. В окне программы устанавливаем необходимое разрешение нашего изображения на дисплее (должно быть меньше, чем 84 пикселя по горизонтали и 48 по вертикали), нажимаем «установить новый размер».
Нажимаем «установить новый размер»
После этого нажимаем «Картинка», «Открыть», выбираем наш файл, жмем «преобразовать».
Жмем «преобразовать»
Нажимаем «Применить»
Теперь жмем на кнопку «Массив» и копируем появившийся массив в новый скетч.
Теперь жмем на кнопку «Массив» и копируем появившийся массив в новый скетч
Выводы
Таким образом, мы подробно рассмотрели базовые возможности работы с дисплеем Nokia 5110 с помощью библиотеки LCD5110_Basic, научились быстро и просто выводить собственные изображения на экран и разобрали нюансы, связанные с подключением дисплея к платформе Arduino.
Модуль дисплея Nokia5110 подключение к Arduino
Опубликовано 11.12.2013 10:03:00
Было написано немало статей про текстовый дисплей, но в некоторых случаях его может быть недостаточно. В этой статье рассмотрим подключение простейшего графического черно-белого модуля-дисплея Nokia 5110 к Arduino и разберем библиотеку от Adafruit.
Компоненты для повторения (купить в Китае):
В широком распространении можно найти два варианта исполнения модулей: на синей и красной плате. Оба модуля имеют восемь выводов
Предназначение:
RST – Вывод для перезагрузки контроллера дисплея.
CE – Состояние данного вывода разрешает или запрещает ввод данных в контроллер дисплея
DC – Вывод выбора режима ввода данных – Данные/Команды
DIN – Вход данных последовательного интерфейса SPI
CLK – Тактирующий вывод для последовательного интерфейса SPI
VCC – Питание контроллера дисплея 2.7 – 3.3Вольт
BL ( LIGHT ) – Подсветка
GND – GND
Внутри дисплея находится контроллер PCD8544. Его питание должно лежать в пределах 2.7- 3.3В (максимум 3.3В, при подаче 5Вольт на вывод VCC дисплей может выйти из строя).
Сигнальные же выводы толерантны к 5В и подключаются к любым цифровым выводам Arduino. Для того чтобы работал наш скетч подключите его по схеме:
Nokia 5110 модуль | Arduino |
RST | D7 |
CE | D6 |
DC | D5 |
Din | D4 |
CLK | D3 |
VCC | 3.3В |
GND | GND |
При использовании синего модуля , подсветка дисплея “BL” активизируется подачей 3.3 либо 5В
При использовании красного модуля , подсветка дисплея “LIGHT” активизируется подачей минуса (GND)
Библиотека необходимая для работы с модулем Adafruit_GFX_Library
Её необходимо распаковать и добавить в папку “libraries” в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.
При компиляции скетча, может возникнуть конфликт с библиотекой RobotControl, поэтому её желательно перенести в другое место.
Подключение и использование LCD Nokia 3310 (5110) к AVR-микроконтроллеру
В данной статье я постараюсь рассказать о том, как подключить и начать работать с LCD дисплеями 3310 (5110) и микроконтроллерами семейства AVR на языке С.
С чего хотелось бы начать?
Как правило, большинство проектов на микроконтроллерах, основной своей задачей являют обработку и последующий вывод какой либо информации в доступном и понятном виде для человека. Это либо вывод данных на ПК, или на семи-сегментный индикатор. Неважно какое устройство Вы собираете. Будь то вольтметр, амперметр, термометр или любой другой . метр – основная его задача – показать нам результат его работы. Для реализации этой задачи существует множество семи-сегментных индикаторов, отличающихся цветом, схемой подключения и количеством разрядов. Но работая с ними, мы всегда ограничены набором сегментов при помощи которых можем выводить только часть алфавита и цифры.А ведь хотелось бы выводить и какой либо текст, фигуру, да еще и на русском языке. Вот тут нам на помощь и приходят LCD экраны от самых популярных моделей мобильных телефонов 3310 (5110). При этом рынок просто кишит готовыми к использованию устройствами. Нет необходимости разбирать телефон и делать переходник для контактов. Стоимость же такого готового блока колеблется в районе 2-3 доллара. Пример лотов на TinyDeal или DealExtreme. Обратите внимание, если у вас в устройстве всего 1 индикатор – то он явно дешевле. Но ведь на экран с разрешением 84х48 пикселей мы можем выводить до 6 строк по 12 символов!
Согласно описанию, питается данное устройство от 2.7 до 3.3. вольта, имеет голубую подсветку и 8 контактов.
Первые 5 используются для управления микроконтроллером, 6 питание, 7 – подсветка, 8 -масса.
1. RST ——— reset
2. CE ———- chip selection
3. DC ———- data/commands choice
4. DIN ——— serial data line
5. CLK ——— serial Clock Speed
6. 3.3V ——– VCC
7. LIGHT ——- backlight control terminal
8. GND ——— power negative
Осталось только подключить дисплей к микроконтроллеру и при помощи кода на С связать оба устройства. В данной статье мы не станем изобретать колесо и воспользуемся готовыми библиотеками. Для упрощения задачи, я выложил архив в котором находятся библиотеки для работы с AVR GCC, библиотеки для того что бы добавить устройство LCD 5110 в протеус, готовый проект протеуса с подключенным дисплеем к микроконтроллеру Atmega8A файлик “Памятка.pdf” – в котором описаны основные функции по работе с библиотекой. Я не стал писать библиотеку с нуля, а тоже взял готовую но значительно ее изменил. В коде библиотеки указан адрес первоисточника.Из изменений – выбросил немного лишнего, переназвал и переиначил работу функций для более удобной работы и понимания, а так же добавил функцию перевода значения с плавающей точкой типа float в строку. Отличие от стандартных sprintf и dtostr в размере (разница около 2 кб.)
Я не буду описывать как добавить библиотеки для AVR Studio или ISIS Proteus, и сразу перейду к практике. Если же такие вопросы будут – посмотрите обучающее видео
Библиотека работает следующим образом:
1. Инициализируем экран
2. Формируем данные для передачи
3. Передаем данные.
Распиновка для подключения находится в файле n5110.h – по умолчанию для порта B. Но при необходимости достаточно изменить только следующие строки
Итак. Дисплей подключен.библиотеки подключены. Что же дальше?
Давайте напишем простейший код – в котором выведем на экран какую либо фигуру и 3 значения – статическое, сохраненное в переменной и число с плавающей точкой. (Используйте шпаргалку)
В итоге получим вот такие результаты:
В целом как видно из кода все достаточно просто! Осталось только выбрать что выводить и как! Будут вопросы – с радостью отвечу.
Подключаем экран Nokia 5110 к Ардуино
В этом уроке мы сначала покажем некоторые данные на экране Nokia 5110, а после выведем на него данные датчика DHT22. Мы собираемся связать ЖК-дисплей Nokia 5110 и Arduino. Вы изучите интерфейс Nokia 5110 Arduino с помощью двух примеров. Во-первых, мы просто покажем некоторые данные на экране, а во втором примере мы будем читать с датчика температуры и влажности DHT22 показатели и покажем их на ЖК-экране Nokia 5110.
Nokia 5110 LCD – отличный выбор для отображения данных. Это дешевле обычных ЖК и его очень легко использовать с микроконтроллерами. Вам просто нужно подключить несколько проводов и всё готово к работе.
Комплектующие
Для подключения Nokia 5110 к Ардуино нам нужны будут сам экран с микроконтроллером и еще ряд деталей.
- Arduino UNO × 1
- Nokia 5110 LCD × 1
- Многооборотный прецизионный потенциометр – 1 кОм (25 витков) × 1
- Резистор 10 кОм × 4
- Резистор 1 кОм × 1
- Резистор 330 Ом × 1
- Перемычки × 1
- Макет (универсальный) × 1
Дополнительно нам понадобится программное обеспечение в виде Arduino IDE, с которым вы скорее всего знакомы.
Распиновка Nokia 5110
Выводы Nokia 5110 LCD выглядит следующим образом:
RST: пин сброса
SCE: пин выбора чипа
D/C: (Данные / Команда): это вывод выбора режима. LOW означает командный режим, а HIGH означает режим данных.
DN (Data Pin): последовательные данные на входе
SCLK: последовательный тактовый сигнал
VCC: входное напряжение от 2,7 до 3,3 В
Светодиод: этот светодиод является подсветкой. Входное напряжение 3,3 В
GND: земля
Пример №1
В первом примере мы просто отобразим данные на ЖК-дисплее Nokia 5110. Принципиальная схема для соединения Nokia 5110 и Arduino показана ниже.
Схема соединения
Для работы Nokia 5110 LCD требуется 3,3 В, поэтому нам придется использовать резисторы для преобразования 5 В в 3,3 В. Если вы будете работать с Nokia 5110 без резисторов, экран будет работать, но срок службы ЖК-дисплея сократится.
- Подключите контакт 1 (контакт RST) к контакту 6 Arduino через резистор 10 кОм.
- Подключите контакт 2 (контакт SCE) к контакту 7 Arduino через резистор 1 кОм.
- Подсоедините контакт 3 (контакт D/C) к контакту 5 Arduino через резистор 10 кОм.
- Подсоедините контакт 4 (DIN контакт) к контакту 4 Arduino через резистор 10 кОм.
- Подсоедините контакт 5 (контакт CLK) к контакту 3 Arduino через резистор 10 кОм.
- Подсоедините контакт 6 (контакт VCC) к контакту 3,3 В Arduino.
- Подсоедините контакт 7 (светодиодный контакт) к среднему контакту потенциометра 1 кОм через резистор 330 Ом и подключите два других контакта к VCC и заземлению.
- Подсоедините контакт 8 (контакт GND) к заземлению Arduino.
Подключенный потенциометр используется для увеличения или уменьшения подсветки ЖК-дисплея. Вы можете подключить его к 3,3 В, если хотите, чтобы подсветка всегда была сильной, или вы можете подключить его к заземлению, если вы не хотите иметь подсветку.
Скачайте библиотеку Nokia 5110 ниже.
Сам код первого примера:
Прежде всего, мы подключаем библиотеку для Nokia 5110 LCD. Библиотека будет включать все команды, которые нам потребуются для ЖК-дисплея Nokia 5110. Затем мы объявили переменную с именем «lcd» типа PCD8544.
#include
Затем в функции setup (настройка) мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE.
Затем в функции loop (цикл) мы сначала установили курсор на первую строку и напечатали «Добро пожаловать!» (WELCOME). Затем мы перешли ко второй строке и напечатали «в» (to), а затем в третьей строке мы напечатали «ArduinoPlus.ru».
Пример №2
Во втором примере мы подключим датчик температуры и влажности DHT22 к Arduino и с помощью DHT22 будем считывать температуру, влажность и тепловой индекс. Затем мы покажем эти данные на ЖК-дисплее Nokia 5110. Принципиальная схема интерфейса Nokia 5110, Arduino и DHT22 приведена ниже.
Схема соединения
Соединения ЖК-дисплея Nokia 5110 с Arduino описаны в первом примере. Соедините контакты датчика DHT22 с Arduino, как показано на схеме выше:
- Контакт 1 DHT22 на 5В Arduino.
- Контакт 2 DHT22 к контакту 8 Arduino.
- Контакт 4 DHT22 к контакту заземления Arduino.
Если вы хотите узнать больше о взаимодействии DHT с Arduino, прочитайте наш урок Датчик температуры и влажности DHT22.
Скачайте библиотеки Nokia 5110 и DHT ниже.
Код для второго примера ниже:
Прежде всего, мы включили библиотеки для Nokia 5110 LCD и датчика температуры и влажности DHT22. После этого мы инициализировали контакт 8 для DHT22 (DHTPIN 8) и определили тип датчика DHT. Также доступны другие модели датчиков DHT, но мы использовали DHT22 из-за его высокой точности. Затем мы объявили переменную «lcd» типа PCD8544 для ЖК-дисплея и переменную «dht» типа DHT для датчика DHT22.
Затем в функции настройки setup мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE. После этого мы начали получать данные с датчика DHT22 с помощью команды dht.begin().
В функции цикла loop мы читаем значения влажности, температуры и индекса тепла из DHT22 и сохраняем в переменных. В конце мы напечатали их на ЖК-экране Nokia 5110.
На этом урок можно считать завершенным. Теперь вы вкратце понимаете как подключать дисплеи от Nokia к Arduino.
Источники:
http://zelectro.cc/nokia5110_module_arduino
http://arduinoplus.ru/arduino-nokia-5110/
http://lesson.iarduino.ru/page/kontrol-dostupa-rfid-rc522-servo-arduino/