ESP8266 SPIFFS   
 SPI Flash File System  
ESP8266の多くは4MBのflashメモリを持っていますがプログラムメモリとして使えるのは1MBだけです。残りのメモリはデータ保存用に使うことができます。Flash Size を 4M ( 1M SPIFFS )にすると1MBがデータファイルに使え、Flash Size を 4M ( 3M SPIFFS )とすると3MBが使えます。
この中にデータファイルを外部から書き込む方法については「flashをデータメモリとして使う」に書きました。
SPIFFSは多くの種のESP8266に使えそうなのでここに別項目として書きます。

 1 書込みと読出し 
 2  
 





 1 書込みと読出し   2017.06.06 2017.06.05

このESP8266 AI MOD を使いました。(このボードには、青LEDがVccとGPIO2の間に、赤LEDがVccとGPIO16の間に入っています。)


ファイルの取扱については、
 SPIFFS.format:SPIFFS領域をフォーマット、
 SPIFFS.open("/tmp.txt", "w"):writeオープン(新規開始)、
 SPIFFS.open("/tmp.txt", "a"):appendオープン(追加書込み)、
 SPIFFS.open("/tmp.txt", "rw"):読み取り(最初から)、
があります。

はじめは「新規書込み」と「読出し」だけを考えました。loop()内に2つのプログラムを書いて、あるポートがスイッチでLOWになるとLEDが点灯し読出し動作に入るものを計画しました。結果的には成功したのですが、スイッチのポートに問題があるらしく、最初GPIO9を使ったところソフトウエアウオッチドッグタイマーが働いてリセットがかかってしまします。理由はわからないのですがGPIO12にスイッチを変更すると問題なく動きました。

しかし、ファイルが幾つかできたときにフォーマットしたい、計測初めはw-openで、読出し後はa-openで開きたい、読出しをしたい、と一つのプログラムに多くを詰めたいので今まで使ってきたリセット時のメニュー方式を考えました。
Teratermまたはシリアルモニタを起動してリセットするとメニュー項目が4つ現れるので1から4の半角数字で選びます。
  --- MENU ---
 1 Format ?
 2 write open ?
 3 append open ?
 4 read data ?
  1 -- 4 ?
1はフォーマットだけですから数十秒で戻ります。2はファイルの内容を消すだけの操作になりますからスブに戻ります。3はデータを記入している間続きますから戻りません。4の読出しをしたいときはリセットします。読出し中は書込みができません(要注意)。書込み中にリセットするとまずいので書込み中は赤LEDが消えるようにしています。実際の観測記録では最短で1分、普通は10分から1時間のインターバルになると思います。

途中で気づいたこと:
loop()の下(外)に関数を書くときはプロトタイプ宣言が必要なようです。
関数の中で while(1) を実行するとソフトウエアウオッチドッグタイマーSWTが働きます。yield();を書くといいようです。
変数の型宣言は最初に使うときでいいようです(はじめにまとめる必要がない)。
TeraTeamは数字1文字を送れるが、シリアルモニタは行末文字まで送られるので処理が必要です。

プログラムです。(データは4桁数値をインクリメントしているだけです)

2017.06.06 上記プログラムに大きな誤りを発見しました。 部品を少なくしてリセットでシリアル通信を受けるように(メニューが出るように)したのですが、この装置をデータロガーとして単独で使うことを考えると電池の交換など電源を切り替えるときにリセットされてしまいます。リセットされるとメニューでストップしますのでPCに繋がないと記録が始まりません。
電源ONでリセットされたあとは append write されるのが通常だと思います。
そこで、GPIO12にタクトスイッチを入れて、スイッチOFFでは append でスイッチONにするとメニューが現れるように変更しました。これで電源を切っても継続して記録される事になります(OFFの間は途絶えますが)。
プログラムです。
シリアルで割り込みや適当にポーリングすることも考えられますが勉強が必要です。

2017.06.08 実験中の回路です。ESP8266は裏面にはんだ付けしていますのでみすぼらしいですが。
最初はcp2102シリアルコンバーターが付いたモジュールを使っていましたがTeraTeamやシリアルモニタの開始と終了でリセットが掛かってしまうのでESP8266単体に変更しました。こちらは書込み時に手動スイッチが必要ですがリセットがかかる心配がありません。
top


















工事中
























    2017.02.12

top















  

inserted by FC2 system