小型PCのRasspberyPiや各種マイコン(ESP32,STM32)をベースに、Ambientクラウドを連携させたり、モーターやセンサーを連動させたりします。環境構築や出来ましたをまとめたblogです。
ラズパイ日記...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弾準備中です。
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へ交換してみようと思います。
★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へ交換してみようと思います。
ラズパイ日記...25日目...ちょっとPi zeroでmpu6050
このところ、ESP32+micropython環境でずーと頑張ってましたが、micropythonはモジュールに制限があり、大きな配列等は扱えません。
加速度センサー値をMadgwickフィルターを通してみたいのですが、micropythonのモジュールは見つかりませんでした。Pythonでは沢山あるので、一時的にPi zeroでセンサー調べを行いたいと思います。
半年振りにPi zeroを引っ張り出してきました。
センサーとも接続し、値を読み出してみることに。
接続はPi zeroとI2Cなので、3.3V, GND, SCL, SDAの4線を接続すればOKです。
あれ、Linuxではコマンドなんだったけ?と完全に忘れてます。
あと、
%sudo apt-get update
%sudp apt-get upgrade
したら、 30分ほど終りませんでした。
ESP32からPi zeroに環境変えるだけで1日費やしました。
Linuxもコマンド叩いてないと、結構忘れてます。
Pi zeroをシリアル接続する方法。
https://qiita.com/mt08/items/84d3d3053bee92609c2d
このページを参考に、センサーの値を読み出して、角度表示させるまでは出来ました。
http://www.widesnow.com/entry/2015/09/06/211055
あとは、この値をMadgwickフィルターに渡して、フィルターなしの場合をグラフで比較したいと思います。Linuxでグラフ表示はどうするのか。しばらくは、Pi zeroでがんばってみたいと思います。
加速度センサー値をMadgwickフィルターを通してみたいのですが、micropythonのモジュールは見つかりませんでした。Pythonでは沢山あるので、一時的にPi zeroでセンサー調べを行いたいと思います。
半年振りにPi zeroを引っ張り出してきました。
センサーとも接続し、値を読み出してみることに。
接続はPi zeroとI2Cなので、3.3V, GND, SCL, SDAの4線を接続すればOKです。
あれ、Linuxではコマンドなんだったけ?と完全に忘れてます。
あと、
%sudo apt-get update
%sudp apt-get upgrade
したら、 30分ほど終りませんでした。
ESP32からPi zeroに環境変えるだけで1日費やしました。
Linuxもコマンド叩いてないと、結構忘れてます。
Pi zeroをシリアル接続する方法。
https://qiita.com/mt08/items/84d3d3053bee92609c2d
このページを参考に、センサーの値を読み出して、角度表示させるまでは出来ました。
http://www.widesnow.com/entry/2015/09/06/211055
あとは、この値をMadgwickフィルターに渡して、フィルターなしの場合をグラフで比較したいと思います。Linuxでグラフ表示はどうするのか。しばらくは、Pi zeroでがんばってみたいと思います。
Pi zero W...その2
しばらく寝かしておいたPi zero Wですが、ちょっと触ってみます。
WWW情報を眺めているとキーボードやHDMI出力しなくても、USB接続のみで設定できるようです。HDMI変換器等買っておいたのですが不要でした。
参考にしたのはこちら。
https://qiita.com/Liesegang/items/dcdc669f80d1bf721c21
https://qiita.com/mt08/items/ce5e3911d74d7fad4563
imageはこれを選択しました。SDカードは8MBを使用して書き込みます。
2018-06-27-raspbian-stretch-lite.zip
参考にあるconfig.txtとcmdline.txtに設定の追加とsshファイルの作成をnotepad等で編集します。改行コードとか大丈夫かなと心配しましたが、気にしなくていいようです。
それからUSB関連のRNDISというドライバーをインストール。これで、USB EtherにPi zeroが母艦PCから見えます。これは、理解するまで時間かかりました。絵にしたらこんな感じです。解ってしまえばああそうかですが、仮想Etherのところがシリアルというイメージから離れられず、結構悩みました。母艦PCからNICを2枚刺したように見えます。
いったん母艦PCを電源オフします。同時にPi zero Wもブチッと電源切れますが、
目をつぶりましょう。
立ち上がってくるとUSBの仮想ネットワークにもDHCPでIPアドレスが振られます。
あとは、母艦からTeraTerm等でsshで接続することができます。
コアが1個なので画面一番上のラズベリーが1個です。
この状態だとインターネットにはつながりません。母艦PCのインターフェイスの
設定でローカルエリアネットワークの設定で共有タブを選択し、「ネットワークの他のユーザーにインターネット接続を許可する」を選択します。
RNDIS上のネットワークアドレスが変更され、再度DHCPでアドレスが割り当てられます。
コマンド プロンプトから「arp -a」で再確認できます。
あとは、ラズパイの初期設定です。こちらを参考に。
https://qiita.com/mt08/items/edefa35a7cefc726379e
%sudo apt-get update
%sudo apt-get upgrade
まで実施して、
%uname -a
Linux pizero 4.14.62+ #1134 Tue Aug 14 16:58:07 BST 2018 armv6l GNU/Linux
と言う状態まできました。
WWW情報を眺めているとキーボードやHDMI出力しなくても、USB接続のみで設定できるようです。HDMI変換器等買っておいたのですが不要でした。
参考にしたのはこちら。
https://qiita.com/Liesegang/items/dcdc669f80d1bf721c21
https://qiita.com/mt08/items/ce5e3911d74d7fad4563
imageはこれを選択しました。SDカードは8MBを使用して書き込みます。
2018-06-27-raspbian-stretch-lite.zip
参考にあるconfig.txtとcmdline.txtに設定の追加とsshファイルの作成をnotepad等で編集します。改行コードとか大丈夫かなと心配しましたが、気にしなくていいようです。
それからUSB関連のRNDISというドライバーをインストール。これで、USB EtherにPi zeroが母艦PCから見えます。これは、理解するまで時間かかりました。絵にしたらこんな感じです。解ってしまえばああそうかですが、仮想Etherのところがシリアルというイメージから離れられず、結構悩みました。母艦PCからNICを2枚刺したように見えます。
いったん母艦PCを電源オフします。同時にPi zero Wもブチッと電源切れますが、
目をつぶりましょう。
立ち上がってくるとUSBの仮想ネットワークにもDHCPでIPアドレスが振られます。
あとは、母艦からTeraTerm等でsshで接続することができます。
コアが1個なので画面一番上のラズベリーが1個です。
この状態だとインターネットにはつながりません。母艦PCのインターフェイスの
設定でローカルエリアネットワークの設定で共有タブを選択し、「ネットワークの他のユーザーにインターネット接続を許可する」を選択します。
RNDIS上のネットワークアドレスが変更され、再度DHCPでアドレスが割り当てられます。
コマンド プロンプトから「arp -a」で再確認できます。
あとは、ラズパイの初期設定です。こちらを参考に。
https://qiita.com/mt08/items/edefa35a7cefc726379e
%sudo apt-get update
%sudo apt-get upgrade
まで実施して、
%uname -a
Linux pizero 4.14.62+ #1134 Tue Aug 14 16:58:07 BST 2018 armv6l GNU/Linux
と言う状態まできました。
Pi zero W購入しました。
品薄だったPi zero Wですが、チップ抵抗などの買い物ついでにポチりました。
単品ではなくケースとセットになったものを購入しました。
カメラ用の変換ケーブルフィルムと足ゴムにケースの蓋が3種類(左からPinヘッダー穴あり、カメラ用穴あり、穴無し) 専用ケースなのでピシャットはまります。フリスクの空き箱にもちょっと加工すれば入るそうです。
接続用の穴は3つ。左からmicro HDMI、micro USB、給電用のmicro USBです。
pinヘッダーにアクセス出来る蓋にしました。
大きさ比較のためにラズパイ2に載せてみました。ほんと小さいです。
設定等は夏休みの宿題にしばらく寝かして起きます。
単品ではなくケースとセットになったものを購入しました。
カメラ用の変換ケーブルフィルムと足ゴムにケースの蓋が3種類(左からPinヘッダー穴あり、カメラ用穴あり、穴無し) 専用ケースなのでピシャットはまります。フリスクの空き箱にもちょっと加工すれば入るそうです。
接続用の穴は3つ。左からmicro HDMI、micro USB、給電用のmicro USBです。
pinヘッダーにアクセス出来る蓋にしました。
大きさ比較のためにラズパイ2に載せてみました。ほんと小さいです。
設定等は夏休みの宿題にしばらく寝かして起きます。
登録:
投稿 (Atom)
ラズパイ日記...esp32(arduino)+mpu6050
# esp32で6軸センサー読み出し esp32で6軸センサーを読み出し、値をグラフ表示して動作を確認します。 ## 準備 ハード的な接続は、センサーが3.3V駆動できるので、3.3VとGNDの2線で電源供給します。I2C用にSDAとSCLのデータ線が必要ですが、esp...
-
一通りの配線確認を行い、それなりにセンサーの値を読み取り、モーターも正転、逆転できるところまではきました。 本体を組み立てていきます。 まずは、ギヤボックス。ネジ位置が板とあわないので、カッターでちょっと切り欠きます。後ろにプラスチックの板でユニバーサルプレートをネジ...
-
師匠に触発されて、9軸センサー購入しました。 動き系のセンサーは、どんなものか調べてみるのと、動力系と合わせて倒立振子をつくってみようと思ってます。 どんなものかは、Youtubeに沢山出てます。 センサー情報を元にモーターを制御するのはいろいろと難しい感じですが、結構...
-
# ADS-B信号を受信する 師匠からのお誘いで、航空機が発射している電波を受信して、その位置を特定する実験をしているとのことでお手伝いです。 航空機の発射する電波を複数地点で観測する必要があるので、収集キットを作成し関係者に配布しているそうです。 細部は、「ADS-Bを受信...





















