LSM303DLHC正常動作しました。

 サンプルソースをちゃんと読んだら、ちゃんと書いてあるじゃん。


// Calibration values. Use the Calibrate example program to get the values for
// your compass.
compass.m_min.x = -364; compass.m_min.y = -291; compass.m_min.z = -336;
compass.m_max.x = +265; compass.m_max.y = +345; compass.m_max.z = 180;

 X,Y,Z軸のMAXとMINの値を表示させるスケッチをつかって、自分のLSM303DLHCの計測値の範囲を取得。ブレッドボード接続のままぐるんぐるん・くねんくねんとセンサーを手で動かすのは難しい。
 昨日作った360度方位をLCDに表示するスケッチに書き換えて、正常動作を確認できました。
 実は、二軸方位センサHMC6352も手に入れていて、こいつもやはりキャリブレーションがいる。こっちはセンサーをキャリブレーションモードにしてぐるぐる回せばOKみたい。二軸なのでくねんくねんは要らないw。で、この値がセンサ内に保存されるのかどうか?調べておこう。じゃないと毎回ぐるぐるしなくては。


地磁気&加速度センサLSM303DLHCテスト

20130529_01

 ストロベリーリナックスの地磁気&加速度センサLSM303DLHCをテスト。
 簡単にArduinoUNOに液晶シールドを載っけたものに電源はエネループ。LSM303DLHCは電源2.16Vから3.6Vで、IOは1.71Vから電源+0.1V。5VのArduinoUNOのI2Cとは直結出来ないので、自宅に3つくらい在庫してある秋月電子のI2C専用レベルコンバータAE-PCA9306を介して接続。

 で、動かしてみるとなんかの影響を受けているのか、キャリブレーションしていない所為なのか値が偏る。地磁気による方位を表示させてても、グルっと回ると確かに360度分の数値が動いて戻ってくるのだけども、90度単位で動いても数値が90単位で変わるわけでもなく。原因を調べないと。ライブラリの問題なのか、キャリブレーションの問題なのか?ただ、決まった方向を向いてれば数値は同じなので地磁気はとれているはずだ。地磁気以外の磁気的要因だったりするとモータ使った機器に載せるのは無茶だろうか?


結局のところ

 モータのオンオフとLEDのオンオフも似たようなもんに見られがちですが・・・。
扱う電流の量が違うので回路的に簡単なのはLED。モーターだと結構いろいろ面倒です。

 自律行動をさせるのにどんなセンサーをつけるか検討中。まずは、室内で自分の位置が把握できるように方位は必須。GPSは室内では使えないし、民間向けのデバイスではそれほど精度は出ないだろう。
 掃除をさせたいわけでもなく、適度にうろちょとしててくれればいいかな。それってAIBOだなぁ。ツレに踏まれないように近接センサだけは頑強にしておこう。


XBeeラジコンを基板で作成

 この週末はXBeeのシリーズ1を手に入れたので、こいつで先週作ったタミヤのインセクトのラジコンの本格化をしていた。

 シリーズ1なのでPWMでモータの速度調整も可能かと思っていたが、なんか使いづらい。PWMのタイマーは外しているのだが、微妙にほどける感じで。詳細は詰めていかないとわからん。

 こんな基板を作成して、
20130526_01

 こんなふうになりました。PWMはVCC直結とXBee出力を切り替えられるように3ピンでジャンパ。
20130526_02

 走行動画。撮影しているスマフォのmicroSDがぼろいのでカクカクするのは了承願います。

 キャタピラのこの子も待機中です。こいつはいろいろ載せられそうなので、マイコンと各種センサを投入して自律行動も可能にしたいですね。
20130526_04

 キャタピラに載せる、方位センサを試してました。3.3VのArduinoが死亡した様で5VのArduinoにて。地磁気センサ+加速度センサの本命モジュールは3.6Vまで5Vマシンとは繋げられないので待機中。3.3VのArduinoは自前で作れるのでそっちの方向かなと思いながら。いろいろ探してたら、SwitchScienceさん名義でAmazonでまだ売ってたので手に入れば楽と思って発注してみました。手に入ればラッキー。まぁ、ProMiniはI2Cのポートがピンに出てないので、引っ張る必要はあるものの小型で良いArudinoです。


今週末の工作予定

 土曜はツレがお出かけなようなので、工作。

 キャタピラのクロウラーの作成と、秋月で買ったXBeeのシリーズ1でのラジコン化。更に、加速度センサと方位センサをのせて自律行動に向けてのセンサのログ取り。

 別案件として、垂直風車をペットボトルで作る件。ロータリーエンコーダで回転を計測できるようにして、風力計のベースとしたい。

 植物系は朝顔の植え替え。

 ロードバイクのメンテナンスもしたい。

 あと、仕事の下調べとしてC#でT4テンプレートをテストしておきたいかな。

 こんなトコロです。

 キャタピラのクロウラーとかなかなか進まないのはこれ↓
20130524_01
 子供の頃は、スイスイ作っていた記憶があるのだが、今ではタッピングビスとかあるとちょっと待ってしまうなぁ。年とったよ。否、昔はギアボックスは金属だったよ。素材の発達のお陰で自分で作るようになったかね。

 20130524_02

 とりあえず出来た。ボディに付けるのは明日。


pinMode(Pin, INPUT_PULLUP);

 朝、なにげにRSSリーダでチェックしていたら、スイッチサイエンスさんのブログにこんなエントリーが

 はい、知りませんでした。先週作ったXBeeラジコンの送信機も、同じような回路。内部プルアップ抵抗を使って、ボタンを押してないときはHIGH,ボタンを押すとGNDに直結してLOWという感じ。
 自分が書いたコード自体も、

pinMode(LeftUP, INPUT);
digitalWrite(LeftUP, HIGH);

昔からある手法の、ピンをINPUT指定しておきながらdigitalWriteでHIGH出力すると、内部プルアップ抵抗がオンになるというもの。
これが、

pinMode(LeftUP, INPUT_PULLUP);

の1行にまとめられるので、お得です(笑)