手前のコンパスはビクセンの製品 LSM303はデジタル出力3軸磁気/3軸加速度センサ。 I2Cバス接続となる。 (コンパスを実現するにはMCUでの計算が必要) ブレイクアウトボードがSparkfunから出ている。センサ自体が2電源(1.8V、3.3V)必要だったりするので買ったほうが簡単だろうか。レベルシフタも付いているので5V系マイコンでも使えそう。 http://www.sparkfun.com/products/10703 気象センサとしては必要ないセンサではある。 しかし設置時に方位と傾きが人の手で設定されるとは限らないとしたらどうだろう。 空中散布を考えるならば必要な機能だ。 FemtoCubeはもともと衛星のハードウェアを市販部品で置き換えたらどうなるかという実験台なので、既にワイヤレスでセンサ値を取得する評価環境として完成しつつある。I2Cにぶら下げるセンサの追加は想定していたので、実装もそれほど手がかからなかった。 …場所だけは手こずった。 結局XBee基板に吊り下げることにした。 電子系基板の密集率がすごいことになっている。 真ん中の赤い基板がLEM303 奥の気圧センサと並ぶ形で これで現在、この5cm角の基板が取得する情報は… ・光の強さ(ルクス) ・焦点範囲の色(RGB) ・温度 ・気圧 ・バッテリ電圧、太陽電池電圧 ・3軸磁気 ・3軸加速度 となった。 衛星の機能模擬としてはだいぶ充実した。 最近は9自由度センサ(加速度、ジャイロ、磁気)を備えたワンチップなセンサICが出始めているので、こうした機能を組み込むものがありふれてきた。 例えば、ArduIMU v3 http://www.sparkfun.com/products/11055 これなどはCANSATやローバーに必要なIMU機能を提供してくれるし、基板もとても小さい。 キャリブレーション、方位算出 LSM303については、データシートに色々なレジスタ設定が書いてある。結構設定作業がありそうだ。 傾き補正コンパスの数式や計算方法については、STmicroのアプリケーションノートに丁寧な説明があるので、それを参考にするといいかも。 見つけたサンプルコードを試してみた。(arduino-0
kent`s prototyping memorandum