Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

MKS TFT35 V1.0 на RaspberryPi

Раздел посвящённый 3D печати и всему связанному с ней.

MKS TFT35 V1.0 на RaspberryPi

Сообщение hardlock » 27 июн 2022 22:33

Есть у меня 3D принтер (Two Trees Sapphire Plus v 1.1), и при переезде на klipper возникло неудобство, которое пришлось преодолевать дополнительными вложениями - родной экран принтера не может быть использован для отображения информации о печати и управления принтером. Klipper просто не умеет выводить информацию на SPI экраны. У меня всё решилось приобретением 5-ти дюймового экрана (BIGTREETECH BTT PI TFT50V2.0), но это дополнительно $50 USD. И всё это время, меня, как и других пользователей принтеров Two Trees Sapphire (в Flying bear ghost такие же экранчики)), мучает вопрос: "как же заставить родной экран отображать информацию, хоть и не очень удобно, т.к. мелкий".

Тут была найдена информация по подключению похожего экрана. Но в TS35 используется ЖКИ с драйвером ILI9486, а в TFT35 v1.0 применён ЖКИ с драйвером ILI9488. Хоть они и очень близки, но есть одно существенное отличие, которое не позволяет использовать TFT35 в режиме SPI - стандартная библиотека не умеет передавать информацию в формате RGB666 (18 bit), только RGB565 (16 bit), в ili9488 не умеет принимать RGB565 (16 bit) в SPI режиме... Надеюсь не запутались?

Поэтому месяц поисков решений, аппаратная доработка экрана MKS TFT35 v1.0 для работы в режиме SPI, попытки компиляции своей библиотеки для работы в формате RGB666 (18 bit), осознание, что рядовой пользователь это не осилит (как впрочем и я не до конца смог)... В итоге пришёл к решению, что проще собрать переходник-конвертер SPI-parallel, как это делают на многих дешевых экранчиках типа Waveshare MPI3501 и многих других. Зато это позволит использовать только стандартные библиотеки.

Ну а раз будет какая-то плата-переходник, то почему бы на ней не разместить удобные разъёмы, которые часто применяются для подключений в 3D принтере UARTa, управление питанием принтера, акселерометра, вентилятора обдува малинки и т.д.
В итоге родилась вот такая Схема. 04.07.2022 г.


Выглядит страшно, но как её нарисовать более компактно и красиво - я не знаю. Есть отличие от "стандартных" конвертеров - использование инверторов U4.3-U4.6 для задержки сигнала, что позволило "разогнать" экран до 30Мгц. Теперь 20 кадров в секунду - легко.

Разъёмы:
1) 32pin FFC/FPC с шагом 1мм, нижние контакты. для подключения шлейфа экрана. Aliexpress.
2) FAN (2pin XH2.54) - подключение 5В вентилятора обдува малины.
3) PRINTER (4pin XH2.54) - подключение платы принтера по UART (Rx/Tx) и питание 5В.
4) POWER (5pin XH2.54) - подключение питания малины через GPIO (ВНИМАНИЕ, опасно!!! защиты малины не работают)
5) SPI_0 (6pin XH2.54) - SPI0 с питанием 5В.
6) AUX (6pin XH2.54) - оставшиеся gpio и 5В на всякий случай.
7) SPI_1 (6pin XH2.54) - SPI1 с питанием 5В.
8) GPIO 40pin (2*20) PBD-40 - подключение к gpio малины.

Зато печатная плата получилась довольно компактной (H 52 * W 51 мм). В ревизии 0.4 (на фото ниже) я решил оставить кучку перемычек вокруг U4 для экспериментов, чтобы не резать дорожки, а на скринах версия платы v0.6 - уже без этих перемычек, зато с кучкой других, позволяет подключать экран к SPI_0 или SPI_1. Соответственно для подключения к SPI_0 запаиваем 5 перемычек 0603 в места маркированные "0", а для SPI_1 - "1". Все конденсаторы "С" - 0603 0,1mkF.

UPD 11.07.2022
По просьбе добавил на плату микросхему RTC (Real Time Clock) - DS3231 c обвязкой и резервной батарейкой CR2032. Теперь малина может быть дату и время не из интернета, при автономной работе. Других отличий на плате нет. RTC можно не распаивать - на остальной функционал не влияет.


Скачать плату в формате Gerber, пригодную для заказа, можно во вложениях converter_tft35_v0.6.rar, или новая версия - converter_tft35_v0.7.rar пароль на архивы:
pass.png
pass.png (563 байт) Просмотров: 508


Платы версии 0.6 и 0.7 не изготавливались (не проверялись). Если найдёте ошибки визуально - пишите, исправлю.

Платы v0.4 собраны, протестированы и выявлено следующее:
При подключении экрана к SPI0 частота обновлений экрана почти совпадает с задаваемой в параметрах оверлея (20 FPS), но тогда некуда подключать акселерометр ADXL345 - на SPI1 он работать отказался (на 4й малине можно победить).
При подключении экрана к SPI1 частота обновлений экрана падает в 2 раза и становится не совсем комфортно работать, хотя экран обновляется по ощущениям, как на Marlin FW.
В причинах такого поведения я не совсем разобрался, знаю только что SPI1 в 3B и 3B+ какой-то немного урезанный, не работает в режимах 0 и 3 (из-за чего и не работает акселерометр на клиппере на SPI1). Поэтому делал возможность выбора при сборке платы.

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

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

Доработка на плате экрана.
Не знаю почему, но в экранчике MKS TFT35 V1.0 не распаян выход прерывания от тачскрина. Это легко исправить всего одной перемычкой. Справится даже ребёнок. Без этой доработки опроса сенсора не будет, соответственно тач не работает в системе.

На плате перемычка выглядит вот так:


Удалось проверить экран FlyingBear Reborn-TS V3.0 от Flyingbear Ghost 5.
Отлично работает, доработка такая же, за исключением того, что разъём FFC перевёрнут... Сути это не меняет, подключается своим родным шлейфом без проблем.


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

Ещё одно видео снял, установив экран на место. Для оценки удобства использования. И таки я хочу вам сказать - вполне можно пользоваться. Конечно, на 5 дюймовом можно обойтись без стилуса, но зато тут сохранён внешний вид принтера и затрачено минимум средств на такую модернизацию.


В подвале принтера это может выглядеть вот так:

Экран на родном месте, для подключения используется родной шлейф.

А в моём случае экран стоит другой - 5 дюймов. При этом плата используется как плата коммутации, в том числе для удобного подключения акселерометра ADXL345, питания вентилятора и другой периферии. Как реализовано питание, лучше посмотреть в отдельной теме.
Вложения
converter_tft35_v0.6.rar
(31.27 КБ) Скачиваний: 23
converter_tft35_v0.7.rar
(34.01 КБ) Скачиваний: 23
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3941
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

MKS TFT35 V1.0 на RaspberryPi (установка на Raspbian)

Сообщение hardlock » 05 июл 2022 22:50

В процессе написания/редактирования.

Ниже будет инструкция по установке на Raspberry 3B, Raspbian Bullseye Legacy Lite 64bit
На момент установки и написания инструкции, версия: Linux raspberrypi 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 aarch64 GNU/Linux
Почему именно Bullseye? Да потому что на Buaster ни в какую не хотят ставится nimpy, необходимые для работы акселерометра ADXL345 в клиппере. Focal не пробовал. Если проверю - отпишусь.

На данном этапе возможно 3 варианта:
1) У Вас ничего не установлено, тогда переходим к пункту "Установка с нуля".
2) У Вас уже работает klipper, без экрана (без Klipperscreen). Тогда следуем по инструкции, только доустанавливаем Klipperscreen.
3) У Вас уже есть Klipperscreen (например HDMI), а вы хотите подключить родной 3,5 дюймовый экранчик. - Переходим к настройке TFT35.

Установка с "нуля"
Итак, с помощью Raspberry Pi Imager заливаем указанный выше образ на microSD карточку. Можно выбрать 32бита - разницы я не заметил, ставил на оба варианта.
после запуска системы и подключения по SSH через PUTTY (надеюсь это не нужно расписывать) устанавливаем GIT (в Lite версии ос он не установлен в дистрибутиве:
Код: Выделить всё
sudo apt install git

Далее устанавливаем KIAUH, через который будем устанавливать klipper и все его составляющие. Последовательно вводим команды:
Код: Выделить всё
cd ~
git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh

Если всё пошло по плану, после третьей команды мы увидим "окно" установки.

Устанавливаем последовательно следующие части. Если получаете ошибку на каком-то этапе - продолжать не нужно, т.к. надо вначале разобраться в причине возникновения ошибке, устранить её, и заново поставить пакет который недоустановился.
Klipper (1 шт) - обязательно. Если у Вас будет два и более принтера работать от одной малины, то я вобще не понимаю, что вы делаете в столь нубской инструкции - листайте дальше!
Moonraker (1 шт) - обязательно.
Fluidd или Mansail на выбор. Мой выбор Fluidd.
Klipperscreen (а иначе на кой чёрт мы подключали экран?)

Иногда в процессе установки Klipperscreen выскакивает сообщение о необходимости обновить PIP, на всякий случай приведу команду тут (путь нужно скорректировать, если у Вас имя пользователя не "pi"):
Код: Выделить всё
/home/pi/.KlipperScreen-env/bin/python -m pip install --upgrade pip


Если Все предыдущие шаги по установке выполнены успешно и в браузере вы видите рабочий Fluidd, то поздравляю - дистрибутив нам подошёл на 100% ))).
Если у Вас уже установлен и работает Klipper, но без Klipperscreen, то достаточно доустановить только последний.
Если у Вас уже работает всё, в том числе Klipperscreen на HDMI то можно продолжать установку.

Настройка TFT35
1) создаём Overlay
копируем в домашний каталог (/home/pi/) файлы оверлеев mkstft35_rpi.dts и mkstft35_rpi_spi1.dts из архива.
в консоли вводим следующие команды (компилируем оверлеи):
Код: Выделить всё
sudo dtc -@ -I dts -O dtb -o /boot/overlays/mkstft35_rpi.dtbo ~/mkstft35_rpi.dts
sudo dtc -@ -I dts -O dtb -o /boot/overlays/mkstft35_rpi_spi1.dtbo ~/mkstft35_rpi_spi1.dts

в консоли должны увидеть что-то похожее:


2) Активируем SPI0 и SPI1 на RaspberryPi.
Для этого необходимо отредактировать файл /boot/config.txt
Код: Выделить всё
sudo nano /boot/config.txt

ищем строку "#dtparam=spi=on" и раскоментируем её - убираем "#" вначале строки,
ниже добавляем (для активации SPI1):
Код: Выделить всё
dtoverlay=spi1-2cs,cs0_pin=16,cs1_pin=06


3) подключаем оверлей экрана
Если экран у нас подключен к SPI0, то в конец файла /boot/config.txt добавляем следующие строки:
Код: Выделить всё
###### MKS TFT35
hdmi_force_hotplug=1
hdmi_cvt=hdmi_cvt=480 320 60 1 0 0 0
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
display_rotate=0

dtoverlay=mkstft35_rpi,rotate=270,speed=24000000,touch,touchgpio=17,fps=20
###### MKS TFT35

если экран у нас подключен к SPI1, то в предпоследней строке нужно указать другой оверлей:
Код: Выделить всё
dtoverlay=mkstft35_rpi_spi1,rotate=270,speed=24000000,touch,touchgpio=17,fps=20

Сохраняем (Ctrl+S)и выходим из редактора nano (Ctrl+X).

Важное замечание!
На момент экспериментов, при работе через SPI0 частота обновления на глаз соответсвует установленной (около 20 кадров в секунду). А при работе через SPI1частота обновления почти в 2 раза ниже. Не то чтобы совсем нельзя было пользоваться, но комфорт теряется. Экран работает как на марлине.

Почему вообще заморочился подключением экрана на SPI1? Потому что на SPI1 (на Raspberry 3B и 3B+) нельзя подключить акселерометр ADXL345 для использовании в клиппере. Поэтому, когда экранчик подключен на SPI0, для теста резонансов нужно будет выключать (закомментировать) оверлей дисплея, либо использовать другой MCU для подключения акселерометра. А это не всегда удобно... Но я сделал возможность выбора при сборке платы.
4) установка FBCP
необходимо для копирования вывода первичного framebuffer во вторичный (например как у нас - FBTFT).
выполняем команды последовательно:
Код: Выделить всё
sudo apt-get install cmake
cd ~
sudo git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo install fbcp /usr/local/bin/fbcp


Создаём файл сервиса:
Код: Выделить всё
sudo nano /etc/systemd/system/fbcp.service

Добавляем в него следующие строки:
Код: Выделить всё
[Unit]
Description=fbcp
After=KlipperScreen.service
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/local/bin/fbcp

[Install]
WantedBy=multi-user.target

Сохраняем (Ctrl+S)и выходим из редактора nano (Ctrl+X).

Разрешаем работу сервиса:
Код: Выделить всё
sudo systemctl enable fbcp.service

Перезагружаемся
Код: Выделить всё
sudo reboot


После загрузки вы должны увидеть вначале строки консоли, после чего запустится Klipperscreen. Если он не запустился, то необходимо пробежаться по его траблшуту.
Из опыта - наиболее частая ошибка: "xf86OpenConsole: Cannot open virtual console 2 (Permission denied)"
Необходимо всего лишь добавить в файл "/etc/X11/Xwrapper.config" одну строку "needs_root_rights=yes".
для этого в консоли вводим:
Код: Выделить всё
sudo nano /etc/X11/Xwrapper.config

добавляем строку "needs_root_rights=yes", если она отсутсвует, сохраняем (Ctrl+S)и выходим из редактора nano (Ctrl+X).
Перезапускаем KlipperScreen:
Код: Выделить всё
sudo service KlipperScreen restart



5) установка xinput-calibrator
Для калибровки сенсора необходимо установить калибратор. Вначале ставим необходимые библиотеки:
Код: Выделить всё
sudo apt install libxi-dev libx11-dev libxrandr-dev

затем устанавливаем и компилируем сам калибратор:
Код: Выделить всё
git clone https://github.com/kreijack/xlibinput_calibrator.git
cd xlibinput_calibrator/src/
make
ls -l xlibinput_calibrator

Далее, находясь в папке "~/xlibinput_calibrator/src/", запускаем калибратор:
Код: Выделить всё
DISPLAY=:0 ./xlibinput_calibrator --output-file-x11-config=x11_config.txt

В это время на экране появится предложение потыкать в крестики - исполняем. Результатом работы будут несколько строк в консоли, типа такого:

Добавляем этот результат в файл:
Код: Выделить всё
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf

Оставлю тут свои параметры для примера:
Код: Выделить всё
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option          "CalibrationMatrix"     "0.003395 -1.121566 1.056742 1.102245 -0.008974 -0.048807 0.000000 0.000000 1.000000 "
EndSection

Перезагружаемся
Код: Выделить всё
sudo reboot

Должен корректно заработать тачскрин.
Вложения
DTS.rar
(2.94 КБ) Скачиваний: 7
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3941
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: MKS TFT35 V1.0 на RaspberryPi

Сообщение vasylll » 07 июл 2022 16:37

Красиво всё сделано и грамотно !!! :good:
Хотелось бы тоже попробовать !
Только у меня сейчас работает Orange Pi PC Plus, Focal, Mainsail ...
Недели две как на клиппер сел. Пока осваиваю.
Не знаю или точно 1 к 1 совместимы 40 pin Orange Pi и Raspberry Pi.
Буду проверять.

Если есть лишняя плата "голая" или готовая, спаянная, то взял бы ! Купил.
Заказать платы на jlcpcb.com сейчас не отправляют в Украину.
Позавчера ответ получил, чтобы искал на другой адрес, на другую страну.

Слава Україні ! Героям Слава !
vasylll
Пробегал мимо
 
Сообщения: 3
Зарегистрирован: 06 июл 2022 18:18
Откуда: Ukraine

Re: MKS TFT35 V1.0 на RaspberryPi

Сообщение hardlock » 07 июл 2022 16:45

vasylll писал(а):Не знаю или точно 1 к 1 совместимы 40 pin Orange Pi и Raspberry Pi.

совместимы (SPI0, питальники и земли на тех же местах), но проблема в другом - на Armbian не работает ili9488. Сейчас пытаюсь это решить.
vasylll писал(а):Если есть лишняя плата "голая" или готовая, спаянная, то взял бы ! Купил.

К сожалению я не отправлю из локации, где сейчас нахожусь...
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3941
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: MKS TFT35 V1.0 на RaspberryPi

Сообщение vasylll » 07 июл 2022 16:50

hardl0ck писал(а):совместимы, но проблема в другом - на Armbian не работает ili9488. Сейчас пытаюсь это решить.

ох, если бы решилось, то было бы очень хорошо !
А там уже как то плату где то заказал.

Пробовал три старых Андройда-мобильника-планшета применить в качестве KlipperScreen-а - не получилось ничего :(
И вроде по инструкции все делал - так и ничего не вышло.
Пока забросил, вернусь позже к этому.
Не хватает опыта. :(

Слава Україні ! Героям Слава !
vasylll
Пробегал мимо
 
Сообщения: 3
Зарегистрирован: 06 июл 2022 18:18
Откуда: Ukraine

Re: MKS TFT35 V1.0 на RaspberryPi

Сообщение hardlock » 11 июл 2022 15:14

Добавил на схему и плату RTC DS3231. Всё добавил в первый пост. Версия 0.7 от 11.07.2022
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3941
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua


Вернуться в 3D печать



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron