2023年2月6日月曜日

M5Stack Tough + L型ピンヘッダー

M5Stack Tough の M-BUS にL型ピンヘッダーを指しました。


近所のショップに売っていたL型ピンがブレッドボード用のみで、片側が短い仕様。BOXに収納しようとする際にワイヤーがよく抜けました。
メス-メスのワイヤーは15㎝あり、先に畳み込んで固定。センサーをディスプレー側に固定することで何とか入りました。押し込む際に、USBからのラインが千切れそうで怖い。

 


短いワイヤーか圧着端子等の調達、底面へのセンサー設置、GROVEポートの使用ができたらハード面は完了でしょうか。ま、ひとまず仮固定はできたので、100Hzサンプリングの地震計(仮)の形になりました。ソフト面ではMicroSD への保存、FFT、ディスプレーへの表示など、まだまだ試したいことはあります。が、先に使い物になりそうかノイズの大きさを見てみましょう。

****************************
20231230 試作品をGitHubに公開
https://github.com/T40O0/ADXL355_SPI_M5_SD_FIR.git


2023年2月5日日曜日

M5Stack Tough; SPI & I2C

Arduino MKR が SPI で MEMSセンサーを認識したので、M5Stack Tough でも確認。

結果、SPI なら認識できました。が、M-BUSに指したジャンプワイヤーのプラスチック部分がBOX内に収まらず OUT。

 


I2C は GROVE 用のポートを使用。センサーが 3.3V 稼働のため、GROVE 端子の 5V 出力を 3.3V に変換する変換モジュールを用意していたのですが、これを通すと認識しませんでした。残念。
https://www.switch-science.com/products/8434?_pos=13&_sid=40f4ba8d7&_ss=r

で、電源だけ M-BUS から取りました。I2Cスキャンの公開コードを利用した結果はコチラ。

19:46:01.869 -> Scanning...
19:46:09.900 -> I2C device found at address 0x0D  !
19:46:10.918 -> I2C device found at address 0x10  !
19:46:30.074 -> I2C device found at address 0x3D  !
19:46:49.290 -> I2C device found at address 0x6B  !
19:46:56.375 -> I2C device found at address 0x7D  !
19:46:56.375 -> I2C device found at address 0x7E  !
19:46:56.375 -> done
19:46:56.375 ->
19:47:01.390 -> Scanning...
19:47:06.403 -> I2C device found at address 0x0A  !
19:47:10.479 -> I2C device found at address 0x16  !
19:47:12.500 -> I2C device found at address 0x1B  !
19:47:13.489 -> I2C device found at address 0x1F  !

なぜ変わるのでしょう?当然、コード内で指定したら値が取れません。SGP30 の TVOC/eCO2 ガスセンサユニット(5V)なら安定し、1つの値を示すだけなのですが。

I2C は難しいのでひとまず寝かします。
ワイヤーを探せば SPI で運用できそうです。何かないか探してみましょう。

****************************
20230207追記、写真追加

SPI のピン指定は、GPIO の番号で通りました。
CS ピンは3がダメ、13でOKでした。Core2 の記事で 3はUSBとの通信に使われると書いてあるものを見かけましたので、Tough もそのようになっているのでしょうね。

20231230 試作品をGitHubに公開
https://github.com/T40O0/ADXL355_SPI_M5_SD_FIR.git

2023年2月4日土曜日

MicroPython

書店に行くと、Interface 3月号が販売されていました。

タイミングが良いことに MicroPython の特集でした。

すぐに購入。
読んでみました。が、難しい。

いえ、書いてあることは追えますが、自分では書けないというレベルの理解力。

さらに、Raspberry Pi Pico だと numpy などの既存ライブラリも使えないという事を知り、さらなるショック。これを趣味で組める方はやはりプロなのでしょうか。
手元のセンサーと Pico を手に取り自分で書こうとしましたが、1時間ほどで give up。道のりは険しいデス。

で、Arduino MKR WIFI 1010 に逆戻り。
先週のおかしなXY値の原因でも追及しようと思いかけたところ、ライブラリを発見!
2日前に出ていました。ありがたい。素人だとこの程度でいいかと自分を慰めながら、使わせていただくことにしました(いずれ組めるようになりたい)。

ライブラリを使えば、一発。正しい値が出ました。
example の出力単位を変更し、サンプリング間隔の設定方法を修正し、測定時刻を吐き出すように書き加えてプログラムが完成。
あとは Wi-Fi のテストとケースの作成です。来週には外で測定ができるかな?

2023年1月29日日曜日

マイコンボード

昨年末~正月明けにかけて、M5StickC Plus に 3.3V 稼働の MEMS加速度センサーをつなげようと試行錯誤していました。

I2C、SPI 共にどうやってもうまくデータが取れないため、センサーを壊してしまったのか、GitHub から拾ってきたコードの修正箇所がマズいのか。
このままではわからないので、別のマイコンボードを買うことにしました。買ったのは以下。

・Arduino MKR WIFI 1010
・Raspberry Pi Pico
・M5Stack Tough

MKR の SPI 接続を調べ、接続し、コードをMKR用に少し変えてみました。

繋がりますね。

Z軸はOK。9.8m/sを示します。XYはダメ。コードが誤っているのでしょう。まあ、Zしか使わないので良いのですが。
とりあえず、センサーは生きているようで安心しました。

Pico は扱い方が良くわからず。C++ではなく、MicroPython の別のコードで比較すれば、XYの修正箇所も見えてくると思ったのですが、複数のコードを保存する方法がわかりませんでした。調べてから扱うことにしましょう。

Tough は I2C を使うのが簡単そうですね。電源だけ3.3Vにすれば、動くでしょう。その後で速度の出る SPI かな。

一つではわからなくても、複数を組み合わせることで何かしらヒントを掴めるでしょう。
このまま進めましょう。


2023年1月26日木曜日

Office 365 プロパティ変更

MS Office 製品のデータには、作成者や印刷日時などの情報が含まれます。

その多くは explorer のプロパティから削除することが可能なのですが、前回保存日等は変更できません。ツールを探してみましたが、ないですね。

では、作りましょう。ということで、Pythonで作成しました。

といっても、Word や EXCEL のファイルはただの ZIP ファイルですので、docProps/core.xml を入れ替えるだけです。ファイル操作のみですので、PowerShell でも可能かもしれません。

import os
import shutil
import glob
import zipfile

# output ディレクトリを空にする
shutil.rmtree("./output/data/")
os.mkdir("./output/data/")

# data の下にプロパティを変更したいデータを入れる。
# プロパティ変更済みの./docProps/core.xmlを別途用意。
path = 'data/*'
files = glob.glob(path)

for file in files:
    print(file)
    zin = zipfile.ZipFile (file, 'r')
    zout = zipfile.ZipFile ("./output/"+file, 'a')
    for item in zin.infolist():
        buffer = zin.read(item.filename)
        if (item.filename!= "docProps/core.xml"):
            zout.writestr(item, buffer)
    zout.write('./docProps/core.xml')
    zout.close()
    zin.close()
参考:https://stackoverflow.com/questions/513788/delete-file-from-zipfile-with-the-zipfile-module

2023年1月22日日曜日

仮想メモリ

 今月は納期が重なり忙しくしていました。

こういう時でも、翌月に検討するためのデータ作成は進めておく必要があり、時間のかかる計算をPCに頑張ってもらっていました。

計算を初めて3日目。ふと見るとexeが落ちていました。Winのログをたどると、夜中にメモリーオーバーの度が過ぎてしまったようです。実装メモリは64GBで、大きな計算をするには少し小さめ。仮想メモリを実装メモリの3倍程度使っており、落ちてしまったようです。
8TB の SSD を購入し、input data を入れていたのですが、これでは速度改善が見込めません。 手元にあるより大きなメモリを積んでいるPCでも、ダメでしょう。

ハードの容量と計算の規模がイタチごっこ。
メモリが安くなってきたといっても、TBは高価。SSD を追加して仮想メモリに割り当てるか、分割して計算するしかなさそうです。いつの時代も、変わらないですね。

****************************
20230206追記

SSD の威力を実感。1.5日で終わった計算が、HDDからの読み込みだと10日かかる見込み。かもう一台買いましょうか。


Picker

とある先生にお声をかけていただき、新しい探査法のデータをいただきました。

振動解析のフレームワークをそのまま適用できると考え、Python で処理。

Record Section を書くところまではあっさりできたのですが、波速を決定するところで引っかかりました。

Cross Correlation だと、1m離れたら相関性が小さくなってしまうという結果。STA/LTAだと、60m/sというS波にしても遅い波速になりました。評価に迷います。うーん。

そもそも生波形が特殊な形をしていたので、そのまま使うのはダメなのでしょうね。 何か工夫が必要なのでしょう。文献を調べてみましょう。