2023年2月28日火曜日

SD ライブラリ

MicroSD カードへの書き込みも、ボードにバンドルされるライブラリによって差がありました。

SAMD21 (Arduino MKR Wifi 1010)
書き込みモードで新たにファイル作成。その後、同じコマンドを繰り返して追記。
SD.open("/Log.txt", FILE_WRITE)

ESP32(M5 Stack Tough):
書き込みモードで新たにファイル作成。
SD.open("/Log.txt", FILE_WRITE)
その後、追記。
SD.open("/Log.txt", FILE_APPEND)


MKR で SD.open("/Log.txt", FILE_WRITE) を繰り返し、追記していたのですが、それをM5に持ってくると前の書き込みが消える。同じ SD という名前のライブラリなのに、紛らわしい。

この辺り、初心者が通る道なのでしょうね。覚えました。


2023年2月27日月曜日

M5Stack VSPI + HSPI

ここ数週間、M5 と Arduino の SPI 通信にハマっています(現在進行形)。

M5Stack Tough や Arduino MKR wifi 1010 に加速度センサーを付けて波形を取れるようになりました。それをロギングするのに MicroSD を使用しようと目論見。

まずは M5。 こちらには TF カードモジュールが実装されています。SD.begin()に TF が使用している4番を割り振ってから、そこにカードを突っ込むだけ。ではダメでした。コンパイル直後は正しい値を示すものの、電源を入れなおすと加速度値が 0.00 になります。これが改善せず、放置。

次に MKR。 こちらも TF カードモジュールを加えるとダメ。取得値の桁が変わります。SDに書き込めるのでCSピンは正しく機能しているはず(と思いたいがダメなのでしょう)。コチラはブレッドボードに指していたので、TF モジュールやワイヤー順にを取り除いてみました。結果、MKR ボードに指すだけでも値が不安定になります。接触抵抗抵抗?電流不足?速度?
ブレッドボードを使用しない場合も試してみましたがダメ。で、放置。

似たような症状でしたので、少なくともSPIは干渉しているのでしょうと想像し、センサーを HSPI に、TF を VSPI に切り分けてみることにしました。M5 の接続は I2C と GPIO ポートを利用し、TFと物理的に分けました。


この段階でようやく理解したのが、SPI ライブラリが M5 と MKR で異なっている点。M5 は SPI.begin()にピン番号を引数として指定できたのですが、MKR ではダメ。M5 では SPIClass hspi(HSPI) が通るのに、MKR ではダメ。どちらを使うかはボードを選択したときに決まるようですね。esp32 と SAMD21 の違いでしょうね。

その後、Google先生や ChatGPT師範に教わるも進展なし。時間を溶かしながらも、ようやく M5 だけ通信ができました。以下の手順です。

・I2Cポート、GPIOポートに接続
・M5.In_I2C.release() で I2C をリリース。
・ピンを割り振って起動
 //spi2.begin(sckPin, miPin, moPin, csPin);
 spi2.begin(26, 36, 32, 33);
 pinMode(csPin, OUTPUT);
 digitalWrite(csPin, HIGH);

M5 では SPIClass hspi(HSPI) は通りますが不要でした。これ、ハマりどころでは?https://forum.arduino.cc/t/esp32-spi-accelerometer/1004705


web 上に情報がたくさんあるので素人でもなんとかなるでしょう、と軽い気持ちで始めたのですが、それは間違いでした。同じ名前のライブラリでも機種によって異なる、たくさんあるコードや情報には新旧玉石が混在。欲しい情報がなかなか見つかりませんでした。想定に反し、苦戦しそうです。

この先、M5 もディスプレーを begin すると TF と干渉するのでしょうか。うーん。
放置していた Raspberry Pi Pico へ進みましょうか。

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


2023年2月14日火曜日

3次元地質ソフト

主観的ですが、3次元地質を扱ったソフトを整理。

機能的には GEORAMA と EVS ですね。他の2つは現段階で及びません。今後、MakeJiban と GEO_Kit には頑張って欲しいですね。期待します。

開発

CTC

五大開発

川田テクノシステム

C Tech

製品名

GEORAMA 2023

MakeJiban 2.13

V-nas Clair GEO_Kit 2022.1

EVS

形態

Autodesk Civil3Dアドオン

単独ソフトウェア

V-nas Clairアドオン

単独ソフトウェア

CIM

属性付与

×Navis等にて

×

×

ボーリングモデル

CAD

◎ソフトウェア専用

◎CAD

◎ソフトウェア専用

パネルダイアグラム

CAD

ソフトウェア専用、断面毎にポリライン書出し可

CAD

〇ソフトウェア専用

サーフェスモデル

CAD

ソフトウェア専用、LandXML書出し可

CAD、支持層、簡単な中間層

〇ソフトウェア専用

ソリッドモデル

CAD

ソフトウェア専用、3D面として書き出し可

〇ソフトウェア専用

可視化

CAD(設計)との連携

シミュレーションとの連携

SoilPlusFemap

×

ModFlow、結果の可視化

操作性

習得の容易さ

ボーリングXMLの取り込み

×

コントロールポイント

◎ボーリング、断面上

〇断面上

△ボーリング

△ボーリング

地層線のプライオリティ

〇手動設定

◎自動設定

×複雑な層構成は不可

不要(全層モデル化、層の消滅は薄層で表現)

山際の層の作成

△手間がかかる

×

△手間がかかる

計算時間

△やや遅い

◎(単純な層のみ)

適用

設計との連携あり&サーフェス、ソリッドモデルの作成

設計との連携なし&手軽に3次元地質やパネルダイアグラムを可視化したい場合

設計との連携あり&ボーリングモデル、各種基準に応じた支持層面の作成

可視化、プレゼン重視


******************
20230227追記
聞けば、いくつかの支店で MakeJiban を購入していたとか。CIM 業務で設計と連携しづらいソフトを選択しているのは、やはり使い勝手重視なのでしょう。
CAD機能がないので、作成した断面CADデータを後から MakeJiban に取り込んでパネルダイアグラムを作ろうとして苦労していたようです。基本はソフト内で完結なので、最初からこのソフト内で縦横断図を作る意気込みでないとダメでしょうね。

2023年2月13日月曜日

Geo-Graphia サポート

Makejiban を使うことになった後輩さんと話をしていて、地層研さんの Geo-Graphia の話になりました。

Ver.3への upgrade を頼んだら、保守契約の延長が先、とのこと。
保守契約を延長してから、音沙汰なしとのこと。

忘れられているのでしょうね。

Ver.3でようやくUNDO 機能が付いたそうです。それを宣伝されるのも微妙ですが、調べてみると12年を経ていました。当時、「UNDOがないと何が困るのか」と言われていたサポートの方は、UNDOの必要性をわかっていただけたでしょうか?https://phreeqc.blogspot.com/2010/12/blog-post_16.html

Ver.2 まで G-tran 時代から引き継がれてきた拡大時のエラーは、修正されたのでしょうか?
https://phreeqc.blogspot.com/2010/08/g-tran_23.html

いずれにしても、「使わない」そうなので寝かしておきましょう。

Makejiban サポート

Makejiban のサポートさんに電話。

が、解決しませんでした。大まかには次のようなノリでした。

私:「●●をするとソフトが落ちる場合があるのですが」
サ:「そうですね。」
私:「・・・」
サ:「それは使わない方がいいです。マニュアルに書いてます」
私:「見てみます・・・書いていませんね。」
サ:「書いてないですね。フフ」
私:「・・・」

日本人の私にはわからないノリでした。ま、使っちゃダメな機能なんだとわかっただけでも良しとしましょう。

2023年2月12日日曜日

Makejiban v2.13 CADへの書き出し

Makejiban v2.13 の、CADへの書き出し機能です。

断面:1断面毎に dwg (ポリライン)に変換可。
サーフェス:1枚づつLandXML等に変換可(切断関係は考慮されず、全範囲のみ)。
地質体:ソリッド地質体に変換後、1個毎に dwg (3D面)に変換可(変換時に詳細度を決定)。
全体:dwg (3D面)に変換可。



使えるのは断面のみでしょうか。
TINサーフェースをもらっても、地形や地層同士での切断が難しいのでダメかな。
3DFace への変換は他のソフトでもよくあるのですが、これ、使えません。Solidに吐き出すのは難しいのでしょうか?

Makejiban v2.13 地質ポリゴンの表示

同僚から「わからない」と言われたのは、ポリゴンの連続性について。
断面では分布する地質が、ソリッドモデルでは切れて見えるとのこと。

これはよくある表示の問題か、本当に分布が切れているかのどちらかです。

調べてみると、表示の問題(設定)でした。
(以下、サンプルデータデータでの表示例です。)

ポリゴンの細分化数10

ポリゴンの細分化数100


上図の細分化数10では崩積土の薄い部分がポリゴンで表示されていません。100にすると下図のように薄い部分も表示されました。計算時間や表示時間の短縮のための設定でしょうね。



Makejiban v2.13

先週、他支店の同僚から 「Makejiban で分からないことがあるので教えて欲しい」 と言われました。

五大さんの地質可視化ソフトです。私は詳しく知りません。が、所属支店の地質部門でもライセンスを買ったことを少し前に後輩君から聞いていましたし、操作も難しくないイメージがあったので、週末に触ってみました。

はい、やはり簡単でした。
単独のソフトウェアのため、CADとの連携面では CTCさんの GEORAMA に劣ります。が、操作は1日で覚えられるほど簡単。できることが GEORAMA + Civil3D に比べて少ないという点はありますが、層のプライオリティを自動で設定してくれる=ユーザーの負担を減らしてくれる点が簡単に思わせるカラクリでしょう。良く工夫された長所です。

設計と深く連携しない、地質主体の可視化のみならこれで十分かと(そのような業務があるのかはわかりませんが)。次年度からCIM基準が緩くなり、CIMの裾野を広げるにあたっては、このような立ち位置のソフトが役立つかもしれません。

不足は属性ですね。現時点の Ver.2.13 では属性を付与できませんが、五大さんならいずれ対応なさるでしょう。


2023年2月9日木曜日

ADXL355

加速度センサーADXL355での波形です。


ADXL312よりもノイズが一桁低いのは、データシートのとおり。Z軸のノイズが大きいのは、作り自体が異なるからでした。

残念ながら、H/Vはフラット。そこまで甘くなかった。


微動はダメでしたが、まだ試したいことがあります。続けましょう。

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 のテストとケースの作成です。来週には外で測定ができるかな?