久しぶりの更新です…。
今回もクルマとiPhoneをBluetoothの無線でつなげてモニタリングするネタですw
前回まではクルマで取得したセンサやECUからのデータをiPhoneでモニタリングするシステムを作りました。
今回は逆にiPhoneからクルマを操作もさせてみます。
要は送受信出来るシステムを作ってみます。
回路からBluetoothで送信したデータをiPhoneで受信してiPhone上へ表示させるデータについては、前回同様に「水温計」「アクセル開度」「電圧計」「外気温」「ブースト圧」を表示させます。
加えて今回は、iPhoneのiOSフレームワークを使って「GPS」データも表示させてみたいと思います。
逆にiPhoneを操作してBluetooth送信してやり、回路で受信して、「オーディオの操作」「ワンショットハザードの起動」(俗にサンキューハザード)の操作を行ってみたいと思います。
まずはざっくりとアプリの動きから…。下手な動画で…w
んで、メインとなる回路は…。こんな感じ…。
今回の作製回路は複雑なやり取りが必要なので、マイコンを2機使用しました。
メインとなるマイコンは「
PIC24FJ64GA002」で主にBluetoothモジュールの通信を行っています。
これは、ECUからデータを取っている「水温計」「アクセル開度」「電圧」のデータの取得と「外気温」「ブースト圧」のデータをiPhoneに送っています。
サブにもう1機「
PIC16F88」というマイコンを組んでいます。
これは、iPhoneから「メインマイコン」にデータが送られそのデータをこの「サブマイコン」に送信してクルマに「オーディオの操作」「ワンショットハザードの起動」のような動きを与えています。要はクルマの制御用です。
この回路は、iPhoneと回路がかなり頻繁にデータの送受信を行うので制御の仕事を分けました。
回路の動きとしては…
「メインマイコン」でECUやセンサーのデータを取得してそのままBluetooth無線通信でiPhoneへデータを送信してやります。データの複雑な計算はiPhoneの方が圧倒的に速いのでiPhone側のアプリで計算させるようにしました。
ここまでは、前回ブログで紹介した方法と同じです。
今回は、iPhoneでクルマを操作させます。
まずはオーディオ操作。
この機能については、「
ステアリングスイッチ機能追加」で行った応用です。
ナビは新車のときにつけた「CN-S300D」を使用しています。
このナビにはステアリングスイッチの配線があるのでそれをデータ偽装して回路から信号を送ってやります。
回路がこれです。
写真上側がサブマイコン側の信号入力で下側がナビへの信号出力です。
サブマイコンから出力された信号によって抵抗値を変化させている単純な回路です。
ナビの再生中「早送り」「巻戻し」「ソース切換え」「音量+」「音量ー」「ミュート」の操作がiPhone上で行えるようになっています。
特に「CN-S300D」のナビは「ミュート」の操作がステアリングスイッチを使わなければできない隠れ機能なので重宝しています。
各オーディオボタンの起動は、iPhone操作により「メインマイコン」にBluetooth経由で送られてきます。その信号を受け「サブマイコン」へ信号が送られます。
メインからサブへのデータの送信については、単純に「メインマイコン」からピン出力して「サブマイコン」で受け取ると6本も入出力ピンを使っちゃうので「メインマイコン」からはD/A変換で電圧データとして出力して「サブマイコン」ではA/D変換でデータの識別を行っています。これで1本の配線で6つのデータ選別できるように工夫しました(「メインマイコン」の出力ピンが足りなくなったのが理由)。
もうひとつiPhoneで操作できる機能に、俗にサンキューハザードとか呼ばれている機能も付けました。
これは
ここで実装しているものと同じ機能です。
現在付けているサンキューハザードの回路は正常に機能して問題はないのですが、この際一緒に盛り込んですっきりさせちゃいます。
これは、iPhone画面上部の「Hazard Flash」のボタンを押すとiPhoneから回路にBluetooth送信され「メインマイコン」から「サブマイコン」へデータ処理されます。「サブマイコン」のプログラムでハザードが3回点滅するように回路を作り込みました。
ついでに…、
今回はクルマのウィンカーの配線を制御しているのでウィンカーレバーをチョンと操作すると方向指示器が3回点滅するように「サブマイコン」にプログラムを追加しました。
レーンチェンジなどにとても便利です。
「メイン回路」周りの回路は以下です。
「サブマイコン」と「オーディオ操作」周りの回路は以下です。
今回は「ブースト圧」を測定する回路も新調しました。
ここで作った回路では、0.16mV/hPaと小さな係数で電圧を測定していたので、微量な圧力変化の読み取りは対応できませんでした。今回は「オペアンプ」を組んで10倍に増幅させてやりました。
今度はアプリについて…。
今回はアプリも新調しました。
開発には前回同様、「MacOS X10.9」上の「XCode5」で「Objective-C」って言語でプログラミングしました。
iPhoneのシステムがiOS7になって画面のガイドラインが大きく変更になりました。
最近のiPhoneのアプリはすっきりしているのが多いのはこのためです。
今回のアプリ作成はこのガイドラインにできるだけ乗っかって作ってみました。
あっさりしてますw
機能は、画面下のタブバーで機能が変えられます。
まずは「Meters」。
ECUデータやセンサーなどのデータを表示させる画面です。
上に「サンキューハザード」を起動させる「Hazard Flash」のボタン。
左に「アクセル開度」をの棒グラフ。
右に「ブースト計」。真ん中に数値表示。周り玉が数値によってクルクル回ります。
下に「水温計」データ。
その下に、「電圧計」が並びます。
あとは、「日時」「外気温」、iPhoneの「バッテリー残量」などが続きます。
運転中この画面はぺこぺこ変化して楽しいですw
次に、「Audio」画面。
これは画面の通り。表示されているボタンを押すことによってナビの操作ができちゃいます。
ここにも、サンキューハザードが起動できる「Hazard Flash」ボタンを付けました。
後は、「GPS」の画面。
これは、iPhoneのフレームワークに標準であるものから取得しているデータです。
「現在の住所」「緯度」「経度」「標高」「現在速度」と「コンパス」の表示を行っています。
コンパスについては、方向の角度データのみが取得できるので、その角度によって角度盤をクルクルまわすプログラムを組んでます。
ここにも「Hazard Flash」ボタンをおいてどの画面でも瞬時にサンキューが言えるようにしましたw。
これも、運転してるとコンパスがクルクル回るので楽しいです。
ただし、実際はナビがクルマに付いてるのでこの情報はいらないけどね…w
最後に「Debug」画面。
これは、開発用のデバッグ用の画面なので使用中は特に必要ない…。
ECUから入力されている電圧や、GPS・iPhoneの情報の生データを表示させています。
間違いがないかの確認用…。
以上のように新しくシステム回路を新規に作って実際に「スクラム」に取り付け1週間テストしてみました。
思惑通り快適に動作してくれて問題はなし…と思う。
「自作回路」+「iPhone」のコンビはかなり楽しいですw
iPhoneにはまだまだ使える機能がありそうです。
今9月にiPhone6が出るとの噂が広がっています。
iOSも8になるでしょう。
画面インチも大きくなるとか…。
表示できるデータ量が増やすこともできるかも…。
アプリのプログラマーは、目が離せませんw。