ラズパイ日記...番外編...母艦新たに

10年ぶりにPCを新たに購入しました。
DELLのキットは、Celeron3G,Mem2G,Win7,SSD128M,HDD1Tというスペックでした。
古いXP時代のマシンなので、upgradeももう限界です。
新しいのに移行して、こちらはLinux化して引き続き使おうと思います。

新たに購入したのはIntel NUCです。
型式は以下のとおりです。

INTEL インテル i5-8259U M.2 SSDに対応 2.5" (9.5mm厚) HDD/SSDも搭載可能 ハイパフォーマンス小型ベアボーンキット BOXNUC8I5BEH

第8世代のCore i5が搭載されてます。見た目も小さいし、Win10へやっと移行します。

 Amazonで購入しこんな感じで到着です。多治見AFCからの発送でした。
本体はこちら
メモリーは16Gです。が、これはNUCにはまりません、デスクトップ用ではなくノート用のもう少し短いタイプだそうです。返品して交換します。「DDR4-2400」というキーワードだけ見てました。

SSDは、こんな小さいのに500GB。SATA3より高速なM.2という規格です。発熱するそうなので冷却用のヒートシンクも購入しました。効果の程はわかりません。 
電源コネクターも必要です。3pin端子の形状からミッキーコネクターと言うそうです。

メモリーを返送交換して来週にはOSインストールできればと思います。

ラズパイ日記...27日目...加速度センサー比較

先日新しく購入した加速度センサーと以前購入したもの2つについて生データ出力を比較しました。

ESP32でもいいのですが、とりあえずPi zeroに繋いであるのでそのまま活用しました。
確認はpythonで2つのセンサーを読み出して、加速度3軸から角度を求める計算式で同じように計算した結果を比較してます。

リアルタイムなグラフ表示を目指してmatplotlib格闘中ですが、いまだ表示出来てません。
古風なやり方ですが、標準出力をファイルに書き出してgnuplotでグラフ化。画面キャプチャしてます。
Pi zeroとの接続は、各センサーこのようにI2C経由でバス接続で。電源はPi zeroの3.3Vで問題ありません。各センサーのSDA,SCL配線を間違わないように。
 
センサー部分を拡大するとこちら。
向かって左側が新しく購入したmpu6050。電源オンでLEDが点灯するので繋がってる感は目視できます。右側がbosch製のbmx055。こちらは電源オンしてもだんまりです。

まずは、センサーを動かさない状態で観測します。左のメモリは左右の傾き度数、横軸は時間です。
 
紫線がmpu6050、緑線がbmx055です。どちらも完全に水平に基板に刺さっているわけではないのとセンサー個体差で若干のオフセットが生じます。
どちらもプラスマイナス1度程度の振れです。ややbmx055の方が振れ幅大きい感じです。もっとbmx055の方が振れ幅が大きいイメージでしたが、比べるとほぼ同じでした。先入観はいけません。

基板を左右に45度動かすとこんな感じです。
0度からのオフセットは置いといて、ほぼ同じような動きです。角度としてはどちらも基板の動きにほぼ追従してます。
引き続き、フィルターに入れた場合の差、リアルタイムなグラフ化を目指したいと思います。

雑誌「トランジスタ技術」2019年7月号はカルマンフィルターの歴史が記事になってます。
カルマンフィルターはアポロ11号が月に行くための軌道計算のために開発されたそうです。その記事の続きで2輪倒立振子の製作が掲載されてます。
グッドなタイミングです。armが乗ったSTM32でC++言語で開発記事でした。タイヤ軸にロータリーエンコーダにかまして、移動距離をフィードバックするような感じです。第1弾GW宿題は倒立までたどり着かなかったので、夏休みの自由研究を目指して第2弾準備中です。

ラズパイ日記...26日目...Pi zero USB-serial他

今日は五月雨にいろいろな内容を

★Pi zeroのUSBをシリアルとして認識させる。
そうすると母艦PCからシリアルポートにて接続可能となります。

参考はこのあたりを
https://blog.goo.ne.jp/lm324/e/60f508289efeb89c9ea024127032649c

https://www.slideshare.net/matoken/lutris?next_slideshow=1

https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/serial-gadget

まとめると、
①/boot/cmdline.txtと/boot/config.txtを変更追加する。
②/dev/ttyGS0.serrvie にリンクを張る
がPi zero側の作業です。
母艦側はOSにあわせてUSB OTGなドライバーをインストールする。

Windows7 + TeraTerm + COM9でPi zeroに接続している様子です。

★ WindowsにX windowを飛ばす
Pi zeroをX window表示にしてそれをWindowsに飛ばします。これで、センサー情報を可視化できるかも。
参考はこのあたりで
http://manabi.science/library/2017/02142121/
WindowsのX clinetはこちら。最近は無料で結構あるようです。
https://sourceforge.net/projects/xming/

TeraTermの設定で、「設定」→「SSH転送」の中で「リモートのXアプリケーション...」をチェックしておくと、新しくポップアップしたウインドウは常にWindowsへ画面を転送してくれます。

★mpu6050のフィルター
bmx055と比較すると、ノイズが大分少ないようです。定常状態で観測すると以下のとおりです。
 
左軸は角度です。
紫線は1軸から計算した角度、緑線は3軸から計算した角度、水色線はさらにLPFを入れたグラフです。静止状態でLPF入れなくてもプラスマイナス1度位しか変動ありません。

X軸で左右に45度ほど傾けて動かしてみると
 線の色は、先ほどと同じです。1軸だけだとたまに異常値が出ますが、3軸から角度を出すとほぼ正確でフィルターも要らない感じです。LPF通すとやはり少し遅延が出ます。
 3軸の値を使って角度計算すると正確かつ速度も十分な感じです。Madgwickフィルターを使わなくても大丈夫な感じです。

センサー出力をスペース区切りで出力させ、gnuplotでグラフ書きました。pythonからgnulotをパイプで繋げて、リアルタイムでグラフ作成も可能なようです。なるほど。
gnuplot久しぶりで懐かしい感じです。大学院時代のグラフ作成にはよく使ってました。

 倒立のセンサーをbmx055からmpu6050へ交換してみようと思います。

ラズパイ日記...esp32(arduino)+mpu6050

# esp32で6軸センサー読み出し esp32で6軸センサーを読み出し、値をグラフ表示して動作を確認します。 ## 準備 ハード的な接続は、センサーが3.3V駆動できるので、3.3VとGNDの2線で電源供給します。I2C用にSDAとSCLのデータ線が必要ですが、esp...