{"id":523,"date":"2015-05-13T22:33:07","date_gmt":"2015-05-13T20:33:07","guid":{"rendered":"http:\/\/ignus.co.pl\/blog\/?p=523"},"modified":"2015-05-13T22:33:07","modified_gmt":"2015-05-13T20:33:07","slug":"wyswietlacz-tft-18-z-kontrolerem-st7735-podlaczony-do-raspberry-pi","status":"publish","type":"post","link":"http:\/\/ignus.co.pl\/blog\/?p=523","title":{"rendered":"Wy\u015bwietlacz TFT 1,8&#8243; z kontrolerem ST7735 pod\u0142\u0105czony do Raspberry PI"},"content":{"rendered":"<p>Poradnik w jaki spos\u00f3b pod\u0142\u0105czy\u0107 wy\u015bwietlacz TFT 1,8&#8221; z kontrolerem ST7735 do Raspberry PI wraz z opisem wy\u015bwietlania na nim poszczeg\u00f3lnych rzeczy.<\/p>\n<p><!--more--><\/p>\n<h4><strong>Potrzebne cz\u0119\u015bci<\/strong><\/h4>\n<ul>\n<li>Wy\u015bwietlacz TFT 1,8&#8243; z kontrolerem ST7735 &#8211; m\u00f3j model to dok\u0142adnie <a href=\"https:\/\/elty.pl\/pl\/p\/Wyswietlacz-1%2C8-z-kontrolerem-ST7735%2C-gniazdo-kart-SD\/1193\" target=\"_blank\">TEN<\/a>\u00a0egzemplarz. Ma on dodatkowo slot na kart\u0119 SD, ale nie b\u0119dzie wykorzystany. Wi\u0119kszo\u015b\u0107 modeli na tym kontrolerze (i nie tylko) powinna mie\u0107 podobne wyprowadzenia, wi\u0119c\u00a0mo\u017cna dzia\u0142a\u0107 analogicznie do moich schemat\u00f3w (m\u00f3j model dla przyk\u0142adu ma dodatkowe sterowanie jasno\u015bci\u0105)<\/li>\n<li>Raspberry PI &#8211; w projekcie wykorzysta\u0142em model B, rewizja 2<\/li>\n<li>karta SD z systemem Raspbian<\/li>\n<li>Kabelki pod\u0142\u0105czeniowe &#8211; w przypadku posiadania p\u0142ytki prototypowej, 8 sztuk z ko\u0144c\u00f3wkami m\u0119skie-m\u0119skie, w przypadku pod\u0142\u0105czenia bezpo\u015brednio do pin\u00f3w GPIO &#8211; 8 sztuk typu \u017ce\u0144skie-\u017ce\u0144skie<\/li>\n<li>Opcjonalnie &#8211; p\u0142ytka prototypowa, ta\u015bma GPIO i adapter GPIO (informuj\u0119 dlatego, \u017ce b\u0119d\u0105 widocznie na zdj\u0119ciach)<\/li>\n<li>Opcjonalnie &#8211; je\u017celi LCD ma punkt lutowniczy ze zmian\u0105 napi\u0119cia logiki 3,3V i 5V to b\u0119dzie nam potrzebna r\u00f3wnie\u017c lutownica i spoiwo<\/li>\n<\/ul>\n<h4><strong>Pod\u0142\u0105czenie<\/strong><\/h4>\n<p>Pierwsz\u0105 czynno\u015bci\u0105 jaka powinna by\u0107 wykonana to zmiana napi\u0119cia logiki na 3.3V. Wi\u0105za\u0142o si\u0119 to ze zewrzeniem punktu lutowniczego J1, znajduj\u0105cego si\u0119 pod p\u0142ytk\u0105, tak jak na rysunku:<\/p>\n<p><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_182246.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-540\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_182246-300x225.jpg\" alt=\"IMG_20150513_182246\" width=\"300\" height=\"225\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_182246-300x225.jpg 300w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_182246-1024x768.jpg 1024w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_182246.jpg 1600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Nast\u0119pnie pod\u0142\u0105czamy wy\u015bwietlacz wed\u0142ug poni\u017cszego schematu:<\/p>\n\n<table id=\"tablepress-2\" class=\"tablepress tablepress-id-2\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">LCD Pin<\/th><th class=\"column-2\">LCD Nazwa<\/th><th class=\"column-3\">Raspberry PI Pin<\/th><th class=\"column-4\">Raspberry PI Nazwa<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">RST<\/td><td class=\"column-3\">22<\/td><td class=\"column-4\">GPIO25<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">2<\/td><td class=\"column-2\">CS<\/td><td class=\"column-3\">24<\/td><td class=\"column-4\">GPIO07 (CE0)<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">3<\/td><td class=\"column-2\">D\/C<\/td><td class=\"column-3\">18<\/td><td class=\"column-4\">GPIO24<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">4<\/td><td class=\"column-2\">DIN<\/td><td class=\"column-3\">19<\/td><td class=\"column-4\">GPIO10 (MOSI)<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n\t<td class=\"column-1\">5<\/td><td class=\"column-2\">CLK<\/td><td class=\"column-3\">23<\/td><td class=\"column-4\">GPIO11 (CLK)<\/td>\n<\/tr>\n<tr class=\"row-7 odd\">\n\t<td class=\"column-1\">6<\/td><td class=\"column-2\">VCC<\/td><td class=\"column-3\">1<\/td><td class=\"column-4\">3V3<\/td>\n<\/tr>\n<tr class=\"row-8 even\">\n\t<td class=\"column-1\">7<\/td><td class=\"column-2\">BL<\/td><td class=\"column-3\">1<\/td><td class=\"column-4\">3V3<\/td>\n<\/tr>\n<tr class=\"row-9 odd\">\n\t<td class=\"column-1\">8<\/td><td class=\"column-2\">GND<\/td><td class=\"column-3\">6<\/td><td class=\"column-4\">GND<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-2 from cache -->\n<p>M\u00f3j setup po pod\u0142\u0105czeniu wygl\u0105da tak:<\/p>\n<p><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180129.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-541\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180129-300x225.jpg\" alt=\"IMG_20150513_180129\" width=\"300\" height=\"225\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180129-300x225.jpg 300w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180129-1024x768.jpg 1024w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180129.jpg 1600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Je\u017celi wszystko dobrze pod\u0142\u0105czyli\u015bmy to po w\u0142\u0105czeniu RPI ekran powinien za\u015bwieci\u0107 si\u0119 na bia\u0142o (albo inny kolor, lub nawet wy\u015bwietli\u0107 testowe figury \/ kolory).<\/p>\n<p><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180536.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-544\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180536-300x225.jpg\" alt=\"IMG_20150513_180536\" width=\"300\" height=\"225\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180536-300x225.jpg 300w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180536-1024x768.jpg 1024w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/IMG_20150513_180536.jpg 1600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h4><strong>Oprogramowanie<\/strong><\/h4>\n<p>Na szcz\u0119\u015bcie w ostatnich wersjach kernela Raspbianowego dodano obs\u0142ug\u0119 tego sterownika, zatem nie musimy polega\u0107 na rekompilacji j\u0105dra. Jedyne co\u00a0trzeba ewentualnie zrobi\u0107 to update systemu poleceniem:<\/p>\n<pre class=\"\">sudo rpi-update\r\n<\/pre>\n<p>Je\u017celi skrypt zacz\u0105\u0142 aktualizowa\u0107 jakie\u015b pliki to po zako\u0144czeniu nale\u017cy jeszcze zrestartowa\u0107 malin\u0119, aby zmiany wesz\u0142y w \u017cycie.<\/p>\n<p>Nast\u0119pn\u0105 rzecz\u0105 jest zarejestrowanie urz\u0105dzenia i za\u0142adowanie odpowiednich sterownik\u00f3w:<\/p>\n<pre lang=\"text\"><code>sudo modprobe fbtft_device name=sainsmart18<\/code><\/pre>\n<p>Dodaj\u0105c parametr<\/p>\n<pre lang=\"text\"><code>rotate=90 \/\/180,270 itp.<\/code><\/pre>\n<p>na ko\u0144cu tego polecenia mo\u017cemy obr\u00f3ci\u0107 ekran o interesuj\u0105cy nas k\u0105t.<\/p>\n<p>Po wykonaniu powy\u017cszego polecenia, zawarto\u015b\u0107 ekranu powinna zmieni\u0107 si\u0119 na czarno. Teraz decydujemy co wy\u015bwietli\u0107 na ekranie. Dla przyk\u0142adu &#8211; gdy chcemy wy\u015bwietli\u0107 zawarto\u015b\u0107 konsoli, wpisujemy:<\/p>\n<pre><code>con2fbmap 1 1<\/code><\/pre>\n<p>Cofni\u0119cie poleceniem:<\/p>\n<pre><code>con2fbmap 1 0<\/code><\/pre>\n<p>Je\u017celi chcemy zobaczy\u0107 \u015brodowisko graficzne, przyda si\u0119 polecenie:<\/p>\n<pre><code>FRAMEBUFFER=\/dev\/fb1 startx<\/code><\/pre>\n<p>Je\u017celi xserver b\u0119dzie zg\u0142asza\u0142 problemy z konfiguracj\u0105, tu musimy j\u0105 usun\u0105\u0107 z drogi:<\/p>\n<pre><code>sudo mv \/usr\/share\/X11\/xorg.conf.d\/99-fbturbo.conf ~<\/code><\/pre>\n<p>W obu powy\u017cszych wypadkach b\u0119dzie pokazywany zaledwie fragment konsoli lub \u015brodowiska graficznego. Najprostsz\u0105 metod\u0105 na przeskalowanie ca\u0142ego obszaru roboczego jest u\u017cycie skryptu o nazwie\u00a0&#8222;fbcp&#8221;. Program przekazuje ca\u0142\u0105 zawarto\u015b\u0107 podstawowego bufora ramki na &#8222;\/dev\/fb1&#8221; z kt\u00f3rego korzysta nasz wy\u015bwietlacz. Zalet\u0105 takiego rozwi\u0105zania jest do\u0142\u0105czenie u\u017cycia akceleracji GPU w RPI (np. do odtwarzania film\u00f3w)<\/p>\n<p>Program nale\u017cy \u015bci\u0105gn\u0105\u0107 i skompilowa\u0107 nast\u0119puj\u0105cymi poleceniami:<\/p>\n<pre lang=\"text\"><code>sudo apt-get install cmake\r\ngit clone https:\/\/github.com\/tasanakorn\/rpi-fbcp\r\ncd rpi-fbcp\/\r\nmkdir build\r\ncd build\/\r\ncmake ..\r\nmake\r\nsudo install fbcp \/usr\/local\/bin\/fbcp<\/code><\/pre>\n<p>Po pomy\u015blnym zainstalowaniu mam dost\u0119p do polecenia:<\/p>\n<pre lang=\"text\"><code>fbcp &amp;<\/code><\/pre>\n<p>dzi\u0119ki kt\u00f3remu powinni\u015bmy widzie\u0107 na ekranie ca\u0142\u0105 zawarto\u015b\u0107 konsoli lub \u015brodowiska graficznego.<\/p>\n<p>Cofni\u0119cie mirroringu poleceniem:<\/p>\n<pre lang=\"text\"><code>killall fbcp<\/code><\/pre>\n<p>Teraz dla przyk\u0142adu mo\u017cna odwtorzy\u0107 jakiekolwiek wideo poleceniem:<\/p>\n<pre lang=\"text\"><code>omxplayer nazwapliku.mp4<\/code><\/pre>\n<p>I rezultat powinien by\u0107 widoczny na ca\u0142ym ekraniku. Podgl\u0105dowy filmiki:<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-523-1\" width=\"640\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_180947.mp4?_=1\" \/><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_180947.mp4\">http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_180947.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>Odwr\u00f3cony o 270 ekran plus teledysk:<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-523-2\" width=\"640\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_181441.mp4?_=2\" \/><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_181441.mp4\">http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/05\/VID_20150513_181441.mp4<\/a><\/video><\/div>\n","protected":false},"excerpt":{"rendered":"Poradnik w jaki spos\u00f3b pod\u0142\u0105czy\u0107 wy\u015bwietlacz TFT 1,8&#8221; z kontrolerem ST7735 do Raspberry PI wraz z opisem wy\u015bwietlania na nim poszczeg\u00f3lnych rzeczy.","protected":false},"author":1,"featured_media":536,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,10],"tags":[4,93,92,95,94],"_links":{"self":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/523"}],"collection":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=523"}],"version-history":[{"count":13,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/523\/revisions"}],"predecessor-version":[{"id":549,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/523\/revisions\/549"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/media\/536"}],"wp:attachment":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=523"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}