Четыре способа вывести изображение с Raspberry Pi
Одноплатник Raspberry Pi дружит не только с компьютерными мониторами и телевизорами, но и с более экзотическими девайсами. Рассказываем, какие бывают способы вывести изображение с RPi на внешние устройства.
Способ №1: Порт HDMI
К Raspberry Pi можно подключить любой встраиваемый или портативный экран, оснащённый стандартным портом HDMI. Достаточно воткнуть кабель, и через секунду изображение появится на экране.
В большинстве случаев Linux сам выбирает оптимальный режим, но если понадобится изменить разрешение или частоту обновления экрана — заходите в файл /boot/config.txt , где хранятся детальные настройки вывода изображения. Например, чтобы установить разрешение 1024×600 с частотой 60 герц и отношением сторон 15:9, подойдёт такая конфигурация.
Первая пара настроек говорит о том, что мы хотим выбрать произвольный режим. А вот hdmi_cvt задаёт этот самый режим: ширину, высоту, частоту и отношение сторон (параметр 6 — это пропорция 15:9). На официальном сайте Raspberry Pi выложено подробное описание, какие параметры видео за что отвечают.
Некоторые HDMI-дисплеи оснащаются встроенным тачскрином, сигнал которого передаётся на RPi через отдельный USB-кабель и требует установки драйверов. Процесс несложный — смотрите инструкции с примерами на нашей Вики.
Обладателям Raspberry Pi 4 повезло: она поддерживает разрешения вплоть до 4K (2160p) при 60 Гц в режиме одного монитора. А если подключить к ней второй монитор, то сигнал делится напополам, и малина потянет до 2160p/30 Гц на обоих экранах. Не забудьте обзавестись кабелями Micro-HDMI.
Способ №2: Порты GPIO
Существуют дисплеи для Raspberry Pi в виде шилдов, которые надеваются на плату и общаются с ней по интерфейсу SPI. Они дешевле и мобильнее своих HDMI-собратьев.
Одноплатник здорово сочетается с компактным сенсорным ЖК-дисплеем и мини-клавиатурой: покидали всё в рюкзак — и вот у вас под рукой полноценный портативный компьютер на Linux.
Однако, помимо преимуществ у SPI-дисплеев есть и ряд технических ограничений:
- Дисплей требует обязательной установки драйвера.
- Скорости обновления по SPI не хватает для видео.
- Интерфейс SPI дополнительно нагружает CPU.
Используйте SPI-дисплей для пользовательских интерфейсов, которые по большей части статичны.
Способ №3: Удалённый доступ
А можно обойтись вовсе без дисплеев: достаточно один раз настроить удалённый рабочий стол, чтобы дистанционно подключаться к Raspberry Pi и транслировать изображение по сети. Этот способ пригодится, если плата смонтирована в труднодоступном месте и подключать лишние провода — совсем не вариант.
Как настроить удалённый доступ
- VNC Server входит в ОС Raspbian из коробки. Чтобы разрешить доступ, зайдите в настройки Raspberry Pi:
- Выберите пункт меню «Interfacing Options→VNC» и включите VNC Server кнопкой «Yes».
- Запустите VNC-сервер:
- Запишите IP-адрес и порт для внешнего доступа, которые отобразятся после запуска.
- В случае с Windows у вас уже есть средство для подключения к удалённому рабочему столу. Для других систем рекомендуем установить RealVNC Viewer.
- Запустите VNC-клиент и вбейте в адресной строке IP-адрес, который был выдан при запуске VNC-сервера.
- Укажите логин и пароль для входа в систему Raspberry Pi. По умолчанию это ‘pi’ и ‘raspberry’.
- В клиенте VNC появится рабочий стол. Готово!
Способ №4: Композитный видеовыход
Можете тряхнуть стариной и вспомнить такой олдскульный интерфейс, как композитное видео. Конечно, по качеству изображения он не сможет тягаться с цифровым HDMI, но и у «тюльпана» есть подходящее применение.
Если вы превратите свою Raspberry Pi 4 в ретро-консоль, кинескопный телевизор станет завершающим штрихом, чтобы полностью перенестись в эпоху пиксель-арта. Берите комбинированный кабель 3,5 мм с композитным выходом, чтобы вывести чересстрочное аналоговое изображение 480i с малинки на ЭЛТ-телевизор. Мы так и поступили, когда делали крутой аркадный автомат, который радует вас у входа в московский офис Амперки.
В итоге
Теперь вы точно не пропадёте, если понадобится вывести изображение с малинки куда угодно! Осталось только выбрать, какой вариант удобнее для ваших проектов на RPi.
Raspberry Pi LCD DSI Display Connector
The Raspberry Pi connector S2 is a display serial interface (DSI) for connecting a liquid crystal display (LCD) panel using a 15-pin ribbon cable. The mobile industry processor interface (MIPI) inside the Broadcom BCM2835 IC feeds graphics data directly to the display panel through this connector. This article looks at the connector pinout, and some of the display panels compatible with the port.
If you look at the BCM2835 Block Diagram, you will see that it has internal circuitry to drive a colour LCD display panel. The S2 connector provides a fast high-resolution display interface dedicated for the purposes of sending video data directly from the GPU to a compatible display.
DSI Connector
Here is an image showing the DSI connector on the Raspberry Pi 1 Model B. After seeing this connector, I realised that it was pointless to interface a colour LCD via the GPIO pins, because the performance will not be as good as the fast serial connection provided by this DSI port. However, it is great fun to interface those cool dot-matrix displays via the GPIO. I had a go with a couple and was very pleased with the results. You can get those liquid crystal displays from online shops, and in order to connect an LCD panel, three things are required; the connector pinout showing the electrical connections, a DSI compatible display, and a display driver for the GPU.
DSI Connector Pinout
Socket S2 Pin | Function |
1 | Ground |
2 | Data Lane 1 N |
3 | Data Lane 1 P |
4 | Ground |
5 | Clock N |
6 | Clock P |
7 | Ground |
8 | Data Lane 0 N |
9 | Data Lane 0 P |
10 | Ground |
11 | |
12 | |
13 | Ground |
14 | +3.3 V |
15 | +3.3 V |
The connector pinout is very simple and each connection consists of a pair of pins that carry the positive and negative parts of the signal, known as differential signalling. The voltage is usually in the order of 200 mV, which is extremely small, and therefore the term low voltage differential signalling (LVDS) reflects this. Pin 8 and pin 9 pairs form data lane 0, pin 2 and pin 3 form data lane 1, and finally pin 5 and pin 6 pairs are for the clock pulse. The data usually travels in one direction from the processor to the display panel, hence there is no provision for a resistive touch screen layer in this interface.
LCD Display
A typical modern display operates in both command mode and video mode. In command mode, the multimedia processor BCM2835 sends commands, which can either read or write to registers in the LCD controller IC. The processor can read the status and contents of various registers and write parameters to them. Therefore, command mode requires bidirectional communication and data lane 0, which is the first lane, is usually bidirectional, whilst data lane 1 is unidirectional (one way).
In video mode, the processor sends a stream of pixel data to the display controller in high speed to avoid flicker
Communication Protocol
In a dual lane system such as that on the Raspberry Pi, a stream of bytes divides between the lanes, therefore byte 0 goes through lane 0 and byte 1 through lane 1, alternating in this manner. After a little hacking, I could see that the data structure is in the form of packets, which starts and ends with transmission markers. There is a header in the packet, which contains the data type, the number of bytes sent, and the ECC checksum. Immediately following the header are the data bytes.
Finding a Panel
I decided to look for some display panels, however nearly all the modern LCD panels have four to eight data lanes due to higher resolutions that are required of them. I also had a look at some of the iPhone display panels; however, the ones I saw had four data lanes, and therefore could not be used.
Display panels with two data lanes were in mobile phones manufactured around 2008. They had a WVGA resolution of approximately 360-pixels × 640-pixels, so I decided to look at some old phones, and managed to find one panel that had a chance of working. Although the DSI connector pinout may change from one product to another, the MIPI communication protocols and electrical signals are a standard. If the next model of Raspberry Pi, perhaps Raspberry Pi 2, or Raspberry Pi 3, uses a similar Broadcom processor, then one still has a basis in MIPI to guess the pinouts.
Подключение TFT ЖК дисплея 3,5 дюйма к Raspberry Pi Zero W
Хотя плата Raspberry Pi Zero W имеет в своем составе HDMI выход, позволяющий подключать к ней полноценные мониторы, тем не менее, в условиях, когда пространство ограничено, возникает необходимость подключения к плате дисплеев меньших размеров. Поэтому в данной статье мы рассмотрим подключение к плате Raspberry Pi Zero W TFT ЖК дисплея с диагональю 3,5 дюйма. Данный дисплей легко подключается к плате и с него удобно управлять различными внешними устройствами (например, датчиками) подключенными к плате Raspberry Pi Zero W. Ранее на нашем сайте мы рассматривали подключение данного дисплея к плате Raspberry Pi.
Для удаленного управления платой Raspberry Pi Zero W и установки на нее необходимых драйверов для работы с TFT ЖК дисплеем мы будем использовать программное обеспечение MobaXterm, которое ранее мы рассматривали в статье про первоначальную настройку платы Raspberry Pi Zero W без использования монитора.
Необходимые компоненты
- Плата Raspberry Pi Zero W (купить на AliExpress).
- TFT ЖК дисплей диагональю 3,5 дюйма (купить на AliExpress).
Общие принципы работы TFT ЖК дисплея
Рассматриваемый в данной статье TFT ЖК дисплей имеет резистивный сенсорный экран диагональю 3,5 дюйма и совместим с любыми платами из семейства Raspberry Pi. Данный дисплей имеет разрешение 480×320 пикселов, цвет каждого его пиксела кодируется 16 битами. Дисплей легко размещается сверху платы Raspberry Pi Zero W и запитывается от ее контакта Vcc. Взаимодействие с дисплеем осуществляется с помощью интерфейса SPI. При подключенном данном дисплее к плате можно также дополнительно подключить и обычный монитор через разъем HDMI. Дисплей поддерживает подключение к плате Raspberry Pi Zero W по технологии «plug and play», что означает, что перезагрузка платы при его подключении не требуется. Максимальная частота интерфейса SPI у данного дисплея составляет 32 МГц, что позволяет воспроизводить на нем фильмы и играть в компьютерные игры.
TFT ЖК дисплей 3,5 дюйма содержит 26 контактов на своей обратной стороне, с помощью которых осуществляется его подключение к плате Raspberry Pi Zero W. С помощью данных контактов осуществляется взаимодействие по интерфейсу SPI между платой и дисплеем, а также подача на него питания с контактов платы 5V и 3.3V. Назначение контактов (распиновка) приведено в следующей таблице.
Номер контакта | Обозначение | Описание |
1, 17 | 3.3V | питание 3.3V |
2,4 | 5V | питание 5V |
3,5,7,8,10,12,13,15,16 | NC | Не подключается, используется для поддержки |
6,9,14,20,25 | GND | земля |
11 | TP_IRQ | Контакт прерывания по уровню логического нуля |
18 | LCD_RS | Контакт выбора регистра для контроллера дисплея |
19 | LCD_SI | Вход данных SPI интерфейса |
21 | TP_SO | Выход данных SPI интерфейса |
22 | RST | Сброс |
23 | LCD_SCK | Контакт синхронизации SPI интерфейса |
24 | LCD_CS | Контакт выбора чипа SPI интерфейса ЖК дисплея |
26 | TP_CS | Контакт выбора чипа SPI интерфейса сенсорного экрана |
Теперь рассмотрим подключение этого дисплея к нашей плате.
Подключение 3.5” TFT ЖК дисплея к плате Raspberry Pi Zero W
Подключить данный дисплей к плате Raspberry Pi Zero W достаточно просто. У платы Raspberry Pi Zero W 40 контактов, а у дисплея – 26, поэтому удостоверьтесь в том, что вы подключили эти контакты к плате правильно. Лента контактов типа «мама» достаточно плотно входит в контакты платы типа «папа». Для подключения дисплея необходимо выровнять эти контакты друг напротив друга и немного нажать на верхнюю часть TFT ЖК дисплея. Внешний вид подключенного к плате Raspberry Pi Zero W 3.5” TFT ЖК дисплея выглядит следующим образом.
Подготовка платы Raspberry Pi Zero W к работе с 3.5” TFT ЖК дисплеем
После того как вы подключите дисплей к плате Raspberry Pi Zero W и подадите на плату питание, вы увидите на дисплее пустой белый экран, что будет то, что на плату не установлены необходимые драйверы для работы с дисплеем. Для удаленного управления платой Raspberry Pi Zero W мы в данном проекте будем использовать программу MobaXterm, но вы также можете использовать программу PuTTY если вам более удобно с ней работать.
Предполагается, что на вашу плату Raspberry Pi Zero W уже установлена операционная система и она полностью готова к работе, если же нет – то можете прочитать статью на нашем сайте про первоначальную настройку данной платы без использования монитора. В данном проекте мы будем использовать программу MobXterm в режиме SSH для удаленного управления платой Raspberry Pi Zero W и доступа к ее окну терминала.
Для подготовки платы Raspberry Pi Zero W к работе с 3.5” TFT ЖК дисплеем выполните следующую последовательность шагов.
Шаг 1. В окне терминала платы введите следующую команду: