自作電子小物/HA7車両情報データロガー/iPhone版0.4
自作電子小物/HA7車両情報データロガー/iPhone版0.4
HA7 logger mini V0.4
2013年5月7日火曜日
ホンダの軽自動車 アクティ トラック用の燃費計兼データロガー/レコーダです。スマートフォンを利用し、判り易い表示とデータの記録が、手軽に行えます。アダプタを車両診断コネクタ(OBD2)へ接続して、アップル社のiPhoneに専用アプリをインストールしておけば、無線通信でデータが表示されるようになります。走行中の瞬間燃費、当日燃費、総平均燃費を見る事ができ、過去の燃費等も管理する事ができます。
アダプタは、安価な開発評価ボードのSTマイクロエレクトロニクス社のSTM32F4-Discoveryを利用し、USB-Bluetoothドングルを装着、総計5000円ぐらいで製作可能。ソフトウエアは統合開発環境Eclipse+GCCでC言語にてコーディング。iPhone側のアプリケーションプログラムは、開発環境をxcodeで、Objective-C言語にてコーディングしています。実端末へインストールするには、 有料の開発者登録を要します。
<機能/特徴>
■アプリを起動したスマートフォンを携帯して乗車すれば、自動的にデータが記録・蓄積される
■ガソリンを節約する運転をするための情報が画面に表示される
■どこにいても過去の実績をスマートフォンで確認出来る
■データの持ち出し・出力も全く苦にならない、CSV形式ファイルでPCに取込み可能
■汎用部品で安価・製作容易、調整不要
重要:誤動作した場合、車両の暴走等で生命の危険に及ぶ可能性があります。
注意:全ては、車内にあるコネクタが、OBD2仕様であるという想定を元に開発しています。メーカが仕様開示している訳ではないので、得られる情報は正しいとは限りません。電気的な接続で通信を行いますので、車両に対し物理的もしくはソフトウエア的な故障につながる事もあり得ます。これは、全くの無保証の元に提供する情報です。
<仕様>
接続形態:
OBDコネクタ
車両:
対応車種:HONDA ACTY TRUCK GBD-HA7(2006年式)のみ
名称:HA7 logger mini V0.4 Gateway
分類:車両データ転送装置
接続方法: グローブボックス下のOBD2コネクタへの接続
車両側接続:OBD (On Board diagnostic)
転送媒体:近距離無線通信 Bluetooth
転送タイミング:約1〜2秒間隔(1項目約100ms)
入出力1:OBDコネクタ(16ピン台形)
入出力2:MicroUSBコネクタ(Bluetooth4.0LE対応USBドングルを接続)
OBD対応プロトコル:ISO9141-2、およびISO15031-5(SAE J1979)
Bluetooth対応プロトコル:BLE アトリビュートプロトコル、もしくはRFCOMM
電源:OBDコネクタ経由で車両バッテリより供給、約3W
外形:縦130[mm]、横75[mm]、高さ25[mm]
重量:約100[g]
製作費:約5000円ぐらい(ケースは含みません)
スマートフォン側
名称:HA7 logger mini V0.4 Application Program
分類:車両データ表示・記録アプリケーションプログラム
対応機種: Apple iPhone5
基本ソフト:iOS 6.1以降
通信方法: Bluetooth 4.0 LE
転送手順:アトリビュートプロトコル、およびGATTプロファイル
表示項目:
ロギング画面
上記(1)〜(12)、(16)〜(21)
日移動距離[km/day]
日使用燃料量[l/day]
日稼働時間 runtm_d[s]
日走行時間 movtm_d[s]
ゲージ表示(燃費計)画面
車速[km/h] 数値
エンジン回転数[r/m] 回転針様式
瞬間燃費[km/l] 棒グラフ様式
日平均燃費[km/l] 棒グラフ様式
総平均燃費[km/l] 棒グラフ様式
停車時間[m:s] 数値
当日使用燃料量[l] 数値
当日走行距離[km] 数値
走行率[%] 棒グラフ様式
クーラント温度[℃] 棒グラフ+数値
バッテリ電圧[V] 棒グラフ+数値
残り燃料率[%] 棒グラフ様式
残り走行可能距離[km]
過去履歴画面
日別燃費
日別距離
日別燃料使用量
過去履歴画面(通過ルート)
カレンダの日付をタップすると
走行したルートを地図上に青線で表示
累積系数値の変更画面
出力ファイル:
ファイル形式:CSV(カンマ区切り)、1行目は項目名
記録データ項目:
(0) 日時
(1) エンジン冷却水温度 ect[℃]
(2) 短期空燃比補正値 shrtft1[%]
(3) 長期空燃比補正値 longft1[%]
(4) 吸入管絶対圧力 map[kPa]
(5) エンジン回転数 rpm[rpm]
(6) 車速 vss[kn/h]
(7) 点火時期 sparkadv[°]
(8) 吸気温度 iat[℃]
(9) スロットル開度 tp[%]
(10) O2センサ出力電圧 o2s11[V]
(11) 空然比補正値 shrtft11[%]
(12) バッテリ電圧 vpwr[mV]
(13) 移動距離 dist[km/s]
(14) 使用燃料量 fuse[ml/s]
(15) 瞬間燃費 eff[km/l]
(16) 累積移動距離 dist_s[m]
(17) 累積使用燃料量 fuse_s[ml]
(18) 平均燃費 eff_s[km/l]
(19) 稼働時間 runtm[s]
(20) 走行時間 movtm[s]
(21) 絶対位置座標(GPS)
(22) 標高(GPS)
格納場所:iPhone本体内恒久ファイル
外部出力方法:PC上のiTunesアプリケーションの機能にてに取込み(App共有ファイル)
記録時間間隔:
1秒(OBD上は約1.8秒間隔の精度です)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 設計書 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
この小物を再現するのに必要な、技術的情報をまとめたものです。設計結果であり、検討過程、根拠等のより詳しい情報は、別に記述しています。
Ⅰ 全体構成
1.機能分担
Ⅱ 接続アダプタ側
1. 技術的なポイント
1.1 ハードウエア
1.2 ソフトウエア
1.3 開発法
2. 回路図
3. 部品表
4. ソフトウエア
4.1 開発に必要な物
4.2 フローチャート
4.3 ソースコード
5. 実装
5.1 基板
5.2 ケース
Ⅲ スマートフォン側
1. 技術的なポイント
1.1 ソフトウエア
1.3 開発法
2. ソフトウエア
4.1 開発に必要な物
4.2 フローチャート
4.3 ソースコード
Ⅰ 全体構成
1.機能分担
接続アダプタは、OBD/ISO9141-2とBluetooth-LE Peripheralのプロトコル変換と、OBDで得られない車両情報の内、バッテリ電圧を計測、データストリームに加えます。データ加工・蓄積は全く行いません。電源はエンジンと連動させます。
データ処理の全てを、iPhone上の常駐アプリケーションで行います。Bluetooth-LE Central通信を常に監視し、車両情報を受け取ります。なお、時刻情報と位置情報については、iPhone内で取得します。
Ⅰ 接続アダプタ側
1.技術的なポイント
1.1 ハードウエア
・STMicroelecroronics社のSTM32F4マイクロコントローラ
・UART と ISO9141-2(K-line) 変換
・電圧の計測
分圧抵抗による直流電圧の計測
STM32F4内蔵のA/Dコンバータの使用
デジタル入力とアナログ入力の共存
・車両イグニッション連動の電源オン
・自己電源オフによる待機電力の最小化
1.2 ソフトウエア
・プログラミング言語はC、開発環境はEclipse、コンパイラはGCC
・STM提供標準USBライブラリの利用と、USBホスト機能への新規クラスの実装
・自家製Bluetooth-LEソフトウエアスタックの利用
・ISO9141-2プロトコルの実装
1.3 開発法
・OSX上で無料で利用出来るEclipse+GCCを使用
・回路設計は、無料で利用出来るCadSoft Computer社のEAGLEを使用。
2.回路図
K-LINE接続部は、NPNトランジスタを使った簡単な電圧レベル変換。
バッテリ電圧DC11-15Vを、Discoveryへ供給する安定化した電圧DC5Vに変換する部分は、手持ち部品の関係でボルテージレギュレータを使っています。本来なら、エネルギー効率・発熱の観点からDC-DCコンバータにしたい所でした。オン/オフ制御端子が付いていれば、何でも良いでしょう。
電源オン/オフ制御は、イグニッションの起動パルスと、Discoveryからの強制オフ信号をワイヤードORで結合させる方法です。
イグニッション検出部分は、バッテリラインをローパスフィルタを通して、起動パルスを作り出します。
3.部品表
文書ファイル:V0_4a_parts.numbers
線材、ケースを除きます。
コネクタは、メッキ線を差し込む方法をとれば省けますが、かなり勧められません。
4.ソフトウエア
4.1開発に必要な物
Macintosh(パソコン)
Eclipse+GCCソフトウエア開発環境(*1)
Qstkink2(“1)
*1)無料で利用できます。環境設定例があります。「自作電子小物/TIPS/STM32,OSX,Eclipse開発環境設定」
4.2 フローチャート
文書ファイル:FlowChart.numbers
4.3 ソースコード
ソースファイル一覧
モジュール関連図
文書ファイル:ModuleRelation.numbers
■ダウンロード
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
Mac OS X 10.8.3
GCC ARM Embedded 4.7
Eclipse IDE for C/C++ Developers
Version: Juno Service Release 1
Build: 20121004-1855
Qstlink2 OSX - Revision #65 2011.12
5.実装
5.1 基板
大した回路ではないので、蛇の目基板にて作成可能です。
一応、PCBエディタのEagleでパターンを引いております。
STM32F4-Discoveryに付いている2つの50ピンコネクタに合わせて、基板を重ね合わせる方法です。これにより、Discoveryとの間の配線を一切せずに済みますし、取り外してメンテナンスを容易に行う事が出来ます。
5.2 ケース
簡単な、カバー程度のケースを余り物のアクリル板で作ってみました。
下部は、1枚のアクリルシートを「コ」の字形に折り曲げ、上部も同様な手法で作って重ね合わせる形です。ボルテージレギュレータにかなりの発熱がありますので、上下はわざと開放状態にし通気するようにします。
2枚の基板を接続するコネクタ部分は、勿体ないので結線する部分のみの実装としたので、かなり解りにくい写真になってしまいました。また、ヒートシンクは、壊れたPCマザーボード上の部品の流用です。設計時に覚悟はしていましたが、かなりの発熱があります。やはりDC-DCコンバータにするべきでした。
Ⅱ スマートフォン側
1.技術的なポイント
1.1 ソフトウエア
・プログラミング言語はObjective-C、開発環境はxcode
・Bluetooth4.0のAttributeプロトコルを利用する事による、追加ライセンス費用の削減
(CoreBluetoothフレームワーク「BLE Central機能」の利用)
・燃費の計算と絶対位置の取得およびデータの日別蓄積
・走行ルート絶対位置情報の地図上への重ね合わせ表示
1.2 開発法
・スマートフォン側プログラム開発は、Apple社の標準IDEであるxcodeを使用
2.ソフトウエア
2.1開発に必要な物
Macintosh(パソコン)
xcode(*2)
*2)Apple社より無料ダウンロードできますが、実機での実行には年間約100ドルの開発ライセンスが必要です
2.2 フローチャート
文書ファイル:FunctionRelation.numbers
■燃費計算法 ...V0.2と同じ
燃料を消費するのは、エンジンだけなので、燃料噴射量の積算で燃料量を算出します。燃料噴射量の値がダイレクトに車両から得られなかったので、以下の方法で推量しています。内燃機関工学の知識が全くなく、私の勝手な考えです。理想燃焼混合比を使うという発想は、Wikipediaより得ました。
歴史的に自動車の排ガス規制をクリアする為に、出来るだけ理想燃焼混合比での燃焼になるよう、エンジンを制御をしなければならないのは自明の理でしょう。それを、バルブ・歯車等の機械的な仕組みで行うには複雑すぎる事であっても、コンピュータを利用すれば簡単なので、OBDが付いたような車両は、きっと理想燃焼混合比に近い状態で動いているものと思われます。つまり、「理想燃焼混合比」という固定パラメータでも、かなり近い値が出てくると考えられます。具体的には、吸入空気量が判ると使用するガソリン量もおおむね推量できるのではないかと言う事です。
実際問題として、アクセルオン/オフのスロットル要求に沿うように出力を調整をしているでしょうから、その調整率を加えれば、もっと正確な数値が出るでしょう。私は、空燃比補正値という項目がそれに当たるのではないかと仮定し、計算する事にしました。
HA7では、吸入空気流量が直接得られませんので、他のデータから計算で得ています。
空気密度の計算方法は、Wikipediaより得ました。また、吸入管圧力[atm]は車両から得られる情報が[kPa]単位なので単位変換が必要、質量[g]からガソリン容積への変換は、ガソリンの密度の一般値783[kg/㎡]を用いたのも同様です。
この計算方法が正しいかどうかの検証を以下の通り実施しました。
方式:一定量のガソリンで走行した距離と、この小物で表示される残り距離数の差を確認。
具体的な手順は、
・タンクを空にするため、ガス欠になるまでエンジンを稼働させる。
・正確な量のガソリンを給油。今回は10リットル。
・車両側の距離計をリセット。小物側も給油量10リットルを入力。
・ガス欠になった時の情報を記録する。
結果は、
実走144.0kmに対し、小物は-9kmを表示しましたので-6.3%の精度と言う事になりました。
ただの1回のデータなので参考です。
2.3 ソースコード
ソースファイル一覧
■ダウンロード
xcodeプロジェクトファイル:
バージョン0.4a iOS6初期リリース版 2013.5.12
バージョン0.4b iOS7,xcode5対応版 2013.8.20
バージョン0.4c iOS8,xcode6対応版 2014.10.23
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境(0.4a):
Mac OS X 10.8.3
xcode 4.6.2
開発環境 (0.4b):
Mac OS X 10.9
xcode 5
開発環境 (0.4c):
Mac OS X 10.10
xcode 6.1
実行環境:
iOS6.1以降
現在、本ソフトウエアは「App Store」には登録しておりませんので、簡単に実行してみるという事は出来ません。
xcodeでソースコードをビルドして、ダウンロードする必要があります。さらに、年間100ドルの「iOS Developper Program」に参加しなければなりません。
< 設計情報 >
<関連>
「自作電子小物/HA7車両情報データロガー/iPhone版0.5」
「自作電子小物/HA7車両情報データロガー/SDカード版0.3」
「自作電子小物/HA7車両情報データロガー/Mac版0.2」
「自作電子小物/HA7車両情報データロガー/Mac版0.1」
<あとがき>
前回記事より大分、間が空いてしまいました。実際は今シーズンほぼフルタイムで作業しており、活動していなかった訳ではありません。殆どの時間はBluetoothスタック開発に費やされており、大変辛い開発となりました。
V0.3も完成形(表示部は納得していないが)だと考えていますが「もっと便利にならないかなあ」と思ってしまう物です。その、ちょっとした違い、ちょっとした手間を減らすためだけなのですが、何とか改善しようと考えたのがV0.4です。
スマートフォンはPCのように自由にアプリケーション開発が出来る物だと思っていましたが、iPhoneはちょっと閉鎖的でした。USBインタフェースは利用できそうで難しかったり(費用発生、情報規制)、Bluetoothを知る必要に迫られたりと、かなりの時間を要しました。この度、BLE - CoreBluetoothと言う突破口が開けましたので、iPhoneのリソースを最大限利用して行きたいと思います。
富樫 豊彦 tog001@nifty.com
Simple fuel efficiency meter and
vehicle data logger for HONDA's light weight truck GBD-HA7.