cm級GNSS-RTK-MBログシステム開発中ですが、大量のデータを無線で送信ログすると0.3%程度のエラーがでてデータ欠落してしまう課題が発生しました。貴重なデータなので、1個でも欠落させたくないので、無線ログはやめて、データ作成マイコン自体でSDカードにログする方式を検討してます。筐体からSDカードは取り出さずに、WiFI接続してWEBサーバーにログファイルを送信してWebサーバーに保管するプログラムを作ってみました。
※2022年度のArduinoIDEの環境では、ATOMIC TF動作エラーでます。
対策は、昔のボードライブラリーに戻すことです。詳細は下記記事
【M5】AtomicTFが2022年Arduino環境で動作しなくなった<昔の環境に戻す>
※1年後にAtomicTFカード使わなくなりました。
理由は、M5系のArduinoIDEでのSDライブラリーの書き込み速度が遅すぎるためです。
=>20msec周期の10byteデータを書き込んだ場合でもデータ落ちが発生することが判明いたしました。
=>ArduinoIDEではなく、ESP32の純正IDE ESPIDFを使えば、高速化可能ですが、難しくて私は使えません。
■動きのセンシングは、1~10msec周期の現象が多いので,いろいろなニーズに対応できてないことが分りました。
そこで、2022年からは、Arm CorTex-M7搭載の超高速マイコンTeensy4.1を使うことにしました。
SDカード書き込みは、1KBを200μsec周期で書き込みが可能ですので、応答周波数は、数KHz~数十KHzと
動きのサンプリングをログするのに十分な対応ができます。T
※Teensyは、Arduinoコンパチなので、M5シリーズよりプログラム簡単です。
【RTK22】超高速マイコンCortex-M7搭載Teensy4.1いじる その1<SDcardWrite5MB/sec以上でる>
■M5AtomのSDカードキット
●経緯
今までM5StackでSDカードログしていたのですが、F9PのコンパクトBOX(35x64x100)の筐体内に
収納するために、M5AtomにSDカードを取り付ける検討をしました。SPI接続は、配線の引き回しでノイズを食らってNGになった経験があるので、自分で基板は作らずに、M5社の正規製品を購入することにしました。https://m5stack.com/products/atom-tf-card-kit
SwitchSceienceさんに在庫ありました。(2021年1月24日現在)
https://www.switch-science.com/catalog/6475/
●開梱
下のピンは全部基板側に行ってしまったので、シリアルはGroveコネクタで1個だけ使えます。
16GB以下のTFカード(マイクロSDカードのこと)
取り付けネジがついていて、M5Stackよりシステムに組み込みやすいです。
※2021年6月1日追記
ATOMIC TFキットはSPIで3ピンつかってますが、他のピンでシリアル通信やADCができないか調べてみました。22,26,32が空いてました。詳細はこちらの記事にあります。
■プログラム動作
①SD書き込みのオリジナルは
https://github.com/m5stack/M5-ProductExampleCodes/tree/master/AtomBase/AtomicTF
●テストプログラム機能
TeraTermですべて操作します。ListをとってReadした絵
arduinoのFSシステムを基本として、一部改造してあります
未だ、バグあるので、自分で作成したファイルしかいじらないほうがいいです。
キーイン 大文字です |
機能説明 |
L | List表示します。ファイルNoがついてますのでそれがファイル操作の目印になります |
R | ファイル番号をすると内容を表示します。 |
W | ファイル名を作成して、内容をキー入力します。メモ程度の情報をファイルに作成できます。 ファイル名を入れたら ピリオド .をいれると次に入力データを聞いてくるのでキーインして 最後にENTERで入力データ確定してファイルを書き込みます。 ファイルの最初の行には、ファイル名が記録されます。これは事後の整理用です。 |
U | 設定してあるWebサーバーへ指定したファイルを送信して保管します。 保管したファイルは、サーバーへFTPでアクセスして、照会、ダウンロードできます。 |
D | ファイル番号を指定してファイルを消去します。(未だバグ気味で消えない場合がある) |
A,R | Append Rename は未だ非対応です。 |
※WebアップロードしてFFFTPで確認してOKだった。
短いファイルだと数msecでWEBへ転送できるので頻繁にできます。
Web書き込みを設定したい方はこちらの記事を見てください。
●プログラム
GISTにおいてあります。#include <M5Atom.h>をライブラリーで登録しておいてください、SPIピンがM5StickCと異なるので、M5StickC.hではコンパイルできませんでした。
https://gist.github.com/dj1711572002/f0f02817fb2c1af0e04e624ff0ac35db
※1:コンパイル転送が終わったら、一旦USB電源をきってから立ち上げてTerTermと接続してENTERをいれると
メニューがでてきます。
●以後
基本テスト動作できたので、F9Pのコンパクトシステムへ実装始めます。
※2021年5月19日追記
TFカード使い始めて4か月間スキー測定で酷使してきましたが、ここ数日、SD書き込み周期が遅くなってプログラムにエラーがでるような現象が発生しだしました。
基板を疑ってみたのですが、なんと16GBのSDカードの異常でした、フォーマットし直したら正常に戻りました。この原因をさがすのに1日かかってしまいました。
TFカードキットおかしいなと思ったらまずはSDカードを交換してみてカードか本体かを区分けしたほうがいいです。