Как подключить к HDMI LCD дисплей

Наконец дошли руки и я подключил LCD 3.5″ 320×480 с тачскрином (ILI9486+XPT2046) к RPi2, RPi3.
За основу был взят драйвер для RPi2 от spotpear/waveshare LCD-show-160823-touch.tar.gz (http://www.spotpear.com/download/diver2 . uch.tar.gz) и доработан напильником (переделал скрипты и пр.) под мой конкретный LCD.
Покупал LCD (правда, уже не продают) здесь: http://www.Aliexpress.com/item/Wholesal . 87730.html.
То же самое тут: http://spotpear.com/index.php/spotpear- . 5-inch-lcd.
Система Raspbian (2016-09-23-raspbian-jessie 4.4.21 #911), обновлённая до 4.4.30 #919.
Для начала коротко об изменении драйвера под RPi3: после распаковки архива в файле cmdline.txt надо заменить mmcblk0p2 на mmcblk0p7.
Я собрал два архива (прикреплены) для этого LCD под RPi2 и RPi3.
Использование (на примере для RPi2, для RPi3 просто другой архив):
1. Подключаем дисплей к плате и запускаем RPi.
2. Устанавливаем программу для калибровки тачскрина:

sudo apt-get install -y xinput-calibrator

3. Копируем архив драйвера LCD-show-160823-touch-3.5inch-RPi2.tar.gz в домашнюю папку.

LCD дисплей 7 дюймов для Raspberry pi


4. Распаковываем архив:

tar -xzf LCD-show-160823-touch-3.5inch-RPi2.tar.gz
5. Назначаем файлы скриптов исполняемыми:
cd ./LCD-show sudo chmod +x LCD35-show sudo chmod +x LCD-hdmi

6. Для перехода на работу с LCD выполняем одну из команд в зависимости от требуемой ориентации (находимся в папке LCD-show):

./LCD35-show ./LCD35-show 90 ./LCD35-show 180 ./LCD35-show 270

После перезагрузки рабочий стол показывается на LCD (по началу часть строк идёт на HDMI).

7. Запускаем программу для калибровки тачскрина Пуск -> Параметры -> Calibrate Touchscreen
Долго не раздумывая, последовательно тыкаем стилусом в четыре показываемые красные мишени по углам и смотрим в консоли результат — запоминаем четыре цифры калибровки (выделены цветом):

Section «InputClass»
Identifier «calibration»
MatchProduct «ADS7846 Touchscreen»
Option «Calibration» » 3900 130 170 3930 »
Option «SwapAxes» «1»
EndSection

8. Запускаем редактор для внесения своих калибровочных данных:

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

находим похожие четыре цифры и меняем их значения на полученные ранее. Жмём ‘Ctrl-X’ ‘Y’ и ‘Enter’ для сохранения изменений в файл (нажать именно так, т.к. на экране будет ни фига не видно ).

sudo reboot

После этого тачскрин должен работать корректно.

10. Если надо вернуться к выводу через HDMI, то выполняем:

cd ./LCD-show ./LCD-hdmi
В следующем посте будут примечания (для тех, кто хочет вникнуть).

Attachments LCD-show-160823-touch-3.5inch-RPi3.tar.gz Драйвер для RPi3 (3.96 KiB) Downloaded 2651 times LCD-show-160823-touch-3.5inch-RPi2.tar.gz Драйвер для RPi2 (3.97 KiB) Downloaded 858 times

Dimonira Posts: 44 Joined: Mon Apr 06, 2015 6:17 am

Re: Подключение LCD 3.5″ 320×480 (ILI9486+XPT2046) к RPi2, R

Теперь для интересующихся что да как, зачем и почему.
Мне не понравились скрипты, которые были в драйвере. Беда в том, что они затирают текущую конфигурацию системы. Мне захотелось, чтобы по крайней мере после возвращения к выводу на HDMI, система возвращалась в исходное состояние. Для этого скрипт сохраняет затираемые впоследствии файлы в папку LCD-show/backup (она создаётся при первом переходе на LCD), откуда они потом восстанавливаются (при возвращении на HDMI). Кроме того, всё, что добавляется для LCD, потом удаляется при возвращении к HDMI.
Итак, примечания:
1. В режиме вывода на LCD можно менять ориентацию без перехода обратно в режим HDMI, например, было 90, а хотим 270:

cd ./LCD-show ./LCD35-show 270

2. В режиме вывода на HDMI повторная попытка переключить на HDMI ничего не меняет (т.е. не страшно ).

3. При переключении в режим вывода на LCD делается сохранение в папку LCD-show/backup следующих файлов:

/boot/config.txt
/boot/cmdline.txt
/usr/share/X11/xorg.conf.d/99-fbturbo.conf

Далее копируются файлы (файл config.txt заменяется в целевой папке) в зависимости от выбранной ориентации:
для 0:
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35 -> /etc/X11/xorg.conf.d/99-calibration.conf
LCD-show/boot/config-35.txt -> /boot/config.txt
для 90:
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-90 -> /etc/X11/xorg.conf.d/99-calibration.conf
LCD-show/boot/config-35-90.txt -> /boot/config.txt
для 180:
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-180 -> /etc/X11/xorg.conf.d/99-calibration.conf
LCD-show/boot/config-35-180.txt -> /boot/config.txt
для 270:
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-270 -> /etc/X11/xorg.conf.d/99-calibration.conf
LCD-show/boot/config-35-270.txt -> /boot/config.txt

В заключении копируются файлы (первые два с переименованием) и делается перезагрузка:

LCD-show/boot/cmdline-35.txt -> /boot/cmdline.txt
LCD-show/boot/overlays/waveshare35a-overlay.dtb -> /boot/overlays/waveshare35a.dtbo
LCD-show/usr/share/X11/xorg.conf.d/99-fbturbo.conf -> /usr/share/X11/xorg.conf.d/99-fbturbo.conf

4. При переключении в режим вывода на HDMI сохранённые файлы из папки LCD-show/backup возвращаются на место.

LCD-show/backup/config.txt -> /boot/config.txt
LCD-show/backup/cmdline.txt -> /boot/cmdline.txt
LCD-show/backup/99-fbturbo.conf -> /usr/share/X11/xorg.conf.d/99-fbturbo.conf

В случае отсутствия этих файлов (например, папка LCD-show/backup была удалена) будут использованы и переименованы следующие файлы:

LCD-show/boot/config-hdmi.txt -> /boot/config.txt
LCD-show/boot/cmdline.txt -> /boot/cmdline.txt
LCD-show/usr/share/X11/xorg.conf.d/99-fbturbo.conf-HDMI -> /usr/share/X11/xorg.conf.d/99-fbturbo.conf

Далее удаляются следующие файл и папка (в режиме HDMI они не нужны), после чего делается перезагрузка:

/boot/overlays/waveshare35a.dtbo
/etc/X11/xorg.conf.d (вся папка, вместе с файлом 99-calibration.conf)

5. Анализ, что текущий режим настроен для вывода на LCD делается по наличию файла /etc/X11/xorg.conf.d/99-calibration.conf. При переключении в режим вывода на HDMI папка /etc/X11/xorg.conf.d удаляется.

6. Для того, чтобы при переключениях LCD->HDMI->LCD не делать каждый раз калибровку, можно полученные значения калибровки (четыре цифры) заранее записать в соответствующие файлы в зависимости от ориентации:

LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-90
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-180
LCD-show/etc/X11/xorg.conf.d/99-calibration.conf-35-270

7. Для того, чтобы сохранялись настройки интерфейсов I2C, UART (для LCD нужен только SPI) при переключении из режима HDMI в режим вывода на LCD, можно задать эти настройки в соответствующих файлах LCD-show/boot/config-35xxxx.txt.

8. Из исходного архива драйвера удалены за ненадобностью (я не понял зачем они, нигде не участвуют):

LCD-show/dtc.sh
LCD-show/inittab
LCD-show/_ (вся папка)

Также удалены все файлы, которые не относятся к LCD 3,5″ 320×480. Файл waveshare35a-overlay.dtb перенесён в LCD-show/boot/overlays. Файл cmdline.txt из архива переименован в cmdline-35.txt и перенесён в папку LCD-show/boot. В папку LCD-show/boot добавлен файл cmdline.txt из системы (режим HDMI). Файлы config-xxx переименованы для удобства.

Dimonira Posts: 44 Joined: Mon Apr 06, 2015 6:17 am

Re: Подключение LCD 3.5″ 320×480 (ILI9486+XPT2046) к RPi2, R

Image

На своём LCD я на плату припаял платку часов реального времени (RTC) на микросхеме DS3231. Поскольку она работает через интерфейс I2C, то в моих конфигах этот интерфейс заранее включен.

Итак, LCD работает, тачскрин отзывается, НО! Очень неудобно — на LCD ничего «не влезает». Окна настроек не умещаются на экране и ничего толком сделать невозможно. Зачем тогда вообще использовать LCD с таким маленьким разрешением? Только для специфических задач?
Поскольку я в Линуксах мало что смыслю, хотелось бы от знатоков допилить драйвер (настройки в самих файлах), чтобы картинка «ужималась» при переходе на LCD и возвращалась обратно для режима HDMI.
Что-то есть, например, в файле cmdline.txt — шрифт какой-то, м.б. ещё что-то. Я в этом ничего не понимаю.
Может кто-нибудь предложит что надо для этого сделать?

Еще по теме:  Как подключить компьютер к интернету через кабель HDMI

Elph Posts: 1 Joined: Sun Mar 12, 2017 10:19 pm

Re: Подключение LCD 3.5″ 320×480 (ILI9486+XPT2046) к RPi2, R

Такая история. Поставил Noobs c этого сайта, подключил к малине экран 3.5″.
Делаю по вашей инструкции, команда ./LCD35-show сработала
но тач работает с поворотом на 90 градусов — корректно получается если сделать ./LCD35-show 270
застрял на калибровке: запускал калибратор из главного меню raspbian запихивал то, что выводится в файлик /etc/X11/xorg.conf.d/99-calibration.conf
ничего не изменилось
попробовал «SwapAxes» «0» и «1» — без изменений
пробовал в «Calibration» координаты менять — без изменений
такое ощущение что ему этот конфигурационный файл ни на что не влияет.
с тем же содержимым создавал файлы 01-input.conf, 10-evdev.conf — без изменений
делал это же в /usr/share/X11/xorg.conf.d — тоже без изменений
всё воскресенье угробил на эту малину и что-то малиной не пахнет =)
подскажите пожалуйста в чём может быть проблема

agamemnen1 Posts: 1 Joined: Tue May 16, 2017 6:47 pm Location: Russia

Re: Подключение LCD 3.5″ 320×480 (ILI9486+XPT2046) к RPi2, R

Доброго времени суток.

Image

Подскажите, сделал все по вашей инструкции, после перезагрузки получаю следующее:

В чем может быть проблема?

Rok-16 Posts: 1 Joined: Sat Jul 01, 2017 6:49 am

Re: Подключение LCD 3.5″ 320×480 (ILI9486+XPT2046) к RPi2, R

То же самое что и в последнем комменте. строки бегут по HDMI и останавливаются. больше ни какой реакции.

Но пока об этом ЖК-экране. Полное или можно сказать китайское название, для поиска: «LCD TFT-дисплей 3,5 дюйма, 480×320 сенсорный экран для подключения к Raspberry Pi» Покупал на Aliexpress, тут. Вот так он поставлялся

Я заказал не только дисплей, но и корпус под него и под Raspberry Pi 3 (про этот микрокомпьютер на моем канале: » Микрокомпьютер Raspberry Pi 3 B+, общие сведенья.» ). Корпус именно под Raspberry Pi 3 так как остальные будут не совместимы относительно отверстий под входы/выходы.

Про корпус

Корпус вырезан из оргстекла, на нем упаковочная пленка которую нужно содрать, для того что бы легче было снимать можно воспользоваться феном и прогреть её, а еще лучше, размочить водой можно с мылом (не добавляйте другие чистящие средства), а потом прогреть феном Собирается он как конструктор, ничего сложного нет. И тем не мене одна деталь оказалось лишней, это поперечная планка

Лишняя деталь

С ней невозможно насадить дисплей на гребенку GPIO.

Мешает планка

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

«Разрезанная» гребенка альтернативного дисплея.

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

Комплектная отвертка

Для тех кто не понял как собрать данный корпус есть даже инструкция на страничке продавца, вот она

Инструкция по сборке

Собранный корпус без дисплея

Собранный корпус без дисплея
Собранный компьютер

Про дисплей

Сам же дисплей подключается к Raspberry Pi через GPIO разъем. Просто вставляйте его методом бутерброда на Raspberry Pi.

Подключение без корпуса

  • Тип ЖК-дисплея: TFT
  • Интерфейс: SPI
  • Диагональ: 3,5 дюйма
  • Разрешение: 480×320
  • Подсветка светодиодная
  • Рабочее напряжение: 3,3 В
  • Тип тачскрина: Резистивный
  • Контроллер тачскрина: XPT2046
  • Основная система: vision 3.18.9
  • Скорость SPI: 32 МГц

Как сказано выше и видно из снимков дисплей не имеет выхода HDMI соединяется он с микрокомпьютером посредством интерфейса SPI. Нужно помнить о том, что Raspberry Pi не может выдавать одновременно сигнал на HDMI-разъём и дисплей (на самом деле может)

Отрицательные стороны дисплея

  • Дисплей требует обязательной установки драйвера.
  • Скорости обновления по SPI не хватает для видео.
  • Интерфейс SPI дополнительно нагружает CPU.

Используйте SPI-дисплей для пользовательских интерфейсов, которые по большей части статичны.

Производитель

Производитель не обозначен, но как всегда все дорожки ведут к этим двум сайтам:

Spotpear Electronics Co., Ltd . выпускает всякие шилды для микрокомпьютеров и микроконтроллеров, особенно много всяких дисплеев, вот страничка похожего дисплея.

Waveshare Electronics выпускает абсолютно то же самое, вот страничка похожего дисплея и там же ссылка на Wiki и даже драйвер качать отсюда (см. ниже)

Более подробно, схемы

На плате расположены:

  • Сдвиговые регистры 74-й серии, превращающие параллельный интерфейс в SPI
  • контроллер сенсорного экрана XPT2046 и
  • 3.3В стабилизатор AMS1117
  • Разъем PBD-26 для подключение к 26 и 40-пиновому GPIO Rapberry PI

Плата схематично

Плата реальная для сравнения

Реальная плата

Сдвиговые регистры схема

Сдвиговые регистры.

Сенсорная панель (тачскрин)

В комплекте идет даже стилус

Комплектный стилус

Подключение, запуск

Подключаем в сеть нашу малинку и экран загорается белым и всё! Ничего не работает, нужно настраивать!

Пока не работает

Я подключился через putty, стандартно по SSH, порт 22.

Напомню, что для дистрибутива Raspbian у Raspberry Pi по умолчанию:

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

  • Микрокомпьютер Raspberry Pi 3 B+, общие сведения
  • Про операционную систему Raspberry Pi OS — обновление старой системы, установка новой .

Устанавливаем драйвера и программное обеспечение

Входим в терминал и вводим (естественно должно быть подключение к сети, оттуда будем качать драйвер дисплея)

Начнем как всегда с:

sudo apt update

sudo apt dist-upgrade

Далее скачаем драйвер экрана:

Перейдем в каталог:

cd LCD-show/

Сделаем файл исполняемым:

chmod +x LCD35-show

После этого возникает вот такая простыня с сообщениями (на скрине она еще не вся):

Результат запуска LCD35-show

Ждем и после: «LCD configure 0» putty у меня отключился, а сам Raspberry Pi ушел к перезагрузку и после этого уже начал работать экран, но сам сенсорный дисплей работал криво.

Если сам не перезапустился, перезагружаем

  • Выполнение apt-get upgrade приведет к неправильной работе ЖК-дисплея. В этом случае вам нужно отредактировать файл config.txt на SD-карте и удалить: dtoverlay = ads7846
  • При использовании с Raspbian-lite команда установки сенсорного драйвера должна быть: ./LCD35-show lite
  • Помните, что работает только один монитор (на самом деле это не так), если вы хотите использовать другой монитор HDMI, выполните команду:

cd LCD-show/
./LCD-HDMI

Команда переключит обратно на встроенный ЖК-дисплей:

Примечание в руководстве (выше)сказано, что работает только один дисплей. Но это не так у меня же работало два дисплея и встроенный сенсорный дисплей и HDMI, но изображение было одного разрешения, низкого 480×320 как у сенсорного дисплея.

Еще по теме:  Разрешение HDMI 1080i или 1080p

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

Казалось бы самое простое повернуть экран на 180градусов, но не тут то было

cd LCD-show/
./LCD35-show 180

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

Возвращаем все как было

cd LCD-show/

./LCD35-show 0

А еще можно сделать углы поворота:

cd LCD-show/
./LCD35-show 90

  • 270 градусов

cd LCD-show/
./LCD35-show 270

Настраиваем сенсорную панель

Около двух дней я потратил что бы разобраться с калибровкой данной сенсорной панели и кстати до конца так и не разобрался!

Данные калибровки хранятся в файле 99-calibration.conf, иногда он есть, иногда нет, но тогда его нужно создать

sudo mkdir /etc/X11/xorg.conf.d
sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Или просто открыть

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Он может быть пустой или там могут быть значения, выглядит он так:

Section «InputClass»

Identifier «calibration»

MatchProduct «ADS7846 Touchscreen»

Option «Calibration» «2713 2699 28883 3000»

Option «SwapAxess» «0»

Давайте подробно разберём все эти значения, что они значат для меня это огромный вопрос?

Section «InputClass» — Секция «Входной класс» — не знаю что это значит.

Identifier «calibration» — Идентификатор калибровка

MatchProduct — Название продукта, в данном случае «ADS7846 Touchscreen»

Option «Calibration» «3839 232 160 3823» — Опции калибровки, всегда четыре цифры

Option «SwapAxess» «0» — Опции «Поменять ось» «0» — Я иногда видел «1»

EndSection — конец секции

Еще видел следующие секции

Option «TransformationMatrix» «0 -1 1 1 0 0 0 0 1» — Матрица трансформации, что это значит? Я точно не знаю, но вот что я нашел, правда это для «CalibrationMatrix» и для HDMI дисплея, н очень похожи и видимо это переворот дисплея:

Option «CalibrationMatrix» «0 1 0 -1 0 1 0 0 1»

180 градусов

Option «CalibrationMatrix» на » 0-1 1 1 0 0 0 0 1″

270 градусов

Option «CalibrationMatrix» «-1 0 1 0 -1 1 0 0 1»

Программа xinput-calibrator

Калибровать можно и с помощью специальной программы xinput-calibrator которая в терминале выдает значение, самая главное строчка это Option «Calibration» «3952 220 217 3926»

Сначала ее устанавливаем:

sudo apt-get install xinput-calibrator

Установка: sudo apt-get install xinput-calibrator

После установки на рабочем столе идем в меню малинки, параметры и там ищем эту программу «Calibrate Touchscreen»

Где искать программу «Calibrate Touchscreen»

Запускаем и тыкаем на крестик

Калибровка

Touchsreen Calibration for ‘ADS7846 Touchscreen’

Press tht point, use a stylus to increase precision

(To abort? press any keyor wait)

Калибровка сенсорного экрана для ‘ADS7846 Touchscreen’

Нажмите на точку, используйте стилус для повышения точности

(Отменить? Нажмите любую клавишу или подождите)

Программа выдает вот такие значения, самая главное строчка это Option «Calibration» «3983 231 156 3935»

Значение программы в терминале

Эти значения вы должны вручную внести в файл » 99-calibration.conf»

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Или целиком все данные:

Section «InputClass»

Identifier «calibration»

MatchProduct «ADS7846 Touchscreen»

Option «Calibration» «3983 231 156 3935»

Option «SwapAxess» «0»

Но у меня это программа тупила и почему то выдавала не верные значения типа таких:

  • Option «Calibration» «1419 1435 3010 3010»
  • Option «Calibration» «2705 2685 3014 2955»
  • Option «Calibration» «2708 2682 2945 3024»
  • Option «Calibration» «2708 2693 3004 2982»

А иногда она вообще не хотела воспринимать нажатия стилуса.

Методом тыка я подобрал более мене рабочую конфигурацию:

  • Option «Calibration» «3000 200 200 3000»

После этого утилита xinput-calibrator стала вдруг показывать вменяемые результаты, типа таких:

  • Option «Calibration» «3839 232 160 3823»
  • Option «Calibration» «3952 220 217 3926»

Что это было? Я не знаю, но пока разбирался с данной проблемой нашел интересную статью на Mysku.ru : » Сенсорный экран 3.5″. Запускаем OCTOPRINT на Orange PI » может кому поможет. Процитирую оттуда: «Пока разбирался со всеми этими настройками, нашел альтернативный способ калибровки тача. Все параметры можно указать при загрузке модуля ядра и не возиться с фалами /usr/share/X11/xorg.conf.d/»

modprobe ads7846_device model=7846 cs=0 gpio_pendown=1 keep_vref_on=1 swap_xy=1 pressure_max=255 x_plate_ohms=60 x_min=200 x_max=3900 y_min=200 y_max=3900 busnum=1

И в заключении о настройке калибровки, естественно для того чтобы параметры считались из файла » 99-calibration.conf» нужно перезагрузится.

sudo reboot

Все описанное выше можно почитать на Wiki вот тут: https://www.waveshare.com/wiki/3.5inch_RPi_LCD_ (A)

Видео

Выводы

Он тупит, тупит жутко! Пользоваться им для отображение информации в реальном режиме времени нельзя, можете использовать если нужно отображать статичную информация графики, цифры и так далее. При своей работе он нагружает процессор и соответственно чем меньше его производительность тем больше будет тормозить дисплей. В комментариях мне написали следующую информацию (может кому будет полезна) диагональ выше 1.8 inch (разрешение: 240х160) по SPI использовать затруднительно — очень большие тормоза, так например, дисплей диагональю 2.8 inch по SPI очень сильно «тормозит», очистка подобного дисплея на Ардуине занимает около 4 секунды, что делает затруднительным его использование.

На сегодня все, мои маленькие красноглазые друзья любители пингвинов!

Подписывайтесь на мой канал TehnoZet-2 , там много интересного о пингвинах и не только! Мы только развиваемся! Понравилась статья, хотите продолжения — ставьте лайк, жмите палец вверх.

Пользуйтесь рубрикатором по каналу, там все по разделам: » Страничка путеводитель по каналу TehnoZet-2 «

Статьи

  • Микрокомпьютер Raspberry Pi 3 B+, общие сведенья.
  • Обзор внешнего бокса для дисков 2.5″ Gembird EE2-U2S-41
  • Обзор внешнего корпуса бокса для HDD/SSD AGESTAR SUBCP1
  • LCD 3,5″, 800х480, сенсорный экран с выходом HDMI 480*800

Видео

  • LCD TFT 3,5″, 480×320, сенсорный дисплей с интерфейсом SPI (на Яндекс.Дзен,на Youtube)
  • Обзор дисплея LCD 3,5″, 800х480, HDMI, Touch от Spotpear (на Яндекс.Дзен,на Youtube)

Источник: dzen.ru

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

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

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

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

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

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

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

  • Raspberry Pi 3 Model B
  • 3,2″ сенсорный TFT-дисплей

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

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

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

  • подключаемые через DSI-интерфейс (15-контактный разъем для плоского шлейфа)
  • подключаемые через HDMI-разъем
  • подключаемые через GPIO
Еще по теме:  Переходник dvi HDMI своими руками схема

Большинство дисплеев с маленькой диагональю (до 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.

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

Автор статьи:
Дмитрий

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

Подпишись на обновления в Telegram

Уведомления о статьях. 0% рекламы.

Источник: dmitrysnotes.ru

Оцените статью
Добавить комментарий