ラズパイ日記...30日目...SDカード容量増他

前回は、WSL debian上でesp32開発環境を構築してサンプル動作までを確認しました。

今回は前回とは関係しませんが、ラズパイ小ネタを2つ。
1 raspi2+のsd card容量アップ(8GB→32GB)
2 Win10からのremote desktop接続

SD card容量アップ

raspi2+のSDカードを8GBから32GBへ容量アップします。
Amazon感謝dayで800円/枚だったので、勢い余って2枚購入しました。
容量アップについてはたくさん記事出てるよと言いたいところですが、そうは問屋が...

大抵の記事は、
1 コピーしたいSDカードをリーダーに入れてUSB接続する
2 GUI環境にて【左上】→アクセサリ→SD Card copierでコピー元からコピー先へ
3 容量も自動的に増やしてくれる
めでたし

と記載があるのですが、特にエラーは出ませんがコピーしたSDカードからはbootしません。
SDカードの単体不良とかいろいろと想像しましたが、formatはできるしWin10からもちゃんと見えるしと壊れているわけではないようです。
fdiskでbootableにする等試してみましたがだめです。

あきらめて32GBのSDカードは一からOSインストールしました。そうすると問題なく立ち上がります。
apt-get upgradeして、kernelバージョン上がったかなたと思いましたが、そうでもないようです。
【8GB SD】Linux raspberrypi 4.19.57-v7+ #1244 SMP Thu Jul 4 18:45:25 BST 2019 armv7l GNU/Linux
↓
【32GB SD】Linux raspberrypi 4.19.58-v7+ #1245 SMP Fri Jul 12 17:25:51 BST 2019 armv7l GNU/Linux

ラズパイの接続にremote desktop

これは結構簡単で、ラズパイ側はGUI環境にしておきます。xrdpというpkgをインストールすれば準備は完了です。
あとは、Win側からリモートデスクトップ接続でIPアドレスをたたけば、ログイン画面になり、Xが飛んできます。音声をラズパイで再生するか接続したWinで再生するかとか画面の大きさ等を細かく設定できます。操作感は気持ちもっさりしてますが、そう気にするほどでもないです。
Win側にXserverをインストールしなくていいのがメリットでしょうか。
ネットワークは、100MのSWです。Gigabit Etherにすればもっとさっくり動くかもしれません。
リモートデスクトップな画面はこのとおり。
Win全体でみるとこんな感じです。画面の大きさはお好みで全画面等可能です。

今回のまとめ

ラズパイのSD card容量アップは付属ソフトでうまくいかなかった件とWindowsからのリモートデスクトップ接続についてまとめました。

ラズパイ日記...29日目...pythonからC/C++環境へ

前回は、母艦PCをx64 win10にしてWSLなdebianをインストールしたところまででした。

今回は、

WSL debian上でesp32の開発環境esp-idfを構築して、Lチカの確認までいきたいところです。

参考にしたのは、以下のページです。
https://qwx.jp/esp-32-idf-on-linux-mint-ubuntu-vmware/
https://qwx.jp/esp32-esp-idf-hello-world-and-blink-on-linux/

ESP32開発環境としてdebianを使ってる人は皆無で先人も少ない感じです。見た目のいいUbuntuが主流なんですね。ベースは同じなのに。

10年前まではFreeBSD派でkernel panicで落ちるLinuxは馬鹿にしていたのですが、最近は使い勝手の良さに負けてdebian系を使ってます。ラズパイがdebian系なので他のに手を出すとコマンド覚えきれません。

参考ページのとおり設定していけば環境構築は可能です。途中でいろいろと足りないとエラーが出るので、その都度調べてapt-get installが必要です。

サンプルのhello worldとblink(俗にいうLチカ)のコンパイルとESP32への転送、動作確認まで確認できました。状況は動画で。

まずは、hello worldですが、実行バイナリーがESP32に転送されてhello world表示して10秒カウントダウン後再びhello world表示と見た目は地味な動作が続きます。動画ではわかりずらいかもです。

次にblinkは、実行バイナリーがESP32へ転送されるとLEDがon/offします。

今回のまとめ

前回設定したWSLによるdebianにて動作するESP32開発環境のesp-idfを構築した。
また、サンプルプログラム2つ(hello world, blink)の動作を確認した。

ラズパイ日記...28日目...母艦の開発環境変更

母艦PCをx64のWin10にしました
。
これまでのi686 Win7使ってた環境をそのまま、64bit版へ移行すればと思っていましたが、そう簡単ではありません。
まずは、ESP32にpythonコードを送り込むuPycraftですが、Win10ではライブラリーがどうのとうんともすんとも動きません。

この際ちょっと面倒になりますが、C/C++環境で開発できるように環境を構築します。
参考はこちら。
https://watako-lab.com/2018/04/14/esp32_dev_env/

これはWin10にmsys2を入れて疑似Linuxな環境を作って、esp-idfを構築する方法です。

と、いろいろと先人の知恵を眺めているとWSL(Windows Subsytem for Linux)という素晴らしい機能がx64 win10から使えるようになったことがわかりました。
細部は「win10 WSL」というキーワードで検索してみてください。

linux kernelを模したLxsysとLxCoreというエミュレータがkernelの替わりをしてくれます。よって、アイコンクリック一発で立ち上がります。

早速、WSLを使えるようにしてdebianをインストールしました。
WSLを使う設定をして再起動します。その後、Microsoft storeからdebianをインストールします。起動するとCUIなコンソールが即立ち上がります。ものの5分でインストールは完了です。ただし、このdebian何も入ってません。いろいろとapt-get installが必要です。
あとは日本語化とか細かい設定は、以下を参考にしました。

https://scratchpad.jp/debian-on-windows10-2/

ファイルシステムはext4ではなく、NTFS上にVoIFSとかいうので構成され、Win10からも見えるのですが、触るといろいろと壊れるそうです。

これでUSB-serialもちゃんと動いてくれると、esp32開発用にもう一台準備しなくても十分な感じです。esp-idfの構築は、次回ということで。

今日のまとめ

Windows10のWSL(Windows Subsystem for Linux)を使えるように設定し、debianをインストールしました。

ラズパイ日記...番外編...母艦はWin10へ

メモリーの買い間違いありましたが、Amazonで返品交換してもらいようやくパーツがそろいました。

Amazonの返品対応は早いですね。返品ボタン押すと宛先と同封するバーコードの印刷画面が出てきてこれを印刷して、宅急便かゆうパックで送り返します。買い間違いは、送料元払いですが、不良品の場合は着払いで送料もかかりません。
市川AFCで返品はまとめてやってるようですね。
返品センターに届いたら検品等は数時間で完了し、Amazonポイントに反映され返品返金終わりです。クレジットカードだと入金まで1-2週間かかるようですが。

ノート用のDDR4-2400はこちら
デスクトップ用と横幅やpin数が違います。
さて、組み立てです。CPUは、変更不可です。第8世代のi5が入ってます。
 
下がM.2接続のSSDと上がDDR4メモリーです。ほぼ同じ大きさ、揮発性メモリーは16GB,不揮発性SSDは500GBです。 
 
本体は、下部のネジを4本回せば底蓋が空きます。メモリースロットは2つあります。
SSDは、M.2スロットに取り付けます。精密のプラスドライバーが必要です。
えらく発熱するそうなのでヒートシンクを取り付けました。
メモリーは16Gです。普通に使うのには十分だそうです。動画編集等するときに備えて、1スロット空けてあります。
Win10のhomeです。光学ドライブなくても、USB版というのを買えば問題ありません。
USB3.0からSSDへのインストールは15分もあれば終わりました。

ようやくWin10となりました。またこのNUCは、FANが無いため、全く音がしません。
電源オンからの立ち上がりも15秒ほどとなり、音は無音、画面もサクサク動くということで見違えるように環境が良くなりました。

Win10に慣れつつ、引き続き環境設定したいと思います

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

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...