2009-11-22

Arduino シールド作成

曲げセンサを使って動作確認をした Arduino ですが、今日は、加速度センサ(KXM52-1050)を繋いでみました。

とは言っても、結局は 5v、GND の2本と、X, Y, Z 計3本の信号線を Arduino のアナログ端子に接続するだけ。プログラムは、前回と同じく、analogRead() で読み出して、Serial.print(value, DEC) で出力するだけ。使い方は、曲げセンサのときと同じ。

モノは、秋月で買った加速度センサで、基板に必要な部品が実装済であり、8ピンモジュールになってます。

  1. Vdd:2.7V--5.5V
  2. PSD:パワーシャットダウン。(通常は Vdd に接続)
  3. GND
  4. Parity:パリティ。(通常は NC)
  5. SelfTest:セルフテスト。(通常は GND に接続)
  6. Out X:X軸出力
  7. Out Y:Y軸出力
  8. Out Z:Z軸出力
となっています。1、2番ピンを 5V に。3、5番ピンを GND に接続。あとは、6--8番ピンを analog 端子へ。 ブレッドボード上であっさりと動作確認できてしまったので、シールドを作成することにしました。

片面基板でやろうと思ったら、ピンヘッダを実装面、ハンダ面とで逆に付けなきゃイカンので...今回は両面基板を使いました。ホームセンターで ELPA のヤツを買ったんですが、こんなんで¥600 オーバー。高すぎる。送料考えなきゃ、スイッチサイエンスさんのバニラ・シールドのほうが安いじゃないか。ピンヘッダ付いてくるし。

作成したシールドですが。
analog 0 は、曲げセンサ用(中央のピンヘッダ2本)。analog 1 は、SHARP の距離センサ用(中央のピンヘッダ3本。暗くてみえませんが...)を想定しています。analog 2--4 が、加速度センサの X、Y、Z になってます。Digital 側のピンは一切使って無いというリッチなシールド。

作っちゃってから気がついたんですが...車用途で使用するなら、Z 軸のセンサは未接続で良かったですね。そんなデータあってもイラナイですから。ポート1個無駄にしてしまいました。
勢いで作っちゃイカンな。やっぱ、設計が大事だ。

続きには、今回のスケッチ。


ポート番号変えただけのセクションが5つあるだけ。
センサー情報の最終的な処理を PC でやるなら、Arduino 側はデータを送るだけに専念すればイイんだけどね...。こいつをデータロガーにするなら、キャリブレーションしないとなぁ。
//-----------------------------------------------------
// 初期化
//
//-----------------------------------------------------
void setup()
{
 Serial.begin(115200);
}

//-----------------------------------------------------
// メイン
//
//-----------------------------------------------------
void loop()
{
 int iValue;

 Serial.print("[Sensor]");

 // Analog 0 -- Accelerator
 iValue = analogRead(0);
 Serial.print(iValue, DEC);
 Serial.print(",");

 // Analog 1 -- Brake
 iValue = analogRead(1);
 Serial.print(iValue, DEC);
 Serial.print(",");

 // G-Force X
 iValue = analogRead(2);
 Serial.print(iValue, DEC);
 Serial.print(",");

 // G-Force Y
 iValue = analogRead(3);
 Serial.print(iValue, DEC);
 Serial.print(",");

 // G-Force Z
 iValue = analogRead(4);
 Serial.print(iValue, DEC);
 Serial.print("\r\n");

 delay(50);
}