38. 2020年10月13日 23:39:19 : lhK4OmJ0Wg : Qk04UHRZb0RTcC4=[1]
所謂悪意のハッカーでは無くて私の車はいったい中で何をしているのか?知りたい方も多いようです。
車はドライブバイワイヤーでCPUインターフェイスの塊です。
しかし自分や他人様の命がかかっているのですからもし個人が一方的にドライバーが悪い?にされたら どうしましょうか。
相当専門的になりますが例えばこれ、、、これ以外も色々あります。
なお最近ではセキュリテイ保護のため徐々にデーターが見えなくなっているそうです。
2019-12-24
ラズパイでCAN通信をして、車両の診断データを送受信してみた
https://tech.aptpod.co.jp/entry/2019/12/24/070000
Raspberry PiでCAN通信を動かして、車両の診断データ(OBD-II)を見てみた話です。 SocketCANのISO-TPの機能が便利だったので、その紹介がメインになります。
背景と目的
弊社の製品であるintdash Automotive Proは、車両CAN(Controller Area Network)データ等のデータロギング、可視化・解析などのワークフローをクラウドシステムで実現するソリューションです。
このAutomotive Proをベースに、車両診断(ダイアグ通信)のワークフローをクラウド化できないか?という要望があり、車両診断に関する機能も開発中です。
この開発の過程で、実際にRaspberry Piを使って車両診断(OBD-II)通信を試したので、そのやり方を紹介します。
車両診断とは?
診断機能の概略については、Vector社のはじめての診断をご一読ください。 本記事では、CANを使ったOBD-IIによるダイアグ通信を紹介します。
https://assets.vector.com/cms/content/know-how/VJ/PDF/For_Beginners_Diagnostic_Communication.pdf
CAN通信用モジュール
今回は弊社で開発したラズパイ用の拡張ボードを使用します。
といっても、拡張ボード上はMCP2515をラズパイのSPIとGPIO25に接続する、一般的な方法で実装しています1。
データシートや、「MCP2515 回路」等で検索すると出てくる回路図を参考にしてください(こちらの記事がわかりやすいです)。
もしくは、Amazonで売ってるMCP2515モジュールでも大丈夫だと思います。
Raspberry Pi と MCP2515 で CAN 通信
https://rabbit-note.com/2015/09/13/raspberry-pi-mcp2515-can/#i
Rasbee 3個 MCP2515 国内配送 CAN バス モジュール TJA1050 レシーバー SPIモジュール AVR MCU ARM プロトコルボード 受信機 コントローラ 並行輸入品
https://www.amazon.co.jp/dp/B01GF75R0O/
現在在庫切れです。¥799
OBD-II通信とは?
ものすごく簡単に説明すると、OBD-IIは多くの車両に搭載されている車両診断を行うための規格です。5
OBD-IIでは以下の機能が定義されています6。
故障コード(DTC:Diagnostic Trouble Code)の取得要求
フリーズ・フレームデータの取得
エンジン系のECUのパラメーター取得
アクティブテスト機能
車両情報等
etc..
ここで、CAN通信上でOBD-IIのデータを送受信するには、ISO 15765-2の規格に対応する必要があります。
リクエスト時のCAN-IDについて
送信先のCAN-IDの指定方法ですが、11bit(通常)と29bit(拡張)の2種類があります12。 どちらの種別を受け付けるかは、筆者が確認する限りでは車種(メーカー)で異なる模様です13。
VINの取得を試してみる
実際に、弊社の所有するHonda FITのVINを取得してみます。 VIN(Vehicle Identification Number:車両識別番号)は最大17バイトの文字列なので、マルチフレーム通信しないと取得できません。
ラズパイでターミナルを(送信と受信用)2個開きます
受信側は candump can0で待機しておきます
以下のVIN取得の要求コマンドで、応答があるか確認します
実際に、市販されている故障診断機のJDiag JD101でも取得してみましたが、結果は一致していました。
あとがき
本当はデータモニターや故障コードの解説もしたかったのですが、分量が多くなってしまいましたので今回はここまでです。 最後も駆け足になってしまいました。orz
記事を書き終わった後に気がついたのですが、書籍のカーハッカーズ・ハンドブックに今回紹介した内容が記載されていました!詳しく知りたい方・興味を持った方は、この本を読んでください!
カーハッカーズ・ハンドブック
――車載システムの仕組み・分析・セキュリティ
[cover photo]
Craig Smith 著、井上 博之 監修、自動車ハッククラブ 訳
2017年12月 発行
312ページ
ISBN978-4-87311-823-9
原書: The Car Hacker's Handbook
オライリー・ジャパンで書籍を購入:
定価3,520円
Ebook Storeで電子版を購入:
価格2,816円
参考リンク(書籍)
Raspberry PiでOBD-II (CAN)の情報を取得するための基板を自作する (Qiita)
Raspberry Pi で CAN通信(準備)
MCP2515を使った自作基板とRaspberry Piで自動車のECUにOBDリクエストを送る (Qiita)
Raspberry Pi と MCP2515 で CAN 通信
はじめての診断 by Vector (pdf)
OBD (wikipedia)
OBD-II PIDs (wikipedia)
SocketCan (wikipedia)
SocketCAN ISOTP (GitHub)
カーハッカーズ・ハンドブック
http://www.asyura2.com/20/hasan134/msg/726.html#c38