Оглавление:

1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C: 6 шагов
1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C: 6 шагов

Видео: 1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C: 6 шагов

Видео: 1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C: 6 шагов
Видео: 🖥️Играю в Cyberpunk на Ардуино! 2024, Июль
Anonim
1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C
1602 Экранный модуль ЖК-клавиатуры с рюкзаком I2C

В рамках более крупного проекта я хотел иметь ЖК-дисплей и клавиатуру для навигации по некоторым простым меню. Я буду использовать множество портов ввода-вывода на Arduino для других задач, поэтому мне нужен интерфейс I2C для ЖК-дисплея. Поэтому я купил некоторое оборудование, состоящее из модуля защиты ЖК-клавиатуры 1602 от DFRobot и анонимного последовательного модуля I2C для ЖК-дисплеев. Я хочу использовать их с Arduino Nano. Затем я обнаружил, что заставить эти компоненты работать вместе есть некоторые проблемы, но это возможно. Поэтому я хочу поделиться своим опытом и, возможно, помочь другим.

На этой фотографии изображена рабочая макетная плата, которая может отображать сообщения на ЖК-дисплее и определять нажатия клавиш. Управление ЖК-дисплеем осуществляется через интерфейс I2C, включая подсветку ЖК-дисплея. Нажатия клавиш принимаются Arduino на выводе A0 (это может быть любой из аналоговых выводов, за исключением A4 и A5, которые связаны с интерфейсом I2C).

Шаг 1. Описание деталей - Экранный модуль ЖК-клавиатуры

Описание деталей - Экранный модуль ЖК-клавиатуры
Описание деталей - Экранный модуль ЖК-клавиатуры

Экранный модуль ЖК-клавиатуры состоит из обычно используемого ЖК-дисплея 1602, установленного на верхней части печатной платы, на которой находятся клавиши, и который принимает подмножество подключений ЖК-дисплея и делает их доступными для контактов разъема на нижней стороне печатной платы. Я понимаю, что эта плата предназначена для установки поверх Arduino Uno или подобного и обеспечивает правильное расположение выводов для работы в этой среде. Купил этот модуль на Ebay у продавца в Китае. Контакты заголовка на нижней стороне платы (клавиатура) в основном промаркированы, но контакты на верхней стороне, которая является интерфейсом ЖК-дисплея, не помечены. Однако контакты на самом ЖК-дисплее промаркированы.

Шаг 2: Описание деталей - Последовательный модуль I2C

Описание деталей - Последовательный модуль I2C
Описание деталей - Последовательный модуль I2C

Последовательный модуль имеет обычный 4-контактный разъем для I2C и набор немаркированных контактов разъема, которые, как я понимаю, предназначены для подключения непосредственно к нижней части ЖК-модуля. Изучая этикетки на ЖК-дисплее, я смог определить функции контактов последовательного модуля.

Этот модуль основан на IC PCF8574T, который завершает протокол I2C, имеет 3 контакта для управления адресом (с 20 по 27) и 8 контактов цифрового ввода / вывода с P0 по P7. Согласно паспорту PCF8574T, каждый вывод ввода / вывода имеет полевой транзистор, который замыкает его на землю для перехода в состояние НИЗКОГО, и может потреблять не менее 20 мА. В состоянии High он имеет переходный активный подтягивающий ток, а затем продолжающийся подтягивающий ток около 0,1 мА.

В этом модуле все контакты цифрового ввода / вывода, кроме P3, просто выведены на контакты заголовка (справа на фото). В случае P3 он подключен к базе транзистора (виден на фотографии в правом верхнем углу сразу под надписью «LED»). Эмиттер этого транзистора подключен к Vss (земля), а коллектор подключен к контакту 16 заголовка, где его можно использовать для управления подсветкой ЖК-дисплея. Из-за транзистора логическое состояние меняется на противоположное по сравнению с тем, которое предполагается в программной библиотеке. То есть подсветка ЖК-дисплея включается, когда вывод P3 имеет низкий уровень, и выключается, когда вывод P3 находится в состоянии высокого уровня.

На этикетке транзистора написано L6, что, согласно моим исследованиям, вероятно, делает его MMBC1623L6 с минимальным усилением по току 200. При 0,1 мА базового тока он должен поддерживать НИЗКОЕ состояние на своем коллекторе (вывод модуля 16). с током коллектора не менее 20 мА.

Кроме того, этот модуль имеет потенциометр 10K, подключенный между +5 и землей, переменный вывод которого выведен на контакт 3 (третий снизу на фотографии). При подключении непосредственно к ЖК-дисплею, этот регулятор будет управлять контрастностью ЖК-дисплея. Однако эта функция обеспечивается отдельным аналогичным потенциометром на экране ЖК-дисплея, поэтому этот потенциометр на последовательном модуле не имеет никакой функции.

Мне не удалось найти какое-либо соединение с выводом INT PCF8574T.

ОБНОВЛЕНИЕ 22 августа 2019 г.

Как упоминалось выше, PCF8574 имеет 3 контакта управления адресом. Кажется, что они вынесены на подкладки на доске рюкзака, где они обозначены A0, A1 и A2. Их можно увидеть на фото. Я не тестировал это, но кажется почти наверняка, что, подключив один или несколько из этих выводов к соседним площадкам, можно управлять адресом I2C в диапазоне от 20 до 27. Кроме того, есть второе почти идентичное устройство, PCF8574A, который имеет идентичную функциональность с PCF8574, но охватывает диапазон адресов от 0x38 до 0x3F.

Адрес, который фактически использует ваше устройство, можно проверить с помощью I2CScanner. Есть несколько простых сканеров I2C, доступных из разных источников. Этот на https://github.com/farmerkeith/I2CScanner также идентифицирует некоторые из найденных устройств.

Шаг 3: Подключения

Подключения
Подключения

Спасибо ChaitanyaM17, который предоставил диаграмму Фритцинга, на которой показаны соединения, описанные ниже.

Власть:

На нижней стороне ЖК-модуля имеется контакт с надписью «5.0V». Справа рядом с ним находятся два немаркированных контакта, оба заземленные.

Удерживая последовательный модуль с интерфейсом I2C на левом конце, есть 16 контактов на нижнем крае. Первый из них заземлен, а второй - + 5В. Другой вариант - использовать два нижних контакта на интерфейсе I2C для питания, но я счел более удобным использовать контакты, как описано выше.

Интерфейс I2C. На последовательном модуле верхний контакт - это SCL (часы), и он идет к Arduino A5. Второй вывод - это SDA (данные), и он идет к Arduino A4.

ЖК-интерфейс печати. Между последовательным модулем и экраном ЖК-клавиатуры имеется 6 соединений, все они между контактами без меток. Я буду идентифицировать их на ЖК-модуле, считая справа налево, с первым контактом как 1. Есть 2 блока по 8, поэтому они идут от 1 до 16. Я идентифицирую их на последовательном модуле I2C, считая слева направо. Да, их тоже 16. Кроме того, я даю каждому проводу метку, которая представляет собой эквивалентный вывод на Arduino, который обычно связан с этой функцией в случае прямого подключения без последовательного модуля.

Итак, 6 подключений к данным:

Эквивалент Arduino // Вывод последовательного модуля // Вывод модуля ЖК-клавиатуры

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

Управление подсветкой ЖК-дисплея: для этого используется еще одно соединение:

Эквивалент Arduino // Вывод последовательного модуля // Вывод модуля ЖК-клавиатуры

D10 // 16 // 11

Интерфейс клавиатуры: здесь используется один провод от вывода ЖК-модуля с надписью «A0» на нижней стороне до вывода A0 на Arduino. По крайней мере, это было довольно просто!

Шаг 4. Сделайте ключ RST пригодным для использования, как и другие 5 ключей

RST можно подключить непосредственно к входу RESTART Arduino Nano.

Однако, если вы хотите, чтобы клавиша RST использовалась в программном обеспечении для других целей, это можно сделать, подключив резистор 15 кОм между контактом RST и контактом A0 на нижней стороне экрана ЖК-клавиатуры.

Это работает следующим образом: между + 5В и правой кнопкой есть резистор 2 кОм. Затем последовательно увеличивайте резисторы для каждой из других клавиш (330R для клавиши UP, 620R для клавиши DOWN, 1K для клавиши LEFT и 3K3 для клавиши SELECT. Все клавиши (включая клавишу RST) подключаются к При подключении к 10-битному аналого-цифровому преобразователю (как для Arduino Nano A0) они выдают примерно следующие значения:

Вправо = 0; Вверх = 100; Вниз = 260; Left = 410; Выберите = 640.

С резистором 15 кОм к RST выдает около 850.

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

Шаг 5: Программное обеспечение

Полезное программное обеспечение - это, конечно, упражнение для читателя. Однако для начала вы можете взглянуть на мою тестовую программу. Я использовал библиотеку NewLiquidCrystal, которая поддерживает интерфейс I2C. Все просто заработало, как только я правильно установил библиотеки.

Основным моментом было изменение полярности команд выключения и включения подсветки (из-за транзистора на модуле I2C, как объяснено в разделе «Описание деталей»).

ОБНОВЛЕНИЕ 22 августа 2019 г.

Если у вас возникли проблемы с неработающим ЖК-дисплеем, проверьте адрес I2C вашего рюкзака с последовательным интерфейсом с помощью сканера I2C. Прилагается подходящий сканер. Затем при необходимости скорректируйте первый параметр в выписке.

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Шаг 6. Обзор и обсуждение

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

Мое следующее намерение - поместить это в коробку проекта как часть другого проекта. Однако, вступив на этот путь, я узнал, что есть еще одна трудность, которой я не ожидал.

Сложность в том, что этот модуль ЖК-клавиатуры не предназначен для установки в коробку. Любая коробка. Кнопки 6 клавиш расположены значительно ниже уровня ЖК-экрана, поэтому, если модуль установлен в коробке (например, в крышке) так, чтобы верх печатной платы ЖК-дисплея был заподлицо с нижней стороной крышки, верхние части Клавиши находятся примерно на 7 мм ниже верхней части крышки.

Возможные решения:

а) Смирись с этим. Просверлите отверстия для доступа в крышке и используйте инструмент (например, спицу подходящего диаметра) для нажатия кнопок.

б) Снимите ЖК-дисплей с печатной платы модуля и выполните операцию на клавиатуре, чтобы два компонента можно было прикрепить к крышке коробки для проекта независимо (я думаю, что все еще может быть проблема с слишком короткими кнопками)

c) удалите существующие кнопки и замените их более высокими кнопками. Новые кнопки должны быть высотой около 13 мм, чтобы ими можно было управлять через крышку коробки для проектов). Доступны сменные кнопочные переключатели различной высоты, включая 13 мм.

г) утилизируйте модуль экрана ЖКИ-клавиатуры и используйте отдельные ЖКИ и клавиатуру (т. е. начните заново). Доступен широкий спектр клавиатур, однако я не встречал ни одной с той же 6-клавишной раскладкой, что и в этом модуле (например, Select, Left, Up, Down, Right, Restart). Возможно, это не большая проблема, но одной из причин, по которой я начал с этого модуля, было то, что я думал, что эта раскладка клавиш - это то, что я хотел.

Я планирую использовать решение c) выше и посмотреть, как я поступлю.

Еще один фрагмент информации, который может вас заинтересовать:

При включенной подсветке потребление тока в этом проекте составляет: Arduino Nano 21,5 мА; Последовательный модуль 3,6 мА; ЖК-модуль 27,5 мА; Итого 52 мА.

При выключенной подсветке потребление тока в этом проекте составляет: Arduino Nano 21,5 мА; Последовательный модуль 4,6 мА; ЖК-модуль 9,8 мА; Итого 36 мА.

Рекомендуемые: