Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.

vasyna
Идет загрузка
Загрузка
11.05.2017
14588
48
Техничка

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

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

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

33
Я давно отказался от экрана как такого на принтере. Тем более печать велась с окты. В случае чего хвать телефон и быстренько там на паузу или еще чего. Но вот как-то кинулся, а смарт далеко, пк будет включаться 30 секунд, пока браузер - еще 10. В общем будет упущена вспышка. Еще в те далекие времена заказа апельсины (orangePi One) была заказана более взрослая версия (OrangPi PC с гигом оперативы и нормально развернутым GPIO) и вот такой экран (https://ru.aliexpress.com/item/3-5-Inch-320-X-480-TFT-LCD-Display-Touch-Board-For-Raspberry-Pi-2-Model/32631471521.html):
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Это 3.5'' экран на простой и убогой матрице с разрешением 320*480 пикселей и унылым емкостным сенсором.

Но нам пока более и не надо.

Погнали. И тут же споткнулись. Все дело в том что в этом девайсе 2 устройства - экран и сенсор. И подключены они на 2-х SPI интерфейсах. Но китаяса не удосужился из коробки сделать 2 SPI интерфейса. Точнее не так, 2 SPI_CS. У нас из коробки на всех дистрибах всех ОС токльо SPI_CS1. Т.е. только сенсор. И тот через нацатое место, не так красиво как в малине. Вот мои мытарства по подключения чисто экрана:

http://4pda.ru/forum/index.php?showtopic=750921&st=1800#entry58412437 29.03.2017 на 4pda появляется коммент от камрада chupy (http://4pda.ru/forum/index.php?showuser=1756140) http://4pda.ru/forum/index.php?showtopic=750921&st=2100#entry59863968 с текстом:
Для запуска тача берем nightly сборку armbian на ядре 4.10, включаем оверлеи spi-spidev и spi-add-cs1. Подключаем cs тача на пин который указан в readmi в каталоге с оверлеями. После перезагрузки появляется два cs, cs0 и cs1, на cs0 подключаем экран на cs1 тач. Экран на cs1 не завелся. После этого запускаем экран модулем fbtft_device, не забываем указать пины для reset и dc. Затем качаем ,устанавливаем и запускаем модуль ads7846_device, указываем cs=1 и gpio_pendown= пину куда подключили 'TP_IRQ'. В выводе dmesg у нас появляется на spi0.0 экран и на spi0.1 тач. После запуска модуля ads7846_device должен подгрузиться модуль ads7846, но на моей сборке armbian его нет, а без него тач не получает IRQ. Выхода два, пересобираем ядро с поддержкой модуля ads7846, или ищем в интернете исходник этого модуля под наше ядро (ads7846.c), компилим и подгружаем вручную. Со второй попытки я нашел подходящий модуль. Всё, после запуска ads7846 видим в dmesg что у нас тач получил IRQ, запускаем 'evtest /dev/input/eventX', где X это наш тач, тыкаем в экран и радуемся.
Это было что-то. Оверлеи - грубо говоря переопределение определенных в ядре интерфейсов. Читай расширение базового функционала. Я немного потыкался, но запустить так и не вышло, хотя по заверениям камрада 'там на 5 минут возни'. Обратился в личку и понеслось приключение на 4 часа. Итогом будет сей мануал. Который где-то за столько и выполняется ) Моя ошибка была в том что я изначально не верно перевел мануал (https://docs.armbian.com/Hardware_Allwinner_overlays/) и вместо param_spidev_spi_bus=0 я по логике вещей описывал param_spidev_spi_bus=1...

Кстати все ниже следующее делалось уже на OrangePi PC. Ибо у нее гребенка развернута правильно стороной и экран находится над платой. На OrangePi One экран будет сбоку:
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Но если подключится кабелем, то вполне можно жить и с One. У меня уже к тому моменту была вебка и еще пару плюшек. 512 оперативы маловато.

И так. нам надо ночную сборку, а точнее минимум ядро 4.10. Может для кого-то уже и в стабле ядро будет новее. Погнали! Открываем https://www.armbian.com/download/ выбираем нужную плату и переходим по 'other download options and archive':
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Затем выбираем ночные билды:
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
и качаем самый свежий билд.

Извлекаем img файл с образом и скажем с помощью Rufus прошиваем как DD образ на карту. Вставляем, ждем загрузки, подключаемся удобным для нас SSH клиентом, вводим лог/пасс и погнали (для тех кто в танке. в nano надо нажимать Ctrl + O, Enter и потом Ctrl + X - это сохранит файл и закроет редактор):

su

Пароль от рута.

Добавляем армбиановский репозитарий:

echo 'deb http://apt.armbian.com $(lsb_release -cs) main utils $(lsb_release -cs)-desktop' > /etc/apt/sources.list.d/armbian.list



apt-key adv --keyserver keys.gnupg.net --recv-keys 0x93D6889F9F0E78D5

apt-get update

apt-get upgrade

apt-get dist-upgrade



nano /boot/armbianEnv.txt

Добавляем (этим мы активируем те нужные для нас оверлеи для второго SPI):

overlays=spi-spidev spi-add-cs1

param_spidev_spi_bus=0

param_spidev_spi_cs=1


nano /etc/modules-load.d/fbtft.conf

Вставляем (это к экрану):

fbtft

flexfb

fbtft_device

nano /etc/modprobe.d/fbtft.conf


Вставляем (опции самого экрана):

options fbtft_device rotate=90 name=piscreen speed=16000000 gpios=reset:2,dc:71 txbuflen=32768 fps=25

nano /etc/rc.local


Вставляем (вывод консоли сразу на экран при загрузке):



con2fbmap 1 1


Теперь качаем 'драйвер' сенсора (качать именно по такой ссылке, потом переименовываем):

mkdir ds7846

cd ds7846

wget https://sourceforge.net/p/openipmi/linux-ipmi/ci/3821a065f5672c430a088ae68b4da2a2d2b34106/tree/drivers/input/touchscreen/ads7846.c?format=raw

mv ds7846.c?format=raw ds7846.c

nano Makefile


Вставляем:

obj-m := ads7846.o

KDIR := /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

all:$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:$(MAKE) -C $(KDIR) M=$(PWD) clean

install:$(MAKE) -C $(KDIR) M=$(PWD) modules_install


(после all:, clean: и install: ставим перевод строки (enter) и символ табуляции (TAB на клавиатуре))

make

make install

depmod


Теперь непосредственно сам сенсор:

cd ..

git clone https://github.com/notro/fbtft_tools/

(или git clone https://github.com/notro/fbtft_tools/tree/master/ads7846_device но кажется первое)

cd fbtft_tools/ads7846_device

make

make install

depmod

nano /etc/modprobe.d/ads7846_device.conf


Вставляем:

options ads7846_device model=7846 cs=1 gpio_pendown=1 keep_vref_on=1 swap_xy=1 pressure_max=255 x_plate_ohms=60 x_min=200 x_max=3900 y_min=200 y_max=3900

nano /etc/modules-load.d/ads7846.conf


Вставляем:

ads7846

ads7846_device

reboot


Тут мы первый раз увидим как наш экран заработал.
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Весь вывод консоли теперь перенаправлен на наш экран. И чисто теоретически уже работает сенсор. проверим мы его вот так:

evtest /dev/input/event0

По нажатию на сенсор должны бежать координаты. Чтобы завершить надо нажать Ctrl+C. На самом деле могут и не бежать. Если подключена клавиатура, то есть вероятность что сенсор повиснет на /dev/input/event1. Проверяем где висит вот тут:

dmesg
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Тут есть проблема. Нажатий может не быть. Или по нажатию экран будет повисать. Все это проблемы плохого контакта... Если перепаять на проводки, то такого не будет 100%. На таком соединении временами проскакивают проблемы как с сенсором, так и с мусором на экране... Я пока смерился. Ибо все равно есть проблема... все дело в том что именно на этих сборках автологин и вообще автозапуск самого Mate не работает от слова совсем. Причину выявить пока не удалось.

Для поиграться установка X и их ручной запуск коротко и без объяснений. Нужен кто-то кто доведет дальше до ума запуск X и какого-то легковесного GUI. Прикрутить браузер с хомпейдж не великая уже проблема. Хотя я пока не смог разобраться как запускать браузер с нужным зумом. Ибо на таком разрешении не очень удобно даже в том же TouchUI.

apt-get install --no-install-recommends xserver-xorg xserver-xorg-core xfonts-base xinit libgl1-mesa-dri x11-xserver-utils -y

apt-get install mate lightdm xserver-xorg-video-fbturbo xinput-calibrator xterm -y

nano /usr/share/X11/xorg.conf.d/99-fbdev.conf

Section 'Device'

Identifier 'Allwinner A10/A13 FBDEV'

Driver 'fbturbo'

Option 'fbdev' '/dev/fb1'

Option 'SwapbuffersWait' 'true'

EndSection

nano /usr/share/X11/xorg.conf.d/99-calibration.conf

Section 'InputClass'

Identifier 'calibration'

MatchProduct 'ADS7846 Touchscreen'

Option 'Calibration' '3883 224 247 3801'

Option 'SwapAxes' '0'

EndSection

reboot

evtest /dev/input/event0

nano /etc/lightdm/lightdm.conf

autologin-user=LOGIN

autologin-user-timeout=0

Для автостарта X

systemctl set-default graphical.target

Отменить

systemctl set-default multi-user.target

reboot

Ручной запуск иксов

sudo startx

*От простого пользователя по какой-то причине иксы не стартуют


Если проблемы с сенсором, то запускаем xinput-calibrator. делается это из запущенных X от root. Т.е.

sudo startx
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
В Mate по другому немного выглядит, но смысл один в один. Это другой Gui (я и не помню какой), я пользуюсь и другим менеджером сессий, но и у него не удается пока сделать нормальный автологин. В общем тут я прошу помощи специалистов linux систем. Буду премного благодарен.

В теории существует еще 5'' экраны с разрешением 800*600 с таким же подключеним. Но те что у меня были лоты в желаниях на Ali уже пропали, а новых я не найду что-то. Ценник там не сильно много отличается. На 200 рублей кажется дороже был. В планах приобретение под принтер вот такого экранчика: https://ru.aliexpress.com/item/5-Inch-800x480-HDMI-Touch-LCD-Screen-Display-Raspberry-Pi-Pi2-Model-B-A/32703662011.html
Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
С ним отпадет вся эта мышиная возня. HDMI работает из коробки, в orangePi PC он опять же с нужной стороны. Сенсор подключается по USB и заводится автоматом. Правда ценник уже приличный...

К сожалению не могу показать скрин/фотку окты на таком экране, на текущем этапе я не парился установкой окты. Но уверяю - с 80% анзумом работать более чем терпимо. И все прекрасно видно и читабельно, на все кнопки/ссылки легко нажимать даже пальцем. При чем в TouchUI это делать куда проще.

За сим откланиваюсь. Всем спасибо за внимание.

PS. Не большой помощник.

1. Проверить вообще работу экрана:

dmesg > /dev/fb1

Какой он у вас fb1 или fb0:

ls /dev/fb TAB

Если их несколько пробуем сделать вывод на каждый. По идее экран должен как минимум почернеть, как максимум отобразить вывод dmesg. Может 'замурашить', т.е. пустить шум сверху экрана и остальной экран черный - тут только перезапуск. Даже программый reboot устроит.

2. Тогда соответственно и

con2fbmap 1 1

надо заменить на

con2fbmap 1 нужная цифра в fb куда есть результат из прошлого пункта

3. Доступные вводы смотрим так:

ls /dev/input/

4. Если не работает сенсор, то проверяем чтобы по

lsmod

У нас было:

Module Size Used by

sun8i_codec_analog 13766 1

sun4i_codec 28243 3

ir_lirc_codec 4630 0

lirc_dev 8351 1 ir_lirc_codec

snd_soc_core 115473 2 sun4i_codec,sun8i_codec_analog

sunxi_cir 3825 0

snd_pcm_dmaengine 4221 1 snd_soc_core

snd_pcm 70145 2 snd_pcm_dmaengine,snd_soc_core

sun8i_ths 3134 0

cpufreq_dt 3522 0

uio_pdrv_genirq 3354 0

uio 8012 1 uio_pdrv_genirq

thermal_sys 43168 2 cpufreq_dt,sun8i_ths

fb_ili9486 2556 1

evdev 9979 0

gpio_keys 8517 0

fbtft_device 36015 0

flexfb 10269 0

fbtft 26908 3 fb_ili9486,fbtft_device,flexfb

syscopyarea 2553 1 fbtft

sysfillrect 3090 1 fbtft

sysimgblt 1909 1 fbtft

fb_sys_fops 1396 1 fbtft

ads7846_device 7109 0

ads7846 11663 0


Последние 2 строки обязательны, хотя они могут находится и в другом месте.

PSS. После каждого обновления dist-upgrade нужно будет делать depmod как в статье. Т.е. перейти в каталог я модулем ядра depmod и потом с непосредственно самим обработчиком сенсора

cd ds7846

depmod


cd ..

cd fbtft_tools/ads7846_device

depmod

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

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

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

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