2016/03/22

カラーTFTシールドが到着。早速動作確認!

Arduino用に、シリアル接続の、2.2インチ、カラー液晶ディスプレイをAmazonから発注していたのですが、本日届きました。 
3/10発注で3/22到着なので、2週間弱。。。  届いた封筒には「航空便」と書いてあるんだけど、実際にはどういう経路で届いたのかサッパリ不明です。(^^;


発注から2週間近く掛かりましたが、送料込みでわずか 885円ですから、それくらいの待ち時間は大目に見ましょう。 というか、前回の中国発送のブツは1ヵ月以上待たされたので、今回はむしろ速く届いた感じ。(^^;;;

問題は、ちゃんと動くかどうか。
これには、現物の品質という意味と、適切な情報に到達できるかどうか、という2つの意味があります。
 なんたって、説明書はおろか、一切の情報源への誘導はなく、入っていた袋に貼られていたラベルから、使用しているデバイスがILI9225という型番らしい、、、ということが分かるくらい。。。

でもまぁ、結果的にはご覧のように無事に動かせました~!
 たったの220x176という低解像度ではありますが、カラーのグラフィックディスプレイです。TK-80がTK-80BS、いやPC-8001になったくらいの感じ?(^^;;;
 ちょっと描画速度が遅いのが気になるけど、、、PC-8001とかもこんなもんだったっけなぁ。

2016/03/21

CAN-BUSシールドの準備

Arduino(マイコンボード)に接続するCAN-BUSシールド(子ボード)の入手とセットアップです。
先に動画にまとめてしまうと、こんな様子。

先日の記事(CAN-BUSシールド調査中)でどちらを選ぶか悩みましたが、結局 Sparkfunにしました。

シールドは完成品だけど、Arduinoのメインボードと連結するためにはこのピンソケットをはんだ付けする必要があります。
 さぁーはんだ付けだ! と意気込んで準備したけど、今回はピンソケットを付けるだけでしたっけ。。。(^^;
Arduinoのメインボード(写真の下側のボード)のUSBコネクタが上のシールド(子ボード)に干渉し、ピッタリ入らない。。。(;_;)   ま、いっか。(^^;
CAN-BUSシールドにD-sub 9ピンのコネクタが付いているので、バイクとの接続(実験)用のフィクスチャを自作しました。 市販のRS232Cケーブルをぶった切って、使う予定の4本にピン先を付けただけですけど。(^^;
 これで、一応、自分のバイクのCAN-BUSをArduinoで読み出せるようになる、、、はず。(^^;;;

2016/03/20

バイクのCAN-BUS信号をオシロスコープで観測してみた

R1200GSの電装系をいじくりたくて調べていたら、このバイクには CAN-Bus (CANバス)が採用されていて、各種コントローラやユニット同士がこれを通じて制御されていることが分かりました。
つまり、CANバス信号をモニタすることができれば、車速やエンジン回転数、ギヤポジション、ウインカーの状態などなどを知ることができるはず。。。

CAN-Busは規格化された通信方式ですが、このバイクに使われている方式(電気的な仕様や通信プロトコル)がどこまで規格通りなのか分かりません。
「どうぞご自由にお使い下さい」とユーザーに公開されたものではないので独自方式が採用されている可能性もあります。

そこで、実際にどのような信号(データ)が流れているのか、オシロスコープで覗いてみることにしました。
結果としては大成功! オシロでCANバス信号をデコードすることに成功しました!!
以下、今回の作業の様子です。

まずはリヤフェンダーをバラして、、、車両の基幹CANバスの端っこのコネクタを取り出します。
 これが、お目当てのコネクタ。
本来は、オプション装備のDWA(盗難警報装置)のユニットに接続されるコネクタですが、このバイクにはDWAが無いので、ダミーのコネクタに接続されています。
 ダミーコネクタは単なるキャップではなく、中に抵抗が入っていました。
CANの教科書通り、120Ωの終端抵抗です。
ブレッドボード用のジャンパーケーブルで CAN-H と CAN-L 2本の信号線を引き出します。
CANは差動信号なので、オシロスコープとの接続にはマジメに差動プローブを使用しました。

 使用するオシロスコープは、借用品の「KEYSIGHT InfiniiVision MSOX2024A」です。
このオシロには CAN信号を観測するための機能が備わっていますが、自分は初めて使うので、まずはデモ画面でどんなふうに測定できるのかイメージをつかみます。
とても分かり易い!
 オシロを屋外で使用することは滅多にないだろうけど、、、画面は大きいし明るいので電源さえあれば屋外でも問題無く使えそうですね。

 差動プローブをバイクのコネクタの CAN-H, CAN-L 2本の信号線に繋げて見ると、、、
呆気ないほど簡単に、CAN信号がデコード表示されました!!
 ホントのところ、正しくデータを読み取れているのかどうか、この時点ではサッパリ分かっていないのですが、、、少なくともオシロの機能として、エラー無くデコードできていると表示してくれているので、きっと大丈夫なはず。。。(^^;
(ちなみに後日の解析で、完璧なデータ取得であったことが確認できました)

USBメモリスティックにセーブして、大量のデータを後でじっくり解析することが可能です。
このデータに、スロットル開度や車速、各種電装系のスイッチ状態などの情報が載っています。

これは記念撮影用のポジション。  オシロをこんなところに載せてはいけませんよね。(^^;
昔のオシロと違って、こんなところに載せられるほど小型軽量になったわけですが。v(^o^)
 CANバスに接続されている、様々なユニットからデータが送り出されていることが分かります。
データが送出される頻度(ペース)もいろいろで、1ms毎に送られているデータ(つまり1秒間に1000回)ものもあれば、10msごとや 100msごとのデータもあるようです。


オシロの性能(機能)のお陰で予想以上に簡単にCAN信号を観測することができましたが、残念ながらオシロを繋げた状態で走ることはできないし、CAN信号をデコードしても単なる16進数のデータの羅列で、これを見ているだけではどれがエンジンの回転数でどれがウインカーの信号なのかもサッパリ分かりません。

次のステップは、Arduinoマイコンボードを用いて CANデータを読解すること。。。
そのためのハードウェアとソフトウェアをいじくるプロジェクトに移行します。

バイクの車体側について、毎回リヤフェンダーをばらさないとCANバスにアクセスできないのでは困るので、、、
リヤフェンダー内のハーネスの束ね方を少しいじって、シート下のアクセスしやすいところに、このコネクタを移動させておくことにします。

具体的な様子は後日の記事にて。

2016/03/18

CANバス信号の取り出しポイント

バイク(BMW R1200GS)の CAN BUSデータを覗いてみたくて、あれこれ調べてみたところ、海外のBMWバイク愛好家サイトの情報から、CAN信号の取り出しポイントとして使えそうなアテが見つかりました。

このバイクには、オプションでリヤフェンダー内に DWA(盗難警報装置)のユニットが収まるのですが、そのDWAには車両の基幹CANバスが直結されます。
で、私のバイクにはDWAは取り付けていないので、そこの空きコネクタから CANバスにアクセスできる、、、はずです。

# ちなみにDWAは付けていませんが、他の盗難防止策は講じてあります。(^^;

 タンデムシートの下にあたる、この荷台部分を外せば目的のワイヤーハーネスとコネクタに到達できるはずなのですが、、、実は、これを外すには、その上の、トップケース用の台座のところから外していかなければならないことが分かりました。
 整備解説書(Rep-ROM)で DWAの取り外し方を調べたら、リヤフェンダーの裏側(タイヤ側)から取り外す手順が書かれていたので、素直に従うことにします。
ほぼ同じ角度(車体の左後ろ)から見た現物。
私のバイクには DWAのユニットはありません。
 反対側(車体の右後ろ)から見ればこんな感じ。
車体のほぼ真後ろからだとこうなります。
DWAユニットの代わりにダミーのコネクタキャップがフェンダーに取り付けられており、そこにCANバスケーブルのコネクタが接続されていました。
そのコネクタを外してみたところ。
しっかりとした造りの 防水防塵コネクタです。 ・・・高そう。(^^;
コネクタのパーツ番号刻印「BMW 8364620-06」「tyco 1-967369-1」
 コネクタに来ている線は5本。
このうちの2本がお目当ての、CAN-L と CAN-H という CANの差動信号線。
1本がGNDで、1本はバイクのメインキースイッチに連動した12V、もう1本はどうやらバッテリー直結の常時12Vです。 怖っ!

さて、CAN信号へのアクセスポイントは見つかったので、今度はその信号の内容をどうやって見るか。。。

次の記事に続く。

2016/03/15

CAN-BUSシールド調査中

バイク(R1200GS)の電装系いじりが、マイコンボード Arduino遊びに変化、、、というか混ぜこぜになり始めています。(^^;;;

元々はバイクの電装系(主に灯火類)をいじるにあたり「何をしたいか?」はだいたい決まっていたのですが、前記事で取り上げた通り Arduinoに出会ってしまい、、、現在、「これを使うとどんな事ができるか?」という発想になっています。(^^;

電装系に手を加える場合、昔ながらのバイクや車だったら、ジェネレータ(発電機)の出力やニュートラルランプの点灯電圧を利用して、エンジンが回っていることや停車(=ニュートラル)を検知することを考えるわけですが、、、今どきは、CANを通じて車両状況をデータとして読み出して利用できそう、、、という流れで、本日現在、自分にとって一番ホットなテーマは「CAN-BUSシールドの選定」です。
(CANとは何か? シールドとは何か?・・・は最後に付記しておきます)

この数日間で以下の2つの候補に絞りこめたのですが、、、さてどちらを入手すべきなのか、悩んでいるところです。
使われているデバイスは、どちらもMicrochip社の MCP2515 CAN controllerMCP2551 CAN transceiverなのでCANとしての基本機能や性能は同じはずですが。。。


Sparkfunの CAN-BUSシールド

基本回路としてのCAN-BUS以外に、マイクロSDカードアダプタ、ジョイスティック、シリアルLCD接続コネクタ、GPSモジュール接続コネクタが付いているとのこと。 LCDやGPSはコネクタだけですが、マイクロSDやジョイスティックはおそらくハード的にはすぐに使えるはず。  どうやって使うか未定だけど、あれば便利そうですね。

現在販売されているものは 2015年10月頃にリリースされたもののようなので、比較的新しいところも魅力。

ただ、国内はおろか欧米サイトを徘徊してもBMW Motrrad (バイク)での実績が無い。。。 普通のクルマのCAN(OBD-II)での利用実績は多少は見つかるのですがBMWバイクのCANはクルマとは違うものであることが判明しているので、そこが心配どころです。

このボードのオリジナル情報はこのページ。CAN-BUS Shield

このボードの現時点の国内販売価格は約3,200円です。
十分にリーズナブルだし、米国内 US$24.95なので良心的。

SeeedStudioのCAN-BUSシールド

私にとってこのボードの優位性は、数少ない関連情報のひとつとして米国のアドベンチャーバイク愛好家のコミュニティーサイト(Adventure Rider)の中に、BMW R1200GSのCAN Bus解析用に、このボードを使った実績を見つけたことです。

Adventure Rider - Forums - 1200GS CANbus reversing


安全確実に自分のプロジェクトを進めていく正攻法を考えるならば、まずはこのボードを使うのが良さそうな気がしています。
余分な追加回路は載っていないので、うまく動かない時のトラブルシュートも簡単になりそうです。
このボードのオリジナル情報はこのページ。CAN-BUS Shield V1.2
現時点での販売価格的に見ると、こちらのボードは少し割高に思えちゃいますが、手の届かない値段なわけではないので、こちらもアリかな。


ちなみに、、、CAN(=Controller Area Network) とは、自動車内のネットワークのことです。
昨今の電子制御化が進んだ自動車(バイク含む)は、たとえば、エンジンの回転数とか、ヘッドライトの点灯状態とかが、データとして CAN-BUS上に流れています。

また、「(Arduinoの)シールド」というのは、Arduinoマイコンボードと組み合わせて使用する「子ボード」のことです。

本稿で言えば、私が Arduinoで バイクのCAN信号を処理したいと考えた時、もちろん、全てを自作しても良いのですが、私はそこからやる気はありませんし、私が考えるような事はとっくに誰かが先に考えているので、「CAN-BUSシールド」というものが存在するわけです。

シールドの多くは基本的にオープンソースなので、回路図も部品表も、オマケにプリント基板のパターン(Eagle Files)さえも公開されています。
そして、そのシールドを使うためのソフトウェアライブラリもソースファイルで公開されているので、利用者の状況や目的によって、改造(カスタマイズ)して最大限に活用することが可能です。

最近のクルマ(四輪車)のCANは OBD-IIという公開規格(?)で統一されているようですので、ネット上に事例をたくさん発見できるのですが、BMWバイクでのCANは、少なくともデータ形式については独自規格かつ非公開です。

このため、CAN-BUSシールドを入手しても直ちに自分のバイクのCAN-BUS上を流れるデータをモニタできるわけではありません。

おそらく電気的にはISOの規格に準拠しているはずですので、SparkfunやSeeedStudioのCAN-BUSシールドで取り扱えるはずではあるのですが、、、いろいろと不明な点だらけ。(^^;

・・・まぁ、そのあたりの探求が面白そうなので、こうしていろいろやっているというわけです。(^^;;;

2016/03/08

Arduinoをはじめよう

Arduino(アルドゥイーノ)、、、私自身は、つい一週間ほど前までは知らなかった(少なくとも意識していなかった)言葉です。
正確な説明はググって頂ければ山ほどの情報が出てきますので省略して、まぁ、ここでは、ワンボードマイコン、と呼んでおきましょう。
オープンソースであることが最大の特徴で、マイコンボードの回路も基板パターンも開発環境も全て公開されており、企業や個人が追加ボードやライブラリを公開してさらに発展、という図式です。

バイクの電装系に手を加えたくて、参考情報を求めてネットを徘徊していたら、電子工作系の脇道にだんだん逸れていき、、、以前からちょっと気になっていた類似のラズパイ(Raspberry Pi)よりもこのArduinoが自分の好みに近いようなので、ちょっと味見してみることにしました。
「Arduinoをはじめよう」は、オライリー刊のバイブル的な本のタイトルです。 この本と、Amazonで買える一番コスパが良さそうな入門用の部品セットを、なかば衝動的に購入しちゃいました~。

Arduinoをはじめよう第3版 (Make:PROJECTS) 単行本(ソフトカバー)

私の場合、新しいことを始める時には、まずこういうモノを読んでおきたいのです。
Arduinoというものがどういう背景で発生したか、を知りたかったし、この出版社(オライリー)はまさしくそういう類の書籍が得意だし、ちょうど「第3版」が出たばかりとのことだし。

技術的な内容的としては濃くはありません、というか、前半の読み物はアッと言う間に読み終わってしまいますし、後半に付録として付いているリファレンス編はネット上でも拾えるようですが、私はやっぱり購入しておいて良かったと思います。

これ1冊でできる! Arduinoではじめる電子工作 超入門 

私自身は利用していませが、人によっては、こういう本から始める方が取っつきやすいのかもしれません。
この本はAmazonでの評価もなかなか良いようです。

Arduinoをはじめよう 互換キットUNO R3対応互換ボード初心者専用実験キット基本部品セット20 in 1 

文字通り、お買い得な実験セットです。 私はこれを購入しました。

もちろん、一番肝心な 「Arduino UNO R3」が含まれていますが、Arduinoというロゴは書かれていません。 
それが「互換ボード」の意味ですが、、、オープンソースが売りのArduinoですから、違法コピーではありません。 むしろ、これがArduinoの正しい姿と言えるのかも。

セット内容は以下の通り。 これらを全部まとめて 3,780円は嬉しい価格設定です。 
個々のパーツ類の品質にはあまり期待できませんが、今のところ(全部のパーツを検品していませんが)不良品はありません。

セット内容: Arduino R3 互換ボード1個、 CMOS-IC 74HC595 シフトレジスター1個、 1602 16×2 LCD キャラクタ ディスプレイ1個、 4桁LEDデジタル表示管1個、 1桁LEDデジタル表示管1個、 LED4色24個 タクトスイッチ10個、 温度センサー1個、 傾斜センサー1個、 ステッピングモーター&ドライバ1セット、 マイクロサーボ 1個、 DC5V ブザー1個、   赤外線リモコン1個、   赤外線レシーバー1個、  光センサー6個、  10KΩ可変抵抗器3個、  200オーム抵抗20本、  1Kオーム抵抗20本、  10Kオーム抵抗20本、  1Mオーム抵抗5本、  USBケーブル1本、   10cm ジャンパワイヤ(オス~オス)40本、  20ピン20cmジャンパワイヤ(オス~オス)1本、   4ピン20cmジャンパワイヤ(メス~メス)2本、  8ピン20cmジャンパワイヤ(メス~メス)1本、  ブレッドボード1個 


Arduinoをはじめようキット(スイッチサイエンス)

私自身は購入していませんが、Arduino のロゴ付きにこだわる、、、というか、付属品も含めてもう少し信頼できる業者の実験キットをお望みならば、このセットが良さそうに思います。

ただし、付属するパーツの種類は少ないです。
もちろん、必要なパーツは別途調達すれば良いだけです。

私も当初はこちらにしようかと思いましたが、ちょっとした冒険心もあって前述のセットにしました。

Arduinoボード(CPUボード本体)

ボード単体だけで Amazonを見てみると、Arduinoという表記付きだと 3,000円くらいで売っていますね。
・・・どうやら、これが標準的な価格のようです。

一方、Arduinoの表記無しも含め「互換ボード」で一番安いものを探してみると、、、620円です。
・・・ちょっと安すぎて怖い。。。(^^;

前述の通り、Arduinoはその回路図もプリント基板のパターンもオープンソースですから、企業や個人が(たとえば私が)互換ボードを作って販売してもまったく問題ありません。 

ただ、モノによっては、使用しているデバイス(たとえば USBトランシーバー)にオリジナル版とは異なるチップが使われており、本当の意味での「互換ボード」にはなっていない、なんてことがあるようです。

購入する側にとって問題なのは、やっぱり「価格」と「品質」ですよね。
適切な価格と品質のバランス(本当の意味でのコスト・パフォーマンス)が優れた製品や企業がうまく生き残っていけるビジネスモデルになっているところが、このArduinoの面白いところでもありますね。
(低品質な製品を上手に売りまくるようなビジネスモデルも想定されるけど)

【追記】 品質ではなく仕様として、CPUがDIPパッケージでソケットに刺さっているものと、QFP(?)パッケージでプリント基板に半田付けされてしまっているものがあります。 用途によりますが、ソケット型であれば、プログラムを書き込んだ複数のCPUを差し替えて使えますので、いろいろいじくる前提ならば便利だと思われます。





さてさて、「Arduinoをはじめよう」本をササッとひと通り読み終えて、早速実際に動かしてみました~。
 開発環境をインストールした30秒後には最初のサンプルプログラム(LED1個の点滅)の動作が確認でき、ウワサ通りにスムースです。 

PWM出力もできるので、プログラムをチャチャッと適当に書き換えて、3つのLEDの明るさを異なるリズムでゆっくりアナログっぽく変化させるのも簡単カンタン。

たかがLEDをふわふわと光らせただけですが、何だか嬉しくなって、おもわず動画撮影。(^^;
大昔に「ラジオの製作」とかを見ながら、電子工作をしていた時の気分です。

ひとまず今日はここまで。

購入した中華な実験キットには、液晶ディスプレイやらステッピングモータやらも付いているんだけど、データシートの類が付属していないので、使い方は自分で調べないといけないらしい。。。

-----------

で、次の日ですが、液晶ディスプレイ(LCD)も試してみました。
この実験キットに付属しているLCDがどれくらい標準的なものなのか不明だったこともあり、実験キットメーカー(?)の Web Pageに書かれている手順で動かそうとしましたが、、、最初からサッパリ動かん!   
・・・・他の類似サイトの情報と見比べてみると、LCDモジュールとArduinoボードとの I2C接続が異なっている。。。  試しに他サイトと同じ接続にしてみたら、動きました~。

お約束の「Hello, World!!」と、カタカナも表示できることが確認できました。
ただ、ちょっと期待通りの動きにならなかった部分もあります。
lcd.print() という、本来は文字列を表示するはずのコマンドを使っても先頭の一文字しか表示されない。。。 
ハード的には問題無さそうなので、ソフト、というか、自分が設定したライブラリとこのハードがうまく適合していないような雰囲気なのですが、開発環境のどの設定がどこに影響を与えているのか、私自身が把握できていないので、、、ちょっとじっくり取り組まないといけなさそうです。

----------

・・・その数時間後、ネットで情報を探してみたら、、、、ありました~。
私がインストールしたライブラリの不具合だったようで、ユーザーからの指摘を受けて修正が加えられたようです。 

修正後のライブラリをインストールし直したところ、、、何も無かったように正常動作となりました。

 ・・・ま、こういうトラブルシューティングでの試行錯誤によってノウハウ(経験値)が蓄積されていくわけだし、あれこれ調べながら進めて行くのが、こういう遊びの面白さですね!!