Tuner FM Si4703 - jak zrobić radio z Arduino
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
Intel Galileo Gen2 - Arduino na sterydach
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.
Test 7" wyświetlaczy TFT oraz IPS z wejściem HDMI
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.
Jak ożenić wyświetlacze WaveShare z Raspberry Pi 2 ?
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:
- 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:
- 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
- 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.
- 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ę:
- sudo reboot
Mamy już zaktualizowane sterowniki, więc musimy odpowiednio skonfigurować moduły jądra, edytując plik:
- sudo nano /etc/modules
Pod linią zawierającą snd-bcm2835 dodajemy:
- 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
- fbtft_device debug=3 rotate=0 name=flexfb speed=16000000 gpios=reset:25,dc:24
Dodajmy również odpowiednią konfigurację dla panelu dotykowego:
- 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:
- sudo nano /boot/cmdline.txt
i po "rootwait" doklejamy:
- 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:
- 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:
- sudo nano /etc/rc.local
i nad "exit 0" dodajemy linię:
- su -l pi -c startx
Kolejny restart i już mamy malinę z "iksami":
- sudo reboot
Prawie gotowe! Na zakończenie musimy jeszcze "aktywować" nasz panel dotykowy:
- sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf
gdzie dodajemy nową sekcję:
- Section "InputClass"
- Identifier "calibration"
- MatchProduct "ADS7846 Touchscreen"
- Option "Calibration" "3900 240 3900 240"
- EndSection
oraz dodajmy do konfiguracji config.txt odpowiednie zapisy:
- sudo nano /boot/config.txt
- dtoverlay=ads7846,speed=500000,penirq=17,swapxy=1
Zapisujemy, restartujemy:
- 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:
- sudo apt-get -y install xinput evtest
oraz odwrócić oś Y w, edytując odpowiedni plik:
- sudo nano /etc/X11/xinit/xinitrc
dodając przed . /etc/X11/Xsession linię:
- 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
Moduł E-Ink od WaveShare o przekątnej 4.3"
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.