ラズベリーパイをカーナビにしてみよう

工作
スポンサーリンク
※当サイトのリンクにはプロモーションが含まれます
※当サイトのリンクにはプロモーションが含まれます

ラズベリーパイをカーナビにしてみよう

きっかけ

  • メーカ・ディーラーオプションや市販のカーナビは高い
  • 地図更新が手間
  • ドラレコが欲しい、もっと機能が欲しい
  • などなど、

なんて。最近流行りのraspberrypiを使ってカーナビの代用にしたいと思います。車載PCといったほうがイメージに近いかも。

  • ナビ機能はGoogleのAndroid Auto
  • 単に地図が見たいだけのためにFoxtrotGPS
  • ELM327を使ってCAN情報も見てみたい
昼の画面

昼の画面

夜の画面

夜の画面

裏側

裏側

スポンサーリンク

raspberry pi 本体

本体

Raspberry Pi4 ModelB 4GBを使用。RAM容量で動きに差異があるかは未検証だが、RaspberryPi3だと画面スクロールの反応が遅かったり明らかに操作性が劣った。

SDカード

忘れていけないのはSDカードの信頼性。ノーブランド品だったが1枚動作不良になったことがある。動作不良といってもなんとなく動きながらも良くフリーズしたりするものだったのでたちが悪い。おそらく夏の車室内の高温による劣化ではないかと推定。今はSanDiskの32GBを使用中だが、こちらは今のところ問題無さそう。

ナビソフト

スマホのAndroid Autoをラズパイに表示させるためのソフトとしてBlueWave StudioのOpenAuto Pro – Car Head Unit Solutionを使用。フリーウェアだけでも一応作れるのですが、、、ボタンをきれいに配置したりとか地味なところで時間がかかりそうだったので。

定価USD$29です。

購入の際は、クーポンコード「siru-tabi」を入力すると5%引きで購入できます!

Paypal支払い時に手数料がちょっとかかりますので、その分くらい割引になるイメージかと。購入後は通常1日ほどでダウンロード先リンクが書かれたメールが届きます。

また、2021年4月時点の最新のバージョンは13ですが、一度購入すれば無料でアップデート版を入手できます。(追記:2022年3月時点の最新のバージョンは15、2021年7月1日以降は1年間のアップデートに変更されています。)

Bluetoothはラズパイ内蔵のものは使えません。USB接続のものを別途準備しました。

オーディオ

IQaudIOのPi-DigiAMP+オーディオカードを使用してスピーカに直接接続。仕様的には12Vは範囲外だが実用上問題無さそう。+Bの12Vから5Vを作る電源も内蔵されているので便利。

バックカメラ

カメラ自体は車についていた純正品を使用。RCA変換器と、デジ造映像版 PCA-DAV2でUSBに変換してラズパイに入力。

29 -> EM2860/TVP5150 Reference Design で認識された。

起動タイミングによっては、なぜかうまく/dev/videoデバイスが認識がされない場合があるので、その際はUSBデバイスをリセットさせることで対処。

> /usr/sbin/usb_modeswitch -v 0xeb1a -p 0x2861 –reset-usb

タッチパネル

車のナビスペースにちょうどぴったり収まるタッチLCDを探した。純正品だと8~9inch画面だが、市販品だと該当サイズのものは選択肢がごく少なかった。種類が豊富な10.1inchを使えないかと探したところ、縁サイズが小さいWaveshareの10.1inch Capacitive Touch Screen LCD (E) というものが使えそうだったので購入。数mmはみ出したのは車両側で調整した。解像度とか欲張ると厚みが増したり、縁が大きくなったり、タッチ機能が無かったりで探すの大変。

バックライトの明るさを変えたい

公式HPには他品番のバックライトの明るさの変え方マニュアルはあるが、私の使用するLCDについては記載が見当たらない。しかし、LCDの背面パネルを見ると”PWM”とシルク印刷された、いかにもそれらしい端子padがある。これをラズパイに接続してみると、PWM端子の電圧が0V(=0%)付近ではバックライトが最も明るく、電圧が上がって3.3V(=100%)に近づくにつれて暗くなり、うまくいった。

Waveshare LCD backlight control pwm pad

Waveshare LCD backlight control pwm pad

以下はソフト作成時のメモ書き

gpio -g pwm 18 1024
gpio -g mode 18 pwm #set the pin as PWM
gpio pwmc 1000
gpio -g pwm 18 X #change the brightness, X ranges 0~1024
1000はpwm周期の設定で、周波数でいうと、クロック/prmr/pwmc=19.2MHz/1024/1000=18.75Hz程になるらしい(未確認、もっと高いんじゃないか??)。
これと同様のことをpythonでやろうとしたところ、不規則に画面がチラついてしまいうまくいかなかった。RPi.GPIOライブラリを使うとPWM出力がsoftware実行になるようで、ある程度早いdutyは再生できなくなるのではないか?(未確認)。
PWM出力をhardwareで実行してくれるライブラリとしてwiringpiを使うことにする.。
wiringpi.pwmSetRange(1024)
wiringpi.pwmSetClock(100)
として、19.2MHz/1024/100=187.5Hz(未確認)となるように設定したところ、うまくいった。

Androidスマホとの接続

スマホを親機としたWifiテザリングでラズパイを接続。AndroidAutoもWifi経由でGATEWAYとしての接続とした。なおスマホのAndroidAutoソフトの設定で「ヘッドユニットサーバを起動」をONしておく必要がある。

使ってみた感想

実用上は特に問題無く、使えそうでした。

近場移動にはAndroidAutoの接続が面倒
・・・音楽鳴らして画面には地図表示されていればいいよって人には、FoxtrotGPSを使うのがオススメ!一度地図をダウンロードしてしまえばスマホいらずで地図上に現在地を表示してくれます。普段行くようなところならナビ案内不要ですよね。

外の明るさに応じて画面の明るさを変えたりとか、基本機能の充実が必要
・・・ナビソフトがどうこうの話以前の問題です。暗い夜道での明るいバックライトは眩しすぎます。対応は別記事参照。

ステアリングリモコンスイッチを使いたい

シャットダウン操作が面倒
・・・IGOFFするといきなり電源切られてしまうため、次の起動時にfsckが動いたりディスクエラーが出たりする可能性があります。対応は別記事参照

スポンサーリンク
スポンサーリンク
工作

コメント

  1. らぶーん より:

    初めてコメントさせていただきます。
    OpenAuto proの構成の参考にさせていただきました。
    一点お伺いしたいのですが、IQaudIOのサウンドカードをラズパイ側が認識せず音が出なくて困っております。何か必要な設定がありましたらご教示いただけますと幸いです。

    • siru-tabi より:

      コメントありがとうございます。
      当方の環境では/boot/config.txtに下記の変更をして使用しています。
      dtparam=i2s=on #元々ある行をコメントアウト
      #dtparam=audio=on #元々ある行をコメント
      dtoverlay=iqaudio-dacplus,auto_mute_amp #追記

      ご参考になりましたら幸いです。

  2. R より:

    コメント失礼します。
    こちらの記事を参考にRaspberry piカーナビを導入しようとしているのですが、LCDの取り付けイメージができません。
    純正カーナビを外してDINに取り付けようと考えていますが、ブラケットが市販されてなさそうなので、siru-tabiさんの取り付け方を詳しく教えていただけましたら幸いです。
    よろしくお願いします。

    • siru-tabi より:

      当方は0.5mm厚のアルミ板を加工して取り付けブラケットを作成しています。
      寸法は現物合わせで図面等はありませんが、
      この程度の厚さならば、直線カットはプラスチックカッターでキズをつけて数回折り曲げればできますし、ハンドドリルで穴あけもできます。
      L字やコの字形のパーツをいくつか作って組み合わせれば、ブラケットを作成できると思います。

  3. R より:

    やっぱり自作なんですね
    ありがとうございます
    作ってみます!

タイトルとURLをコピーしました