Kain が 2024年10月30日13時22分41秒 に編集
コメント無し
メイン画像の変更
本文の変更
# 概要 車速、エンジンの回転数、そのほかの車両の詳細情報を OBD2 診断機から取得し、それをRaspberry Pi のディスプレイに表示する。表示内容は左右反転させ、フロントガラスへ投影させることで**疑似的なヘッドアップディスプレイ(HUD)を表現**する。 超音波距離センサを車両後方に取り付け、センサから算出した障害物との距離を表示させ、距離が近づくと、音を再生させて聴覚的に危険を知らせる。 フロントガラスへ投影することで、視界の移動軽減や死角となる後方の障害物との距離の把握が容易になる。 主な動作概要を視覚化するとこの通りとなる。 ![画像での動作概要](https://camo.elchika.com/ac8f143612ac9a79d791367f2bd0ac78b8558722/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35303130376163652d636533632d346238632d613361342d6430323965373738353133622f32643837366138372d366430342d346634362d613964622d343539343136663631356265/) ++動作概要に関する追記: 画像内では超音波距離センサのデータをBluetoothで送信するような表記になっているが、実際は超音波距離センサは配線を通してRaspberry Piのピンに接続するものとする。++ # アイデア詳細 今回制作していくシステムの基本機能は以下の通り - OBD2 診断機から車両情報を取得 → ディスプレイに表示 - 超音波距離センサから距離を算出 → ディスプレイに表示 - ディスプレイ表示内容を反転 → フロントガラスへ投影 - アラートサウンドを再生 → 車両の AUX 端子に接続、車内スピーカーから再生。 ソナー機能に関しては、ディスプレイ上に障害物との距離を表示して視覚化、障害物に近づくにつれて画面表示やアラートサウンドを再生してドライバーへ接近していることを知らせる。スピーカーに関しては、車両を AUX で接続し、車内スピーカーから音を再生させる。 また、Raspberry Pi の駆動電源に関しては、車の 12V アクセサリーソケットにアダプタを接続してあるので、そこから USB-A to C ケーブルをRaspberry Pi本体に接続する。 # 使用パーツ 今回の制作にあたり、以下のパーツおよびラズパイを使用する。 - Raspberry Pi 4 - 超音波距離センサ - 7インチディスプレイ - OBD2診断機(ELM327) - 各種ケーブル(AUX、USB-A to C、ジャンパ線など) # GUIレイアウト作成 まずは仮ではあるが、Figmaで仮レイアウトを作成した。 今回はこの仮レイアウトをベースに、GUI面は仕上げていく予定。 ![Figmaで作成した仮レイアウト](https://camo.elchika.com/f8837904ac312295f03a803473f5815c71363692/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35303130376163652d636533632d346238632d613361342d6430323965373738353133622f37353762323763632d653561382d343066662d613961332d303065366531383463363233/) ## 実際にPythonで再現 先ほど作ったGUIレイアウトをもとに、Pythonで再現した。 現状はリバース表示のレイアウトがまとまっておらず、仮として右左のセンサ算出距離を表示してある(センサはすでに動作できるようにしてあるため、リアルタイムで値は変化する) ![Pythonでの動作画面](https://camo.elchika.com/d668b6daa8799811c16339e93a34c6390336aa3b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35303130376163652d636533632d346238632d613361342d6430323965373738353133622f35653037663635642d396233312d343036372d623439342d306230326435623931313562/) # OBD診断機を接続 PythonでのGUIレイアウト制作も終え、OBD2と接続した場合に対するプログラムの準備はできたので、次は実際にELM327とラズパイをBluetoothで接続する。 今回は、以下の車両のOBDコネクタに診断機を接続していく。 |メーカー| トヨタ | |:---:|:---| | 車種 | 30系プリウス (ZVW30) - 2009年モデル | | 燃料タイプ | ガソリンハイブリッド | OBD2ソケットへELM327を差し込み、ラズパイのbluetoothctlでペアリングとデバイスの信頼を行う。 ペアリングと信頼が問題なくでき次第、次は接続したデバイスをrfcommにてパラレル通信として扱いようにする。
sudo rfcomm -i showでも確認できるように、実際にrfcomm0に割り当てられているのが確認できる。
sudo rfcomm -i showで確認したところ、実際にrfcomm0に割り当てられていた。
全体の通信準備はこれで整ったので、後は実際にパラレル通信で値を取得できるかどうか検証していく。 # ELM327との相性問題 今回使用するELM327は、メーカーなどによって**当たり外れの個体差が激しく**、相性の問題もよくあるようだ。
実際、今回私が使用したELM327でも同様に、**ラズパイとの通信で問題**が起きている。AndroidのOBDアプリでは通信できているが、もしかするとラズパイとの相性の問題があるようだ(記事内で動作したとの記載のあったものを購入したが、ラズパイとの相性にも個体差がある可能性がある) 現状は、OBD診断機とRaspberryPiではBluetoothのペアリングとパラレル通信の設定、ELM327へコマンドの送信まではできているようだがELM327からの応答がなくエラーとなり、正しく通信できていない。(Pythonのobdライブラリでも通信はできているが返答がないというエラーが表示される) Bluetoothで接続する方法は他にもなくはないが、それでもなお同様の症状であった。ELM327の相性問題も可能性としてあるため、ほかの記事で動作が確認されていた他メーカーのELM327を急遽購入しなおした。まだ届いていないため、届き次第早急に検証する予定である。(しかしながら、可能性としてはあまり期待はできない)
実際、今回私が使用したELM327でも同様に、**ラズパイとの通信で問題**が起きている。AndroidのOBDアプリでは通信できているが、もしかするとラズパイとの相性の問題があるのかもしれない(記事内で動作したとの記載のあったものを購入したが、ラズパイとの相性にも個体差が存在する可能性がある) 現状は、OBD診断機とRaspberryPiではBluetoothのペアリングとパラレル通信の設定まではできているようだが、コマンドを送信してもELM327からの応答がなくエラーとなり、正しく通信できていない。(Pythonのobdライブラリでは、通信はできているが返答がないというエラーが表示される) Bluetoothで接続する方法は他にもあり、試してみたがそれでもなお同様の症状であった。ELM327の相性問題も可能性としてあるため、ほかの記事で動作が確認されていた他メーカーのELM327を急遽購入しなおした。まだ届いていないため、届き次第早急に検証する予定である。(可能性としてはあまり期待はできない)
# 参考文献 - ラズベリーパイで超音波距離センサーの使い方 https://raspi-school.com/ultrasonic-sensor/ - RaspberryPi+OBD2 で取得した車両情報を解析してみる https://qiita.com/nomunomu0504/items/8876f34fb33d8bf24fcb