
ぴっぴちゃんことスタックチャンは、私が手先が不器用なこともあって、首とか内蔵とかを、これらの両面テープを駆使して構成している。えっと、記事が文字だらけになってモアレなので 💦
今、ニューぴっぴちゃんに向けて、調査と実験を続けている。今日、やっと、データを JSON化してSDへの書き込み読み出しからの再利用の実験ができた。手こずった。ので、ここにメモ。
JSONライブラリーは ArduinoJson.h を使った。 AIスタックチャン が使っているので、替えるわけにも行かない。
一番困ったのが、JSON データとして数値配列を入力するところ。色々調べて見つけられず、結局、『
ライブラリーのサンプル』の方法をそのまま使った。
StaticJsonDocument<200> doc;
JsonArray data = doc.createNestedArray("data");
data.add(48.756080);
data.add(2.302038);
JSONのカラム名と同じ名前だけど、データ入力は JsonArray の data の方に、一個づつ add( ) していく。配列から一気に入力する方法を探したんだけど、見つけられなかった。
この JSON をSD に保存するのは、超、簡単。
File fp = SD.open("/test.json","w");
serializeJson(doc, fp);
fp.close();
読み出しは、
File fp = SD.open("/test.json");
deserializeJson(doc, fp);
fp.close();
これだけ。
もう一つ困ったのが、大量のデーターをJSON オブジェクトに読み書きしていくと、JSON の消費メモリがドンドン上がっていって、初期設定値を超えてしまうこと。この対処は、スコープをしっかり限定したり、明示的にガベコレをするしかなかった。
上の、data の場合は data.clear(); を、データの入力でごちゃごちゃした場合の JSON オブジェクトは doc.garbageCollect( ); を、すぐにスコープから抜けようとも、その前に実施しておかなくては、doc がメモリフルになってしまう。
今回の試作では、1コマンド分の JSON ファイルは 600バイトぐらい。10個要素があったら、6KBか。メモリ上に展開する方法を考えないと、きついかもしれない。
JSONの実験はこれぐらいにして、次は、Web API 部分の作成と、HTML + CSS もしくは JavaScript の勉強をしないといけない。
「あとどれ位掛かるのか、見当も付かない」
それが終わったら、さえずりぴっぴちゃんの開発もしないといけないし、うぅ、AIスタックチャン をいじれない 💦