だいたいだいだい

だいたいのことはたいていなんとかなる 旅行とか飛行機とか工作とか

【MultiWii】その3:各センサーはどうやったら使えるのだろう??【SE V2.5 CRIUS】

前回,MultiWiiConfでMultiWii SE V2.5 CRIUSを動かしてみました.


www.daitai-daidai.com

 

感想としては,なんかよくわからないけどすごい.といったところでしょうか.

 

なんか,ソフトウェアとして,全て完成されてますよね.だからなんかよくわかんないんですよね.このまま,マルチコプターをつくるにはとてもよさそうです.

だからこそ,自分で作ってる感じはなさそうだな,とか,自由度が低くなってしまうかなという感じもあります.

 

よって,一旦,ソフトウェアとしてのMultiWiiからは離れてみて,マイコンボード上のセンサーをうまく使いこなす術を磨きたいなと思います.勉強になるし,きっと.

 

というわけで,今回はまず,MultiWiiボードについているセンサーの値を取得するために各センサーのI2Cのアドレスを見ていきたいと思います.

 

*以下,マイコンボードとしての,MultiWii(SE V2.5 CRIUS)という意味で,「MultiWiiボード」ということとします.

 

どんなセンサーがついているのか

最初の記事で述べたように,MultiWiiボード上には,3つのセンサーがついており,それで4種類,10個の物理量を計測することができます.

dai40141.hatenablog.com

 

搭載センサーは次の通り.

  • 加速度/ジャイロセンサ:MPU6050C
  • 磁気センサ:HMC5883L
  • 気圧センサ:BMP085

で,MultiWiiのプログラムでは,これらのセンサーの値ををいい感じにフュージョンして,姿勢や向き,高度を表示してくれるわけです.

でも,これらのセンサーの生データを取得できれば,自分の好きなようにプログラムして自分の好きなものを作れる...はず...

というわけで,

 

「センサーの生データ,欲しくない?」

 

センサーの値をどうやって取得するのか

それぞれのセンサーの計測値を取得するには,マイコンとセンサーでなんらかの情報のやり取りが必要です.

MultiWiiボードではセンサーとマイコンでI2Cという通信方式をつかって通信して,計測値を取得するようです.

I2Cとはってところは,詳しくはまだわかりませんが,Wikipediaさんにかいてありますね.

それで,詳しくはまだわかりませんが,I2C通信では,図1のように,1つのマスター(ここではマイコン)に対して,複数のスレーブ(ここではセンサーたち)を並列に繋げることができるようです.

 

f:id:dai65527:20180422151535j:plain

 

ここで,複数あるスレーブを区別するため,それぞれのスレーブはアドレスというものをもっています.

 

まぁ,この辺まで調べてみてなんとなくわかったような気になります.詳しくよくわk(略)

 

とりあえず各センサーのアドレスを取得してみた

いきなりセンサー生データを取得する前に,本当にI2Cでつながっているのかの確認もかねて,各センサーのアドレスを取得してみようと思います.

海外のデキる人がArduinoにI2Cで接続されている機器のアドレスをスキャンする,"I2C Scanner"というプログラムがあったので,それを使って,MultiWiiボードについているセンサーのI2Cアドレスを取得します.

    A I2C Scanner for Arduino · GitHub

 

前回と同じ要領で,接続し,書き込んでいきます.

f:id:dai65527:20180422153209j:plain

 

書き込んだら,右上の虫眼鏡みたいなマークをクリックしてシリアルモニターを開き,結果を確認します.

ボーレート(右下で変更できる)は9600です.

f:id:dai65527:20180422153526j:plain

3つのアドレスで,I2C機器が検出されています!!

 

ちょっとぐぐってみたところ,アドレスの対応としては,

  • 0x1E:HMC5883L
  • 0x68:MPU6050C
  • 0x77:BMP085

のようです.

 

とりあえず,今後はこれらのセンサーの生の計測値をなんとか取得していきたいと思います.

 

その後↓

www.daitai-daidai.com

www.daitai-daidai.com