Подключение TFT-дисплея к Raspberry Pi

Raspberry Pi 3. Подключение TFT-дисплея

Дата Автор 23 комментария 77 939 просмотров

Продолжаю публиковать цикл статей об освоении Raspberry Pi и Arduino.

Сегодняшняя статья посвящена подключению сенсорного TFT-дисплея к Raspberry Pi.

Для «малинки» выпускается и продается великое множество различных сенсорных дисплеев, но каких-то особых различий между ними нет. В основе лежит проверенная временем линейка дисплеев от компании Waveshare Electronics, которую копируют и выпускают с использованием тех же комплектующих под своим лейблом другие китайские производители.

Свой дисплей я покупал в интернет-магазине GearBest вместе с самим микрокомпьютером.

Что нам понадобится

Для реализации описываемых в этой статье действий понадобится:

Подразумевается, что перед подключением дисплея Raspberry Pi уже готова к работе. Подробно о том, как установить OS Raspbian и провести первичную настройку я писал в статье «Raspberry Pi 3. Обзор и начало работы».

TFT-дисплей: краткий обзор и подключение

TFT-дисплеи для Raspberry Pi можно поделить на 3 разновидности:

  • подключаемые через DSI-интерфейс (15-контактный разъем для плоского шлейфа)
  • подключаемые через HDMI-разъем
  • подключаемые через GPIO

Большинство дисплеев с маленькой диагональю (до 4 дюймов) подключаются через GPIO и представляют собой печатную плату, на которой зафиксирован сам TFT-модуль, распаян адаптер и GPIO-разъем для подключения.

Подобные платы в среде Raspberry Pi принято называть HAT: Hardware Attached on Top, что в переводе означает «аппаратура, подсоединенная сверху».

Краткий обзор

Купленный мною модуль производства китайской фирмы Keyes (не путать с китайской же Keyestudio — это разные компании) представляет собой HAT-плату из красного текстолита.

Подключение TFT-дисплея к Raspberry Pi

Сверху на нем смонтирован сенсорный дисплей диагональю 3,2″ с разрешением 320×240 пикселей — как на старых смартфонах середины нулевых годов, а также 3 физические кнопки.

Задействованный модуль дисплея имеет название INANBO-TP32D, но практической пользы знание этой подробности не несет.

Подключение TFT-дисплея к Raspberry Pi

На обратной стороне расположен 26-контактный GPIO-слот для подключения платы к Raspberry Pi. Тут же виден DSI-интерфейс с уже подключенным к нему шлейфом от TFT-модуля, какой-то контроллер и другие мелкие детали.

По сути, плата является адаптером, который должен подружить конкретный TFT-модуль с конкретными спецификациями, сенсорный интерфейс и хардварные кнопки с «малиной» через GPIO.

Подключение TFT-дисплея к Raspberry Pi

Подключается дисплей к «малинке» очень просто — совмещаем расположенный на HAT-плате разъем со штырьками GPIO начиная с самых крайних.

Мне пришлось вытащить свою Raspberry Pi 3 из корпуса — иначе плата не насаживалась на штырьки, упираясь своими «рожками» в боковые стенки. Вообще, эти рожки — голый текстолит, так что можно аккуратно спилить их лобзиком и тогда плата прекрасно поместится в корпус. Но смысла в таком действии я не увидел, и далее объясню почему. Также я пока не стал снимать защитную пленку — она несколько неряшливо смотрится на фото, но не мешает работать с дисплеем.

Подключение TFT-дисплея к Raspberry Pi

При подаче питания на Raspberry Pi дисплей засветится сплошным белым цветом, но изображения на нем не возникнет. Это нормально, так и должно быть. Белое свечение свидетельствует о том, что дисплей исправен, правильно подключен и на него поступает питание с GPIO. А вот для вывода на него изображения понадобится скачать и установить драйвера.

Установка драйверов

Загуглив «драйвера для дисплея Raspberry Pi», я сперва наткнулся на какие-то страшные и громоздкие мануалы, в которых рекомендовалось скачать какие-то файлы из git-репозитория, потом куда-то их установить, затем вручную внести правки в файлы конфигурации и вручную же выставить правильное разрешение экрана путем правки других файлов.

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

Но на данный момент установка драйверов для TFT-дисплея к Raspberry Pi не более сложна, чем процесс физического подключения дисплея к микрокомпьютеру, и займет не более 5 минут времени.

Первым делом нужно скачать архив с драйвером (LCD-show-161112.tar.gz) с вот этой страницы.

Затем распакуем его при помощи консольной команды:

tar xvf LCD-show-161112.tar.gz

Перейдем в директорию с распакованным драйвером:

cd LCD-show/

И запустим скрипт, который сделает всю остальную работу:

./LCD32-show

Обратите внимание, что этот скрипт создан для работы с дисплеем диагональю 3,2″ — как у меня. Поэтому для работы с дисплеями других диагоналей потребуется запуск других скриптов: LCD28-show, LCD35-show, LCD4-show, LCD4-800×480-show, LCD43-show, LCD5-show, LCD7-800×480-show, LCD7-1024×600-show, LCD101-1024×600-show.

Все они идут в комплекте с вышеуказанным драйвером, а для какого дисплея предназначен какой скрипт — понятно из названий.

Подключение TFT-дисплея к Raspberry Pi

Если все сделано правильно, то после запуска скрипта Raspberry Pi начнет перезагружаться, а на дисплее появится изображение.

Для переключения обратно с сенсорного TFT-дисплея на HDMI-монитор нужно снова из консоли зайти в папку с драйвером:

cd LCD-show/

И активировать скрипт:

./LCD-hdmi

После этого «малина» опять перезагрузится, экран загорится белым цветом, а изображение будет выводиться на подключенный по HDMI монитор.

Также драйвер позволяет переворачивать изображение на 90, 180 и 270 градусов:

cd LCD-show/
./LCD32-show 90

После перезагрузки изображение на TFT-дисплее будет повернуто на 90 градусов.

cd LCD-show/
./LCD32-show 180
cd LCD-show/
./LCD32-show 270

Вот эти команды поворачивают изображение на 180 и 270 градусов соответственно.

cd LCD-show/
./LCD32-show 0

Возврат к ориентации экрана по умолчанию.

Сенсорный интерфейс отдельно настраивать не надо — он уже прописан в драйвере и активируется по умолчанию.

Нерешенным остается вопрос с физическими кнопками, которые присутствуют на некоторых модулях экранов. Я пока оставил его без внимания, потому что не увидел смысла в наличии этих кнопок для себя. Какие действия мне на них вешать, и, главное, зачем?

TFT-дисплей для Raspberry Pi 3 в работе

Подвох заключается в том, что графический интерфейс Raspbian не предназначен для работы в разрешении 320×240.

Подключение TFT-дисплея к Raspberry Pi

Вот так выглядит рабочий стол Raspbian PIXEL. Я заранее установил в настройках интерфейса самый маленький из возможных размер ярлыков в панели задач — иначе в столь низком разрешении они накладываются друг на друга.

Подключение TFT-дисплея к Raspberry Pi

Открываем меню. Более-менее терпимо, хотя конечно же это ненормально, когда меню занимает больше половины ширины экрана.

Подключение TFT-дисплея к Raspberry Pi

Откроем браузер Chromium. Всё! Ярлыки и шрифты в панели задач съехали и полезли друг на друга — уменьшение их размера до минимально возможного не помогло. Сам браузер к такому разрешению экрана абсолютно не адаптирован, и серфинг сайтов практически невозможен. То есть, он как бы есть, но необходимость постоянно скроллить веб-страницы не только по вертикали, но и в горизонтальном направлении делает это занятие бессмысленным.

Подключение TFT-дисплея к Raspberry Pi

А вот с консолью работать вполне можно. Тут низкое разрешение не помеха. А если выгрузиться из GUI вообще, то пользование консолью станет еще удобнее.

Заключение

Небольшие подключаемые TFT-дисплеи для Raspberry Pi отлично подходят для работы с консолью в полевых условиях и способны стать заменой обычному полноразмерному монитору.

Также они могут использоваться в DIY-устройствах на базе Raspberry Pi (умный дом, медиацентр, 3d-принтер, станок с ЧПУ) для вывода информации и управления через специально созданный с учетом низкого разрешения и малой диагонали графический интерфейс.

Но для работы в Raspbian PIXEL они непригодны по причине отсутствия адаптации к разрешениям ниже 1024×600 в этом GUI.

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

3,2″ TFT-дисплей для Raspberry Piв интернет-магазине GearBest

Автор статьи:
Дмитрий
Руководитель отдела в IT-компании. Веду этот блог с 2013 года, пишу о гаджетах и домашней автоматизации, обозреваю одноплатные компьютеры, неспешно собираю «умный дом».

23 комментария на «Raspberry Pi 3. Подключение TFT-дисплея»

  1. «Первым делом нужно скачать архив с драйвером (LCD-show-161112.tar.gz) с вот этой страницы.»
    не скачивается никак… wget — O — URL так ведь должно быть? ни этот драйвер, ни более свежий…

    • Просто «wget http://www.waveshare.com/w/upload/4/4b/LCD-show-161112.tar.gz» — и архив скачивается в файл с оригинальным названием.
      Параметр -O (output file) нужен для указания собственного имени для файла, в который будет писаться загружаемая информация, но тогда нужно придумать и вписать это имя в команду после -O.

      • Скачал, установил. Да дисплей начал отображать информацию. Но не долго. Загрузочный лог. По hdmi видео так же транслируется. На экран кроме лога ничего не выводится. Что я делаю не так.

        • Попробуйте отключить hdmi-кабель для начала.
          На 2 экрана одновременно изображение выводиться не может, значит по какой-то причине система выбирает приоритетным именно hdmi-монитор и отключает второй дисплей.

          • Отключал, виснет на том же месте. Что то правил в конфиги, честно сказать наугад. Прогресс есть. На пример сама оболочка emulation station открывается на ты по hdmi, но при открытии например терминала, или файлового менеджера, конфигурации, изображение выводится на экран. Но вывод всего необходимого на дисплей осуществить так и не вышло

  2. «Сенсорный интерфейс отдельно настраивать не надо — он уже прописан в драйвере и активируется по умолчанию.»
    Оказывается надо. Особенно, если выбрали поворот на 180 градусов — touchscreen остается на месте.
    sudo apt-get install -y xinput-calibrator
    это нашел, а где виртуальная клава прячется — не найду

  3. А можно ли подружить Raspberry с дисплеем от телефона? Есть дисплей от meizu mx4, диагональю 5,36 и разрешением 1920/1152

    • Скорее нет, чем да.
      Чтобы подключить экран от смартфона пришлось бы делать адаптер со шлейфа этого экрана на GPIO, а потом писать свой драйвер чтобы все заработало. Слишком сложно для обычного пользователя.

  4. Здравствуйте, у меня проблема. Сделал все, как вы написали, подогнав драйвера под свой дисплей (4,5), но экран не загорается.
    Спустя минут 20, я все-таки решил подключить HDMI, и на нем увидел лишь застывшую загрузки консоли. Проверял раз 30, застывает на одном и том же месте. Что делать?..

    • По какой-то причине Raspbian не загружается до конца, надо смотреть что именно пишется в консоли и разбираться. Причем не факт, что это вообще связано с драйверами на экран. Например, загрузка может стопориться если сначала примонтировать внешний диск через fstab, а потом отключить его и забыть убрать строку о его монтировании обратно. В общем, надо смотреть на чем останавливается загрузка и уже от этого отталкиваться.

      Либо, если нет желания разбираться со всем этим, можно просто перезаписать образ Raspbian на карточку с нуля, подключить экран и добиться его работоспособности, затем донастроить систему под себя и забэкапить состояние рабочей и настроенной системы чтобы в дальнейшем при каких-то проблемах просто восстанавливаться из бэкапа вместо переустановки и настройки всего с нуля. Подробнее об этом я писал тут https://dmitrysnotes.ru/raspberry-pi-3-kak-sdelat-bekap, наличие актуальных бэкапов здорово экономит время и силы при появлении каких-то проблем с системой.

      • Действительно, я разобрался, экран начал работать, но само изображение в негативе, и сенсор работает не правильно… Как это можно исправить?

  5. В какой момент hdmi отключать? перезагружается, белый экран на дисплее, перестал загружать ос(цветной квадрат), экранчик такой же 3.2(

    • Если белый экран — значит драйвера с этим дисплеем не работают.
      Надо переключаться обратно на hdmi-дисплей (подключиться к малине с компьютера через ssh и ввести команду в терминале) и разбираться дальше почему так. Я бы начал с того, что попросил продавца дисплея скинуть драйвера. Waveshare, они как бы универсальные, но никогда нет 100% уверенности, что какой-то конкретный производитель дисплея не намудрил чего-то, требующего особенного подхода.

    • С DSI вроде бы только оригинальный дисплей от Raspberry Pi Foundation, он не из дешевых.
      Но есть много дисплеев, подключаемых по HDMI. С любой диагональю и практически на любой бюджет.

  6. Сколько не пробовал переустанавливать расбиан все равно дисплей не работает (белый экран) а плата зависает сразу после лога (просто на HDMI черный экран и сверху курсор мигает) ЧТО БЛИН С ЭТИМ ДЕЛАТЬ УЖЕ ЦЕЛУЮ НЕДЕЛЮ ДО ТРЕХ ЧАСОВ НОЧИ ПАРЮСЬ

  7. Помоги пожалуйста с raspberry pi 3
    Никак не могу подключить дисплей
    Сделал всё по инструкции(по которой ты в статье писал)
    Но выходит только это(прикреплю фотографию)
    Помоги пожалуйста
    [Фотография]
    https://vk.com/photo402198497_456239181

    • Продублирую ответ из ВК:

      Первое, что хочу сказать — эта инструкция не универсальная. Купив дисплей, надо смотреть клоном какой модели брендового производителя (Adafruit, Waveshare и т.д.) он является, потом искать на сайте производителя оригинального дисплея инструкцию и по ней устанавливать драйвера уже на свою модель. Ну или как вариант списаться со своим продавцом и попросить чтобы он выложил драйвер и инструкцию по их установке.

      Например, вот здесь https://dmitrysnotes.ru/obzor-alyuminievogo-korpusa-dlya-raspberry-pi-3-s-displeem-ik-priemnikom-i-knopkami используется уже другой модуль и драйвера на него устанавливаются по-другому, не так как в данной статье.

      И второе, на скринах Kali Linux, а драйвера дисплеев для Raspberry Pi написаны под Raspbian и в некоторых исключительных случаях могут быть несовместимы с другими осями. Взять тот же 2.2″ дисплей от Adafruit — драйвера под него написаны под Raspbian Jessie и патчат ядро при установке. Уже в следующем релизе (который Raspbian Stretch) этот патч для ядра не работает, соответственно не работает и драйвер.

      Т.е. правильный порядок действий получается таким:
      1. Понять, клоном какого брендового дисплея является купленный в Китае дисплей, и найти драйвера от этого брендового дисплея.
      2. Установить эти драйвера на Raspbian.
      3. Убедиться, что под Raspbian дисплей нормально работает — т.е. драйвера подобраны правильно.
      4. Уже после этого пробовать запустить дисплей с теми же драйверами под другой осью — Kali Linux или какой-нибудь еще.

      Скорее всего ошибка в самом первом шаге — выборе драйвера под свою модель.

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

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

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]