2015年7月28日火曜日

RaspberryPi でセンサーを使おう

今回のCansatに搭載するのは

  • GPSモジュール PA6C
  • デジタルコンパス HMC5883L
  • 加速度ジャイロセンサ MPU6050
  • 気圧センサ BMP180
  • 超音波センサ 
の5つ。
これらを統合して20msec周期での制御ができればよいと考えています。
今回の記事では上3つを扱うPythonプログラムを公開します。
拾ってきたプログラムを改変して、ある一定の時間だけログをとり続けるためのプログラムにしました。
ファイルの読み書きをするプログラムを書くよりも、標準出力するプログラムを
$ ./Program.py > data.txt
のように実行した方が楽です。


GPS PA6C

今回のGPSの取得はRapsberryPi (B+) のGPIOピンにあるTX0,RX0を使ってシリアル通信をします。とりあえず読み込んでファイルに書き込むだけのプログラムです。他のセンサも同様ですが、行頭にプログラム開始からの時間を出力しています。

デジタルコンパス HMC5883L

通信はI2Cです。pythonでI2C通信をするためにはインポートしなくてはいけないモジュールがあります。
今後は35行目のスケールを自動補正するプログラムが必要となります。
加速度センサ MPU6050


通信はI2Cです。
加速度は距離を時間に関して2回微分した値なので2回積分しなくてはいけません。
ジャイロは角速度なので1回微分すると角度になります。
積分操作をする場合は何かデータを処理してからではないと、多くの誤差を含んでしまいます。
そのための操作(フィルタリング)について考える必要があります。

0 件のコメント:

コメントを投稿