Page 1 of 2

MKS TFT35 V1.0 на RaspberryPi

Posted: 27 Jun 2022 22:33
by hardlock
Есть у меня 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 г.
sch_mks_tft35_raspberry_v0.7.gif
Выглядит страшно, но как её нарисовать более компактно и красиво - я не знаю. Есть отличие от "стандартных" конвертеров - использование инверторов 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 малины.

BOM in Excel sheet. link.
bom.gif
Зато печатная плата получилась довольно компактной (H 52 * W 51 мм). В ревизии 0.4 (на фото ниже) я решил оставить кучку перемычек вокруг U4 для экспериментов, чтобы не резать дорожки, а на скринах версия платы v0.6 - уже без этих перемычек, зато с кучкой других, позволяет подключать экран к SPI_0 или SPI_1. Соответственно для подключения к SPI_0 запаиваем 5 перемычек 0603 в места маркированные "0", а для SPI_1 - "1". Все конденсаторы "С" - 0603 0,1mkF.
Screenshot_top.png
Screenshot_bottom.png
UPD 11.07.2022
По просьбе добавил на плату микросхему RTC (Real Time Clock) - DS3231 c обвязкой и резервной батарейкой CR2032. Теперь малина может быть дату и время не из интернета, при автономной работе. Других отличий на плате нет. RTC можно не распаивать - на остальной функционал не влияет.
Screenshot_top_v0.7.png
Screenshot_bottom_v0.7.png
Скачать плату в формате Gerber, пригодную для заказа, можно во вложениях converter_tft35_v0.6.rar, или новая версия - converter_tft35_v0.7.rar пароль на архивы:
pass.png
pass.png (563 Bytes) Viewed 8338 times
Платы версии 0.6 и 0.7 не изготавливались (не проверялись). Если найдёте ошибки визуально - пишите, исправлю.

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

Пока пара фото собранной платы (старая ревизия - 0.4) и работающего экрана (тач тоже работает - пока поверьте, видео будет позже).
IMG_20220627_231342.jpg
IMG_20220627_234400.jpg
IMG_20220627_231320.jpg
За качество пайки прошу не пинать - собирал в промежутках между работой, поэтому спаяно не очень аккуратно - "для проверки макета - пойдёт".

Доработка на плате экрана.
Не знаю почему, но в экранчике MKS TFT35 V1.0 не распаян выход прерывания от тачскрина. Это легко исправить всего одной перемычкой. Справится даже ребёнок. Без этой доработки опроса сенсора не будет, соответственно тач не работает в системе.
sch_mks_tft35_int_ts.GIF
На плате перемычка выглядит вот так:
IMG_20220707_094515.jpg
Удалось проверить экран FlyingBear Reborn-TS V3.0 от Flyingbear Ghost 5.
Отлично работает, доработка такая же, за исключением того, что разъём FFC перевёрнут... Сути это не меняет, подключается своим родным шлейфом без проблем.
IMG_20220708_115706.jpg
IMG_20220708_120006.jpg
IMG_20220708_120022.jpg
Видео для оценки скорости работы интерфейса. Тач не тормозит - просто дисплейный модуль фактически ни на что не опирается - не удобно тыкать в него одной рукой, а второй снимать...

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


В подвале принтера это может выглядеть вот так:
IMG_20220629_103558.jpg
Экран на родном месте, для подключения используется родной шлейф.

А в моём случае экран стоит другой - 5 дюймов. При этом плата используется как плата коммутации, в том числе для удобного подключения акселерометра ADXL345, питания вентилятора и другой периферии. Как реализовано питание, лучше посмотреть в отдельной теме.
IMG_20220701_162953.jpg

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

Posted: 05 Jul 2022 22:50
by hardlock
Ниже будет инструкция по установке на Raspberry 3B, Raspbian Bullseye Legacy Lite 32bit
На момент установки и написания инструкции, версия: Linux raspberrypi 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 GNU/Linux
UPD 30.10.2023: Проверено, всё отлично работает.
- Raspberry Pi imager v1.8.3
- Raspberri Pi OS (Legacy) Lite (2023-05-03) - Raspbian GNU/Linux 11 (bullseye)
- Linux raspberry3b 6.1.21-v7+ #1642 SMP Mon Apr 3 17:20:52 BST 2023 armv7l

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

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

Code: Select all

sudo apt install git
Далее устанавливаем KIAUH, через который будем устанавливать klipper и все его составляющие. Последовательно вводим команды:

Code: Select all

cd ~
git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh
Если всё пошло по плану, после третьей команды мы увидим "окно" установки.
kiauh_menu.PNG
Устанавливаем последовательно следующие части. Если получаете ошибку на каком-то этапе - продолжать не нужно, т.к. надо вначале разобраться в причине возникновения ошибке, устранить её, и заново поставить пакет который недоустановился.
Klipper (1 шт) - обязательно. Если у Вас будет два и более принтера работать от одной малины, то я вобще не понимаю, что вы делаете в столь нубской инструкции - листайте дальше!
Moonraker (1 шт) - обязательно.
Fluidd или Mansail на выбор. Мой выбор Fluidd.
Klipperscreen (а иначе на кой чёрт мы подключали экран?)

Иногда в процессе установки Klipperscreen выскакивает сообщение о необходимости обновить PIP, на всякий случай приведу команду тут (путь нужно скорректировать, если у Вас имя пользователя не "pi"):

Code: Select all

/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 из архива.
в консоли вводим следующие команды (компилируем оверлеи):

Code: Select all

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
в консоли должны увидеть что-то похожее:
overlay_compile.PNG
2) Активируем SPI0 и SPI1 на RaspberryPi.
Для этого необходимо отредактировать файл /boot/config.txt

Code: Select all

sudo nano /boot/config.txt
ищем строку "#dtparam=spi=on" и раскоментируем её - убираем "#" вначале строки,
ниже добавляем (для активации SPI1):

Code: Select all

dtoverlay=spi1-2cs,cs0_pin=16,cs1_pin=06
3) подключаем оверлей экрана
Если экран у нас подключен к SPI0, то в конец файла /boot/config.txt добавляем следующие строки:

Code: Select all

###### 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, то в предпоследней строке нужно указать другой оверлей:

Code: Select all

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).
выполняем команды последовательно:

Code: Select all

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
Создаём файл сервиса:

Code: Select all

sudo nano /etc/systemd/system/fbcp.service
Добавляем в него следующие строки:

Code: Select all

[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).

Разрешаем работу сервиса:

Code: Select all

sudo systemctl enable fbcp.service
Перезагружаемся

Code: Select all

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

Code: Select all

sudo nano /etc/X11/Xwrapper.config
добавляем строку "needs_root_rights=yes", если она отсутсвует, сохраняем (Ctrl+S)и выходим из редактора nano (Ctrl+X).
Перезапускаем KlipperScreen:

Code: Select all

sudo service KlipperScreen restart

5) установка xinput-calibrator
Для калибровки сенсора необходимо установить калибратор. Вначале ставим необходимые библиотеки:

Code: Select all

sudo apt install libxi-dev libx11-dev libxrandr-dev
затем устанавливаем и компилируем сам калибратор:

Code: Select all

git clone https://github.com/kreijack/xlibinput_calibrator.git
cd xlibinput_calibrator/src/
make
ls -l xlibinput_calibrator
Далее, находясь в папке "~/xlibinput_calibrator/src/", запускаем калибратор:

Code: Select all

DISPLAY=:0 ./xlibinput_calibrator --output-file-x11-config=x11_config.txt
В это время на экране появится предложение потыкать в крестики - исполняем. Результатом работы будут несколько строк в консоли, типа такого:
xlibinput_calibrator_result.PNG
xlibinput_calibrator_result.PNG (10.95 KiB) Viewed 8333 times
Добавляем этот результат в файл:

Code: Select all

sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf
Оставлю тут свои параметры для примера:

Code: Select all

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
Перезагружаемся

Code: Select all

sudo reboot
Должен корректно заработать тачскрин.

Re: MKS TFT35 V1.0 на RaspberryPi

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

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

Слава Україні ! Героям Слава !

Re: MKS TFT35 V1.0 на RaspberryPi

Posted: 07 Jul 2022 16:45
by hardlock
vasylll wrote:Не знаю или точно 1 к 1 совместимы 40 pin Orange Pi и Raspberry Pi.
совместимы (SPI0, питальники и земли на тех же местах), но проблема в другом - на Armbian не работает ili9488. Сейчас пытаюсь это решить.
vasylll wrote:Если есть лишняя плата "голая" или готовая, спаянная, то взял бы ! Купил.
К сожалению я не отправлю из локации, где сейчас нахожусь...

Re: MKS TFT35 V1.0 на RaspberryPi

Posted: 07 Jul 2022 16:50
by vasylll
hardl0ck wrote:совместимы, но проблема в другом - на Armbian не работает ili9488. Сейчас пытаюсь это решить.
ох, если бы решилось, то было бы очень хорошо !
А там уже как то плату где то заказал.

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

Слава Україні ! Героям Слава !

Re: MKS TFT35 V1.0 на RaspberryPi

Posted: 11 Jul 2022 15:14
by hardlock
Добавил на схему и плату RTC DS3231. Всё добавил в первый пост. Версия 0.7 от 11.07.2022

MKS TFT35 V1.0 на RaspberryPi

Posted: 18 Nov 2022 20:16
by zzavarci
Извините за перевод, я использую переводчик. У меня есть несколько вопросов, которые меня интересуют.
1. Какой порт SPI следует использовать для наиболее эффективного использования экрана?
2. Можно ли использовать дисплей и акселерометр в одном spi порте? это пробовали
3. Я не смогу сделать плату. Я сделаю это с помощью перфокарты. Верна ли приведенная выше диаграмма на 100%?
4. Могу ли я перетащить 40-контактный экран в spi-режим с помощью некоторых прыжков.

MKS TFT35 V1.0 на RaspberryPi

Posted: 19 Nov 2022 20:26
by hardlock
zzavarci, write in english, please. It will be more convenient for all users of the forum.
1. SPI0 more preferred.
2. You cannot use the display and the accelerometer on the same port at the same time. But you can temporarily turn off the display to use the accelerometer. It's not every day that you tune in resonances. Another option is to connect the accelerometer to another MCU, such as an Arduino nano.
3. The diagram is 100% accurate. The boards have already been made by several people - without errors.
4. It is not clear what you wanted to say, apparently due to translation difficulties.

MKS TFT35 V1.0 на RaspberryPi

Posted: 10 Dec 2022 03:43
by zzavarci
I mean can we get the 40 pin screen to spi mode with some jumpers. Because I saw a source that says the 8080 processor of the screen has a mode option, but I don't fully understand.

MKS TFT35 V1.0 на RaspberryPi

Posted: 10 Dec 2022 06:14
by hardlock
yes, you can put the ILI9488 screen driver into SPI mode, I did it. but, unfortunately, in Linux there are no libraries for working with ILI9488 in SPI mode. This is detailed in the text of the first post. I think the translator will help you.

MKS TFT35 V1.0 на RaspberryPi

Posted: 22 Dec 2022 07:58
by zzavarci
Dont work I use this circuit for spi0. Idont know hardware or software problem
https://www.hizliresim.com/lye47ao circuit
hgq0ice.png
https://www.hizliresim.com/eg57s5b problem
eg57s5b.jpg

MKS TFT35 V1.0 на RaspberryPi

Posted: 22 Dec 2022 09:19
by hardlock
zzavarci wrote: 22 Dec 2022 07:58 Idont know hardware or software problem
I checked your diagram. Didn't find any errors.
Could it be a board error?
In the photo - the backlight turned on, but the controller was not initialized. When initializing the screen driver, it turns black.
I would start by checking for pulses on the SPI0 bus.

MKS TFT35 V1.0 на RaspberryPi

Posted: 22 Dec 2022 11:23
by zzavarci
İf my diagram is correct my board dont have any error I got Professional help in card design and assembly. Only the hc04 package is different and i use cd4040. I think i have software problem

MKS TFT35 V1.0 на RaspberryPi

Posted: 22 Dec 2022 12:50
by hardlock
zzavarci, the circuit is very critical to the applied components. CD4040 is significantly slower than 74HC4040 (check datasheet). Perhaps the problem in this. The exception is 74HC04. You can try to install this chip with another one, for example, a CD74HC04

MKS TFT35 V1.0 на RaspberryPi

Posted: 24 Dec 2022 14:54
by zzavarci
The chip is really important. Its work. But the touch screen works backwards, the screen is normal. The last question is are capacitors really necessary?

MKS TFT35 V1.0 на RaspberryPi

Posted: 24 Dec 2022 15:15
by hardlock
zzavarci wrote: 24 Dec 2022 14:54 But the touch screen works backwards, the screen is normal.
Just calibrate touchscreen.
zzavarci wrote: 24 Dec 2022 14:54 is are capacitors really necessary?
Yes. In digital circuits, power supply capacitors are very important. They ensure the purity of the power supply and the stability of the circuit.

MKS TFT35 V1.0 на RaspberryPi

Posted: 26 Dec 2022 08:28
by hardlock
zzavarci, May I ask you to upload your PCB version? Maybe someone will come in handy.

MKS TFT35 V1.0 на RaspberryPi

Posted: 26 Dec 2022 22:43
by zzavarci
The card looks very unprofessional to me. maybe i will upload the new version when i draw it. I am encountering a new problem. Raspberrypi sometimes chooses power supply and gives voltage error. As a result of this error, the console opens on the screen. I see the error in the console, but the klipperscreen does not start. Is there any way to resolve this error.

MKS TFT35 V1.0 на RaspberryPi

Posted: 04 Jan 2023 04:08
by Matic_LMS
Hi there! I just made the board and connected everything, but the screen is just white. I have tried reinstalling the software and changing the jumpers, and nothing... Can you help me, I really want this to work...

MKS TFT35 V1.0 на RaspberryPi

Posted: 04 Jan 2023 12:19
by hardlock
Matic_LMS,
1) what chips did you use?
2) send a photo of the assembled board.

MKS TFT35 V1.0 на RaspberryPi

Posted: 04 Jan 2023 21:27
by Matic_LMS
This is my board and the chips I bought... https://files.fm/u/bpfjdzj6g

Sory, my bad...I have added those 3 pins now, for the 40 pin PI GPIO, because I didnt have any anymore...
Now the screen works bot only shows the terminal at boot, and then only the "_" like it is waiting for input...
How do I get it to display klipper screen?

MKS TFT35 V1.0 на RaspberryPi

Posted: 04 Jan 2023 23:05
by zzavarci
setup firmware again. and dont use some error code

MKS TFT35 V1.0 на RaspberryPi

Posted: 05 Jan 2023 02:51
by Matic_LMS
Here are the photos of how my screen looks... And the KlipperScreen log file is attached... Do you have any Idea what is wrong, I have tried your suggested fixes and the ones on the Klipper screen website but nothing works...

https://mega.nz/folder/Q6oxkTKL#Sp9A3sKRHkWwXBe44wOLoA

MKS TFT35 V1.0 на RaspberryPi

Posted: 05 Jan 2023 08:34
by hardlock
Matic_LMS wrote: 04 Jan 2023 21:27 How do I get it to display klipper screen?
Please use klipperscreen troubleshooting for solve you trouble.

MKS TFT35 V1.0 на RaspberryPi

Posted: 10 Jan 2023 04:06
by zzavarci
Circuit and software work perfectly. Just like mkspi. I want to rotate the screen 180 degrees. Have ease of assembly. Also thank you very much @hardlock