Общие сведения
В этой статье мы подключим Цветной графический дисплей 2.8 к Raspberry Pi. Руководствуясь этой же статьёй, можно подключить к Raspberry цветной графический дисплей 2.8 с TouchScreen, но для работы TouchScreen необходимы аналоговые входы, которых у Raspberry нет, так что он будет работать без TouchScreen. В будущем мы рассмотрим возможность подключения TouchScreen к аналоговым входам Trema+Expander Hat и эмулирования таким образом манипулятора мыши через I2C.
Словарик
cd (change directory) - команда смены директории
mkdir (make directory) - программа создания директории
make - программа поддержки, обновления и восстановления групп программ
nano - простой консольный текстовый редактор, рассчитанный на новичков в мире GNU/Linux
скейлинг - масштабирование картинки кадрового буфера
Видео
Редактируется...
Нам понадобится
- Цветной графический дисплей 2.8
- Trema+Expander Hat
- Провода Мама — Мама
- Raspberry Pi
- Периферия и питание для Raspberry
- Подключение к интернету для Raspberry для скачивания репозитория драйвера.
Подключение:
Для удобства подключения мы воспользуемся Trema+Expander Hat
Выводы дисплея | Выводы Expander Hat |
---|---|
GND | GND |
VCC | 5V |
D/C | 12 |
RST | 14 |
CS | 8 |
SCK | 11 |
MOSI | 10 |
LED | 13 |
MISO | 9 |
Подключим модуль проводами «Мама - Мама» к Trema+Expander Hat
Установка драйвера с Github
Перед установкой драйвера необходимо настроить Raspberry Pi. Если вы настраиваете Raspberry не для работы с Retropie, сделать это можно руководствуясь этой статьёй
Мы настроили драйвер для работы с Цветным графическим дисплеем 2.8, скачать его можно с нашего Github. После скачивания необходимо перейти в директорию build и издать команду в терминале make -j
. Ниже мы рассмотрим этот процесс подробнее.
Скачаем драйвер с Github
Откроем эмулятор терминала в верхней панели графической среды Raspberry.
Создадим директорию для хранения будущих Github проектов командой mkdir
(make directory - создать директорию):
mkdir Github
Перейдём в директорию командой cd
(change directory - сменить директорию):
cd Github
Склонируем драйвер из репозитория (необходимо подключение к интернету):
git clone https://github.com/tremaru-file/fbcp-ili9341.git
Отредактируем config.txt
В файле /boot/config.txt
должна быть расскоментирована строка hdmi_force_hotplug=1
, а так же должны отсутствовать строки драйверов других TFT дисплеев (dtoverlay=pitft28r, dtoverlay=waveshare32b, dtoverlay=flexfb)
Не выходя из эмулятора терминала отредактируем файл config.txt:
sudo nano /boot/config.txt
Найдём строку #hdmi_force_hotplug=1
и удалим октоторп #
в начале строки. Нажмём ctrl+x для выхода и ответим y
на вопрос о сохранении файла, затем нажмём клавишу enter
.
Соберём драйвер из исходного кода
Не выходя из программы эмулятора терминала перейдём в директорию build:
cd fbcp-ili9341/build
В этой директории находится запускаемый файл оболочки build.sh. Если, по какой-либо причине драйвер не работает или работает неправильно, нужно будет изменить содержимое этого файла. Подробнее в разделе "Устранение неполадок"
Соберём драйвер, издав команду make -j
:
make -j
После сборки можно проверить работу драйвера, запустив его от имени root пользователя:
sudo ./fbcp-ili9241
Запуск при старте системы
Для того, чтобы не приходилось каждый раз запускать драйвер вручную, добавим строчку в файл /etc/rc.local
.
Откроем его при помощи консольного редактора nano
:
sudo nano /etc/rc.local
Файл будет выглядеть следующим образом:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi exit 0
Добавим в него стоку sudo /home/pi/Github/fbcp-ili9341/build/fbcp-ili9341 &
Файл будет выглядеть следующим образом:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo /home/pi/Github/fbcp-ili9341/build/fbcp-ili9341 & exit 0
Нажмём на клавиатуре ctrl+x, программа задаст вопрос о сохранении файла. Ответим утвердительно, нажав клавишу y
(Y) и затем клавишу enter
После этих манипуляций драйвер должен запускаться при запуске системы.
Смена разрешения
Для улучшения отображения текста на дисплее необходимо сменить системное разрешение экрана. Драйвер делает скейлинг картинки с любого разрешения. Теоретически можно поставить нативное разрешение TFT дисплея в 320x240 точек как системное, но при таких установках не будет выводиться картинка через hdmi выход (hdmi не поддерживает такое низкое разрешение). Мы решили остановиться на разрешении в 640x480. При таких настройках остаётся возможность подключить hdmi монитор (например, для устранения неполадок) и картинка выглядит приемлемо на TFT дисплее. Если же вы подключаетесь к Raspberry через ssh, то можете смело проигнорировать данный раздел и добавить следующие настройки в /boot/config.txt:
hdmi_group=2
hdmi_mode=87
hdmi_cvt=320 240 60 1 0 0 0
hdmi_force_hotplug=1
Для смены разрешения, не выходя из эмулятора терминала запустим raspi-config
sudo raspi-config
Откроется окно установок raspi-config:
Выбираем Advanced Options и нажимаем клавишуenter
Откроется окно Advanced Options:
Выбираем Resolution и нажимаем enter
В окне Resolution выбираем DMT Mode 4 640x480 60Hz 4:3
Нажимаем enter
Программа вернётся в главное окно:
Нажимаем стрелку курсора вправо на клавиатуре, затем enter
На вопрос о перезагрузке отвечаем утвердительно:
После перезагрузки будет установлено новое разрешение.
Устранение неполадок
Дисплей не включается.
- Проверьте подключение проводов и питания, смотрите пункт 2.
- Драйвер работает напрямую с процессором, шина SPI должна быть выключена в
raspi-config
- Убедитесь, что строка
hdmi_force_hotplug=1
в/boot/config.txt
не закомментирована.
Дисплей включается, но картинка статична или картинка только на пол экрана или картинка пропадает через несколько секунд после включения.
- Дисплей работает по шине SPI. Скорость шины зависит от частоты ядра процессора, и может так случиться что она окажется выше, чем пропускная способность чипсета дисплея. В этом случае дисплей будет работать нестабильно или не будет работать вовсе. Скорость SPI устанавливается частотой ядра (устанавливается в файле /boot/config.txt) параметром
core_freq=
и делителем, который можно установить в опциях перед компиляцией. Мы подобрали оптимальный делитель для Raspberry Pi 3 B и Raspberry Pi 3 A+, который равен 12. Если Ваш дисплей не работает, попробуйте установить больший делитель (должен быть чётным числом), например 14 или 16. Для этого необходимо:
- Дисплей работает по шине SPI. Скорость шины зависит от частоты ядра процессора, и может так случиться что она окажется выше, чем пропускная способность чипсета дисплея. В этом случае дисплей будет работать нестабильно или не будет работать вовсе. Скорость SPI устанавливается частотой ядра (устанавливается в файле /boot/config.txt) параметром
- В директории build удалить файл
CMakeCache.txt
иfbcp-ili9341
rm CMakeCache.txt; rm fbcp-ili9341
- Установить
cmake
:
sudo apt install cmake
- Поменять значение делителя в файле
build.sh
. Опция-DSPI_BUS_CLOCK_DIVISOR=
:
nano build.sh
Файл выглядит следующим образом:
#!/bin/bash cmake -DILI9341=ON\ -DGPIO_TFT_DATA_CONTROL=12\ -DGPIO_TFT_BACKLIGHT=13\ -DGPIO_TFT_RESET_PIN=14\ -DSPI_BUS_CLOCK_DIVISOR=12\ -DSTATISTICS=0 -DBACKLIGHT_CONTROL=ON ..\ && make -j
Меняем значение DSPI_BUS_CLOCK_DIVISOR=
:
#!/bin/bash cmake -DILI9341=ON\ -DGPIO_TFT_DATA_CONTROL=12\ -DGPIO_TFT_BACKLIGHT=13\ -DGPIO_TFT_RESET_PIN=14\ -DSPI_BUS_CLOCK_DIVISOR=14\ -DSTATISTICS=0 -DBACKLIGHT_CONTROL=ON ..\ && make -j
Обратите внимание на обратный слэш \
после числа. Убедитесь, что он на месте.
Нажимаем ctrl+x для выхода, отвечаем утвердительно при вопросе о сохранении файла.
- Запустить
build.sh
:
Вводим в командной строке (точка, слэш, название сценария) и нажимаем клавишу enter
./build.sh
Для проверки запускаем драйвер.
sudo ./fbcp-ili9341
Обсуждение