Orange pi как подключить дисплей
Модуль дисплея состоит из собственно экрана 3.5″ на встроенном контроллере ILI9486 с параллельным 60-пиновым гибким интерфейсом. На основной плате стоят сдвиговые регистры 74-й серии, превращающие параллельный интерфейс в SPI
Там же на плате находится контроллер сенсорного экрана XPT2046 и 3.3В стабилизатор AMS1117
Ну и двухрядный разъем PBD-26 для подключение к 26 и 40-пиновому GPIO Rapberry PI.
Комплектность, внешний вид, подключение
Доехал дисплей до Перми всего за 15 дней. Оказывается, случаются и добрые чудеса у Почты России. Упаковка — двойная картонная коробочка
В комплект поставки входит сам дисплей,CD-диск (о где же взять читалку?) с драйверами для Raspberry PI и стилус для резистивного сенсорного экрана.
Размеры дисплея соответствуют габаритам плат микрокомпьютеров — Raspberry PI, Asus Tinker Board, Orange PI (PC)
Разъем позволяет подключить к любому одноплатнику, совместимому с Raspberry PI 40 пин или 26 пин. Orange PI PC встает идеально прямо над платой
У Orange PI ZERO разъем повернут на 180 и экран превращает его в этакого монстр
Винить инженеров OPI ZERO не нужно.Такое размещение гребенки GPIO на микро ПК сделано для того, чтобы экран (и другие подобные платы) можно было использовать совместно с платой расширения, добавляющей к микрокомпьютеру два USB, микрофон, звуковой выход и ИК порт.
Купленный дисплейный модуль «заточен» под Raspberry PI и работает с этими компьютерами «практически из коробки». На диске имеются «драйвера» — файлы для UBOOT, ядро с модулями и конфигурационные файлы, которые нужно просто переписать поверх чистого Raspbian.
Для Orange PI такой поддержки нету и приходится уповать на сторонних разработчиков LINUX (ту же команду Armbian), которые осуществляют поддержку этих дешевых, но очень непростых микро ПК.
В интернете есть разные описания подключения 3.5" сенсорного экрана к Orange PI род управлением той или иной версии LINUX. Поэтому в настройках, как говорится, имеются нюансы, о которых я постараюсь написать далее.
Первым делом качаем и устанавливаем последнюю версию Armbian для нашей версии Orange PI PC с официального сайта. Я остановился на дистрибутиве Armbian Stretch 5.69 на базе ядра 4.19.13.
Сразу ставим пакет для сборки ядра 4.19.13
apt-get upgrate делать не рекомендую, так как в последних обновлениях есть проблемы со скриптами для сборки модулей ядра
Модуль экрана fb_ili9486 уже давно есть в Armbian (в других дистрибутивах не смотрел). Нужно только правильно указать, как подключен экран.
Включаем SPI шину. Для этого в файле /boot/armbianEnv.txt добавляем следующие строки:
RESET на OPI PC подключен к GPIO2, а DC к 71. Остальные GPIO — SPI интерфейс. Старт модуля ядра выглядит следующим образом
Параметр rotate=90 говорит о повороте изображения на экране на 90 градусов. Можно заменить его на 180 и 270.
И файл с параметрами модуля fbtft_device /etc/modprobe.d/fbtft.conf
Теперь на нашем экранчике мы видим текстовую консоль загрузки системы Armbian а в журнале загрузки ядра по команде dmesg видим что наш экран система опознала
Поддержка графического режима на TFT экране производится установкой пакета
и создания файла /usr/share/X11/xorg.conf.d/99-fbdev.conf
С сенсорным экраном все немного сложнее — готовых модулей-драйверов нету, придется их собирать из исходников. Для этого мы и устанавливали пакет для сборки модулей ядра
Качаем драйвер тачскрина ADS7846, совместимого с микросхемой XPT2046 на нашем модуле
Создаем файл Makefile с следующим содержимым:
После этого запускаем сборку и установку модуля
Похожим образом скачиваем, собираем и устанавливаем модуль ads7846_device:
Теперь можно загрузить модуль вручную и посмотреть dmesg
Проверить работу сенсорного экрана можно командой с выбором нашего устройства (в моем случае /dev/input/event2)
Теперь если мы прикоснемся к экрану — на экран выведутся координаты точки и другие параметры
Осталось добавить поддержку сенсорного экрана при загрузке системы. Для этого создаем файл загрузки модулей /etc/modules-load.d/99-ads7846.conf
И файл параметров модуля ads7846_device /etc/modprobe.d/ads7846_device.conf
Теперь начинаются те самые нюансы, с которыми пришлось поразбираться:
В графическом режиме у меня модуль не виделся утилитами xinput и xinput_calibrate. Иногда в системе устанавливался с каким то пакетом файл /usr/share/X11/xorg.conf.d/40-libinput.conf и сенсорный экран виделся системой, но ни в какую не хотел настраиваться
Создание файла /usr/share/X11/xorg.conf.d/99-calibrate.conf ничего не давало. Вернее, строка
в этом файле позволяла привести соответствие тачкрина с ориентацией экрана, а вот точная настройка положения указателя игнорировалась. xinput_calibrator давал при этом совершенно «левые» значения, которые находились далеко за пределом экрана.
Все оказалось просто — тачкрин работал через «мышиный» драйвер libinput вместо evdev, который должен работать по событиям нажатия на экран. Для его включения создаем файл /usr/share/X11/xorg.conf.d/45-evdev.conf со следующим содержимым
После перезагрузки драйвер заработал как нужно и стал брать все параметры калибровки из файла /usr/share/X11/xorg.conf.d/99-calibrate.conf как нужно
Если ваш экран не точно откалиброван, то просто запустите с консоли
и ткнув стилусом в четыре предложенные на экране точки получаете новые значения «Calibration». Чтобы каждый раз не перезапускать при калибровке XWindow можно устанавливать новые значение командой xinput
Пока разбирался со всеми этими настройками, нашел альтернативный способ калибровки тача. Все параметры можно указать при загрузке модуля ядра и не возиться с фалами /usr/share/X11/xorg.conf.d/
может кому пригодиться
Orange PI ZERO имеет SPI1 вместо SPI0 на GPIO экрана и сами GPIO имеют другие номера
В файле /boot/armbianEnv.txt прописываем SPI1
Строка запуска модуля будет выглядеть следующим образом
Параметр rotate=270 делает правильное положение картинки на экране при условии если контроллер снизу экрана
Обновление системы до нужной версии и сборка драйвера сенсорного экрана полностью идентична OPI PC. В строке запуска модуля добавляется только номер шины SPI
Все остальные настройки экрана и программ не зависят от аппаратного обеспечения и полностью идентичны с Orange PI PC
При таком неудачном размещении экрана и контроллера общие габариты получаются даже больше, чем у Orange PI PC и поэтому особого смысла использования платы ZERO я не вижу, так как ее единственное преимущество — габариты, здесь не используются
В интернете пишут, что установка Octoprint на Orange PI ничем не отличается от установки на Raspberry PI, которая везде детально расписана, причем прямо для нашего дисплейчика. Но, как оказалось, все же есть отличие дистрибутивов Armbian и Raspbian, те самые «нюансы», которые здесь упомяну
1. Команда питона virtualenv в Armbian заработала только после следующего действия:
2. Браузера chromius при помощи которого выводится консоль Octoprint на экранчик в репозитарии Armbian нету. Можно установить chromius из другого репозитария
3. После установки Octoprint не захотели устанавливаться плагины, в частности TouthUI с интерфейсом для нашего дисплея. Помогла установка прав на каталоги Octoprint
Делаем корпус
Чем отличается обычный радиолюбитель, от радиолюбителя с 3D-принтером? Правильно. Последний изводит килограммы пластика, чтобы поместить в него свои изделия. Освоив пакеты для проектирования печатных плат и моделирования схем, приходится осваивать и 3D-моделирование для создания корпусов (не побираться же всю жизнь на готовых моделях!)
Проектирую простые модели для принтера я в TINKERCAD
Модель корпуса положил туда
Имею Orange Pi Zero 512Gb (ARMbian) и ILI9481 480x320 3.2". Как их совместить чтобы дисплей работал как полноценный монитор? Нагуглить не смог. Помогите кто чем может. Заранее благодарю.
1. Находишь даташит на экран
2. Пишешь драйвер
3. Подключаешь к плате
4. .
5. тут должен быть профит, но вряд ли у тебя получится ;)
Видел. Но как подключить? Какие ноги обязательны? Какие ноги на какой порт? Какой командой инициализировать?
Да и драйвера на 9481 у меня нет, только на 9486, они хоть и идентичны но код судя по ссылке отличается.
я тебе скинул как раз на 9481, а как подключать в даташите должно быть
Его еще скомпилировать надо. В даташите много всего. Опять же, команды инициализации нет, остается только догадываться по командам на похожие дисплеи.
Он раздел сайта имел в виду, наверное.
Как установить написано не для armbian, нет ни папки такой ни файла, получается только клонировать гит. Как подключить разберусь если кто нибудь даст команду инициализации.
естественно клонировать исходники надо, а также сырцы ядра твоего дистриба
Скопировал в корень. Сурсы дистрибутива есть на сайте дистрибутива, что с ними делать?
Нет нормального драйвера под этот дисплей. Скорее всего. Потому как DMA дисплеи обычно подключаются к PI через spi конвертер. Мне нужно через DMA, ибо четыре чипа займут многова-то места.
Да и быстрее будет через dma чем через четыре чипа.
Ты ядро когда-нибудь собирал? Тебе не сырцы дистрибутива надо, а я исходники ядра. Далее по инструкции драйвера.
Прошу прощения не DMA а FMC, перепутал чутка )
Я что-то не пойму, ты даташит на дисплей читал? У этого дисплея всего 2 интерфейса DPI и SC
Читал и что? Их три. Имеет эти интерфейсы не дисплей а контроллер, а на дисплей выведен зачастую только один-два из них. В данном случае один. А конкретно DBI. И не нужно писать чтоб отколупал от платы и проверил распиновку шлейфа, уже отпраивал проверял и выводил такие пины как LCD_RD и LED, по умолчанию китайцы их зажали.
Характеристики
Производитель
Внутренний мир
Там же на плате находится контроллер сенсорного экрана XPT2046 и 3.3В стабилизатор AMS1117
Ну и двухрядный разъем PBD-26 для подключение к 26 и 40-пиновому GPIO Rapberry PI.
Комплектность, внешний вид, подключение к Orange PI
В комплект поставки входит сам дисплей,CD-диск (о где же взять читалку?) с драйверами для Raspberry PI и стилус для резистивного сенсорного экрана.
Разъем позволяет подключить к любому одноплатнику, совместимому с Raspberry PI 40 пин или 25 пин. Orange PI PC встает идеально прямо над платой
Винить инженеров OPI ZERO не нужно.Такое размещение гребенки GPIO на микро ПК сделано для того, чтобы экран (и другие подобные платы) можно было использовать совместно с платой расширения, добавляющей к микрокомпьютеру два USB, микрофон, звуковой выход и ИК порт.
Для Orange PI такой поддержки нету и приходится уповать на сторонних разработчиков LINUX (ту же команду Armbian), которые осуществляют поддержку этих дешевых, но очень непростых микро ПК.
Настройка сенсорного экрана на Orange PI PC
Первым делом качаем последнюю версию Armbian для нашей версии Orange PI PC с официального сайта. Я остановился на дистрибутиве Armbian Stretch 5.69 на базе ядра 4.19.13.
Сразу ставим пакет для сборки ядра 4.19.13
Модуль экрана fb_ili9486 уже давно есть в Armbian (в других дистрибутивах не смотрел). Нужно только правильно указать, как подключен экран.
Включаем SPI шину. Для этого в файле /boot/armbianEnv.txt добавляем следующие строки:
modprobe fbtft_device rotate = 90 name = piscreen speed = 16000000 gpios = reset : 2 , dc : 71 txbuflen = 32768 fps = 25Параметр rotate=90 говорит о повороте изображения на экране на 90 градусов. Можно заменить его на 180 и 270.
И файл с параметрами модуля fbtft_device /etc/modprobe.d/fbtft.conf
options fbtft_device rotate = 90 name = piscreen speed = 16000000 gpios = reset : 2 , dc : 71 txbuflen = 32768 fps = 25Теперь на нашем экранчике мы видим текстовую консоль загрузки системы Armbian а в журнале загрузки ядра по команде dmesg видим что наш экран система опознала
Поддержка графического режима на TFT экране производится установкой пакета
и создания файла /usr/share/X11/xorg.conf.d/99-fbdev.conf
Качаем драйвер тачскрина ADS7846, совместимого с микросхемой XPT2046 на нашем модуле
Создаем файл Makefile с следующим содержимым:
После этого запускаем сборку и установку модуля
Похожим образом скачиваем, собираем и устанавливаем модуль ads7846_device:
Теперь можно загрузить модуль вручную
modprobe ads7846_device model = 7846 cs = 1 gpio_pendown = 1И посмотреть dmesg
Проверить работу сенсорного экрана можно командой с выбором нашего устройства (в моем случае /dev/input/event2)
Осталось добавить поддержку сенсорного экрана при загрузке системы. Для этого создаем файл загрузки модулей /etc/modules-load.d/99-ads7846.conf
И файл параметров модуля ads7846_device /etc/modprobe.d/ads7846_device.conf
options ads7846_device model = 7846 cs = 1 gpio_pendown = 1Теперь начинаются те самые нюансы, с которыми пришлось поразбираться:
В графическом режиме у меня модуль не виделся утилитами xinput и xinput_calibrate. Иногда в системе устанавливался с каким то пакетом файл /usr/share/X11/xorg.conf.d/40-libinput.conf и сенсорный экран виделся системой, но ни в какую не хотел настраиваться
Создание файла /usr/share/X11/xorg.conf.d/99-calibrate.conf ничего не давало. Вернее,
После перезагрузки драйвер заработал как нужно и стал брать все параметры калибровки из файла /usr/share/X11/xorg.conf.d/99-calibrate.conf
Если ваш экран не точно откалиброван, то просто запустите с консоли
xinput set - prop 'ADS7846 Touchscreen' 'Evdev Axes Swap' 135 4025 226 3754 xinput set - prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 0 - 1 1 1 0 0 0 0 1Пока разбирался со всеми этими настройками, нашел альтернативный способ калибровки тача. Все параметры можно указать при загрузке модуля ядра и не возиться с фалами /usr/share/X11/xorg.conf.d/
modprobe ads7846_device model = 7846 cs = 0 gpio_pendown = 1 keep_vref_on = 1 swap_xy = 1 pressure_max = 255 x_plate_ohms = 60 x_min = 200 x_max = 3900 y_min = 200 y_max = 3900 busnum = 1может кому пригодиться
Настройка на Orange PC ZERO
Orange PI ZERO имеет SPI1 вместо SPI0 на GPIO экрана и сами GPIO имеют другие номера
В файле /boot/armbianEnv.txt прописываем SPI1
Строка запуска модуля будет выглядеть следующим образом
modprobe fbtft_device rotate = 270 name = piscreen speed = 16000000 gpios = reset : 2 , dc : 18 txbuflen = 32768 fps = 25 busnum = 1Параметр rotate=270 делает правильное положение картинки на экране при условии если контроллер снизу экрана
Обновление системы до нужной версии и сборка драйвера сенсорного экрана полностью идентична OPI PC. В строке запуска модуля добавляется только номер шины SIP
modprobe ads7846_device model = 7846 cs = 1 gpio_pendown = 1 busnum = 1Все остальные настройки экрана и программ не зависят от аппаратного обеспечения и полностью идентичны с Orange PI PC
Установка OCTOPRINT
1. Команда питона virtualenv в Armbian заработала только после следующего действия:
2. Браузера chromius при помощи которого выводится консоль Octoprint на экранчик в репозитарии Armbian нету. Можно установить chromius из другого репозитария
echo "deb http://dl.bintray.com/kusti8/chromium-rpi jessie main" | tee - a / etc / apt / sources .list3. После установки Octoprint не захотели устанавливаться плагины, в частности TouthUI с интерфейсом для нашего дисплея. Помогла установка прав на каталоги Octoprint
Корпус
Чем отличается обычный радиолюбитель, от радиолюбителя с 3D-принтером? Правильно. Последний изводит килограммы пластика, чтобы поместить в него свои изделия. Освоив пакеты для проектирования печатных плат и моделирования схем, приходится осваивать и 3D-моделирование для создания корпусов (не побираться же всю жизнь на готовых моделях!)
Проектирую модели для принтера я в TINKERCAD
Итоги
А еще можно сделать маленький компьютер или телевизор для кота )))
Надеюсь, статья хоть немного оказалась кому то полезной.
Автор пожалуйста помоги с тач скрином не получается его сделать в ландшафтный режим. Ось Y не могу инвертировать.
Alexey :Благодарю за шикарную статью!
Подскажите, пожалуйста, где можно скачать STL на этот чудесный корпус ?
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сейчас многие уже управляют 3D-принтерами с помощью микро-пк - оно и автономно, и удобнее, чем карточки туда-сюда дергать. Традиционно используется Raspberry Pi, как самый распространенный 'малыш' с огромным коммьюнити. Софт хороший тоже есть. Это и опенсорсный Octoprint, и коммерческий Repetier-Server (бесплатная версия немножко ограничена, но юзабельна, про это ПО я уже писал).
Когда малинку постиг огромный успех, начали появляться 'убийцы' Raspberry Pi. Например, китайские поделия - их объединяет потенциально мощное железо, низкая цена, никакая поддержка, уйма кастомных прошивок-'паршивок' и необходимость наличия в хозяйстве бубна приличного диаметра для инициализации адекватной работы. Вот о граблях, которыми оснащена популярная 'альтернатива' малинки, Orange Pi, я расскажу. В разрезе установки работающего минимального Debian и разворачивании на его базе Octoprint или Repetier-Server.
1. Выбор и покупка 'апельсинки'.
Я покупал самую простую и дешевую версию под названием Orange Pi PC в официальном магазине производителя на Али. 15 долларов, плюс 3.5 - доставка. Рекомендую приобретать сразу с блоком питания - по microUSB плата не питается, а разъем не самый распространенный, у меня в хозяйстве подходящего не нашлось, и я привандалил провода прямо к плате. Orange Pi PC не балует большим количеством интерфейсов, но все реально нужное для наших целей есть - USB и Ethernet.
Это самая веселая процедура. Дело в том, что работа платы всецело зависит от того, как сконфигурирована загрузочная часть прошивки. Именно там указывается, например, какие порты будут доступны ОС, а какие отключены 'за ненадобностью'. Загрузчик можно собирать самостоятельно или воспользоваться результатом творчества добрых людей. Отличные прошивки собирает энтузиаст под ником loboris, на его решении я и остановился. В конце статьи будет ссылка на сложенные мною в одну кучу нужные файлики, а сейчас - общая последовательность действий.
2.1. Выбор нужных файлов. Графический интерфейс и всякие лишние примочки не нужны, поэтому Debian_mini_jessie.img.xz. Помимо основного образа, нам понадобятся самые свежие версии загрузчика и модулей, scriptbin_kernel.tar.gz.
2.2. Запись образа. Образ имеет довольно скромный объем, чуть более 800 Мб, поэтому хватит гигабайтной microSD (я использовал 2 Гб). Если вы работаете под Windows, то надо распаковать из xz-архива img, и записать его на карточку. Я рекомендую для этого использовать Rufus. Линуксоиды могут воспользоваться штатными средствами своей ОС, вплоть до великого и ужасного dd. После записи образа на карточке образуется два раздела, нас сейчас интересует BOOT (файловая система FAT).
2.3. Выбор загрузчика. Удаляем все нафиг с раздела BOOT, распаковываем scriptbin_kernel.tar.gz. Кидаем в BOOT uImage_OPI-2, переименовываем в uImage. И туда же script.bin.OPI-PC_1080p60 (последние знаки - это режим выхода HDMI, если вдруг будете подключать апельсинку к монитору), переименовать в script.bin.
2.4. Пробная загрузка. Вставляем карточку в Orange Pi, подключаем сеть и питание, ждем. Через некоторое время должен загореться красный светодиод, это знак того, что начальная стадия загрузки прошла успешно. 'Железного' светодиода питания у Orange Pi нет, поэтому плата не подает никаких признаков жизни при простом включении (без карточки)!
Теперь надо выяснить, какой IP адрес получила апельсинка. Теоретически у вас может работать в сети служба Bonjour, но я предполагаю, что имеется просто роутер с DHCP сервером. Вот на него надо залезть, и посмотреть, какой IP выдан устройству с именем OrangePi. Далее (для Windows) используем Putty для SSH-подключения. Линуксоиды просто пишут в терминале ssh -l orangepi . Дефолтный пользователь, отличный от root, у нас orangepi. Пароль у него тоже orangepi. Если подключение прошло успешно - расширяем linux-раздел на всю карточку (sudo fs_resize), перезагружаем аппарат (sudo reboot), подключаемся еще раз и переходим к настройке.
3. Настройка пингвина.
Для нормальной работы USB UART нам понадобятся модули ядра, которые лежали в scriptbin_kernel.tar.gz (папка lib). Проще всего закинуть их через флешку (альтернатива - выключить апельсинку, подключить карточку к нормальному компьютеру, примонтировать linux-раздел, но это просто и очевидно только не для Windows). Берем флешку (файловая система FAT), закидываем туда папку lib, подключаем флешку к апельсинке. Никакой роскоши, вроде автомонтирования, в минимальном образе Debian не предусмотрено, поэтому только mount, только хардкор. Хинт: можно копировать команды отсюда (Ctrl+C), а потом кидать их в окно Putty просто правым кликом.
dmesg, видим там что-то типа [sda] Attached SCSI removable disk. Значит, нам нужен раздел sda1
sudo mkdir /mnt/flash && sudo mount /dev/sda1 /mnt/flash
Создаем папку для монтирования и подключаем туда раздел флешки.
sudo cp -r /mnt/flash/lib /lib && sudo depmod -a
Копируем и обновляем модули (может занять некоторое время).
sudo umount /dev/sda1 && sudo rm -rf /mnt/flash
Отмонтируем флешку и подчищаем за собой. После этого накопитель можно отключить.
С настройкой пингвина закончили. Можно попробовать подключить принтер. В моему случае китайская ардуина оснащена USB UART CH341, поэтому в выводе dmesg я вижу следующее: usb 7-1: ch341-uart converter now attached to ttyUSB0.
Теперь можно устанавливать либо OctoPrint, либо Repetier-Server.
Устанавливается по инструкции для малинки.
sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
virtualenv --system-site-packages venv
./venv/bin/python setup.py install
Этой пачкой команд мы переходим в домашний каталог, устанавливаем Python с нужными запчастями, Git и другое барахло. Затем скачиваем исходники OctoPrint, собираем их и устанавливаем. Если при выполнении setup.py install вылезает ошибка по таймауту, запускаем эту команду еще раз.
sudo usermod -a -G tty orangepi
sudo usermod -a -G dialout orangepi
Добавляем пользователя orangepi в нужные группы, чтобы он имел доступ к последовательным портам.
Если все работает, можно закрыть OctoPrint (Ctrl+C в консоли) и настроить автозапуск.
sudo chmod +x /etc/init.d/octoprint
Это создание скрипта запуска
sudo nano /etc/default/octoprint
OCTOPRINT_USER=orangepi
DAEMON=/home/orangepi/OctoPrint/venv/bin/octoprint
Ctrl+0, Enter, Ctrl+X (сохранение, закрытие редактора).
sudo update-rc.d octoprint defaults
Обновление списка автозагрузки. Теперь OctoPrint стартует после запуска апельсинки.
Устанавливается даже проще. Идем на страницу загрузки и копируем ссылку на актуальную версию пакета для архитектуры armel.
wget (ссылка на пакет.deb)
sudo dpkg -i (пакет.deb)
На этом на сегодня все. На вопросы, насколько смогу, отвечу. Кстати, принтер можно подключать минуя всякие ненужные USB UART, через аппаратный последовательный порт апельсинки, уже проверено и работает, но об этом в другой раз. 'Родную' камеру апельсинки пока не победил, но в процессе.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Читайте также: