2020年12月30日水曜日

[IoT] M5Stack ATOM GPSキットのプログラム例を動くようにしました

動かないプログラム例

M5Stack ATOM GPSキットのプログラム例がGitHubに公開されているのでダウンロードしてArduino IDEでコンパイルして書き込み・・・と思ったらエラーが出て出来ません。
悪戦苦闘の末動くようにプログラムを直しましたのでそれを公開します。

動く修正済みプログラム例を公開

GitHubの私のリポジトリにAtomicGPSを掲載しました。
オリジナルをフォーク(コピーする事)し、原型を残しながら必要最低限の修正をしました。3ファイル全てに修正が加わっています。
M5AtomとFastLEDのライブラリが必要なのでライブラリマネージャからインストールしてください。

オリジナルからの修正点

詳しくはAtomicGPS.ino GPSAnalyse.cpp GPSAnalyse.hの変更箇所差分を御覧ください。

結局TinyGPS++をお借りしました

プログラムを作る過程で高度も欲しくなりGPSAnalyseに作りかけになっているセンテンスを追加しようと試みましたが、それならすでにある解析ライブラリをお借りして必要ならそちらに注力したほうがプラスだろうと判断。あくまでプログラム例としてのAtomicGPSにとどめ、本格開発はTinyGPS++をお借りする事にしました。

今回公開した修正版AtomicGPSは最低限動かす事を目的に手を加えました。
まだ認識してる問題点が2つあって、1つは同時に2つ以上のセンテンスを受信した場合に先の1つしか解析されず他は破棄されてしまう事と、もう1つは緯度経度それぞれの北南東西が考慮されていないことが残っています。
特に後者の問題点は大きくて、10進法表記に変換してるもののGoogle Mapsのように±で表現してる部分が欠落してるのでそのまま使うと地球の真裏になってしまいます。もちろんセンテンスにはその情報も含んでいるので考慮することは可能です。

2020年、ブログをお読みいただきありがとうございました

令和2年 2020年も残すところあと数日となりました。新型コロナウイルス感染症の蔓延で静かな激動の年となってしまいました。亡くなられた方もたくさんいました。今もなお感染し治療されてる患者さんも大勢います。そしてそれに対処してる方々もたくさんいらっしゃいます。
令和3年 2021年も厳しい年明けとなることが予想されます。Twitterでは口悪く小うるさくツイートさせて頂いてますが、皆様が平穏無事に過ごせる事を心よりお祈りして年末の挨拶に代えさせて頂きます。
良い年を迎えられますように。

以上で2020年のブログ記事掲載は最後となります。
お読み頂きありがとうございました。来年もよろしくお願いします。

2020年12月27日日曜日

12月第4週(12/20~12/26) ダイエットサマリー 
体重上昇中 
献血してきました 
今週の茶道具 
今週のITツール

田舎の墓参りをした後に初めて道の駅 富士川にやってきました。展望デッキに上がると見えていた山々がさらにクッキリ見えました。右の白いのが八ヶ岳、左は隠れて見えないのですが奥に北岳があります。少しずつ近づいていますがなかなか登山機会がまわってきませんね⛰️

体重上昇中

体重が順調に増えています😭
今週はわりと炭水化物ありな食事が多かったので、それが数字にストレートに出ました。

毎度そうなのですが100g単位の積み重ねが気がつけば1kg単位となり、その連続の結果70kg台に逆戻りというのをここ数年繰り返しています。
最低体重記録を一時的に更新したもののそれっきり。このあと書く献血の血液検査結果も芳しくなかったのでロカボきっちりやって栄養きっちり取らないと体壊れちゃうかもです。

献血あるもトレーニング完遂

今週も献血日のトレーニング中止ルールを破って実施。筋トレ19日ランニング6日先行日そのままで1週間完遂しました。
その分回復に時間がかかっていて疲労感が週末まで残っていますが、体重増加を気にして無理してるのかもしれません。わりとノリでやることが多いので気持ちは大切にしたいのですが、体も大切なので気をつけたいです。

献血してきました

2週間ちょっとぶりの成分献血をしてきました。1日ずらした理由はラーメン二郎 大宮公園駅前店の定休日とかぶったため。2020年の食べ納めもしたかったのでそれででした。今回もいろいろ頂きありがとうございます。

血液検査結果はまさかの総蛋白が低すぎる結果に。他の悪い数字もそれに起因したものと思われます。体重増加の原因となった食事の際、満腹感を理由に食事を抜いた事があったのでそれでだと思います。
タンパク質不足になると怪我をしやすくなるので、ロカボ食だけは頑張ってお腹に詰め込むようにしたいです。

今週の茶道具

京都 福寿園 御題抹茶 実(じつ)
令和三年歌会始 勅題 実(じつ)に因んだ御抹茶で、その年最初の茶の湯 初釜の御抹茶としても良いようです。下調べ無しに店頭で選んだ運命の出会いでした。新年が楽しみです。

今週のITツール

SH1.0ケーブル付きコネクタです。先日購入したM5Stack ATOM GPSキット内蔵のBeitian BN-200モジュール送信ラインが未結線なので、それを一時的に繋いでGNSSチップUBX-M8030-KTを設定します。

未加工でブレッドボードに刺さったのでオス端子のジャンパーでATOM Liteにつなぎました。未結線の送信はGPIO19に結線しプログラム上-1となっているコードを19に書き換えPCとブリッジするようにしたら上手くいきました。
USB TTLブリッジを注文したものの不要になっちゃいそうです。

今週のダイエットサマリーはこれでお終い。2020年最後になります。新型コロナで波乱の1年でしたが無事生き残る事が出来ました。あと数日静かに年越しを迎えたいです。
ブログについてはM5ATOMネタがあるのでもしかしたら掲載するかもしないかも?なので年末のご挨拶は取っておこうと思います。もし無かったら新年の挨拶でご勘弁を。
最後にクリスマス限定Relive動画を掲載して締めます。お読み頂きありがとうございました。次回もお楽しみに!

2020年12月24日木曜日

[IoT] M5Stack ATOMでマイクロSDXCカードのexFATにR/Wする方法

標準ライブラリSDではR/W出来ないexFATなSDXCカード

M5Stack ATOMにはATOM GPS Development KitATOM TF-Card Reader Development Kit up to 16GBのTFカードスロットが付いた拡張モジュールがあります。これでマイクロSDカードが読み書き出来ます。

事の発端は開発中のATOM GPS Development Kitをテストしようとした時。SDメモリカードフォーマッターで初期化した64GB マイクロSDXCカードを挿して持ち出し外出先で動かそうとしたら認識しなかったのです。原因はexFATにあるとすぐにわかりました。同じカードでFAT32の時は認識していたからです。

標準サンプルプログラムにも使われ私も使っていたArduino SD LibraryはFAT16/32にしか対応しておらず最大容量32GBのマイクロSDHCまでしか使えません。製品名では16GB上限となっていますが大人の事情だと思います。

exFATに対応したSdFat Ver.2を使う

exFATに対応したSdFat Ver.2を見つけました。examples(例)のコードを見てもArduino SD Libraryと書き方が異なっていてプログラム実行時の使い方も書かれていません。お約束の近道"ググる"をしてみたもののATOMでの稼働事例は見当たりません。悪戦苦闘の末に動かすことが出来たので次節に結論から書きます。

すぐ動くコード

GitHubの私のリポジトリにsmiura/SdFat/examples/M5Atom/rename/rename.inoを作りました。これをダウンロードしてArduino IDEで開き、ライブラリ管理でM5Atom Ver.0.0.1とSdFat Ver.2.0.2をインストールすれば使えます、多分。使えなかったら不足分をインストールしてください。

使い方は、ATOMとPC等をUSBケーブルで繋いだままにしてシリアルモニタを立ち上げます。ATOMのリセットボタンが側面にあるのでそれを押して再起動するとメッセージが表示されます。Type any character to start.で止まるので画像赤矢印の送信ボタン押してください。

実行後にSDカードを他の機器で見ると/dir2/DIR3/NAME3.txtというディレクトリ(フォルダ)とファイルが出来ていて4行ほど文字が書かれているはずです。それでテストは成功しています。

examples(例)rename.inoがやっている事

具体的な内容はプログラムの81行目以降を参照なのですが、ファイル操作に必要なオープン・クローズの他にディレクトリとファイルの作成移動削除と書き込みをしています。

データロガーを作りたい場合に最低限必要なファイルへの書き込み例がわかりやすく書かれています。

なぜ動かなかったのか?

プログラムの修正箇所をGitHubの履歴差分表示を使って表示出来るようにしました。

M5Atomライブラリ固有コードの追加は容易に想像が付いたのですが、問題は冒頭のSD_FAT_TYPESD_CONFIG SdSpiConfigです。

SD_FAT_TYPEは0が指定された場合は/src/SdFatConfig.hのSDFAT_FILE_TYPEに基づくのですがそのままだと1 FAT16/FAT32が選択されてしまいます。そのため強制的に3を指定してexFATも使えるようにします。

SD_CONFIG SdSpiConfigSD_SCK_MHZ(16)を追加しています。これはSDカードにSPIモードで通信した時のクロック数でSDカードによって変わってきます。数字が大きければ高速な反面、SDカードが古いタイプだと非対応でエラーになります。
77行目のsd.begin(SD_CONFIG)で使われているので、もし想定するSDカードが幅広いようならそこで直接指定してクロックを大きい数字から片っ端から試してエラーにならないところを探るという乱暴な方法もあります。

Arduino SD Libraryではその辺の指定なくSDカードへアクセス出来るのですがどうやってるのでしょ?気になるので時間あったら調べてみたいです。

最後にSDカードは難しいよって話

今回はexFATを取り扱う事に限定して簡単に書きました。SDカードそのものの話をすると、M5Stackが提供するプログラム例AtomicTFAtomicGPSはSDカードのホットプラグを想定されていません。
あくまで例 examplesだからと思われるかもしれません。しかし、回路図を見てわかるように必要最低限の結線のみなので正規の手順で処理しようにも出来なかったりします。小型化低コスト化ゆえなので仕方のない事です。

だからこそ、こういうハードウェアのプログラムを作るのって楽しいんですけどね😉
お読みいただきありがとうございました。様々な日記ブログを執筆しています。そちらもご覧いただけると幸いです。
まったねー(^o^)

2020年12月20日日曜日

12月第3週(12/13~12/19) ダイエットサマリー 
体重再び上昇 
今週の茶道具 
今週のITツール

セグロカモメ

セグロカモメが地元春日部にやってきました。シンボルの鳥 ユリカモメよりお早い飛来です。
内陸のしかもだいぶ奥にカモメがいるのも不思議な光景なのですが、大昔はこのあたりも海の底だったので名残なのかもしれませんね。

体重再び上昇

体重は再び増加に転じ元の60kg台に返り咲き。
やはり油断したらすぐに戻りました。

1日平均値ではかろうじて60.0kg台でも1つ1つの数字では61.0kg台の日も出てきてます。今までこの体重台をキープしていた期間は短いのでよくやっているほうなのですが、できればもう少し頑張りたいという気持ちはあります。
色々な事が重なるとすぐに崩れるのが減量ダイエット。捨てる勇気も必要です。もったいないですけどね。
散々だった2020年も残りわずか。最後まで気を引き締めて駆け抜けたいです。

正常に戻ったトレーニング

先週発覚したトレーニングの順序は正しました。筋トレ19日、ランニング6日先行のまま1週間予定通り終了です。
冷え込みが日に日に厳しくなりついに最低気温が氷点下の日も出てきました。ランニングが億劫で仕方ないのですが、汗だくになってもいいからとにかく暖かい格好で走るようにしています。
モチベーション維持するのも大変です。

今週の茶道具

懐紙3点セットが届きました。無地が2種類でうち1種類が紙製懐紙入れとプラ楊枝付き、もう1つは松葉柄の模様が入ったものです。サイズは17.5x20.6(cm)の男性用の大きいタイプ。現在使っているダイソーのものは女性用の小型のタイプです。
もういくつ寝るとお正月。松葉柄の懐紙でお正月の御抹茶と御菓子を頂きたいですね🍵

今週のITツール

マイクロSDカード サンディスク エクストリーム 64GB SDSQXA2-064G-GN6MNです。
M5Stack ATOM GPSキットでマイクロSDカードが必要になりRaspberry Pi 2で使っていたものを一時流用したため、その補充のために購入しました。今主流の128GBを当初考えていたのですが安かったのでこちらに。このシリーズって容量少ないと若干R/W速度が遅くなるのがネックですが、それでも十分速いのでヨシとしました。

ロジクール ワイヤレスマウス Bluetooth Unifying 7ボタン M585GPです。現在使っているワイヤレスキーボード ロジクール K270のUnifyingレシーバーで使うために購入しました。Bluetoothにも対応してるので試しにiPad Air 2にペアリングしたら普通に使えました。

今週も所用でサイクリングしてきました。ついでにATOM GPSキットUNIT ENV.Ⅱのテストもと持ち出したらまさかのマイクロSDXCカード標準のexFAT未対応で使えませんでした。もちろんプログラムは自前なので私の考慮漏れ。ハードウェア的には使用できます。悪戦苦闘の末なんとか対応できたので、その事は後日別の記事で書きたいと思います。

お読み頂きありがとうございました。次回もお楽しみに!