Programming

CAN

CANデータを見るプログラムを動画にしてみた

走行中のRX-8車内コンピュータデータを読み取ってみる 先般のエントリにてRX-8のCANデータをグラフにしてみましたが、リアルタイム情報を車載動画にピクチャインピクチャとして重ね合わせた動画をつくり、ニコニコ動画にアップロードしました。 今までは見る専門だったので、どの程度の方に見て頂けるかはまったく未知数でしたが、一日経たない間に300人以上の方に見て頂けたようで。 人気動画とは比べものになりませんが、場末のブログにひっそり置いておくよりはよっぽど見て頂けるので嬉しいです。 次はもう少し派手目に作ります。
Programming

iPhoneのSafariを使って走行中の道路名をtweetしてみた

というわけで、サーバに展開した国交省のデータを使って、実際にTwitterでつぶやくようなアプリを作ってみました。 といっても、専用アプリを書くのは面倒なので、ひとまずはiPhoneのSafariからGPS情報をサーバに送りつぶやくようにしてみました。 仕組み iPhoneのSafariは、JavaScriptを利用して現在位置を取得するGeolocation APIに準拠しています。そこで、定期的にiPhoneから現在位置をサーバに投げてやり、サーバ側で道路名を解析してTwitterにツイートさせてやるような仕組みを作りました。 iPhoneのSafariでGPS情報を扱う方法は、Ascii.jpのiPhoneのGPSをJavaScriptで操ろうという記事が参考になります。 ...というか、今回やったことはこの6ページ目にあるサンプル03をちょいといじっただけです。 ここのソースコードにupdate関数があり、位置情報が更新された際に呼び出されます。結構これは頻繁に呼び出されるので、たとえば10分おきにサーバに情報を伝えたい、なんてときには、update関数の最後あたりに var ...
Programming

せっかくなので道路をGoogleMaps上にプロットする

前回のエントリで記したとおり、自分が道路上にいるかどうかを調べるためには、そもそも道路のデータを保持していなければなりません。 このデータを使って地図上に高速道路や国道のラインをプロットすることが出来ます。 最初、前回のエントリで作ったデモに組み込もうと思って試しにやってみたんですが、位置データが多すぎるため、blazedsを使って単純にサーバからクライアントにプッシュするとTomcatが落ちてしまいました...(たぶんシリアル化する時に落ちてる)。 GoogleMaps APIを調べてみると位置データをエンコード化して読み込ませるというオプションがあったので、サーバ側でデータをエンコードした上でクライアントにプッシュすることで、そちらを実装してみたらうまくいったので公開します。 あ、そうそう、前回のデモでは関東圏だけしか動きませんでしたが、DBをアップデートしたので、今は日本全国調べられます。 説明 前回のデモに追加で実装したので、前回のサイト(停止しました)を訪れて同じように動かすだけです。 前回は、地図中心点に道路があるかどうかを調べ、道路に名前がついていればその旨表示するだけで...
スポンサーリンク
Programming

緯度経度から、その場所を走っている道路名を調べる

うわー、これまたタイトルからしてニッチ(笑 最近、「流行っている」と形容するのも恥ずかしいtwitterですが、「○○なう」などとつぶやいている人が結構見受けられます。「○○」にはその時訪れた場所だったり、その際やっている行動だったりが入るわけなんですが。 これ、車の運転中にはできないですよね、危なくて。なので、つぶやきをそれっぽく自動化できないか考えてみた訳なんですが...。 前回のエントリでは車の中を流れる各種データを取り出すことが出来たので、たとえば、エンジンを切らずに速度0が一定時間続いた回数をして「(ほぼ)信号待ちの回数」としてカウントし、「信号待ち100回目なう」などとつぶやくことは出来そうです。あるいは、制限速度を超えたら「現在XXkm/hで巡航中。○○県警かかってこいや」とつぶやくことも可能でしょう(よい子はまねしちゃいけません)。 ...ただまぁ、大がかりなわりにはあまり面白そうなつぶやきのネタにはならなそうですし、第一この設備が一般的ではないので、他の人にとっては「ふーん」程度であまり参考にならないです(自分で運転を解析するにはとても面白い情報なんですけどね)。 そ...
CAN

CANUSBを使ってRX-8の各種データを取り出してみる

前回のエントリまで使っていたELM327チップですが、どうも全てのデータのログを取ろうとするとバッファが溢れてしまうようで...。ただせっかく乗りかかった船なので、CANUSBという代物を購入してRX-8のデータをリアルタイムに取り出してみることにしました。 上記の画像においてグラフの意味は以下の通りです。 赤 線:車速 青 線:エンジン回転数 紫 線:ラジエータ水温 水色線:エアインテーク温度 黄色線:アクセル開度 赤領域:フットブレーキを踏んでいる 青領域:クラッチが切れている 緑領域:(高さに合わせて)ギアポジション CANはまぁここでは車内LANのようなものだと考えておけばいいと思います。自動車内のコンピュータとその他センサや計器類との間で情報をやり取りするときのプロトコルなのですが、特徴の一つはブロードキャストだということです。 なので、OBD-IIのようにポーリングしてデータを取り出すのと違い、ネットワーク内を流れているデータであれば「盗み聞き」することができるため、車内コンピュータへの負荷が(おそらく)ありません。 コンピュータに負荷がかかった場合にもおそらくフェイルセー...
CAN

RX-8とOBD-IIでお話をする – シリアル接続プログラミング

前回のエントリでELM327デバイスが動作することを確認したので、今回は簡単なプログラミングをしてみようと思います。 Bluetooth版のデバイスを自分は選んだので、BluetoothのRFCOMMを利用することになります。今回はJavaでプログラミングをすることにし、BluetoothライブラリはBluecoveを利用します。 実際のプログラミングのフローは以下のようになるかと思います。 Bluetoothデバイスを探索する探索が完了したらそのデバイスをオープンするELM327の初期化ELM327にリクエストを発行ELM327から受け取ったレスポンスをparseする4に戻る デバイス探索に関してははじめに一度だけ行い、二度目からはBluetoothアドレスなどを保持しておけば再度行う必要はありません。また、2以降はおおむね他のシリアルデバイスでも同じ手順になるはずです。 デバイスのオープンはBluetoothの場合は以下のようになります。 String url = "btspp://XXXXXXXXXXXX:1;authenticate=false;encrypt=false;ma...
CAN

RX-8とOBD-IIでお話をする – 動作確認

ELM327の載ったデバイスを手に入れたので、今エントリでは実際に自動車に取り付けて動作確認をしたいと思います。 前回のエントリで自分はBluetooth版デバイスを買いましたが、基本的にデバイスとお話しする方法はシリアル通信となります。RS-232C接続(つまりシリアル接続)の場合には該当するデバイスとお話をすればいいですし、USBやBluetoothの場合、各OSで仮想的なシリアルデバイスを作成できます(WindowsだったらCOM1とか、Macだったら/dev/tty.*とか)。 MacだとBluetoothで仮想デバイスを使って常にお話しするのはどうも安定性に欠けるようなのですが(Snow Leopardは長く試してないので改善しているかもしれません)、いずれにせよ動作確認のためだけであれば問題ないでしょう。 普通だったらここで実際に配布されているソフトウェアを使って動作確認をするのでしょうが、自分の場合は(それだとつまらないので)実際にターミナル経由でデバイスと直接お話をしてみることにします。 プロトコル ELM327は古き良きATコマンドを含む対話型のインタフェースを提供し...
CAN

RX-8とOBD-IIでお話をする – 準備

久々の投稿です。 OBD-IIという自動車のコネクタを通した各社共通の診断プロトコルがあるのですが、そいつを日曜プログラマでも簡単に扱えるようにするELM327というチップが存在することを知りました。 そして、そのチップを使ってシリアルやらUSB、Bluetoothなどでパソコンからお話をするデバイスもいくつか売り出されているようです。これを使うと、エンジン回転数や速度などの基本情報、それにエンジン温度や瞬間燃費等の普通は知ることのない情報をリアルタイムに取得することができるようになります。 え、そういうのだったら既に売ってるって? ええ、BLITZ R-VITとかそうですよね。仕組みはまさに同じなのですが、自分でのプログラミングだと簡単にログをとったりいろいろ遊ぶことができます。逆にそういった加工をしないのであればこちらの製品のほうが手っ取り早いと思います。 自分の場合は、パソコンと連携していろいろやってみたかったってことと、どうせすぐに飽きるのに4万とか5万とか出せないので自作することにしました。OBD-IIから情報を取り出すだけなら5000円くらいのパーツだけで済んでしまいますの...
DarwiinRemote

DarwiinRemote 0.5をリリースしました

ごぶさたしております、Hiroakiでございます。 やっとこさVersion 0.5のご案内です。今回のバージョンでは、クラシックコントローラのサポートおよび、これまで懸案の一つであったPPCマシンでの不具合の修正が行われています。ダウンロードはこちらよりどうぞ。 そういえば、先月末に発売されたMac People 2007年4月号にWii関連の特集が組まれてDarwiinRemoteも紹介されました。DarwiinRemoteの動作に関する質問や、ゲラ刷り原稿が編集の方からPDFで送られていてチェックを頼まれたりしたので、てっきり献本等のお話があるかと思いきや…。結局特に何もなく。こちらから何か言うのもなんなので、自分では結局買わないままです。読みはしましたけど、ね。 記事自体はとても簡潔に操作法などが纏められているので、DarwiinRemoteの使い方が分からないなどの場合にはご参考になさってください。分かりやすいと思います。
DarwiinRemote

DarwiinRemote and WiiRemoteFramework 0.5 have been released!

Hi all, I'm very sorry that I was far away from developing DarwiinRemote...anyway, I've released new version of DarwiinRemote and WiiRemoteFramework. The latest DarwiinRemote supports classic controller, and some critical bugs including PPC issue were fixed. Please download the software fromhere. Enjoy! In this version, especially Jasen made great efforts to improve the framework ;)
スポンサーリンク