Raspberry pi 3 как подключить экран
Перейти к содержимому

Raspberry pi 3 как подключить экран

Как установить монитор 3.5 дюйма на Raspberry PI 3.

Эта инструкция посвящена тем, кто знает, что такое Raspberry PI 3 и как с ней работать, но не может найти рабочие код и драйвер для установки SPI TFT ЖК-экрана 3.5 дюймов с сенсорной панелью 320*480. Инструкция предполагает, что Raspberry подготовлена для подключения через Putty. Для этого на ней уже должна стоять система, настроено интернет-соединение и включен SSH.

Кстати, дешевле всего Малинку можно купить на Aliexpress по этой ссылке: Купить Raspberry PI 3. А 3.5 дюймовый монитор-тачскрин по этой: SPI TFT ЖК-экран 3.5.

Действие 1-е: устанавливаем монитор в слот, подключаем кабель питания к Raspberry, подаем питание.

Действие 2-е: через пару минут подключаемся к Raspberry PI 3 по командной строке Putty:

Примечание: в командную строку необходимо вписывать то, что отмечено зеленым и дополнительно подчеркнуто.

login as: pi ENTER
pi@192.168.0.1’s password: пароль (по умолчанию raspberry) ENTER
pi@raspberrypi:

$ sudo su ENTER
root@raspberrypi:/home/pi# cd /home ENTER
root@raspberrypi:/home# raspi-config ENTER
Загрузится меню настроек, включаем SPI
После сохранения настроек компьютер уйдет в перезагрузку.

Снова логинимся к Raspberry PI 3 через Putty:
login as: pi ENTER
pi@192.168.0.1’s password: пароль (по умолчанию raspberry) ENTER
pi@raspberrypi:

Примечание: Заранее скопированную ссылку можно вставить в строку нажатием правой кнопки мыши.

По окончании загрузки снова появится строка:
root@raspberrypi:/home#

Поглядим, действительно ли скачан файл:
root@raspberrypi:/home# ls ENTER
LCD-show-170309.tar.gz pi

Теперь распакуем его:
root@raspberrypi:/home# tar xvf LCD-show-170309.tar.gz ENTER

Посмотрим, что лежит в home после распаковки:
root@raspberrypi:/home# ls ENTER
LCD-show LCD-show-170309.tar.gz pi

Перейдем в директорию LCD-show:
root@raspberrypi:/home# cd LCD-show ENTER

Посмотрим, что в ней содержится:
root@raspberrypi:/home/LCD-show# ls ENTER
LCD32-show LCD35-show
LCD4-show и т.п.

Выберем папку, что соответствует нашему дисплею, т.е. LCD35-show, и исполним:
root@raspberrypi:/home/LCD-show# ./LCD35-show ENTER (обращаем внимание, что путь необходимо начинать с точки)

Putty выдаст сообщение о потере связи с Raspberry, а на дисплее появится изображение. После полной загрузки операционной системы заработает тачскрин.

5.0" TFT сенсорный дисплей MPI5008 для Raspberry Pi 3

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

  • Разрешение 800 х 480
  • Сенсорное управление
  • HDMI интерфейс для вывода информации
  • GPIO интерфейс для сенсорного управления
  • Регулируемая подсветка для снижения энергопотребления
  • Размер дисплея: 120×75 мм
  • Размер модуля: 121×78 мм

Распаковка

Дисплей упакован в картонную коробку.

Дисплей дополнительно проложен пенкой, над дисплеем DVD диск.
На DVD-диске находятся инструкции, драйвера и образы ОС с уже установленными драйверами на тачскрин(Raspbian, Ubuntu Mate и Kali Linux).

Под дисплеем находятся: «П»-образный HDMI адаптер, латунные стойки и стилус.
На дисплее наклеена транспортировочная пленка, на воздух под пленкой не обращайте внимания, моих рук дело.

Вся комплектация.

Размеры латунных стоек: диаметр 3мм, длина 19мм, длина резьбовой части составляет 3мм, резьба М2.

C обратной стороны платы расположена вся электроника и разъемы.

1. MicroUSB.
2. HDMI.
3. Выключатель подсветки.
4. Разъем 13х2.
5. Дублирующие контакты разъема 13х2.

MicroUSB предназначен только для питания, тачскрин работает через SPI посредством GPIO — разъем 13х2, большее количество пинов не задействованы и просто перекрыты, предполагаю что дублирующие контакты предназначены для этого.
Питать можно одним проводом MIcroUSB, отдельное питание для дисплея не требуется.

На моем экземпляре маркировка контроллера дисплея затерта, но в интернете есть фотографии с отчетливо видной маркировкой — Realtek RTD2660H. Популярный контроллер, ставится на «народных» универсальных скалерах.
Тачскрином рулит XPT2046.

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

Включение

При подаче питания загорается синий экран с сообщением об отсутствии сигнала.

Первым делом решил подключить к компьютеру под управлением Windows 10, что не вызвало никаких проблем, дисплей вывел изображение сразу.
Тачскрин не будет работать на устройствах отличных от Raspberry (про аналоги наподобие Orange Pi не знаю, руки не дошли проверить), т.к тач работает по SPI.


Информация из диспетчера устройств Windows.

Подключение к Raspberry Pi 3B+

Raspberry Pi держится крепко на дисплейном модуле за счет разъема 13х2(GPIO), латунной стойки и HDMI адаптера.


Но у так ого способа крепления есть свои минусы, между Raspberry Pi и дисплейным модулем остается минимальное расстояние, что негативно сказывается на теплоотводе, оставшегося места хватит для установки небольшого радиатора на процессор, но и сам контроллер дисплея греется, примерно до

30°C

Тут так же изображение выводится сразу, единственное что разрешение дисплея будет низким.
На фото уже настроенный конфиг, разрешение (800х480) автоматически выставляется при установке драйверов, о чем ниже по тексту.

Небольшой тест, инвертирование есть если смотреть слева-направо и сверху-вниз.





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

Я использую драйвер LCD Show.
Все команды выполняются в терминале по очереди.
Предполагается наличие интернета.

Драйвера встают без проблем на Raspbian, но на других системах возникают проблемы, даже на тех что основаны на Raspbian. Можно вручную прописать параметры в boot/config.txt, но с середины дисплея начинается смещение и в сантиметре от верхнего края мертвая зона.
Работа сенсора.
В работе тачскрина ничего интересного, он работает и все, тач резистивный, по ощущениям похож на тач от Nokia 5530 Xpress Music (у меня такая модель была, в количестве двух штук).

В данный момент у меня трудится в таком виде:
(Это пока что, рано или поздно он должен превратится в торрентокачалку, а свободное время пытаюсь понять границы возможностей :D)
Проект называется MagicMirror²

Заключение

Теперь понятно почему камрад Xylene так сильно гонится за качеством 5-8 дюймовых дисплеев.
Есть разные вариации подключения дисплеев для однопалатников:
1. Вывод изображения и связь с тачем по SPI.
2. Вывод изображения по HDMI и связь с тачем по SPI (как в данном случае).
3. Вывод изображения по HDMI и связь с тачем по USB.
У всех способов есть свои плюсы и минусы, в данном случае дисплей закреплен на гребенке GPIO и получается что минимум торчащих провод и одноплатник с дисплеем является одним целым, а разъем HDMI позволит подключить при необходимости любой источник сигнала.

Товар для написания обзора предоставлен магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Второй HDMI монитор к Raspberry Pi3 через DPI интерфейс и FPGA плату

На этом видео показаны: плата Raspberry Pi3, к ней, через разъем GPIO, подключена FPGA плата Марсоход2rpi (Cyclone IV), к которой подключен HDMI монитор. Второй монитор подключен через штатный разъем HDMI Raspberry Pi3. Все вместе работает, как система с двумя мониторами.

Дальше расскажу, как это реализовано.

На популярной плате Raspberry Pi3 есть разъем GPIO, через который можно подключать разные платы расширения: датчики, светодиоды, драйвера шаговых двигателей и многое другое. Конкретная функция каждого вывода на разъеме зависит от конфигурации портов. Конфигурация GPIO ALT2 позволяет переключить разъем в режим DPI интерфейса, Display Parallel Interface. Существуют платы расширения для подключения VGA мониторов, через DPI. Однако, во-первых, мониторы VGA уже не так распространены, как HDMI, а во-вторых, цифровой интерфейс все лучше аналогового. Тем более, что ЦАП на подобных VGA платах расширения обычно выполнен в виде R-2-R цепочек и часто не более 6 бит на цвет.

В режиме ALT2 пины разъема GPIO имеют следующее значение:

image

Я здесь раскрасил RGB выводы разъема соответственно в красный, зеленый и синий цвета. Другие важные сигналы это сигналы синхронизации развертки V-SYNC и H-SYNC, а так же CLK. Тактовая частота CLK это частота, с которой значения пикcелей выдаются на разъем, она зависит от выбранного видеорежима.

Для подключения цифрового HDMI монитора нужно захватить сигналы DPI интерфейса и преобразовать их в сигналы HDMI. Сделать это можно, например, с помощью какой либо FPGA платы. Как оказалось, плата Марсоход2rpi подходит для этих целей. По правде говоря, основной вариант подключения этой платы через специальный переходник выглядит вот так:

image

Эта плата служит для увеличения числа GPIO портов и для подключение большего числа периферийных устройств к raspberry. При этом, 4 сигнала GPIO при таком подключении используются под JTAG сигналы, так, что программа из распберри может загружать FPGA прошивку в ПЛИС. Из-за этого такое штатное подключение мне не подходит, выпадают 4 DPI сигнала. По счастью, дополнительные гребеночки на плате имеют совместимую с Raspberry распиновку. Так, что я могу развернуть плату на 90 градусов и все равно подключить ее к моей малинке:

Конечно, придется использовать внешний JTAG программатор, но это не проблема.

Небольшая проблема все же есть. Не каждый вывод FPGA может использоваться, как вход тактовой частоты. Есть только несколько dedicated pin, которые можно использовать для этих целей. Так и здесь получилось, что GPIO_0 сигнал CLK не попадает на ввод FPGA, который возможно использовать как вход тактовой частоты ПЛИС. Так что все таки пришлось кинуть один проводок на платку. Я соединяю GPIO_0 и сигнал KEY[1] платы:

image

Теперь расскажу немного про проект в ПЛИС. Основная сложность при формировании HDMI сигналов это очень высокие частоты. Если посмотреть на цоколевку разъема HDMI, то видно, что сигналы RGB теперь являются последовательными дифференциальными сигналами:

Использование дифференциального сигнала позволяет бороться с синфазными помехами на линии передачи. При этом, исходный восьмибитный код каждого сигнала цвета преобразуется в 10-ти битный TMDS (Transition-minimized differential signaling). Это специальный способ кодирования для удаления постоянной составляющей из сигнала и минимизации переключений сигналов в дифференциальной линии. Поскольку на один байт цвета теперь по последовательной линии передачи нужно передать 10 бит, то получается, что тактовая частота сериализатора должна быть в 10 раз выше, чем тактовая частота пикселей. Если взять к примеру видео режим 1280х720 60Гц, то частота пикселей у такого режима 74,25МГц. На сериализаторе должно быть 742,5МГц.

Обычные FPGA вообще-то на такое, к сожалению, не способны. Однако, по нашему счастью, в FPGA имеются встроенные выводы DDIO. Это такие выводы, которые уже как бы являются сериализаторами 2-к-1. То есть они могут выдавать последовательно два бита по фронту и спаду тактовой частоты. Значит в проекте FPGA можно использовать не 740МГц, а 370МГц, но нужно задейcтвовать выходные элементы DDIO в ПЛИС. Вот 370МГц уже вполне достижимая частота. К сожалению, режим 1280×720 это предел. Более высокого разрешения в нашей FPGA Cyclone IV установленной на плате Марсоход2rpi не достичь.

Итак, в проекте, входная частота пикселей CLK поступает на PLL, где умножается на 5. На этой частоте байты R, G, B, преобразуются в пары бит. Это делает TMDS энкодер. Исходный код на Verilog HDL выглядит вот так:

Потом выходные пары подаются на DDIO выход, который последовательно выдает однобитный сигнал по фронту и спаду.

Сам DDIO можно было бы описать таким Verilog кодом:

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

Возможно, все это выглядит немного мудрено, но работает.

Посмотреть весь исходный код, написанный на Verilog HDL, можно вот здесь, на github.

Скомпилированная прошивка для FPGA зашивается в EPCS чип, установленный на плате Марсоход2rpi. Таким образом, при подаче питания на плату FPGA, ПЛИС будет инициализироваться из флэш памяти и стартовать.

Теперь нужно немного рассказать о конфигурации самого Raspberry.

Я делаю эксперименты на Raspberry PI OS (32 bit) based on Debian Buster, Version:August 2020,
Release date:2020-08-20, Kernel version:5.4.

Нужно сделать две вещи:

  • отредактировать файл config.txt;
  • создать конфигурацию X сервера для работы с двумя мониторами.
  1. выключить использование i2c, i2s, spi;
  2. включить режим DPI с помощью оверлея dtoverlay=dpi24;
  3. настроить видеорежим 1280×720 60Гц, 24 бита на точку на DPI;
  4. указать необходимое количество фреймбуфферов 2 (max_framebuffers=2, только тогда появится второе устройство /dev/fb1)

После этого, нужно создать конфигурационный файл для X сервера для использования двух мониторов на двух фреймбуфферах /dev/fb0 и /dev/fb1:

Ну и, если еще не установлена, то нужно установить Xinerama. Тогда пространство рабочего стола будет полноценно расширено на два монитора, как показано выше на демо ролике.

Вот пожалуй и все. Теперь, и владельцы Raspberry Pi3 смогут пользоваться двумя мониторами.

Raspberry Pi: Подключение и настройка сенсорного экрана

В данной статье мы расскажем вам как подключить и настроить сенсорный экран для работы с Raspberry Pi. Для примера мы будем использовать пятидюймовый HDMI экран RPA05010R с разрешение 800×480 пикселей.

Внешний вид сенсорного экрана для Raspberry Pi

Данный экран можно подключить к любому компьютеру и использовать как небольшой внешний монитор, но если его поключить к Raspberry Pi и всё правильно настроить, то у него будет доступна функция Touchscreen.

Структура

Рассмотрим основные элементы на обратной стороне дисплея:

Разъемы и интерфейсы сенсорного экрана

Разъём MicroUSB для подключения питания, экрану необходимо 5В. Также вы можете подключить питание через разъём ④, подробное описание контактов разъёма приведено в таблице ниже.
HDMI разъём для подключения нешних устройств.
Переключатель "Backlight Power" позволяет включать и выключать подсветку экрана в случаях когда вам необходимо сэкономить заряд батареи.
Разъём 13*2 Pin: Позволяет подключить питание от Raspberry Pi, а также передавать Touchscreen сигналы от дисплея обратно к микрокомпьютеру.
Дополнительный интерфейс для подключения к контактам дисплея.

Распиновка экрана

Подключение

Дисплей можно подключить двумя основными способами. Вы можете просто подключить к нему HDMI кабель и питание. В этом случае дисплей будет работать как обычный монитор.

Либо вы можете подключить его к разъему Raspberry Pi в качестве платы расширения. В этом случае дисплей будет питаться от микрокомпьютера, а также у него будет доступна функция Touchscreen. Этот вариант подключения отлично подойдет для моделей Raspberry-Pi 3B/2B/B+.

Подключите дисплей к разъему микрокомпьютера как показано на картинке ниже. Крайние пины райзъёмов должны совпадать.

Подключаем экран к разъему Raspberry Pi

Также подключите дисплей к Raspberry Pi с помощью HDMI переходника, который идет в комплекте. Если вы правильно подключили пины в первом шаге, то HDMI разъёмы дисплея и микрокомпьютера должны быть ровно друг напротив друга.

Подключаем экран к микрокомпьютеру через HDMI переходник

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

1. Самое первое, что нам необходимо сделать для настройки — это изменить файл config.txt в корневой директории системы. Для этого вы можете вынуть SD карту из Raspberry Pi, вставить ее в ваш основной компьютер, внести изменения в текстовом редакторе и сохранить. Либо сделать это через командную строку не выключая ваш микрокомьютер, если вы можете подключиться к нему по SSH или если у вас подключен внешний монитор.

В файле config.txt вам необходимо добавить следующие строчки:

# — added by elecrow-pitft-setup —
hdmi_force_hotplug=1
max_usb_current=1
hdmi_drive=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
display_rotate=0
# — end elecrow-pitft-setup —

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

2. После того как система загрузится вы увидите рабочий стол, но изображение будет занимать только часть экрана. Для нормальной работы экрана вам необходимо установить драйвер через командную строку. Для этого запускаете терминал нажав на иконку в верхнем меню, либо подключаетесь к Raspberry Pi по SSH.

Не важно как вы добрались до командной строки микрокомпьютера, команда скачивания драйвера будет одинаковой. Вводите следующую команду и нажимайте Enter:

git clone https://github.com/Elecrow-keen/Elecrow-LCD5.git

После завершения скачивания драйвера вам необходимо его уставновить — вводите следующие команды по очереди и наживаете Enter после каждой:

cd Elecrow-LCD5
sudo ./Elecrow-LCD5

После перезагрузки изображени станет во весь экран как на фото:

Теперь изображение показывается на полный экран

Калибровка сенсорного экрана

Для того, чтобы у дисплея работали функции сенсорного экрана необходимо установить драйвер, для этого в терминале введите следующую команду:

sudo apt-get install -y xinput-calibrator

После уставноки драйвера необходимо откалибровать экран. Для этого откройте главное меню и перейдите в "Параметры -> Calibrate Touchscreen":

Запускаем программу калибровки сенсорного экрана

Запустится программа калибровки экрана. Вы должны следовать указаниям и несколько раз нажать стилусом на экран в нужных местах:

Калибровка сенсорного экрана

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

Настройка разрешения

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

Меню Настройкаи системы

В появившемся окне нажмите кнопку "Set Resolution":

Выбор разрешения экрана в Raspbian

В выпадающем меню необходимо выбрать разрешение 800×480 и нажать кнопку ОК! Теперь ваш сенсорный экран полностью готов к работе, можно переходить к созданию ваших проектов!

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

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