Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。

スポンサー

無料ブログはココログ

« コミックマーケット C96 ラズパイ・オーディオ | トップページ | Moode Audio R6.0 用のSabreberry32ドライバリリース »

2019年8月14日 (水)

1.3インチの超小型カラーLCDに動画を表示してみました。

最近、アマゾンでよく見かける小型のカラーLCDで解像度が240x240のもの。

私は5月あたりに約750円で購入したのですが、今は500円以下で売っているものもあります。ST7789というドライブICのものです。

このLCD、買ってみて気が付いたのですが「CS」(チップセレクト)信号が無いのです。

Lcd240x240

げげげっ ダメじゃん。

 

と思ったら、なんとオモロダイブのKichitaroさんが、使用方法をまとめてくれました。

Omorodive

素晴らしい。諦めかけていたLCDに光がさしました。何も映らないと何処がおかしいのか推測する手立てがないので、ほんとスゴイです。ある意味ヘンタイです(褒め言葉)

詳細は上のリンク(画像をぽちっと)を見てもらうとして、何やら訳のわからない呪文のようなおまじないが含まれています。こんな事ができる人はそうそういないと思います。ベーマガのマシン語が並んだソースコードのよう。。。

Kichitaroさんも書いていますが、fbcpをrc.localに記載しての自動起動は、タイミング問題があって環境によってはうまく機能しないことがあります。

 

systemdの手法にのっとってやるなら、

sudo nano /etc/systemd/system/fbcp.service

で新規ファイルを作って

[Unit]
Description=fbcp fb0->fb1 scale transfer service
Wants=network.target
Before=network.target

[Service]
ExecStart=/usr/local/bin/fbcp
Type=simple

[Install]
WantedBy=multi-user.target

としておくとよいでしょう。

起動時に自動実行させるには
sudo systemctl enable fbcp

自動起動の解除は
sudo systemctl disable fbcp

今、実行したいときは
sudo systemctl start fbcp

今、停止したいときは
sudo systemctl stop fbcp

network.targetを起動のトリガーにしているのは、割と最後の方まで時間がかかっていてタイミング的によさそうだからです。不具合があるときは別のモノをトリガーにしてください。

 

 

Raspbian Stretch デスクトップ

Kichitaroさんの方法でRaspbian Stretch(2019-04-09)を使ってX-Windowを表示してみた様子は以下の通り。電源ONからの動画です。

こんなに小さくてもしっかり動作しています。Pi3がデモ用機に組み込まれてしまったのでPi2を使っていますが、それでも大丈夫です。

 

ざっくり説明すると、HDMI用のフレームバッファ(/dev/fb0)を300x300に指定して、それをSPI接続LCDのフレームバッファ(/dev/fb1)へfbcpというソフトを使ってスケーリングかけて転送しています。

試しに最初からLCDの解像度と同じ240x240ピクセルにしてみたら、さすがに解像度が足りなくてまともに使えませんでした。

/boot/config.txt

hdmi_force_hotplug=1
hdmi_cvt=300 300 60 1 0 0 0
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
display_rotate=3

と指定しているんですね。こんな方法、知りませんでした。480x480とか自在に解像度を指定できます。

このフレームバッファをスケーリングかけて転送するのfbcpです。

 

kodi マルチメディアプレイヤー

X-Windowを降りて、kodiでも画面を表示できました。/dev/fb0解像度を320x320以上に設定する必要があるのですが、メニューが超小さいためルーペ必須です(笑  というか240x240にスケーリングされると文字が潰れて読めません。

Kodi320x320

kodiは320x320ピクセル以上を要求。。。動作はするが、実用面で問題あり。最低でもVGAのLCDが欲しいです。

 

 

X-Window を使わずmplayerで

さて、X-Windowは少し重いのと老眼が入ってきた私の眼には超小さいメニューの文字を見るのが厳しいのでX-Windowなしで使えないか模索してみました。

それが、これ。電源ONから30秒くらいで動画再生開始できています。

RaspberryPi 2 でカラーLCD表示する方法 で4年くらい前にもやっていたのですが、adafruitのビデオ再生の方法は流石に古すぎて動作しませんでした。

今回、成功した方法を下に備忘録として書いておきます。

4年前のaitendoのLCDと違うのは、LCDサイズが小さく圧倒的に密度(DPI)が高い。
そしてSPIのクロックが高いため動画に適しているという部分と思います。

 

 

ハードウェアの接続方法、fb1の設定方法はKichitaroさんの説明どおり。

fbcpは入れません。/boot/config.txtにhdmiの解像度指定も入れなくてOKです。

 

/boot/cmdline.txt に「fbcon=map:1」を(スペースをひとつ空けて)最後尾に追記しておくと起動時にコンソールが表示されます。

 

mplayerをインストール

sudo apt-get update

sudo apt-get install mplayer

 

4:3の動画を再生するとき

mplayer -vo fbdev2:/dev/fb1 -x 240 -y 180 -zoom -framedrop 動画ファイル名

16:9の動画を再生するとき

mplayer -vo fbdev2:/dev/fb1 -x 240 -y 135 -zoom -framedrop 動画ファイル名

アスペクト比はこれでばっちしです。

裏に出ているコンソール文字をクリアするのは

dd if=/dev/zero of=/dev/fb1 count=225

です。

最初からコンソール表示しないという手もありますね。(fbcon=map:1を/boot/cmdline.txt に追記しない)

 

/etc/rc.local

sleep 5
mplayer -vo fbdev2:/dev/fb1 -x 240 -y 135 -zoom -framedrop /home/pi/動画ファイル名

を exit 0 の前に書いておくと自動で再生開始します。 -loop N オプションでリピート再生させてもいいですね。Nを0にしておくと永遠にループ再生します。

 

 

結局、何がしたいのか?

最終形が決まっている訳ではありません。

Mplayer01

とりあえずこんな配置でケースに入れたいですね。高さも低くて良い感じ。

Sabreberryシリーズは、従来からSPIポートの部分を意図的に空けているのでSPI-LCDと相性が良いです。(SabreberryDAC ZEROを除く)

PINのアサインはオモロダイブさんとちょっと変えて、RESを27から23に移動しています。

Lcdpin_20190817081901

 

以下は、ざっとアマゾンで調べたモノです。

動作を保証するものではございません。

   

 

ラズパイZEROサイズの基板に乗ったモノもあります。

若干お値段が高めになりますし、LCDの位置をケース前面に持ってくるのが難しくなりますが、お手軽に楽しむには良いでしょう。それに「CS」がちゃんと繋がているので、変なところで苦労せずに表示できる可能性が高いです。

 

 

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 

 

« コミックマーケット C96 ラズパイ・オーディオ | トップページ | Moode Audio R6.0 用のSabreberry32ドライバリリース »

Raspberry Pi」カテゴリの記事

コメント

たかじんさん。ご無沙汰しております。
私も日本語表示ができるTFT液晶を使おうとして、、fbtftを最初使おうと思ったのですが、python3でスクリプトを書くのが面倒で、ふとFBCPが目につき、Moode5.3.1にfbcp-ili9341(https://github.com/juj/fbcp-ili9341)を入れ、動作確認が取れました。ili9341となっていますがST7735R等も使えます。modde6.0も出てたんですね。

knkn59 さん

fbcpの派生版のようなモノですね。READMEを読んでみると、SPIのドライバも使わず、汎用のflexfbドライバも使わないということで、ピンアサインなど、どこで指定するのかよく分からないですが、ゲーム用に高速化れていて、素晴らしいと思いました。

貴重な情報ありがとうございます。

たかじんさん。ピンアサインはREADME.mdも書いてある通り、cmakeのoptionで指定します。そのほかARMのoption、RGBのRB反転等もcmakeで指定する必要があります。
この点が、rpi-fbcpより少し面倒です。

knkn59 さん

そうですね。ちゃんと読んだら書いていました。ただ、CSなしでの方法がかいておらず、その他のピンを指定しても動作しませんでした。

CSなし液晶が特殊過ぎるのかもしれませんね。

たかじんさん。こん○○は

SB32+PRO DoP ユーザーです。
折角SPIポートの部分を空いているので、私もカラーLCDを付けて、音楽を聴きながらアルバムジャケットを表示させています。

ご存知かもしれませんが、blue777さんと言う方がNanoPi-Neo向けにプログラムを作成され、GitHub上で公開されています。
使用ピンに合わせて設定を変更するだけで、Raspberry Pi上でcmakeでコンパイルしてそのまま動作しますし、曲名やアルバム名を含めた表示レイアウトも秀逸で愛用させていただいております。

何れは針メータ版のアナログVUメーターをLCD上に表示させてみたいのですが、私の技量では何ともし難く...

> 最終形が決まっている訳ではありません。
との文面から、勝手な妄想をした次第です。

Steely DANGOさん

ありがとうございます。

blue777さんのmpd-gui、私もソースをちょっと見てみました。

これがサクっとラズパイでも動くとなると素晴らしいですね。モノクロのOLEDとかいろんなディスプレイに対応しているのもスゴイです。

アナログVUメータをLCDに表示するのも面白いと思います。
SPI-LCDもそこそこのフレームレートで更新できるようなので、うまくプログラムを作れば、良いものができる可能性がありますね。

コメントを書く

(ウェブ上には掲載しません)

« コミックマーケット C96 ラズパイ・オーディオ | トップページ | Moode Audio R6.0 用のSabreberry32ドライバリリース »

サイト内検索

Sponsors link

2019年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31