ずっと悩み続けている。ATOMS3とGPSユニットを使ったARデバイスのフリーズ問題。
ここ2ヶ月位悩んでいたが、ようやく答えが出そう。
結論から言うと、GPSUnitの熱が問題っぽい。
GPSUnitと言ってるのはこれ
M5Stack用GPSユニット [U032]www.switch-science.com
そもそものデバイスの構成としては、500mAhのLipoバッテリー+充電回路(TP4056)+GPSユニット+Glass2ユニットである。(下記)

かなり負荷の数が多いので、電源供給が間に合っていないのかな?と思ったんだけども、電源供給をLipoからモバイルバッテリーに変えても、変化がないので違うっぽい。
何かしらソフト側に問題がある?と思い、色々試したところコード内で使っているmicros()が問題?となり、ESP.getCycleCount()に変えてみたところ、多少症状がマシになったものの、依然としてフリーズが起きる。
接触不良も疑ってみたが配線をコネコネしてみても症状変わらず。
そこで、ようやく、5分くらいデバイスを電源OFFの状態で放置してから電源をいれると、最初の数回だけフリーズしないことに気づく。ここでオーバーヒートしている可能性に至った。(気づくの遅すぎ,ちなみに電子工作全くやったことない妻に相談したときに「熱じゃね?」と言われていた.すごい.)
ただ、ATOMS3とGPSユニットのどちらがオーバーヒートしてるかはわからず、とりあえずGPSユニットを外して起動させてみたところ、全くフリーズが起きなくなったのであった。GPSユニット確定ですわ。
ここまで来てもまだ、GPSユニットをつけることでデバイス全体が電力不足になって、ATOMS3がフリーズしている可能性が捨てきれなかったので、GPSユニットのカバーを外し、ICチップを冷やしたり、温めて起動してみることにした。
GPSユニットのカバーを外す

ドライヤーで温めている様子

保冷剤で冷やしている様子

結果、ドライヤーで20秒くらい温めたあとに起動すると、GPSユニットの起動ランプが3秒くらいで消灯することがわかった。GPSユニットがオーバーヒートしてるんだ!!!!
仕方ないので、ICチップの上に直接ヒートシンクを取り付けて様子を見ようと思っている。
ただ、あまりにも熱くなるのが早いのが気がかりである。ソフト側での使い方が間違っているかもしれないのでここらへんも調べようと思う。(GPSの受信を管理しているAT6558に低電力モードがあるらしいので試す)
放熱って大事なんやなぁ
電気製品は放熱がとても大事なんだなぁ(アホ)
しかし、ヒートシンクをつけたところでどうしようもなければ冷却フィンをいれるなり考えなければならない。(メカ設計やり直しだぁ)
当たり前だが、ここらへん、いくらChatGPTに聞いたところで一般的な答えしか帰ってこない。仮説を立てて、デバイスを分解するなりテスター当てるなり温めるなり冷やすなりしないと事態は一向に改善しないのである。やはりハード屋はAIに駆逐されない?とか馬鹿なことを考えながらドライヤーを当ててたら火傷しそうになった。