KREMEN Реклама
KREMEN Реклама

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

Bronco125
Идет загрузка
Загрузка
12.03.2025
978
1
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

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

11

     История продолжается. В этот раз речь пойдёт о шейперах, дисплее и прочих вещах.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

     Начнем с дисплея. Идея была дополнить принтер недорогим дисплеем для отслеживания минимально необходимой информации о состоянии печати, с доступом к управлению непосредственно стоя у принтера, т.к. каждый раз бежать смотреть в вебморду напрягает. Задача - установка в штатное место. 

    На Али был куплен сенсорный SPI TFT дисплей 2.8 дюйма ILI9341/XPT2046. Приехал в коробочке со стилусом, кросиво. И начался увлекательный аттракцион с кучей квестов длиною в 3 дня.

     День первый:

     Квест первый - задача подключить дисплейный модуль к одноплатнику Orange Pi Zero3 

     Квест второй - вывести информацию на экран

    С подключением сложностей никаких, в и-нете вагон и тележка информации, распиновка ниже в конфигурации. Получилось 8 проводов, MISO не подключаем.

     Танцы с бубном начинаются в программном обеспечении. В Линуксе я почти полный ноль, а точнее 0,0001. Пришлось переворошить очень много информации, перечитать очень много тем и постов под ними. И к моменту написания статьи, естественным образом, это всё забыто. :))

     Сборку я закатал на ядре 6.1.31 с Debian bookworm сразу с предустановленным клиппером, мунрекером, кияухом, для ленивцев, в общем. Большинство же успешных действий людей с дисплеями гугл выдаёт на ранних ядрах армбиан. Ну и, конечно же, всё это дело у меня встало колом, из-за отсутствия того же модуля fbtft_device и каких-либо знаний об этом и всей этой структуре и среде в целом.

     Дальше можно пойти очень простым путем - просто выбросить в мусорное ведро и забыть как страшный сон. Он наиболее оптимальный. Но есть и другой путь - вкусить красную таблетку, забрызгать зубы серебрянкой и с криком Запомните меня как есть, очутиться в вальгалле.

     Общими словами, надо добавить этот козлячий дисплей в дерево устройств, назначить драйвер, сконфигурировать пины для ввода-вывода сигналов и тогда свёкла заколосится. (так просто оказывается, но именно на это было изничтожено наибольшее количество времени со всеми сопутствующими стадиями принятия, отрицания, гневом, торгом и слезами)

    Собрав опыт в отечественном информационном пространстве, а также зарубежных коллег, методом проб и ошибок был рожден файл со следующим содержанием:

/*

LCD ILI9341, Touch XPT2046

Connections

LCD -> OrangePi Zero 3

T_IRQ = PC15

T_DO = PH8

T_DIN - MOSI (short on lcd)

T_CS = PC10

T)CLK - SCK (short on lcd)

LED = PC7

SCK = PH6

SDI = PH7

DC = PC14

RESET = PC8

CS = PH9

VCC = 3.3V

GND = GND

sudo oranepi-add-overlay /your_path/filename

sudo nano /boot/orangepiEnv.txt

*/

/dts-v1/;

/plugin/;

/{

compatible = "allwinner,sun50i-h616";

fragment@0 {

target-path = "/";

__overlay__ {

backlight: backlight {

compatible = "gpio-backlight";

pinctrl-names = "default";

gpios = <&pio 2 7 0> ; // PC7

default-on;

status = "okay";

};

};

};

fragment@1 {

target = <&spi1>; 

__overlay__ {

status="okay";

pinctrl-0 = <&spi1_pins>;

cs-gpios = <&pio 7 9 0>,<&pio 2 10 0>; /* PH9, PC10 */

ili9341: ili9341@1 {

compatible = "ilitek,ili9341";

reg = <0>;

pinctrl-names = "default";

spi-max-frequency = <40000000>;

rotate = <180>;

bgr= <0>;

fps = <30>;

buswidth = <8>;

reset-gpios = <&pio 2 8 1>; /* PC8 */

dc-gpios = <&pio 2 14 0>; /* PC14 */

backlight = <&backlight>;

debug = <3>;

};

xpt2046: xpt2046@1 {

compatible = "ti,ads7846";

reg = <1>;

pinctrl-names = "default";

spi-max-frequency = <1000000>;

interrupt-parent = <&pio>;

interrupts = <2 15 2>; /* PC15 - IRQ */

pendown-gpio = <&pio 2 15 1>; /* PC15 */

                

/* OPTIONS */

ti,x-min = /bits/ 16 <290>;

ti,y-min = /bits/ 16 <390>;

ti,x-max = /bits/ 16 <3750>;

ti,y-max = /bits/ 16 <3700>;

ti,pressure-min = /bits/ 16 <0>;

ti,pressure-max = /bits/ 16 <0xFFF>;

ti,x-plate-ohms = /bits/ 16 <400>;

ti,swap-xy = <1>;

wakeup-source;

};

};

};

};

     Это важная часть, без которой экран будет показывать только белую подсветку.

Здесь необходимый минимум - распиновка, команды, конфигурация дисплея и сенсора. Остальное, кто захочет, найдет в и-нете, проблем нет и смысла описывать тоже.

Вот и, собственно, получаем таким способом картинку на экране как на фото в начале статьи.

     День второй:

     Квест третий - задача подключить, сконфигурировать, откалибровать сенсорный модуль

     Это тоже жуткий квест из разряда Миссия невыполнима. Коротко - на подключение ушло еще 3 провода дополнительно, остальные два контакта перемкнул прямо на дисплее (см. распиновку в конфигурации), пишется конфигурация (см. вторую половину выше), добавляется в дерево. Далее всё это начинает работать, если нужно, то сенсор программно переворачивается для взаимодействия с графикой, калибруется, записывается информация в соответствующие файлы. Расписывать долго, всё есть, и-нет большой - ищущий да найдёт.

     После проверок на ошибки, калибровки, накатил Klipperscreen. Кстати, у них в вики и расписано как перевернуть сенсор и куда сохранить это, чтобы на постоянку.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы     На фото микроКлипперскрин))

    Квест четвертый - Сделать информацию, которая выводится Клипперскрином на такой мелкий экран читаемой. 

     Идём в каталог /home/orangepi/KlipperScreen/ks_includes, находим файл KlippyGtk, отыскиваем строку

self.font_ratio = [20, 34] if self.screen.vertical_mode else [40, 27]

правим цифры, меняется шрифт. Также, экспериментируем с цифрами в строках ниже, логически по описанию примерно понятно для чего они.

     К слову, я еще не закончил с размером шрифтов и это уже начинает надоедать.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

     День третий

    Квест пятый - собрать это всё в кучу, сделать соединения, установить в штатное место.

     Это отдельный вид извращения, когда надо всё сделать красиво и поместить в ограниченные рамки.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы     Собрал разъемы, нарисовал-распечатал из ABS крепеж.

     Снял материнскую плату, заодно пробросил UART с драйверов до камня. Изначально планировал припаять пятый драйвер под ММУ, но в итоге отказался от этого.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

     Убрал пластиковые гофры, поставил мягкие оплетки.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы     Практичнее было бы оставить гофры, к проводам проще подлезть. Но мне так больше нравится, ламповее как-то)

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

     Подводя итог, подключить такой дисплей с сенсором оказалось вполне реально. Он работоспособный на 100%, никаких затупов нет. Минусов два - всё очень мелко, нужно есть много морковки, чтобы лучше видеть или купить лупу. Второй минус связан с углами обзора - в перевернутом состоянии как у меня, с углами всё печально, надо смотреть на экран примерно под 90градусов. Если поставить его не переворачивая, то всё оч хорошо, но наклейка TRONXY сделана так, что экран надо переворачивать вверх головой, по другому позорно будет.

     

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

     Внутренняя компоновка. Тут всё получилось достаточно плотно. Поэтому возникла проблема с вентилятором. Он упирался в мотор, чтобы сдвинуть его левее пришлось снять красивый розовый радиатор с одноплатника, камень обдувается ну и ладно. Когда дергал радиатор, снёс  SMD, часть из которых разлетелась по полу и одноплатник превратился в тыкву. Плюс 2,5 часа на ремонт, чтоб его черти драли. Паяется паяльником всё очень плохо, прям невозможно. Фен помог.

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы

Дневник Tronxy Crux-1. Дисплей, Klipperscreen, шейперы    Кой-чего напечатал.    На этом всё, время вышло, шейперы в другой статье будут (обманул ахаха). Спасибо за внимание.

Затраты в рамках статьи:

LCD 2.8 - 519 р.

Оплетка - 73 р.

Вентилятор 80х10 - 146 р.

Разъемы с проводами - не помню, оч давно куплены 

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

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

11
Комментарии к статье