Octoprint на Orange PI с сенсорным экраном 3.5″

303После покупки нового 3D принтера я задумался над сервером удаленной печати. В наличии имелись апельсиновые  ПК Orange PI PCOrange PI PC+ и Orange PI ZERO — вполне годные микрокомпьютеры для того чтобы установить Octoprint с камерой. Захотелось сразу еще и маленький сенсорный экран. HDMI экраны с USB тачем показались дороговатыми и слишком громоздкими. Приглянулся  для данного проекта сенсорный экран 3.5″ для Raspberry PI.

Экран 3.5inch RPi LCD (A), 480×320

Характеристики

  • LCD дисплей 3.5″ (49 x 73.4 мм) со светодиодной подсветкой
  • Разрешение 340*480 пикселей (8:5)
  • Количество поддерживаемых цветов — 65536
  • Сенсорная резистивная панель
  • Интерфейс SPI
  • Подключение — двухрядный  разъем PBD-26 (совместим с Raspberry PI 40-пин и 26-пин  разъемом)
  • Габариты 56.6 x 97.6 x 20.8 мм

Производитель

В магазине на Алиэкспресс указан производитель экрана — LANDZO. Эта китайская компания, без зазрения совести шлепает и продает  копии различных около ардуиновых и малиновых плат. Страничка с данным экраном здесь, но описание практически отсутствует. На самом деле этот модуль разработан другой китайской компанией Waveshare Electronics. Там он продается вдвое дороже, за то с нормальным  описанием. Довольно интересно звучит предостережение о «китайских подделках»

011

Внутренний мир

103

Модуль дисплея состоит из собственно экрана 3.5″ на встроенном контроллере ILI9486 с параллельным 60-пиновым гибким интерфейсом. На основной плате стоят сдвиговые регистры 74-й серии, превращающие параллельный интерфейс в SPI

2d25eed4-3a79-11e4-8418-b8439db1cc4f

Там же на плате находится контроллер сенсорного экрана XPT2046 и 3.3В стабилизатор AMS1117

Ну и двухрядный разъем PBD-26 для подключение к 26 и 40-пиновому GPIO Rapberry PI.

rpi-3-5inch-pins

Комплектность, внешний вид, подключение к Orange PI

В комплект поставки входит сам дисплей,CD-диск (о где же взять читалку?) с драйверами для Raspberry PI и стилус для резистивного сенсорного экрана.

100

101 102 110

Разъем позволяет подключить к любому одноплатнику, совместимому с Raspberry PI 40 пин или 25 пин. Orange PI PC  встает идеально прямо над платой

115 116 117

К сожалению, у Orange PI ZERO разъем стоит «наоборот» и экран превращает его в этакого монстра

113 114

Попытка не разобравшись включить «по феншую» то есть платой под экраном привело к образованию «волшебного дыма». Сгорел танталовый конденсатор, сработавший предохранителем от переполюсовки. После перепайки его все осталось целым и невредимым.

112

Винить инженеров OPI ZERO не нужно.Такое размещение гребенки GPIO на микро ПК сделано для того, чтобы экран (и другие подобные платы) можно было использовать совместно с платой расширения, добавляющей к микрокомпьютеру два USB, микрофон, звуковой выход и ИК порт.

202

Купленный дисплейный модуль «заточен» под Rasperri PI и работает с этими компьютерами «практически из коробки». На диске имеются «драйвера» — файлы для UBOOT, ядро с модулями и конфигурационные файлы, которые нужно просто переписать поверх чистого LINUX.

Для Orange PI  такой поддержки нету и приходится уповать на сторонних разработчиков LINUX (ту же команду Armbian), которые осуществляют поддержку этих дешевых, но очень непростых микро ПК.

В интернете есть разные описания подключения 3.5″ сенсорного экрана к Orange PI род управлением той или иной версии LINUX. Поэтому в настройках, как говорится, имеются нюансы, о которых я постараюсь написать далее.

 

Настройка сенсорного экрана на Orange PI PC

Первым делом качаем последнюю версию Armbian для нашей версии Orange PI PC с официального сайта. Я остановился на дистрибутиве Armbian Stretch 5.69 на базе ядра 4.19.13.

001

Сразу ставим пакет для сборки ядра 4.19.13

Модуль экрана fb_ili9486 уже давно есть в Armbian (в других дистрибутивах не смотрел). Нужно только правильно указать, как подключен экран.

Включаем SPI шину. Для этого в файле /boot/armbianEnv.txt  добавляем следующие строки:

RESET на OPI PC подключен к GPIO2, а DC к 71. Остальные GPIO — SPI интерфейс.

Параметр rotate=90 говорит о повороте изображения на экране на 90 градусов. Можно заменить его на 180 и 270.

Для того чтобы модуль с заданными параметрами стартовал при запуске Linux — создаем файл загрузки модулей /etc/modules-load.d/98-fbtft.conf

И файл с параметрами модуля fbtft_device /etc/modprobe.d/fbtft.conf

Теперь на нашем экранчике мы видим текстовую консоль загрузки системы Armbian а в журнале загрузки ядра по команде dmesg видим что наш экран система опознала

005

201

Поддержка графического режима на TFT экране производится установкой пакета

и создания файла /usr/share/X11/xorg.conf.d/99-fbdev.conf

С сенсорным экраном все немного сложнее — готовых модулей-драйверов нету, придется их собирать из исходников.

Качаем драйвер тачскрина ADS7846, совместимого  с микросхемой XPT2046 на нашем модуле

Создаем файл Makefile с следующим содержимым:

После этого запускаем сборку и установку модуля

006

Похожим образом скачиваем, собираем и устанавливаем модуль ads7846_device:

007

Теперь можно загрузить модуль вручную

И посмотреть dmesg

008

Проверить работу сенсорного экрана можно командой с выбором нашего устройства (в моем случае /dev/input/event2)

Теперь если мы прикоснемся к экрану — на экран выведутся координаты точки и другие параметры

010

Осталось добавить поддержку сенсорного экрана при загрузке системы. Для этого создаем файл загрузки модулей /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 PC ZERO

Orange PI ZERO имеет SPI1 вместо SPI0 на GPIO экрана и сами GPIO имеют другие номера

В файле /boot/armbianEnv.txt  прописываем SPI1

Строка запуска модуля будет выглядеть следующим образом

Параметр rotate=270 делает правильное положение картинки на экране при условии если контроллер снизу экрана

Обновление системы до нужной версии и сборка драйвера сенсорного экрана полностью идентична OPI PC. В строке запуска модуля добавляется только номер шины SIP

Все остальные настройки экрана и программ не зависят от аппаратного обеспечения и полностью идентичны с Orange PI PC

203

При таком неудачном размещении экрана и контроллера общие габариты получаются даже больше, чем у Orange PI PC и поэтому особого смысла использования платы ZERO я не вижу, так как ее единственное преимущество — габариты, здесь не используются

Установка OCTOPRINT

В интернете пишут, что установка Octoprint на Orange PI ничем не отличается от установки на Raspberry PI, которая везде детально расписана, причем прямо для нашего дисплейчика. Но, как оказалось, все же есть отличие дистрибутивов Armbian и Raspbian, те самые «нюансы», которые здесь упомяну

1. Команда питона virtualenv в Armbian заработала только после следующего действия:

2. Браузера chromius при помощи которого выводится консоль Octoprint на экранчик в репозитарии Armbian нету. Можно установить chromius из другого репозитария

3. После установки Octoprint не захотели устанавливаться плагины, в частности TouthUI с интерфейсом для нашего дисплея. Помогла установка прав на каталоги Octoprint

300 301

Корпус

Чем отличается обычный радиолюбитель, от радиолюбителя с 3D-принтером? Правильно. Последний изводит килограммы пластика, чтобы поместить в него свои изделия. Освоив пакеты для проектирования печатных плат и моделирования схем, приходится осваивать и 3D-моделирование для создания корпусов (не побираться же всю жизнь на готовых моделях!)

Проектирую модели для принтера я в TINKERCAD

012

013

302 303 305 394

Модель корпуса положил туда

Итоги

  • Сенсорные дисплейный модуль 3.5″ полностью оправдал мои ожидания
  • Несмотря на то, что многие ругают Orange PI за их глючность,  подобные железки вполне прикручиваются к этим недорогим микро ПК, хотя поддержка и коммьюнити у них значительно хуже чем у «малиновых друзей»
  • Данный экран вполне может найти  применения в автономных миниатюрных системах, например , как панель к умному дому
  • При желании, данный модуль можно подключить у всевозможным Arduino/ESP (библиотеки готовые есть), но, на мой взгляд, применение будут довольно ограниченным из за низкой производительности и малому объему памяти указанных контроллеров.

А еще можно сделать маленький компьютер или телевизор для кота )))

%d1%811

Надеюсь, статья хоть немного оказалась кому то полезной.

Вы можете оставить отзыв или трекбек со своего сайта.

3 комментария на «Octoprint на Orange PI с сенсорным экраном 3.5″»

  1. Strazh:

    Добрый день. Отличная статья. Спасибо за неё. Но вот оказия. Каждый раз возникают новые проблемы, когда кто-то, что-то меняет. Это касается разработчиков плат и майнтейнеров armbian. Первые меняют расположение пинов GPIO, а так же нумерацию GPIO, вторые собственно систему, да так, что и не поймёшь потом, что и где находится и как взаимодействует. У меня orange pi zero plus 2 h3. И я ничего не могу понять. Как можно подключить дисплей ili9341 к этому компьютеру??? Ума не приложу. Уже обчитался интернета до головокружения, а везде всё по разному. Все инструкции. И причиной тому то, что не понятно что с чем соединять и как и что настраивать в системе. Допустим 6 из 9 пинов понять легко куда подключить, но вот led, reset и dc … Это нечто убийственное. Так и не выяснил. Везде у всех по разному. И ведь не ясно почему куда-то их надо подключать. Одни подключают туда где uart, другие этот же вывод вообще не подключают, у одних это gpio 18 у других моделей плат это уже gpio 200 в итоге просто каша в голове. Может есть какие-то более правильные ориентиры для подключения этих трёх выводов дисплея к разным моделям одноплатников? Допустим искать не какой-то номер GPIO, а нужную функцию на выводе GPIO, найдя которую можно подключить эти выводы к их функциям, а уж потом найти нужный номер gpio и указать его в настройках? Опять же…запуская wiringpi есть целых 3 варианта номера одного и того же физического вывода: физический номер, wiringpi и gpio. Бывают и другие в «правильных», «не правильных» версиях wiringpi. И как же сделать так, чтобы это всё стало понятно? Обидней всего то, что те, кто знает — молчат. Возможно потому, что для них всё это, что я описал очевидные вещи и они не видят смысла в описании их. Но, на самом деле проблема есть и она не маленькая. Для не особо искушённых. Далее. Вот мы разобрались и подключили (допустим) дисплей правильно. Как понять как настроить его работу в системе, если каждая новая версия уже должна настраиваться совершенно по другому???!! Зачем они создают этот кошмар? Понятно, что знающие люди сразу поймут что изменилось и что менять, но вот я например и мой товарищ волонтёр сразу же выпали из работы. Старые инструкции для первой модели здесь уже не работают. А так же инструкции для других моделей. Я всё это к чему… Если не сложно, может возьмётесь написать в сети, где-нибудь мануал, где будут разъяснены все эти нюансы. Поверьте, вам будут благодарны очень многие наши и зарубежные пользователи. А если не будете писать такую статью, то может здесь ответите на жти вопросы? Что к чему… Спасибо заранее.

  2. Михаил:

    Автор пожалуйста помоги с тач скрином не получается его сделать в ландшафтный режим. Ось Y не могу инвертировать.

    • Alexey Alexey:

      Ориентация тачскрина задается этим параметром
      Option «TransformationMatrix» «0 -1 1 1 0 0 0 0 1»

Ваш отзыв на Михаил