Устанавливаем домашний медиа центр Kodi на Raspbery Pi 4 в корпусе Flirc!
Автор Александр дата 01.12.2019
ОСТОРОЖНО: Февраль 2020 года — Google полностью блокирует работу Yotube на Kodi.
А вот например телевизор старый, в смысле не Smart, и как к нему Youtube(см дисклаймер) прикрутить и видеопроигрыватель всего? Для этого конечно подойдет любой мини компутер, у меня справлялся Raspberry Pi 3B на RetroPi с пассивным охлаждением, но решил из него окончательно сделать дэнди — а для видео проигрывателя не поскупился и выбрал самый шикарный вариант!
ДИСКЛАЙМЕР по Yotube add-on for Kodi: Ну Yotube на Kodi такой свооеобразный, ни как на smartTV, сразу все странности описываю, сами решайте нужно оно вам или нет!
— Официального плагина Youtube для Kodi от Google нет, как и для фильмов
— Показывать в хорошем качестве его надо еще суметь заставить
— Быстро блокируется, пишет что квота(какая еще квота. ) закончилась. Надо обманывать Google регестрироваться как девелоперСмарт ТВ на Raspberry PI4 Установка Android TV
— Неумеет показывать рекламу
— Не любит когда много кнопок нажимают например перемотать и выйти — Kodi висит и перезагружается
Заказал на Amazon вот такой комплект CanaKit Raspberry Pi 4 Basic Kit (2GB RAM) , удивительно но по цене все равно дешевле оказалось чем покупать в офлайне(5000RUR без БП и доставки). Набор стоит 62.99$ доставка 19.23$ в руки курьером!
Блок питания с американской вилкой, совсем об этом не подумал! Неофициальный, но на 3,5А!
Raspberry Pi 4 брал на 2Gb, потому 4Gb ну не за чем!
Больше RAM, быстрей CPU, USB 3 больше ничего нового, пора бы уже eMMC ставить!
Корпус Flirc заказывал на сайте flirc.tv/more/kodi-edition-raspberry-pi-4-case корпус стоил 15.95$ доставка 13.54$, но доставили только до Почта России, на Amazon этот корпус тоже есть, и доставка видимо будет по адресу получателя.
Видео сборки
Корпус очень хороший, метал, верхняя крышка мягкий пластик, сразу собирает пыль, хехехе что его ждет за телевизорм уффф лушче даже не думать!
Пультом, клавиатурой и мышкой будет вот такое у меня:
Качаю образ Noobs для Raspberry отсюда www.raspberrypi.org/downloads/noobs/ в нем есть LibreELEC который есть Kodi!
С малинкой, хорошо что, есть много инструкций — простых, красивых, детских! projects.raspberrypi.org/en/projects/raspberry-pi-setting-up С образом Noobs все проше простого. Форматируем SD карту, в какой форма не говорят, оставляю ext4… и нет не работает дальше, нужно форматировать в FAT32 в официальной детской инструкции об этом не пишут, конечно у всех же Windows!
И просто туда копируем то что извлекли из скаченного архива, ни каких тут image writer’ов! Подключаем питание к малинке и на этот раз все грузится, в корпусе Flirc хорошо видны лампочки Raspberry! Грузится вот такой экран (не совсем такой это для Raspberry 2)
В списке надо выбрать только строку с LibreELEC. Кстати я загрузился с вставленным usb приемником беспроводной клавиатуры в USB2 — не работала, переставил тут же в USB3 — заработала!
Устанавливается и бац появляется Kodi
В установочном окне поменял пароль от SSH и выключил SAMBA! Делал скриншоты нажимая на клаве [Fn] + [PrtsSc F7]. Чтобы их выташить подключился по SSH, думал это окажется обычный Linux, нет это во всем урезанный Linux.
Пытался поставить MC вот что выдало
There is no working ‘apt-get’. ‘apt-get’ is a command to install, update and remove software which is stored in a non local repo. ‘apt-get’ does nothing then connecting to such repo, downloads the software, unpacks the software, updates a big local database with all filepaths and other informations about the installed software or removes or updates installed Software. With LibreELEC it is not possible to change the system for security and stability reasons so even ‘apt-get’ would not be able to do this. We also dont have and want to maintain such a repo for various other great reasons. Also Ubuntu or Debian packages are often outdated and not compatible with LibreELEC TIP: use Kodi’s addon browser to enhance your LibreELEC system
Хочешь чего установить, через меню LibreELEC на телеке, если это есть! Немного разочарован… хотел тесты погонять так-то…
Ставим плагин Youtube на Kodi
Идем в раздел Add-ons / Install from repositiry тут заходим в репозимторию Kodi add-on repository
Находим в папке Video add-ons плагин Youtube жмем на него и ставим
Уже можно запускать Youtube и видеть что качество выбирается ниже плинтуса.
Заставляем плагин Youtube на Kodi работать в 1080p (HD)
Для этого из другого репозитория надо установить InputStream Adaptive плагин.
Идем в репозиторий LibreELEC Add-ons
И он не работает! Оказывается в официльном образе с сайта малинки идет старый LibreELEC версии 9.1.501, и это не было бы так страшно если бы разработчики LibreELEC не отрубили уже репозиторий для него… Надо обновить только что установленны LibreELEC
Заходим на малинку по консоли и исполняем
cd ./update
wget http://releases.libreelec.tv/LibreELEC-RPi4.arm-9.2.0.img.gz
reboot
Какая сейчас последняя версия для Raspberry Pi 4 можно видеть тут libreelec.tv/raspberry-pi-4/ ссылку от туда надо и подставлять в wget
Ок теперь у нас новая версия, и репозитория работает!
НА ВСЯКИЙ СЛУЧАЙ: После обновления удалите и установите заново плагин Yotube
Идем вот сюда в репозиторий VideoPlayer InputStream
И устанавливаем InputStream Adaptive плагин
Делаем следующие настройки в плагине Yotube для этого надо его выбрать в Add-ons и нажать букву C на клавиатуре
Тут каждый по совему делает, у меня вот такие сработали.
Запускаю клип Dimitri Vegas Sebastian Yatra featuring Camilo pid=2299960#pid2299960
…и вот тут их вводим
Заходим со своей учеткой в Yotube плагин
Полезная вещь, например для караоке, насабирать себе плейлист с нормальным караоке и петь.
Нажимаем вот тут (этот ключ пропадет когда войдем)
И делаем что просит Kodi на экране. На други устройстве, где вы авторизованы под своей гугле учеткой, надо пройти по адресу google.com/device и ввести код который показывает Yotube Kodi, код надо вводить два раза, после первого раза Kodu молча его меняет на экране и надо по новой все повторят, на второй код гугле ругается, но надо его силой заставить принять!
Появляется много опций после авторизации
Плавность меню Kodi и нагрев
Была совсем хреновая но в настройках
Поднял рефреш рейт экрана до 60, по-умолчанию 50, это не походит моему телевизору
Малинка в Flirc Kodi корпусе всегда горячая, так что ставлю тайм аут экрана, это не влияет, по ошушениям, на нагев, но пусть будет!
Прошивка на малинке старая, говорят сентябрская прошивка похолоднее!
Попробую нагреть Kodi, захожу в консоль и делаю
mkdir /storage/scripts
cd ./scripts
vi CPUt.sh
и вставляю
#!/bin/bash time=`/bin/date +%Y».»%m».»%d»-«%H»:»%M» «` temp=`/bin/cat /sys/class/thermal/thermal_zone0/temp` load=`/bin/cat /proc/loadavg | /usr/bin/awk »` echo «$ $ $» >> /storage/scripts/CPUtemp_data.log
и в крон
crontab -e
вствляю
* * * * * /usr/bin/sh /storage/scripts/CPUt.sh
Теперь каждую минуту в файл /storage/scripts/CPUtemp_data.log пишится температура процессора.
Запускаю один из видео 4k вот это
Kodi его проигрывает как 1080p и делает это плохо, нехватает плавности смены кадров! Иногда, видео обозначенные как 4k 60fps проигрывает еще хуже, к рывкам кадров добавляется их пропадание, каждые 15 секунд появляется меню перемотки и прыгает на секунду вперед. Вот на этом так было https://www.youtube.com/watch?v=R3AKlscrjmQ
Меряю температуру до прошивки
И после
Чтобы обновить прошивку надо отметить тут галочку и перезагрузится. Сразу две я не отмечал, по очереди делал!
ВЫВОД: Да, новая прошивка холоднее. В покое на 6 градуса под нагрузкой на 4-5. Все это заметно на Yotube, я запускал еще самый большой mkv, что нашел, 1080p 3650bps, проигрывал его по сети — можно сказать что малинка его даже не замечала — градусы прыгали 1-2 туда обратно!
Сетевые хранилиша
Можно подключить, немного сложновато, просто надо вводить полностью адресс, и ничего само не обнаруживает, вот тут
А вот тут просто ввожу, имя и адрес к папке вида smb://192.168.1.1/fileshare
На сервере у меня Samba с таким smb4.conf
[global] dos charset = ISO8859-1 unix charset = ISO8859-1 display charset = ISO8859-1 map to guest = Bad User [Fileshare] path = /usr/fileshare read only = no guest ok = yes
Переключение клавиатуры на другой язык
Нет, LibreELEC этого неумеет и учится не хочет! Только экранная клавиатура Kodi но там с физической клавиатуры только английский всегда вводится, русски буквы надо выбирать стрелками… русскую раскладу можно добавить тут ЙЦУКЕН!
Ну все можно пользоваться!
Источник: itcooky.com
Raspberry PI и цифровое телевидение dvb-t2
Для просмотра передач цифрового телевидения на Raspberry pi нужно обзавестись тюнером, работающий по стандарту dvb-t2 и решить 3 задачи:
- Убедиться, что Raspberry видит тюнер
- Убедиться, что тюнер видит телевышку
- Убедиться, что правильно настроены программы для приема, показа и записи телепередач
Все это было реализовано на Raspberry Pi 3 под управлением Raspbian Stretch (Version:November 2018, Release date:2018-11-13, Kernel version:4.14)
А теперь подробнее. (Букв будет много, но результат того стоит ☺)
Задача 1. Убедиться, что Raspberry видит тюнер
Для приема передач использовался тюнер AstroMeta Digital TV Dongle , который можно найти и купить на Aliexpress, введя в поиск строку «DVB-T2 DVB-C FM DAB USB tv stick». Внутренности этого тюнера можно посмотреть по ссылкеhttps://www.ixbt.com/monitor/astrometa-digital-tv-dongle.shtml
После подключения тюнера к USB разъему нужно выйти в терминал и выполнить команду $ lsusb | grep HanfTek
Если не экране появится строка, похожая на такую Bus 001 Device 007: ID 15f4:0131 HanfTek значит Raspberry видит тюнер на аппаратном уровне. В противном случае надо разбираться с плохими контактами, сгоревшими портами и плохим электропитанием.
Если тюнер виден на аппаратном уровне, можно продолжить иввести команду $ sudo dmesg -t | grep dvb
Появление таких строк в выводе программы потребует дополнительных действий.
[ 31.201602] mn88473 4-0018: Direct firmware load for dvb-demod-mn88473-01.fw failed with error -2 [ 31.201653] mn88473 4-0018: firmare file ‘dvb-demod-mn88473-01.fw’ not found
Это сообщение означает, что не найден файл dvb-demod-mn88473-01.fw , необходимый для работы тюнера. Файл нужно найти в интернете и положить его в папку /lib/firmware/ .
Сделать это можно, выполнив следующие команды:
$ cd /lib/firmware/ $ sudo wget http://palosaari.fi/linux/v4l-dvb/firmware/MN88473/01/latest/dvb-demod-mn88473-01.fw или $ cd /lib/firmware/ $ sudo wget https://github.com/OpenELEC/dvb-firmware/raw/master/firmware/dvb-demod-mn88473-01.fw
После этого нужно перегрузиться и убедиться в нормальной работе тюнера.
$ sudo dmesg -t | grep dvb
Raspberry видит тюнер на программном уровне, если на экране будут такие строки:
usb 1-1.3: Product: dvbt2 usb 1-1.3: Manufacturer: astrometadvbt2 usb 1-1.3: dvb_usb_v2: found a ‘Astrometa DVB-T2’ in warm state usb 1-1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer usb 1-1.3: dvb_usb_v2: schedule remote query interval to 200 msecs input: MCE IR Keyboard/Mouse (dvb_usb_rtl28xxu) as /devices/virtual/input/input1 rc rc0: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0 usb 1-1.3: dvb_usb_v2: ‘Astrometa DVB-T2’ successfully initialized and connected usbcore: registered new interface driver dvb_usb_rtl28xxu
Ввод команды $ ls /dev/dvb/ покажет номер адаптера «adapter0», соответствующего подключенному тюнеру, а команда $ ls /dev/dvb/ adapter0 покажет название интерфейсов, которые поддерживает этот адаптер 0 demux0 dvr0 frontend0 frontend1 net0
Для дальнейших настроек установите два пакета
$ apt-get install dvb-tools dtv-scan-tables
Можно посмотреть, что такое frontend0 и frontend1 у адаптера 0. $ dvb-fe-tool -a 0 -f 0 Вывод программы однозначно показывает, что frontend0 – это интерфейс для приема сигнала в формате DVB-T. $ dvb-fe-tool -a 0 -f 1 Глядя на вывод программы, убеждаемся, что frontend1 – это интерфейс для приема сигнала в формате DVB-T2 со всеми необходимыми возможностями и именно этот интерфейс будет использоваться для дальнейших настроек.
Замечу, что вместе с работающим тюнером у Raspberry pi появился инфракрасный датчик, который отлично работает под lirc, но это в данной публикации рассматриваться не будет.
Задача 2. Убедиться, что тюнер видит телевышку
На сайте http://карта.ртрс.рф надо найти точку, в которой будут расположены тюнер и Raspberry. Щелкнув мышкой по этой точке можно увидеть параметры ближайших телевышек, с которых в дальнейшем будет приниматься телетрансляция. Для моего случая параметры такие:
Расстояние: 10,13 км Направление: 339 Пакет телеканалов РТРС-1 — ТВК 30 (546 МГц) Пакет телеканалов РТРС-2 — ТВК 24 (498 МГц)
Расстояние и направление нужно для выбора антенны и ее ориентации при размещении.Частоты потребуются и при выборе антенны, и при настройки тюнера.
У меня штатная антенна из комплекта тюнера не заработала при удаленности от вышки на 10 км и пришлось рассчитывать и делать антенну типа «Двойной квадрат Харченко».
Расчет делался по средней длине волны первого и второго мультиплекса. Кстати, третий мультиплекс на ТВК 34 (578 МГц) так же отлично принимается из-за широкополосности этой антенны.
Скорость света = 299,792458 км/сек Средняя частота 1 и 2 мультиплексов = (546 + 498) / 2 = 522 Мгц Рабочая длина волны антенны = 299,792458 / 522 = 57,43 см Сторона квадрата антенны равна четверти длины волны, т.е. 57,43 / 4 = 14,36 см.
Взявши медный провод длиной 115 см и диаметром 2,5 мм я сделал фигуру, похожую на восьмерку из двух квадратов со стороной 144 мм, запаяв стык в талии восьмерки.
Зазор в талии восьмерки оставил равным 10 мм, припаяв экран коаксиала к одной стороне, а центральную жилу — к другой стороне талии. Место пайки поместил в пластиковую крышку от молока и залил пластиком, сохраняя зазор в 10 мм. Длина коаксиала до тюнера примерно 80 см. Сам тюнер включил в метровый USB удлинитель, рассчитанный на скорости USB2.
Антенну разместил вертикально (т.е. как восьмерку), т.к. поляризация в Москве горизонтальная. Для приема сигнала с вертикальной поляризацией антенну надо размещать как восьмерку, лежащую на боку. Ориентировал антенну по компасу плоскостью на телевышку (в моем случае на 399 градусов).
Антенна готова и можно приниматься за сканирование эфира.
Таблицы сканирования расположены в папке /usr/share/dvb/dvb-t/, но нужный мне город отсутствует. Там есть таблица ru-all, которая рассчитана на сканирование всех частот, но она не учитывает используемый в Москве Multiple PLP — режим передачи нескольких каналов физического уровня внутри одного транспортного потока (мультиплекса).
Для Москвы реальные трансляции такие:
Мультиплекс 1 — 546 Mhz (plp 0, 1, 2) Мультиплекс 2 — 498 Mhz (plp 0) Мультиплекс 3 — 578 Mhz (plp 0)
И соответствующая таблица сканирования выглядит так:
[MULTIPLEX 1] FREQUENCY = 546000000 MODULATION = QAM/256 BANDWIDTH_HZ = 8000000 INVERSION = AUTO CODE_RATE_HP = AUTO CODE_RATE_LP = AUTO GUARD_INTERVAL = AUTO TRANSMISSION_MODE = AUTO HIERARCHY = NONE STREAM_ID = 0 DELIVERY_SYSTEM = DVBT2 [MULTIPLEX 1-1] FREQUENCY = 546000000 MODULATION = QAM/256 BANDWIDTH_HZ = 8000000 INVERSION = AUTO CODE_RATE_HP = AUTO CODE_RATE_LP = AUTO GUARD_INTERVAL = AUTO TRANSMISSION_MODE = AUTO HIERARCHY = NONE STREAM_ID = 1 DELIVERY_SYSTEM = DVBT2 [MULTIPLEX 1-2] FREQUENCY = 546000000 MODULATION = QAM/256 BANDWIDTH_HZ = 8000000 INVERSION = AUTO CODE_RATE_HP = AUTO CODE_RATE_LP = AUTO GUARD_INTERVAL = AUTO TRANSMISSION_MODE = AUTO HIERARCHY = NONE STREAM_ID = 2 DELIVERY_SYSTEM = DVBT2 [MULTIPLEX 2] FREQUENCY = 498000000 MODULATION = QAM/256 BANDWIDTH_HZ = 8000000 INVERSION = AUTO CODE_RATE_HP = AUTO CODE_RATE_LP = AUTO GUARD_INTERVAL = AUTO TRANSMISSION_MODE = AUTO HIERARCHY = NONE STREAM_ID = 0 DELIVERY_SYSTEM = DVBT2 [MULTIPLEX 3] FREQUENCY = 578000000 MODULATION = QAM/AUTO BANDWIDTH_HZ = 8000000 INVERSION = AUTO CODE_RATE_HP = AUTO CODE_RATE_LP = AUTO GUARD_INTERVAL = AUTO TRANSMISSION_MODE = AUTO HIERARCHY = NONE STREAM_ID = 0 DELIVERY_SYSTEM = DVBT2
Подготовить таблицу для своего города очень просто.В квадратных скобках указывается произвольное название транспортного потока.
FREQUENCY = частота вещания потока в Гц
MODULATION = вид модуляции. Если не знаете точно, то ставьте QAM/AUTO
STREAM_ID = это тот самый номер канала физического уровня внутри транспортного канала с заданной частотой.
Сохраните таблицу в папке /usr/share/dvb/dvb-t/ под именем «ru-название города». (В моем случае /usr/share/dvb/dvb-t/ru-Moscow). Далее нужно перейти в домашнюю папку и можно сканировать эфир программой dvbv5-scan, указав в параметрах номер адаптера, номер frontend и таблицу сканируемых частот.
В моем случае это делается так: $ cd ~ $ dvbv5-scan -a 0 -f 1 /usr/share/dvb/dvb-t/ru-Moscow
В домашней папке появится файл dvb_channel.conf, который можно посмотреть командой «less dvb_channel.conf».Если в нем есть названия каналов с частотами, модуляциями и т.д., по тюнер видит телевышку и можно настраивать программы для просмотра телепередач. Уровень принимаемого сигнала для разных каналов можно посмотреть так (указав название канала после параметра -r): $ dvbv5-zap -a 0 -f 1 -c dvb_channel.conf -r ’01 ПЕРВЫЙ КАНАЛ’
Если же сигнал не идет, то надо серьезно заняться подбором и настройкой антенны.
Задача 3. Убедиться, что правильно настроены программы для приема, показа и записи телепередач.
Для удобства просмотра нужно установить потоковый сервер и рекордер tvheadend . $ sudo apt-get install tvheadend
При установке будут запрашиваться пароли для входа в настройки.Забытый пароль можно посмотреть в файле /var/lib/hts/.hts/tvheadend/superuser
Чтобы работать без пароля нужно сделать 3 шага:
- Остановить сервер (sudo service tvheadend stop)
- В файле /etc/init.d/tvheadend строку ARGS=»-f» заменить на ARGS=»-f —noacl»
- Запустить сервер (sudo service tvheadend start).
Все настройки делаются через web интерфейс по адресу http://127.0.0.1:9981 и многократно описаны в инет. Минимально необходимые инструкции приведены ниже.
Логика настроек tvheadend такая:
- Создать сеть внутреннего телевещания с частотами из таблицы сканируемых частот (напоминаю о /usr/share/dvb/dvb-t/ru-Moscow).
- Связать правильный интерфейс адаптера (напоминаю о adapter0 frontend1) с этой созданной сетью.
- Подождать завершения сканирования и разрешить трансляцию всех найденных каналов.
Для создания сети на вкладке «Configuration» -amp;amp;amp;amp;amp;gt; «DVB Input» -«Networks» нажать на зеленый плюс «Add»;Из списка выбрать тип сети «DVB-T» (именно «DVB-T», а не dvb-t2); В форме заполнить поля «Network:» (любое имя), «Pre-defined muxes:» (выбрать созданную ранее таблицу сканирования, например ru-Moscow), «Character set:» (выбрать AUTO) и нажать кнопку «Create»
Для связывания адаптера с созданной сетью на вкладке «Configuration» — «DVB Input» — «TV adapters» ткнуть мышкой в «Panasonic MN88473 #0 : DVB-T #1» (что соответствует adapter0 frontend1). В форме, открывшейся справа, в разделе «Basic Settings» в поле «Networks:» выбрать созданную сеть. Там же поставить галку в поле «Enabled» и нажать на кнопку «Save».
Для разрешения трансляции всех найденных каналов нужно перейти на вкладку «Configuration» -«DVB Input» — «Muxes», дождаться появления в колонке «Scan result» сообщения «OK» (либо «FAIL»). Далее на вкладке «Configuration» -«DVB Input» — «Services» в выпадающем списке «Mux Services» выбрать «Map all services» и нажать на кнопку «Save».
Все три задачи решены и сеть внутреннего телевещания наконец начала работать, позволяя смотреть и записывать любой принимаемый канал.
• Чтобы посмотреть телетрансляции не выходя из web интерфейса tvheadend надо перейти на самую левую вкладку верхнего уровня «Electronic Progran Guide» с загруженной программой передач и ткнуть в иконку телевизора около требуемого канала.
• Если хотите, чтобы у каждого канала показывался логотип, перейдите на вкладку «Configuration» -«General» — «Base». В нижней части открывшейся таблицы в поле «Picon path:» введите «file:///var/lib/hts/picons» (без кавычек), а в поле «Prefer picons over channel name:» поставьте галочку. Все файлы с логотипами телеканалов (png размером 256х256) скопируйте в папку /var/lib/hts/picons и смените владельца и группу для этих файлов на hts:hts. Далее на вкладке «Configuration» — «ChannelEPG» — «Channels» в каждое поле «User Icon» нужно ввести имя файла(без кавычек) с логотипом канала в формате «picon://01.png», «picon://02.png» и т.д.
• Для просмотра на любом vlc плеере в сети нужен плейлист, который можно получить, набрав в браузере http://127.0.0.1:9981/playlist. Загрузится файл channels, который рекомендую переименовать в channels.m3u и использовать для просмотра в сети со всех компьютеров, планшетов и мобильных телефонов.
• Для iPad и iPhone есть программа TvhClient, которая позволяет смотреть вещание сервера tvheadend и при необходимости запускать запись на Raspberry Pi.
• Для Android-устройств так же есть программы-клиенты tvheadend, которые можно найти в Google Play, задав в строке поиска tvheadend.
Для удобного просмотра телепередач непосредственно на Raspberry pi я использую kodi с пакетом kodi-pvr-hts.
Установка и настройка kodi не сложна, но это уже совсем другая история.
Источник: raspberrypi.ru
Raspberry Pi: TFT дисплей с SPI интерфейсом
У Raspberry Pi есть встроенное графическое ядро, которое позволяет без проблем подключать к этому микрокомпьютеру самые обычные мониторы и телевизоры по HDMI интерфейсу. Но к RPi можно подключить множество более дешевых и миниатюрных дисплеев, которые могут быть более уместными для небольшого DIY-проекта.
В этой статье мы подробно разберем подключение популярного TFT-дисплея с контроллером ILI9341. Существует несколько вариантов модулей с таким дисплеем, отличающихся внешним видом и разрешением. Мы будем работать с таким экземпляром:
На обратной стороне виден разъём для SD-карты и драйвер сенсорной резистивной плёнки. Дисплеи с разрешениями более 2,2 дюйма как правило попадаются в двух исполнениях: с сенсорной панелью и без.
Диагональ дисплея составляет 2,4 дюйма при разрешении 320×240 пикселей. Контроллер, как уже говорилось, ILI9341.
Чтобы повторить всё, что делается в данной статье понадобится:
Подключение
Дисплей подключается по SPI интерфейсу. Схема подключения:
Raspberry Pi | GND | 3.3V | MOSI(GPIO10) | MISO(GPIO09) | CLK(GPIO11) | GPIO2 | GPIO3 | GPIO4 |
Дисплей | GND | VCC | SDI(MOSI) | SDO(MISO) | SCK | DC | RESET | LED |
Контакты DC, RESET и LED можно подключить к любым свободным GPIO контактам Raspberry Pi, а вот SDI, SDO и SCK только к указанным.
Установка драйвера для работы с TFT
Драйвер, который мы используем в данной статье, существует в виде исходного кода в репозитории github. Чтобы им воспользоваться, нам предстоит его скомпилировать в исполняемый файл.
Установим утилиту cmake, которая поможет подготовить необходимые для компиляции файлы:
sudo apt-get install cmake
Затем загрузим из репозитория исходные коды драйвера. Лучше это делать в домашней папке пользователя pi.
cd ~
git clone https://github.com/juj/fbcp-ili9341.git
Зайдем в загруженную папку и создадим в ней подпапку build:
cd fbcp-ili9341
mkdir build
cd build
Теперь самое главное. Нам нужно запустить cmake, указав кучу параметров для нашего TFT-дисплея. Готовая строка для запуска может выглядеть так:
cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=2 -DGPIO_TFT_RESET_PIN=3 -DGPIO_TFT_BACKLIGHT=4 -DSPI_BUS_CLOCK_DIVISOR=30 -DSTATISTICS=0
-DILI9341=ON — собирает версию драйвера именно для ili9341. Но данный пакет поддерживает и другие модели дисплеев: DILI9340, HX8357D, SSD1351, ST7735R. ST7789, ST7789VW, ST7735S, ILI9486, ILI9486L, MPI3501. То есть можно работать практически с каждым популярным дисплеем.
Следующие три параметра определяют контакты Raspberry Pi, к которым подключены служебные сигналы дисплея:
-DGPIO_TFT_DATA_CONTROL=2 — это пин DC, который мы подключили к GPIO2;
-DGPIO_TFT_RESET_PIN=3 — сброс RESET (к GPIO3);
-DGPIO_TFT_BACKLIGHT=4 — подсветка LED (к GPIO4);
Последний параметр по сути задаёт скорость работы шины SPI, определяя делитель частоты:
-DSPI_BUS_CLOCK_DIVISOR=30
Для первого запуска можно уставить делитель 30. Затем, стоит попробовать уменьшать это число вплоть до 6, или до значения при котором дисплей начнёт глючить.
-DSTATISTICS=0 — убираем отладочную информацию сверху дисплея.
Запустим команду cmake с указанными параметры. После завершения работы cmake запустим компилятор, который и соберет нам всё вместе в бинарный файл:
make -j
единственный параметр -j позволит ускорить сборку исполняемого файла за счёт распараллеливания процесса по ядрам процессора.
После завершения работы make, в папке build должен появиться файл fbcp-ili9341. Запускаем его:
sudo ./fbcp-ili9341
Вот и всё. Дисплей в деле!
Мелкий шрифт на дисплее
Без дополнительных телодвижений текст на дисплее будет не очень чётким. Почему так? Все дело в том, что Raspberry Pi формирует картинку в разрешении, отличном от разрешения такого мелкого tft-дисплея. Драйвер сам производит масштабирование (очень быстро, с использованием GPU), и шрифты при этом немного портятся.
Чтобы избежать масштабирования драйвером, нужно настроить RPi таким образом, чтобы картинка изначально формировалась в нужном разрешении. В таком случае и шрифт будут выглядеть читабельнее.
Открываем в редакторе файл настроек:
sudo nano /boot/config.txt
Находим там строку:
#uncomment to force a specific HDMI mode (this will force VGA)
Сразу после неё добавляем:
hdmi_group=2 hdmi_mode=87 hdmi_cvt=320 240 60 1 0 0 0 hdmi_force_hotplug=1
Сохраняем и перезагружаем Raspberry Pi. Теперь при запуске утилиты fbcp-ili9341 мы получим примерно такое:
Подробное описание драйвера на github:
Источник: robotclass.ru