Как управлять символьным LCD-дисплеем с помощью Raspberry Pi
В этом руководстве мы расскажем, как подключить LCD-дисплей 16x2 к вашему Raspberry Pi с помощью GPIO-пинов. Возможность отображать сообщение на LCD — это не только очень круто, но и может быть весьма полезно. Например, в этом руководстве мы покажем, как настроить LCD-дисплей для отображения IP-адреса вашего Raspberry Pi.
Для этого упражнения вам понадобятся:
Raspberry Pi (разумеется!)
Совместимый с HDD44780 LCD-дисплей 16x2
Макетная плата
Adafruit Pi Cobbler
Разноцветные провода для макетирования
Шаг 1 — Сборка LCD-дисплея
Для этого упражнения я использовал символьный LCD-дисплей Adafruit HDD44780. В комплекте с ним должна идти штырьковая гребёнка 0.1» и потенциометр.
Сначала нам нужно припаять гребёнку 0.1» к плате LCD. Отломите нужное количество штырьков (в данном случае 16) и аккуратно припаяйте их к плате.
Для этого упражнения мы будем управлять LCD-дисплеем в 4-битном режиме. Хотя его можно подключить и другими способами — через I2C или UART — это наиболее прямой метод. Для управления дисплеем таким образом нам потребуется использовать 6 пинов на GPIO-порту: 4 пина данных и 2 пина управления.
Распиновка LCD
Пины данных — мы будем использовать пины 11–14 (data4–7) для отправки данных на дисплей путём переключения уровней high/low.
Enable — будет переключаться для записи данных в регистры.
Read/Write — поскольку мы хотим только записывать на дисплей, а не считывать, этот пин будет установлен в low (запись).
Register Select — этот пин переключает LCD-дисплей между двумя режимами: командный режим (high) и режим данных (low). Командный режим передаёт инструкцию LCD. Например — «Очистить дисплей», «Переместить курсор в начало» и т.д. Режим данных сообщает LCD, что нужно отображать символы.
Contrast Voltage — регулирует контрастность дисплея и будет управляться потенциометром при подключении к схеме.
VDD — будет подключён к источнику питания 5V от GPIO-порта Pi.
Шаг 2 — Сборка схемы
Ниже представлена принципиальная схема и схема подключения, взятые с сайта Adafruit:
Для работы LCD мы подключим схему аналогично диаграмме выше, но пока не соединяйте всё вместе! Список ниже точно указывает, к чему подключаются пины LCD:
Pin #1 (VSS) подключается к земле (чёрный провод)
Pin #2 (VDD) подключается к +5V (красный провод)
Pin #3 (VE) подключается к среднему выводу потенциометра (оранжевый провод)
Pin #4 (RS) подключается к Cobbler #25 (жёлтый провод)
Pin #5 (RW) подключается к земле (чёрный провод)
Pin #6 (EN) подключается к Cobbler #24 (зелёный провод)
Пропустите LCD-пины #7, #8, #9 и #10
Pin #11 (D4) подключается к Cobbler #23 (синий провод)
Pin #12 (D5) подключается к Cobbler #17 (фиолетовый провод)
Pin #13 (D6) подключается к Cobbler #21 (серый провод)
Pin #14 (D7) подключается к Cobbler #22 (белый провод)
Pin #15 (LED +) подключается к +5V (красный провод)
Pin #16 (LED -) подключается к земле (чёрный провод)
Начните сборку схемы, вставив Adafruit Cobbler в макетную плату. Не забудьте расположить Cobbler по центру макетной платы так, чтобы никакие два пина не оказались в одном ряду. Затем вставьте LCD-дисплей в макетную плату. Подключите пины 5V и GND от Cobbler к верхней части макетной платы, а также подключите пины 1, 2, 15 и 16 LCD к соответствующим шинам питания. Ваша схема должна выглядеть примерно как на фото ниже:
Подключите шлейфовый кабель GPIO от Cobbler к Pi. Если всё подключено правильно, подсветка LCD должна включиться, как на фото выше. Если это не работает, проверьте правильность всех подключений.
Далее подключите потенциометр. Средний вывод потенциометра подключается к пину 3 LCD-дисплея, а два других вывода подключаются к земле и 5V (порядок не имеет значения). Проверьте работу потенциометра, повернув ручку, пока в первой строке дисплея не появятся квадраты, как на фото ниже:
Наконец, подключите оставшиеся пины LCD. Ваша схема должна выглядеть примерно так:
Шаг 3 — Программное обеспечение
Для использования GPIO-пинов в Python вам потребуется установить библиотеку GPIO для Python. Инструкции по установке библиотеки GPIO для Python можно найти здесь.
Чтобы получить код Python для управления LCD-дисплеем, мы «заберём» его у Adafruit через GitHub. Убедитесь, что ваш Raspberry Pi подключён к интернету, и мы воспользуемся командой git для клонирования кода Python. Выполните следующие команды в терминале для загрузки файлов.
apt-get install git
затем
git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
Теперь мы можем проверить, что дисплей работает и правильно подключён. Один из загруженных файлов — Adafruit_CharLCD.py — содержит класс Python для управления LCD-дисплеем. Он также содержит небольшой фрагмент кода, который при запуске программы отобразит сообщение на LCD.
Чтобы запустить программу, сначала нужно перейти в правильный каталог. Введите следующие команды в окне терминала:
cd Adafruit-Raspberry-Pi-Python-Code
cd Adafruit_CharLCD
Если вы используете версию 2 Raspberry Pi, вам нужно будет немного отредактировать программу, так как пин #21 теперь заменён на пин #27. Откройте файл Adafruit_CharLCD.py в Python или используйте команду nano Adafruit_CharLCD.py для редактирования программы прямо в терминале. Перейдите к строке 57 кода и замените:
def __init__(self, pin_rs=25, pin_e=24, pins_db=[23, 17, 21, 22], GPIO = None):
на:
def __init__(self, pin_rs=25, pin_e=24, pins_db=[23, 17, 27, 22], GPIO = None):
Убедитесь, что вы сохранили изменения в программе. Сначала сделайте файл программы исполняемым:
chmod +x Adafruit_CharLCD.py
Затем запустите программу, введя следующую команду:
sudo ./Adafruit_CharLCD.py
Если всё работает правильно, на экране должно появиться сообщение, как на фото ниже:
Не стесняйтесь заглянуть в код программы и изменить то, что отображается на LCD. Для этого откройте программу для редактирования, как и раньше, и прокрутите до последней строки кода:
lcd.message(" Adafruit 16x2 Standard LCD")
Просто измените текст в скобках после lcd.message(), чтобы отобразить нужный вам текст. Команда \n используется для переноса текста на новую строку. Более аккуратный способ сделать это — изменить последнюю часть программы, чтобы она выглядела следующим образом:
if __name__ == '__main__':
lcd = Adafruit_CharLCD()
message = raw_input("Type your message here ")
lcd.clear()
lcd.message(message)
Таким образом, при запуске программы вам будет предложено «type your message here» для ввода сообщения с клавиатуры, которое затем отобразится на LCD. Это было сделано путём определения новой переменной message, которая равна команде raw_input(), позволяющей пользователю вводить текст вручную. Часть в скобках команды raw_input() просто выводится на экран компьютера, подсказывая вам, что нужно написать.
Шаг 5 — Пример с IP-адресом и часами
Отображение произвольного текста на LCD — это круто, но не очень практично. Запуск программы Adafruit_CharLCD_IPclock_example.py отобразит дату/время и IP-адрес Pi на LCD. Программа использует методы из предыдущей программы Adafruit_CharLCD.py. Вы можете открыть программу, чтобы изучить код. Для этого откройте программу в Python или используйте команду sudo nano Adafruit_CharLCD_IPclock_example.py в терминале.
Запустите программу (из того же каталога, что и раньше), введя в окне терминала следующее:
sudo ./Adafruit_CharLCD_IPclock_example.py
Если всё работает правильно, дисплей должен выглядеть так:
Вот и всё!