Octoprint. Плюшки. Часть 2. Осьминожка с сенсорным экраном за 700 рублей. Пункт 1.
Но нам пока более и не надо.
Погнали. И тут же споткнулись. Все дело в том что в этом девайсе 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 экран будет сбоку:Но если подключится кабелем, то вполне можно жить и с One. У меня уже к тому моменту была вебка и еще пару плюшек. 512 оперативы маловато.
И так. нам надо ночную сборку, а точнее минимум ядро 4.10. Может для кого-то уже и в стабле ядро будет новее. Погнали! Открываем https://www.armbian.com/download/ выбираем нужную плату и переходим по 'other download options and archive':Затем выбираем ночные билды:и качаем самый свежий билд.
Извлекаем 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
Тут мы первый раз увидим как наш экран заработал.Весь вывод консоли теперь перенаправлен на наш экран. И чисто теоретически уже работает сенсор. проверим мы его вот так:
evtest /dev/input/event0
По нажатию на сенсор должны бежать координаты. Чтобы завершить надо нажать Ctrl+C. На самом деле могут и не бежать. Если подключена клавиатура, то есть вероятность что сенсор повиснет на /dev/input/event1. Проверяем где висит вот тут:
dmesgТут есть проблема. Нажатий может не быть. Или по нажатию экран будет повисать. Все это проблемы плохого контакта... Если перепаять на проводки, то такого не будет 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В 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С ним отпадет вся эта мышиная возня. 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
Еще больше интересных статей
Flashforge AD5M Pro - доработка 2. Датчик движения филамента.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Проверка улучшения от Bondtech, k1/k1c upgrade kit
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Наконец у меня дошли руки поставить набор улучшений от Bondtech на при...
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Где то слышал на шейперы у k1....
эт о чём?
Прекрасный обзор... спасибо.
Здравствуйте, есть необходимос...
Люди-добрые, есть кто может по...
Плохо пропечатываются нависани...
RatRig vcore 3.1. Съезжают сло...