PythonでMPU-6050の出力をリアルタイムに

どういうわけか、WindowsのTeratermとかLinuxでScreenを使ってmbedから出てくる角度情報を読み取っていると表示がおかしい。


それに数字だけ見ていてもわかりづらい。

  

というわけで【Python】Arduinoで測定した温度をグラフ化 という記事を参考にグラフを出そうと思った。そしてできたのがこのスクリプト。


ただ、残念ながらグラフは出せず。プロットする部分をコメントにしてあるけど、この部分をループ内で実行するとシリアル通信のタイミングとPython側の処理のタイミングが合わなくなるのか、mbedが動作停止するという問題が出る。(傾きセンサーの値を正常に取れてシリアルに送れているときは本体のLEDが激しく点滅するが、それが消えてしまう)

これはmbedではエラーが起きても詳細なログが得られるわけではないので予想なんだけども、mbedが信号を送るタイミングとPCが信号を受けるタイミングがずれてエラーになっているんじゃないだろうか。プロット部分を単に0.1秒スリープに置き換えても同じように落ちるし。
mbedとかArduinoとかで簡単になったとはいいつつ、やっぱ組み込みはローレベルなことをしっとかないといけないんだなぁ、と思った。

Appendix: Python3系を使っている場合のPygameのインストール(Ubuntu)

Pygameはpipで一発インストールというわけにはいかず、少々面倒だった。
http://www.pygame.org/wiki/CompileUbuntuを参考に

sudo apt-get install mercurial libav-tools libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev  libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev

(Pythonはpyenvで入れているという前提で)

そして

sudo pip install hg+http://bitbucket.org/pygame/pygame