Dzisiaj chciałbym przedstawić jak uruchomić wyświetlacz ze
sterownikiem ILI9341 na Raspberry Pi. Powstało to pod wpływem artykułu z
Majsterkowa: link – stwierdziłem, że to mega prosta sprawa i w 5 krokach uda
się to zrobić… w 5 krokach… po 5 godzinach, kilku instalacji systemu w końcu
udało się to ładnie zrobić.
Postanowiłem więc napisać swoją wersję tego
poradnika. Dla 100% pewności wszystko zostało powtórzone na czystej wersji
systemu, ponieważ autor zapewne miał już na systemie zrobione kilka rzeczy,
które są niezbędne do odpalenia wyświetlacza, a nie był tego świadomy. Szczerze
już zdążyłem się przyzwyczaić, że większość poradników nie działa na 100% i
trzeba korzystać z kilku jednocześnie. Więc do działa!
Oczywiście pierwszą rzeczą jest przygotowanie karty SD z
systemem. Ja używam Jessie z dnia 18.03.2016r.
Na nowym systemie pierwszym punktem jest powiększenie używanej
partycji. W konsoli wpisujemy:
$ sudo raspi-config
I wybieramy opcję „1: Expand Filesystem”, prze okazji możemy
wejść w „advanced options” i uruchomić SPI ( o tym nie było info w bazowym
poradniku, a bez tego otrzymujemy błąd przy próbie odpalenia wyświetlacza ).
Robimy reboot systemu.
Teraz kolejna standardowa operacja – aktualizacja wszystkiego
za pomocą komendy:
$ sudo apt-get
update && sudo apt-get upgrade
Może to potrwać dość długo – u mnie około godziny. Po tym
wszystkim nie zaszkodzi reboot systemu.
Mamy dopiero „bazę” naszego systemu, polecam tutaj zrobić
sobie kopię systemu na komputerze, gdyby coś poszło nie tak nie będziemy czekać
na ponowną aktualizację itp.
Teraz podłączmy wyświetlacz do naszego raspberry – tutaj odeślę
was do Majsterkowa: link- nie będę kopiował tego bezpośrednio.
Teraz, aby sprawdzić poprawność podłączenia wpisujemy:
$ sudo
modprobe fbtft_device custom name=fb_ili9341
gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 bgr=1
Jeśli wcześniej nie uruchomiliśmy SPI wyskoczy nam błąd,
jeśli wszystko zrobiliśmy dobrze wyświetlacz powinien się zapalić. Teraz
teoretycznie po komendzie:
$ sudo FRAMEBUFFER=/dev/fb1 startx
Powinniśmy zobaczyć nasz ekran, niestety u mnie pojawia się błąd:
$
cat /dev/urandom > /dev/fb1
Na wyświetlaczu zobaczymy wtedy takie coś:
No to teraz działamy dalej. W jaki sposób przechwycić dane z głównego
ekranu na nasz – będzie do tego potrzebny programik o nazwie fbcp. Jego
instalacja przebiega następująco:
sudo apt-get install cmake
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
mkdir build
cd build/
cmake ..
make
sudo install
fbcp /usr/local/bin/fbcp
Następnie uruchamiamy go:
$ fbcp &
Teraz powinniśmy zobaczyć ekran system na wyświetlaczyku:
Ok, teraz kwestia jak zrobić, żeby wszystko uruchamiało się
ze startem systemu. Nie wiem czemu u mnie opcja z dodaniem info do pliku
/etc/modules/ nie zadziałała. Dodatkowo pozostaje jeszcze kwestia autologowania
(bez tego nie uruchomi się pulpit) i automatycznego wystartowania zarówno wyświetlacza
jaki i fbcp. Do tego celu dodamy odpowiednie linijki w pliku rc.local.
$sudo nano /etc/rc.local
Przed linijką „exit 0” dopisujemy:
Sudo modprobe
fbtft_device custom name=fb_ili9341
gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 bgr=1
su -l pi -c startx
fbcp &
Teraz jeszcze załatwienie kwestii autologowania (bez tego na
ekranie zobaczymy dopiero cokolwiek, gdy zalogujemy się np. przez ssh)
$ sudo nano /etc/inittab
I w pliku dopisujemy:
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
I to już koniec :)
UWAGA:
Dla retropie robimy troszke inaczej w pliku rc.local:
sudo modprobe fbtft_device custom name=fb_ili9341 gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 bgr=1 sleep 1 fbcp &
Edit:
Na nettigo jest także świeży wpis na ten temat: https://starter-kit.nettigo.pl/2018/12/wyswietlacz-lcd-dla-raspberry-pi-niskim-kosztem/
Ten komentarz został usunięty przez autora.
OdpowiedzUsuńtak - ten można śmiało podmienić
Usuńjak ustawić rozdzielczość 240x320 ? Bo najmniejsza w ustawieniach to 640x480, przez co na ekran jest słabo czytelny.
OdpowiedzUsuńpowinno sie samo dostosować - pewnie w "fbtft_device custom name=fb_ili9341" zapisane są ustawienia rozdzielczości
OdpowiedzUsuńno właśnie u mnie się nie chce dostosować. zmienialem rozdzielczość w pliku config.txt i dalej bez skutku.
OdpowiedzUsuńale masz jakoś przycięty ekran,fragment, czy jak? Na pierwszym screenie jest mój pulpit po wgraniu - podobnie wygląda?
Usuńowszem, wygląda podobnie. ale czy nie powinien być taki jak tutaj?
Usuńhttps://www.youtube.com/watch?v=WLSwgyJH6v0
w przyszłości chcę wgrać retropie i nie wiem czy będzie to dobrze widoczne :D
No pulpit na tym filmiku wygląda zdecydowanie lepiej, może jakiś inny sterownik mają itp, ale co do retropie się nie przejmuj - tam będą aplikacje na cały ekran i będzie ok, bo sam się tym już bawiłem na tym wyświetlaczu.
Usuńokej, wielkie dzięki :D
UsuńDodałem te komendy do pliku /etc/rc.local ale przy uruchomieniu wykonują się tylko dwie pierwsze a "fbcp" muszę wpisywać samemu. Mógłby ktoś pomóc?
OdpowiedzUsuńA dodałeś jakiś sleep przed "fbcp &"? Na końcu napisałem, ze w retropi musiałem tak zrobić i pomogło.
UsuńDzięki zadziałało :D
UsuńNo to super :)
UsuńTestowanie telefonu w ten sposób to świetna sprawa, bo w sumie można sprawdzić możliwości oprogramowania. Rasperry nigdy w życiu w ręce nie miałam, ale może kiedyś, jak będzie jeszcze dostępny to owszem, skorzystam. Poza tym w moim zasięgu zainteresowań teraz jest oscyloskop, który staram się poznać tak, aby nie miał przede mną żadnych tajemnic :) Pozdrawiam serdecznie i życzę sukcesów w rozwoju bloga :)
OdpowiedzUsuńWitam
OdpowiedzUsuńZa każdym razem gdy zrobię co jest powyżej to potem nie umiem się zalogować po ponownym uruchomieniu. Żąda hasła na koncie pi a "raspberry" nie dziala
nie wpisuj tego kodu "$ sudo FRAMEBUFFER=/dev/fb1 startx" pomin ta linijkę. Też miałem ten problem
UsuńWczoraj robiłem od nowa na raspberry 4 i nie chciało działąć. Okazało się ze po pobraniu najnowszego systemu do raspberry z dnia 01.08.2020 trzeba było pominąć aktualizacje. Bez aktualizacji bez problemu zadziałało,
OdpowiedzUsuń