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

Подключение LCD 3.5" 320x480 (ILI9486+XPT2046) к RPi2, RPi3

Fri Nov 04, 2016 8:14 pm

Наконец дошли руки и я подключил LCD 3.5" 320x480 с тачскрином (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. Устанавливаем программу для калибровки тачскрина:

Code: Select all

sudo apt-get install -y xinput-calibrator
3. Копируем архив драйвера LCD-show-160823-touch-3.5inch-RPi2.tar.gz в домашнюю папку.
4. Распаковываем архив:

Code: Select all

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

Code: Select all

cd ./LCD-show
sudo chmod +x LCD35-show
sudo chmod +x LCD-hdmi
6. Для перехода на работу с LCD выполняем одну из команд в зависимости от требуемой ориентации (находимся в папке LCD-show):

Code: Select all

./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. Запускаем редактор для внесения своих калибровочных данных:

Code: Select all

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf
находим похожие четыре цифры и меняем их значения на полученные ранее. Жмём 'Ctrl-X' 'Y' и 'Enter' для сохранения изменений в файл (нажать именно так, т.к. на экране будет ни фига не видно :lol: ).

9. Перезагружаемся

Code: Select all

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

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

Code: Select all

cd ./LCD-show
./LCD-hdmi
В следующем посте будут примечания (для тех, кто хочет вникнуть).
Attachments
LCD-show-160823-touch-3.5inch-RPi3.tar.gz
Драйвер для RPi3
(3.96 KiB) Downloaded 1837 times
LCD-show-160823-touch-3.5inch-RPi2.tar.gz
Драйвер для RPi2
(3.97 KiB) Downloaded 493 times

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

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

Fri Nov 04, 2016 8:33 pm

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

Code: Select all

cd ./LCD-show
./LCD35-show 270
2. В режиме вывода на HDMI повторная попытка переключить на HDMI ничего не меняет (т.е. не страшно :shock: ).

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" 320x480. Файл 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" 320x480 (ILI9486+XPT2046) к RPi2, R

Fri Nov 04, 2016 8:47 pm

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

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

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

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

Sun Mar 12, 2017 10:44 pm

Здравствуйте!
Такая история. Поставил 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" 320x480 (ILI9486+XPT2046) к RPi2, R

Tue May 16, 2017 6:55 pm

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

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

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

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

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

Sat Jul 01, 2017 7:04 am

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

Автор, можешь обратить внимание? Ты единственный шанс подружить малинку и этот экран ;)

hommar
Posts: 172
Joined: Sat Mar 25, 2017 1:55 pm
Location: Russia, Yekaterinburg

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

Mon Jul 03, 2017 4:29 pm

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

Anton Khaenok
Posts: 3
Joined: Mon Jul 03, 2017 1:49 pm

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

Sun Jul 16, 2017 6:50 pm

Привет всем!
Подключить экран WAVESHARE 3,5 LCD (A) получилось.
Ура!

Теперь хочется сделать так, чтобы одновременно работали как HDMI-монитор, так и экран на GPIO.

Нашел следующий примеры:
- https://www.pi4iot.com/doku.php?id=how_to:dual_screen
- viewtopic.php?p=661085#p661085

Но повторить это не получается.

Дело в том, что в примерах советуют модифицировать файл “/etc/X11/xorg.conf.d/99-fbdev.conf”.
А в моей 2017-06-21-raspbian-jessie нет такой папки!
Установил X11 (если правильно понял что сделал )) ) # apt-get install xserver-xorg-video-fbdev
Сделал папку и файл “/etc/X11/xorg.conf.d/99-fbdev.conf”.
Скопировал код из источника.
Но все равно два экрана одновременно не работают )

Я не разбираюсь в Linux (да и в Виндовс я простой юзер). Не понимаю пока, что вообще делаю - просто делаю все по инструкциям.

Может ли кто-либо объяснить что это за “/etc/X11/xorg.conf.d/99-fbdev.conf”.
Для чего он?
Может в новой Джесси есть аналог этого файла?

Anton Khaenok
Posts: 3
Joined: Mon Jul 03, 2017 1:49 pm

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

Mon Jul 17, 2017 6:48 am

Ого! С утра на свежую голову нашел вот это:
https://wiki.debian.org/Xorg

И там есть вопрос "What if I do not have an xorg config file?"/"Что делать если у меня нет xorg config file?"

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

shinji2009
Posts: 26
Joined: Thu Jan 16, 2014 12:21 pm

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

Mon Jul 17, 2017 12:33 pm

привет. может кто-нибудь помочь с экранчиком? я нуб viewtopic.php?f=91&t=188434&p=1187377#p1187377

Return to “Русский”