SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Si4703 jest jednym z popularniejszych układów scalonych, które znajdziemy w przeróżnych modułach pełniących funkcję tunera FM. Układy te z pełnym sukcesem będziemy mogli wykorzystać w swoich projektach z wykorzystaniem Arduino, np. w radiobudziku opartym o zegar RTC DS3231.

W ofercie sklepu Kamami znajdziemy dwa warianty produktów, który wykorzystują wspomniany układ Si4703 - jeden w postaci płytki ewaluacyjnej, drugi jako samodzielny moduł do wykorzystania w końcowym projekcie.

Reklama

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.

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.