SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Wrzucenie Intel Galileo do działu "Arduino i klony" może wydawać się niektórym absurdalne, jednak koniec końców, Galileo jest platformą, która jest kompatybilna Arduino, a więc możemy w pewny sposób sklasyfikować ten sprzęt jako "Arduino na sterydach".  Określenie jest o tyle trafne, ponieważ wykorzystano w nim procesor Intel Quark X1000 o mikroarchitekturze Intel x86, taktowany zegarem 400Mhz.

Ogromnym atutem tej platformy jest zgodność mechaniczna i elektryczna z szeroką gamą shieldów dla Arduino. W praktyce oznacza to, że bez kłopotu wykorzystamy moduły, które już posiadamy lub postanowimy zakupić w przyszłości. Płytka pozwala również na wybór poziomu stanów logicznych, gdzie za pomocą zworki wybieramy napięcie 5V lub 3.3V. Gdyby tego było mało, na kartę microSD możemy wgrać specjalną dystrybucję Linuksa, np.: Yocto 1.4 Poky Linux.

Reklama

Dzięki ponownej uprzejmości sklepu internetowego elty.pl, miałem dziś okazję przetestować 7" wyświetlacze ze złączem HDMI. Zapraszam do obejrzenia materiału w serwisie YouTube. Mnie osobiście urzekł wyświetlacz z matrycą IPS, jednak posiadaczy komputerów Raspberry Pi / 2, szczególnie powinien zainteresować model z pojemnościowym ekranem dotykowym.

Kiedy wymieniłem swoją "malinę| na Raspberry Pi 2, pojawił się problem z uruchomieniem popularnych wyświetlaczy TFT 3.5" / 4" od WaveShare z rezystancyjnym panelem dotykowym. Producent, pomimo już dawnej premiery Rasperry Pi 2, nie przygotował stosownych instrukcji lub odpowiednich obrazów systemu. Po kilku eksperymentach, udało mi się w końcu ożenić te wyświetlacze z RPi2.

Zapraszam zatem do małego how-to na przykładzie świeżej instalacji dystrybucji Raspbian (2015-05-05).

W pierwszej kolejności musimy zmienić wyjście sygnału z HDMI na szynę SPI. W tym celu edytujemy plik /usr/share/X11/xorg.conf.d i zmieniamy urządzenie framebuffera z fb0 na fb1:

  1. sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf

Zmiany zapisujemy wciskając CTRL-X, następnie Y i zatwierdzamy enterem.

Ekran dotykowy również korzysta z magistrali SPI do komunikacji z procesorem, jest ona jednak domyślnie wyłączona, dlatego musimy ją najpierw włączyć. Wydajemy polecenie:

  1. sudo raspi-config

Przechodzimy do pozycji "Advanced Options" i włączamy SPI (Enable/Disable automatic loading of SPI kernel module), zatwierdzając dwa kolejne pytania przyciskiem Yes.

 

 

Możemy wyjść z konfiguracji wybierając opcję Finish i zresetować urządzenie.

Jeśli korzystasz z wersji Rasbiana 2015-05-05, możesz pominąć kolejny krok, jeśli natomiast używasz wersji sprzed 31 stycznia 2015, konieczne będzie jeszcze za komentowanie na czarnej liście modułu spi-bcm2708 w pliku /etc/modprobe.d/raspi-blacklist.conf

  1. sudo nano /etc/modprobe.d/raspi-blacklist.conf

W przypadku świeżego Rasbiana (2015-05-05), plik powinien być pusty. Gdyby jednak znajdował się w nim zapis "blacklist spi-bcm2708", usuń go lub za komentuj linię dodając na jej początku znak # i zapisz zmiany.

W kolejnym kroku musimy pobrać i zainstalować sterowniki dla ekranu LCD oraz panelu dotykowego.

  1. sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update

Nastąpi ściąganie paczek jądra, firmware oraz odpowiednik modułów (~45MB). Kiedy paczki zostaną pobrane, powinna nastąpić ich instalacja.

Kiedy proces dobiegnie końca, restartujemy malinę:

  1. sudo reboot

Mamy już zaktualizowane sterowniki, więc musimy odpowiednio skonfigurować moduły jądra, edytując plik:

  1. sudo nano /etc/modules

Pod linią zawierającą snd-bcm2835 dodajemy:

  1. flexfb width=480 height=320 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3

oraz

  1. fbtft_device debug=3 rotate=0 name=flexfb speed=16000000 gpios=reset:25,dc:24

Dodajmy również odpowiednią konfigurację dla panelu dotykowego:

  1. ads7846_device model=7846 cs=1 gpio_pendown=17 speed=1000000 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

Następnie edytujemy parametry bootowania:

  1. sudo nano /boot/cmdline.txt

i po "rootwait" doklejamy:

  1. fbtft_device.custom fbtft_device.name=flexfb fbtft_device.gpios=dc:24,reset:25 fbtft_device.bgr=1 fbtft_device.speed=16000000 fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo dma.dmachans=0x7f35 console=tty1 consoleblank=0 fbtft_device.fps=50 fbtft_device.rotate=0

Kolejny restart:

  1. sudo reboot

Po ponownym uruchomieniu, ekran powinien już działać prawidłowo, pokazując proces ładowania jądra:

Jeśli chcemy, aby od razu startował serwer X, edytujemy plik:

  1. sudo nano /etc/rc.local

i nad "exit 0" dodajemy linię:

  1. su -l pi -c startx

Kolejny restart i już mamy malinę z "iksami":

  1. sudo reboot

Prawie gotowe! Na zakończenie musimy jeszcze "aktywować" nasz panel dotykowy:

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

gdzie dodajemy nową sekcję:

  1. Section "InputClass"
  2.  Identifier "calibration"
  3.  MatchProduct "ADS7846 Touchscreen"
  4.  Option "Calibration" "3900 240 3900 240"
  5.  EndSection

oraz dodajmy do konfiguracji config.txt odpowiednie zapisy:

  1. sudo nano /boot/config.txt
  1. dtoverlay=ads7846,speed=500000,penirq=17,swapxy=1

Zapisujemy, restartujemy:

  1. sudo reboot

i gotowe :)

Touchscreen do góry nogami?

W przypadku 4" ekranu praktycznie nic nie musimy robić, ale okazuje się, że w przypadku wersji 3.5" ekran dotykowy interpretowany jest "góry nogami". Aby temu zaradzić, musimy doinstalować paczki xinput oraz evtest:

  1. sudo apt-get -y install xinput evtest

oraz odwrócić oś Y w, edytując odpowiedni plik:

  1. sudo nano /etc/X11/xinit/xinitrc

dodając przed . /etc/X11/Xsession linię:

  1. DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' 'Evdev Axis Inversion' 0 1

Po zapisaniu i ponownym uruchomieniu RaspberryPi 2, wszystko będzie jak należy.

Gdzie kupić wyświetlacze?

Wyświetlacze WaveShare 3.5" oraz WaveShare 4" kupicie spokojnie w sklepie elty.pl

Dzięki uprzejmości sklepu internetowego elty.pl, mam dziś okazję zapoznać się z e-papierem o przekątnej 4.3" i rozdzielczości 800x600 punktów:

Wyświetlacz został wyposażony w mikrokontroler STM32F103ZET6 oraz 128MB pamięci NandFlash, w której możemy przechowywać czcionki lub obrazy. Komunikacja z wyświetlaczem odbywa się za pomocą UART i specjalnych poleceń graficznych, w których skład wchodzi podstawowa geometria, tekst oraz grafika.

Układ MSGEQ7 jest graficznym equalizerem, który dzieli spektrum dźwiękowe na siedem zakresów częstotliwości 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz oraz 16kHz, udostępniając informację o amplitudzie każdej z nich. Zaletą tego układu jest brak konieczności stosowania dodatkowym filtrów, gdzie do działania wystarczy kilka rezystorów i kondensatorów. Układ może być zasilany napięciem z przedziału  2.7 ÷ 5.5V pobierając przy tym zaledwie 1mA.