血圧計の解析(4)

続き。

i2cで読んでみた。

昨日、最悪の場合って書いてた、外から直接フラッシュメモリを読むのをやってみた。

人間がタイミングよくボタンを押すっていうのが「最悪」の理由だけど、 実装はしごく簡単だった。

i2cアドレス54に、読みたいメモリアドレスを送り、 同じく54から必要なだけ読むだけだから、 ほぼ、i2cライブラリのサンプルそのものだった。

実際、読むのは簡単に完了し、 せっかくだから、デコーダも書いて、 サーバーで動くRubyでCGIを書いて、そこにデータを送るクライアントも書いた。

これで、 M5StickCを起動すると、フラッシュメモリから最後の測定値を読み出し、 それをサーバーに送信して、サーバー側はデーターベースに格納。 その後、M5stickCは自分で自分の電源を切る。 という一連の動作が確認できた。

更新失敗

動いたので、通しで測定してみたところ、 なんと、何度測定しても、フラッシュに書かれた結果が更新されなかった。 これは想定外。

ノイズが入るのか、M5StickCのi2cが悪さをしているのか。

  • M5StickCを外してみた → 動く
  • 通信終了後はGPIOをHi-Zにする → だめ
  • 通信終了後はWireモジュールを別のポートで再初期化 → だめ
  • 最初からWireモジュールを使わないコードをいれてみる → だめ

うむむ。 どうしたものか。