Дневник 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. Кстати, у них в вики и расписано как перевернуть сенсор и куда сохранить это, чтобы на постоянку.
Квест четвертый - Сделать информацию, которая выводится Клипперскрином на такой мелкий экран читаемой.
Идём в каталог /home/orangepi/KlipperScreen/ks_includes, находим файл KlippyGtk, отыскиваем строку
self.font_ratio = [20, 34] if self.screen.vertical_mode else [40, 27]
правим цифры, меняется шрифт. Также, экспериментируем с цифрами в строках ниже, логически по описанию примерно понятно для чего они.
К слову, я еще не закончил с размером шрифтов и это уже начинает надоедать.
День третий
Квест пятый - собрать это всё в кучу, сделать соединения, установить в штатное место.
Это отдельный вид извращения, когда надо всё сделать красиво и поместить в ограниченные рамки.
Собрал разъемы, нарисовал-распечатал из ABS крепеж.
Снял материнскую плату, заодно пробросил UART с драйверов до камня. Изначально планировал припаять пятый драйвер под ММУ, но в итоге отказался от этого.
Убрал пластиковые гофры, поставил мягкие оплетки.
Практичнее было бы оставить гофры, к проводам проще подлезть. Но мне так больше нравится, ламповее как-то)
Экран встал нормально, сенсор работает прекрасно. Я видел жалобы людей на кривую работу сенсора при подключении по SPI и мне кто-то писал, что не смог победить это, но у меня замечательно работает, нет никаких проблем, отличная отзывчивость, никаких тормозов. Самые мелкие иконки нажимаются хорошо.
Подводя итог, подключить такой дисплей с сенсором оказалось вполне реально. Он работоспособный на 100%, никаких затупов нет. Минусов два - всё очень мелко, нужно есть много морковки, чтобы лучше видеть или купить лупу. Второй минус связан с углами обзора - в перевернутом состоянии как у меня, с углами всё печально, надо смотреть на экран примерно под 90градусов. Если поставить его не переворачивая, то всё оч хорошо, но наклейка TRONXY сделана так, что экран надо переворачивать вверх головой, по другому позорно будет.
Внутренняя компоновка. Тут всё получилось достаточно плотно. Поэтому возникла проблема с вентилятором. Он упирался в мотор, чтобы сдвинуть его левее пришлось снять красивый розовый радиатор с одноплатника, камень обдувается ну и ладно. Когда дергал радиатор, снёс SMD, часть из которых разлетелась по полу и одноплатник превратился в тыкву. Плюс 2,5 часа на ремонт, чтоб его черти драли. Паяется паяльником всё очень плохо, прям невозможно. Фен помог.
Кой-чего напечатал. На этом всё, время вышло, шейперы в другой статье будут (обманул ахаха). Спасибо за внимание.
Затраты в рамках статьи:
LCD 2.8 - 519 р.
Оплетка - 73 р.
Вентилятор 80х10 - 146 р.
Разъемы с проводами - не помню, оч давно куплены
Еще больше интересных статей
Вплавляем гайки правильно!
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Давненько ничего не писал здесь, т.к. не было под...
Elegoo Neptune. G-Code в помощь начинающим печатникам.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Не AMS HT, а AMS 2 PRO
Сейчас не работает сайт печаль...
https://ok.ru/video/3622193531...
При нарезании модели появляютс...
Печатаю уже как год на 3д прин...
Добрый день, и снова проблема....
Ситуация такая что когда...