2019年8月16日金曜日

Raspberry PiでRetina液晶を使ってみた

前回作成した自作液晶をRaspberry Piで使用してみることに。しかしiPadのRetina液晶の解像度はRaspberry Piには標準的に組み込まれていない解像度設定になるためにカスタム解像度として登録する必要がある。

iPad3のRetina液晶の解像度はQXGA、数字でいうと2048x1536でXGA(1024×768)の面積4倍なのでQuad-XGAということらしい。
今どき4:3の液晶も少ないし、確かフラットブラウンの17~19インチぐらいで対応してた解像度だった気もしなくもない…

とりあえずそのままの状態でRaspberry Pi 3B+に接続して起動してみた。

するとフルHDの解像度のまま引き伸ばされて表示されている。液晶コントロール基板のスケーリング自体が比率固定に対応してないっぽいので(ファームの問題?)結構見ずらい。
この液晶の解像度自体はフルHDよりも高解像度のため、文字もぼやけた感じに。
まぁデフォルト解像度の中でも4:3を選べばとりあえずは縦横比合うけどせっかくのRetina液晶が無駄に…

というわけでカスタム解像度の設定。
config.txtをいじれば良いっぽい。

hdmi_group=2
hdmi_mode=87
hdmi_cvt=2048 1536 60 1 0 0 1
max_framebuffer_width=2048
max_framebuffer_height=1536
hdmi_pixel_freq_limit=224000000

これをconfig.txtの一番最後に追記するだけである。
一応どういう意味かというと
hdmi_groupは1または2を選択できる。
1はCEAで主にテレビなど。2はDMTで主にPC用ディスプレイ。
CEAは例えば1080pみたいな表記で、DMTは1920x1080みたいな表記になるはず。
今回はPC用ディスプレイの解像度フォーマットなので2を選択。
hdmi_modeは解像度設定番号みたいなもので、86までは定義されているので空いている87を使用。
hdmi_cvtはカスタム解像度の定義
縦の解像度、横の解像度、リフレッシュレート、縦横比、マージン、インターレース、リデュースドブランキング
2048x1536@60Hzで縦横比は今回は4:3なので1番を指定。マージンもインターレースもなし。リデュースドブランキングは今回はLCDなので1にしてみた。
max_framebuffer_widthとmax_framebuffer_heightはフレームバッファのサイズ設定。フレームバッファのサイズが解像度と合っていないと引き伸ばされたり縮小されたりしてしまう。
hdmi_pixel_freq_limitはピクセルクロックのリミット設定。Raspberry Piのピクセルクロックのデフォルト値ではRetina解像度には足りないためリミットを増やす必要がある。
単純にドット数×周波数ではないのが面倒なところなんだけど、ここはLCDのデータシートのクロック周期の最大値を持ってきて計算すると2348x1584x60で切り上げて224Mhzに設定。

再起動してみると
うまく認識した。ピクセルクロックは209.4Mhzだったみたいなので足りてるみたい。


いやーQXGAめっちゃ広いわー
そして結構発色が良い。さすがIPS液晶。

Retina液晶ネタもうちょっと続きそう。ケースとかスピーカーとか。

2019年8月15日木曜日

iPadの液晶で自作液晶を作ってみた

Raspberry Piで使えるような小型なモニタがほしかったけど、モバイルディスプレイ意外と高いし、Raspberry Pi用として売られているLCDって安いやつは結構解像度が低い。
ということで自作液晶の部品を探していたらiPadのRetinaディスプレイを使えば結構安価で作れるんじゃないかということで作ってみた。解像度もフルHDよりあるし。

iPadのRetinaディスプレイを使った自作液晶は何年か前に結構話題になっていたけど、ディスプレイポートしか使えないということが微妙だった。というのもiPadのLCD自体がeDP対応なのでバックライト駆動用回路さえあればコネクタを変換してそのままディスプレイポートに繋がるというのを誰かが発見したところから始まっていた気がする…
まぁHDMI→ディスプレイポート変換アダプタを利用すればHDMIでも行けるっぽかったんだけど、結局そのケーブルも結構高くて…

そして数年ぶりに変換基板を探してみたらHDMI対応になってるし、iPadのLCDはむしろジャンクのiPadから外せば安いじゃんというぐらいにiPadの価格が下がっていた。


というわけでジャンクのiPad 3を入手。
こちらはガラス割れ&アクティベーションロックでアクティベートできないという代物。
ガラスが割れているだけでLCDはちゃんと写っているように見えたのでオクで購入した。
送料含めて1100円ぐらいだったので、修理用のLCDが4500円ぐらいするのと比べるとだいぶ安い。


LCDコントローラはVS-RTD09703-V1というやつを購入した。有名なのはAbuseMarkの変換基板みたいだけど、こちらは低価格な上に入力ポートが2ポート(HDMI+miniHDMI)だったりeDP対応の液晶コントロールIC搭載なので、OSDが使えたりするらしいので。
HDMI+miniDPの基板もあったけどHDMIのほうが使いやすそうなのでこちらにした。
どちらもRealtekのRTD2556というコントロールICを使っていて、Retinaの解像度2048×1536(QXGA)で使用できるらしい。
Aliexpressで3500円ぐらいだった。
しかしOSD用のスイッチ基板とコントロール基板のケーブル、どっちもピン数あってないし。まぁコントロール基板は赤外線リモコンにも対応してるモデルもあるっぽいのでその兼ね合いでピン数が多いのかね。


早速ジャンクのiPad 3を分解。
ドライヤーで温めながら薄いヘラを突っ込んで一周すれば結構かんたんに開く。今回はヘラがなかったのでナイフで代用したけどナイフが進まなくなったら温めればサクッと進むので温めるの重要かも。突っ込みすぎると液晶やってしまうので注意。
開いたらもう一度液晶の動作確認もしておく。
何種類か品番あるみたいだけど、ついていたのはLP097QX1-SPA2だった。


このiPadはガラス割れジャンクなんだけど、多分そのときの衝撃で液晶が1mmずれてたw
液晶固定用のタブもちょっと曲がってるし、ネジは真ん中に来てなかった…
なんか起動したときに右側に黒い線あるなーと思ったら液晶がずれていたわけね…

まぁ液晶パネルの表示自体は問題ないので気を取り直してLCDコントローラ基板に接続してみる。今回購入したコントロール基板は液晶パネルとの間にバックライト制御回路(昇圧回路)が乗っている基板(RTD-IPAD3 V02)を接続するようになっている。購入ページの説明には長時間使う場合は熱を分散させろと書いてあった。
ICにはY58Mと刻印があったのでLED用昇圧ICのYB1518っぽい。


フレキケーブルの差し込み方向に注意かも。あとLCD側のフレキはちょっと固めなので白い線が隠れるまで入れること。
写真だと液晶の裏面に小基板つけちゃってるけどここは絶縁したほうが良さげ。
ちなみにこの小基板はiPad 5用の液晶バージョンもあるみたい(LCD側コネクタが違う)
小基板にすることにより汎用性を高めているのかもしれない。


電源は5-12Vらしいのでとりあえず12V1AのACアダプタを付属の変換アダプタにつないで接続し、電源ボタンを押したら写ったー
ちゃんと解像度も2048×1536で映っているっぽい。DPIが推奨200%なぐらい文字が小さいけど結構きれいだ。


しばらくすると画面がちら付き始めた、どうやらLCDとコントローラの間の小基板が結構発熱するようで、小基板に扇風機の風を当てるとチラツキが収まった。
ここらへんはどうにかして放熱を考えないとなぁ
液晶の裏面に熱伝導シートとかで張っちゃってもいいのかなぁ

OSDも使えるんだけどバックライトの明るさは固定っぽい?バックライト基板を追ってもそんな感じするし。YB1518のFBピンあたりの回路にちょっと細工すれば輝度変えられそう。
スケーリングも項目があるんだけど設定しても反映されないので16:9のゲーム機とかつなぐと引き伸ばされてしまう。

9.7インチで2048×1536なHDMIとminiHDMI入力がついた液晶、結構小さくてこの解像度はすごい。DPI設定上げないと文字読みにくいけど。
今の所かかった費用は4742円なんだけど、あとはケースどうしようかな。
昔自作液晶を作ったときはダイソーの書類ケース使ったり、アルミアングル材を加工して作ってたりしたけど、ちょうどいいのがあればいいな。Aliexpressで専用のケースも3000円ぐらいで売ってるみたいだし。
ちなみにアンプも付いているのでスピーカーを繋げばHDMIからの音声を出力できる。
静電容量タッチパネルキットも25ドルぐらいで出てるっぽい。それ用のタッチパネル制御基板につなげる端子もついている。

長くなってしまったのでラズパイの設定は次回

 

2019年8月3日土曜日

CH340でESP32に自動書き込みしてみた。

この前FTDIのFT232RQを使った書込みアダプタを作ってみたんだけど、このアダプタ便利なので繋ぎっぱなしにしてもいいように増産してみた。
同じものを作っても面白くないので試しにCH340っていうICが乗ったモジュールで作成してみることに。WCHっていうメーカのIC搭載のモジュールでとってもお安い。
そんでもってWindows Updateからドライバが入れられるらしいので安心だし。Windows 10ならネットに繋がってれば自動で入るらしい?

アマゾンで3つセットで600円ぐらいというとても安いやつ。
ケーブルもおまけで付いてきた。

ジャンパが付いてるんだけど、どうやらTXとRXのレベルを3.3Vか5Vか選べるらしい。ガラス管ダイオード2つ見えるけどこれで3.3Vを生成してるって、全然3.3Vじゃないじゃんという… 赤色LEDが一つ、青色LEDが2つついていて、赤が電源、青が送受信になっていた。

まずはいらない部品を取り外す。ダイオード2本と、3.3VとVCCのコンデンサ2つ。赤色の電源LEDとその抵抗も外した。これでauto reset回路用スペース確保完了。

そしたら部品の実装。ダイオード2つ外したところにはいい感じにSOT-23の3.3Vレギュレータが乗るスペースが。3.3VレギュレータでVBUSから3.3Vを生成することにより、ESP32にも電源がそのまま供給できる。そもそもこのモジュールの3.3V出力そのまま使えなさそうだったし…
3.3Vレギュレータを搭載したことにより、VCCとV3ピンをショートさせる。これで3.3V専用仕様に。
ESP32の自動リセットは前回と同様にNPNトランジスタ2つと抵抗2つを使用した。デジトラしか余ってなくて10kのデジトラ使ったんだけど問題なかった。
ENとGND間には1uFを入れておいた。

裏側は5VとVCCのパターンをビアの手前でカット。そんでもってこの前作ったアダプタとピンアサインを合わせるために、GNDのパターンをカットして5VのところをGNDにした。前回つくたアダプタと完全品コンパチにすることができた。
外した電源の赤色LEDを受信LEDに変更することにより、青で送信、赤で受信という風にわかるようにしてみた。

ちょうどいいESP32がなかったので、ESP-WROOM-02で動作確認してみたんだけど、これで3Mbpsで書き込むことができた。意外とやるぞCH340…
CH340GはCH340Cの様なオシレータ内蔵のチップと違ってクリスタルが付いてるのでそのおかげで高速書込みできちゃってるのかな?
CP2102とかでも2Mbpsいけなかったりして1.5Mbpsがいいところだったりするんだよね。
200円ぐらいなのでこいつを何個か作っておくと便利かも。結局指しっぱになってしまうし。