車内エンターテインメントを拡充しよう
車で長距離を運転していると退屈になります。なので例えば航空機の様に細かな車両情報を表示してみたり、車載ナビより高精度なナビを表示してみたり、映画を流してみたりと運転の暇つぶしにちょうどいい車載エンターテインメントシステムを構築していこうと思います。
当然ですが、運転中にナビとかいじってると道交法違反になるので、あくまでここで開発するシステムは常識の運転する上で常識の範囲内で活用するための物になります。
MESの概要
MES(メス)の概要として、ハードウェアにRaspbery PIを使用します。言わずもがなRaspbery PIは低消費電力なデバイスで安価な利点があります。ここにAndroid OSをインストールして統合的なエンターテインメントシステムとしてシステムを構築します。
操作系に関しては運転に支障が及ばない範囲での分かりやすい操作を可能にするという目標から、タッチパネルディスプレイでのタッチ操作を中心とした操作系を検討しています。
OSはAndroidを搭載します。というのもタッチパネルディスプレイでの操作を考えたうえで世の中のOSの中で一番タッチ操作に最適化されたOSなのと、Appleのiosと異なりAndroidはオープンソースなのでラズパイにインストールすることが可能だからです。
ディスプレイを含むすべてのシステムは車両の標準電源であるアクセサリーソケットDC12Vで動くこととします。
ネットワークに関しては、インターネット接続をRaspberry PIのWifiを使う。また車両情報収集用にCANデータ取得機器をBlutootsで接続させることを検討していますが、これ以外に、車両に搭載されているディスプレイオーディオとAndoroid Autoで接続するためのネットワーク構築も思案しています。
マウント
車両への設置は3Dプリンタで作成したオリジナルの治具を使用します。
治具の設計は実物の車両の内寸を測って図面に落とし込んでいく作業が必要なので、もう少し先になるかと思います。
ソフトウェア実装検証
今回実装するのは最新のAndroid16になります。そのAndoridをGoogleがオープンソース化したプロジェクトであるAOSP(Android Open Source Project)版を使用します。
実際にラズパイにAndroidを入れて動かした画像です

ここでドハマりポイントなのですが、2018年辺りから未認可のデバイスでGoogleサービスにアクセスしようとしても弾かれるようになってしまったらしく、普通にインストールしただけだとPlayストアやGoogleサービスにアクセス出来ない様になっています。
これを回避するには、Googleサービスフレームワーク(GSF)Android IDという端末固有のIDをGoogleの申請フォームで登録しなければなりません。
登録自体は簡単なのですが、GSF IDをラズパイAndroidから抜き出すのが大変です。
ネットの情報だと割と簡単に取得可能な紹介をしていますが、Android16でGSF IDを取得するにはroot化(脱獄)しなければなりません。
この事実がネット上に一切乗って無く、結構苦労しました。
GPS系
素のラズパイにはGPSレシーバーがついていないので、自車位置をFixできません。なのでGPSレシーバーを搭載しなければなりませんが、Androidに対応したGPSレシーバーってあるのでしょうか?
一般的に販売されているラズパイ用のGPSレシーバーをAndroidラズパイに接続してもおそらく認識しないはずです。理由は単純でAndroidにドライバが無いからです。
だったらドライバをAndroidに入れればいいじゃんってなるのですが、Androidってそう簡単にドライバをインストールできるようなOSではないのです。
Windowsだとドライバをインストールして簡単にハードウェアを増設できますが、Androidはそもそもドライバをインストールできる構造になっていません。WIndowsにPT3を導入してドライバをインストールすれば簡単にテレビが見れますが、Androidの乗った機器にPT3を導入してもそのドライバをインストールする方法がそもそもないのです。
話が少しずれますが、この問題実はすごく面白くてWindowsとAndroid、iosといったPCとスマホOSの設計思想の違いがはっきり分かるポイントになりまして、この事実に気が付いたガチガチな変態ガジェット系PCオタクの私の脳みそが溶け落ちてしまう位の凄まじい衝撃と快楽を得たのは言うまでもありません。ここで是非とも[WindowsとAndroid、Unixの決定的な違いを分かりやすく解説]と話を持っていきたい所ですが記事の趣旨がずれまくるのと多分誰も興味がないと思うので自重します。
何はともあれOS(オペレーティング・システム)マニアでもある私の脳みそが完全に溶け落ちてしまったのでこの課題は後回しにします。
ディスプレイ関連
車載機器として運転中に邪魔にならない、かつ操作のしやすいディスプレイサイズを検討した結果、8インチサイズが最適ではないかという結論に至りました。
アマゾンに安価な8インチサイズのタッチパネル液晶が売っていたのでこれを購入して検証してみました。
結果としては問題なく動作しました。

このディスプレイはAmazoneで11000円位で販売していてIPS液晶を搭載しているらしいです。
本当にIPS液晶なのか疑問に思ったのでとりあえず傾けてみました。

ここまで傾けてこの描画ならIPS液晶で間違いないかと思いますが、個人的に気になる点が2つあります。
1つ目は商品紹介に1280×800と記載されていたのですが、液晶のドットの精細度的にそこまでの解像度をもっていないのではないかという点と、
2つ目に画面の色彩がやたら青色によっているように思う点です。
1つ目の疑惑ですが、実際にアンドロイドが認識しているディスプレイ解像度をアプリで取得すると1920×1080 59.4インチディスプレイという意味の分からない数値が出てきました。意味が分からないのでWindowsに接続させるとディフォルトスペック通りの1280×800で認識しますが、左右に黒帯が出ていたりします。試しに1280×720に変更すると黒帯は出なくなります。
そもそもアスペクト比が16:9で画面解像度が1280×800って意味の分からん紹介をしていて買う前からある程度予想はしていたので、まあこんなものかという感想ですが、一番よく分からないのが、搭載されている液晶の実際の解像度です。見た目的には960×540程度に見えるのですがアンドロイドとWindowsでそれぞれ解像度を変更して見え方の違いを確認した結果、1920×1080の状態が一番解像度が高く見えるというなんともよく分からない結果になってしまいました。仕様に書かれている1280×800よりも高い解像度に設定すると画質が良くなるということは、パネルの中にアップコンバート回路でも組まれているのでしょうか?正直よく分かりません。
2つ目の色彩がやたら青色よりな問題ですが、白色の表示がやたら青寄りにオフセットしていて全体的に青みがかった表示に見えます。
この問題は実は過去に東芝製の液晶テレビで似た経験がありまして、2020年前後の東芝製液晶テレビはバックライトのLEDに低品質で粗悪な中華製白色LEDを採用していました。このLEDは使用するにつれてLED表面に塗られた蛍光体が熱と紫外線で劣化してしまい、白色LEDがまるで青色LEDにばけたよう鋭い青色の閃光を放つようになります。結果として、テレビの色味が全体的に青寄りにオフセットしてしまい、画面を見ているだけで目が痛くなってくるような最悪なテレビに仕上がってしまいます。
つまり何が言いたいかというと今回入手した液晶のLEDもおそらく大変粗悪で低品質なLEDがバックライトが使われているのではないかという点です。まあ日本の日亜化学とかの技術を表層だけパクってそれっぽいLEDを作ったとしても品質という文字の意味を理解していない中国人が作る物なんて所詮この程度だという事です。
私はこの辺の事情を十分理解して購入しているので入手した液晶に対して気になる点は上げましたが、何も不満はありません。夏場は50℃、冬場は-10℃という劣悪な車内環境に置かれた粗悪な中華液晶が何年持つのか気になるところですが、ぶちゃっけ壊れても安いのであまり痛手にはならないかと思います。
Android AutoにUSBで接続できるのか
トヨタのディスプレイオーディオにUSB接続してAndroid Autoが起動するのか現状不明です。
ラズパイのUSBとパソコンを繋げてもパソコン側でAndroidデバイスとして全く認識してくれません。
普通のアンドロイドスマホだったらパソコンにつなげるとスマホのデータを参照可能になりますが、ラズパイではそういった事が起こらないのです。
そもそもラズパイのUSB端子はデバイスを接続することを想定した作りになっていて自分がデバイスとして他の機器に接続されることを想定した作りになっていないのが原因ではないかと考察しています。
ちょっと難しい話で述べるとUSBのマスター機能は実装されていますが、スレーブ機能が無いのではないかという事です。
ここら辺の挙動は今後研究していきますが、このUSBマスター状態のラズパイをトヨタのディスプレイオーディオに接続したらはたして認識するのかが最大の謎ポイントです。
普通のスマホをディスプレイオーディオに刺した瞬間にスマホがマスターで接続されるのかスレーブで接続されるのか、そこら辺の構造が一切分かりません。Android Autoの技術的な論文を軽く調べてみても全く出てこないので、実車で検証するのが速いのではないかと思います。
まとめ
次回で車載マウントした状態をリポート出来ればなぁ~と思っています。この記事を読んで気になったことや思った事があれば是非ともコメント欄にお願いします。全く需要が無いかと思いますが要望があれば[WindowsとAndroid、Unixの決定的な違いを分かりやすく解説]の記事を書くか、ゆっくり解説動画でも作ってみようかと考えています。


コメント