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
Еще больше интересных статей
Силиконовый носок для экструдера BIQU H2V2S Lite своими руками из доступных материалов
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Причина...
Линейная сушилка филамента.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сопла и сопли
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сколько раз этот вопрос поднимался. Сколько тем...
Комментарии и вопросы
Люди очнитесь, сушилка для пла...
а шнековые экструдеры с выходн...
Имеете ввиду торец базы? Дейс...
Добрый день. Кто пользуется сл...
Здравствуйте Попытаюсь ма...
добрый день, столкнулся с тако...