Help us understand the problem. What is going on with this article?

マジョカアイリス細長液晶をラズパイで使う

この記事について

ラズパイのLinux framebuffer の仕組みを使ったfbtft にて、細長液晶へ映像を送ります。
今回の記事は、デスクトップ画面を縮小転送しています。
カーネル5.4以下での方法です。

環境

ラズパイ3B+ (カーネル5.4以下。 カーネル5.4~の場合は、下の方(できない場合)を参照)
マジョカアイリス細長液晶
電源(茶色基板液晶なら6V程、みどり基板液晶なら12V程?)
https://github.com/htlabnet/inside_magimajopures/wiki/sushi_chika

接続

@komikoni さんのが見やすいです。
https://github.com/htlabnet/inside_magimajopures/blob/main/640x48_LCD_ESP32/640x48_LCD_ESP32.ino

//  1   - GND   [to GND]
//  2   - RST   [to RSPI -  4]
//  3   - GND   [to GND]
//  4   - D0    [to RSPI -  5]
//  5   - D1    [to RSPI -  6]
//  6   - D2    [to RSPI - 13]
//  7   - D3    [to RSPI - 19]
//  8   - D4    [to RSPI - 26]
//  9   - D5    [to RSPI - 12]
//  10  - D6    [to RSPI - 16]
//  11  - D7    [to RSPI - 20]
//  12  - GND   [to GND]
//  13  - RD    [to 3.3V]
//  14  - WR    [to RSPI -  7]
//  15  - CS    [to RSPI -  2]
//  16  - DC    [to RSPI -  3]
//  17  - TE    [OPEN]
//  18  - VDD   [to 3.3V]
//  19  - VDDIO [to 3.3V]
//  20  - LED+  [to 5.5V~]
//  21  - LED-  [to GND]
//  22  - GND   [to GND]

コマンド

液晶をラズパイに接続後、下記コマンド2つを実行すると、液晶が黒い画面になり、映像転送の準備OKとなります。

sudo modprobe flexfb width=320 height=96 buswidth=8 init=\
-1,0xC8,0xFF,0x93,0x42,\
-1,0x2A,0x00,0x00,0x01,0x3F,\
-1,0x2B,0x00,0x00,0x00,0x5F,\
-1,0x36,0xC8,\
-1,0xC0,0x0E,0x0E,\
-1,0xC1,0x10,\
-1,0xC5,0xFA,\
-1,0x3A,0x55,\
-1,0xB1,0x00,0x18,\
-1,0xE0,0x00,0x1C,0x21,0x02,0x11,0x07,0x3D,0x79,0x4B,0x07,0x0F,0x0C,0x1B,0x1F,0x0F,\
-1,0xE1,0x00,0x1C,0x20,0x04,0x0F,0x04,0x33,0x45,0x42,0x04,0x0C,0x0A,0x22,0x29,0x0F,\
-1,0x11,-2,130,\
-1,0x29,-2,10,\
-3

sudo modprobe fbtft_device name=flexpfb speed=10000000  gpios=reset:4,dc:3,wr:7,cs:2,db00:5,db01:6,db02:13,db03:19,db04:26,db05:12,db06:16,db07:20

(できない場合)

この記事はカーネル5.4以下でのやり方です。5.4以上でやると、flexfb 等のモジュールのmodprobe で not found になります。
fbtft リポジトリのwiki によると、カーネル5.4以降ではfbtftという名前で、デバイスツリーでの管理になってるようです。

uname -r 

で5.4 以降のカーネルが稼働している場合、このページのやり方ではできなそう
https://github.com/notro/fbtft/wiki
fbtft_device and flexfb are gone in 5.4

下記ページが参考になりそうでした
https://akkiesoft.hatenablog.jp/entry/20201218/1608217260

デスクトップの映像を転送する

https://github.com/notro/fbtft/wiki/Framebuffer-use
こちらで紹介されていた、Framebuffer mirroring の仕組みを利用します。

https://github.com/tasanakorn/rpi-fbcp
こちらの、

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

make の前に、main.c の 57行目を

    screen_resource = vc_dispmanx_resource_create(VC_IMAGE_RGB565, vinfo.xres, vinfo.yres, &image_prt);

    screen_resource = vc_dispmanx_resource_create(VC_IMAGE_RGB565, vinfo.xres*2, vinfo.yres/2, &image_prt);

に修正して、make してください。
(1ラインごとにずれている仕様を補正しているつもりです。)

fbcp

ビルドした fbcp を実行すれば、映像が細長液晶に転送されています!

ラズパイのデスクトップそのまま送られるので、いろいろ出来そう?お楽しみください♪

(ちなみに、映像をまるっと縮小コピーしてるだけなので遅いです・・・)

補足

液晶をリセットしたいときは、液晶基板への3.3v電源を抜き差して、

sudo modprobe -r flexfb
sudo modprobe -r fbtft_device 
lsmod | grep fb

でドライバがアンロードされるので、再度ドライバを読み込んでください。

参考

devemin
https://twitter.com/devemin deve.sakura.ne.jp/make_robots/
https://github.com/devemin
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away