おはようございます!!
先日、こちら↓の記事を書かせていただきました。
スマートリモコンの学習キットの「sLab-Remo2」ですね!!
【Wifi利用③編】ということで、回路は以前のものそのままで、スマホでLEDの制御まで行いました。
・・・で、今回からは【データ利用①編】で、EE-PROMによるデータ利用を学習しました!!
目次
スマートリモコン「sLab-Remo2」(エスラボリモ2)【Scratch・Arduino対応】環境センサ・カメラ付《IoT電子工作・AI学習・プログラミング》
こちらです!
4,290円でこれだけ遊べたら安いものです。(・・・と奧さんに言われています)
ちなみに、本キットの心臓部ESP32-DevKitCですが、Amazonさんで1,500円ぐらいで普通に買えますね。
Espressif社純正 ESP-WROOM-32D開発ボード ESP32-DevKitC-32D
壊してしまったら一大事!と思ってましたが・・・昼ごはん1回我慢すれば買えます(泣)
では、スタートします。
sLab-Remo2【データ利用①編】
公式メニューのデータ利用に入ります!(こちら)
そろそろ中盤でしょうか?今回は データ利用を学習するわけですね!!
ESP32-DevKitC(ESP-WROOM-32)は4MByteのフラッシュメモリを実装しており、このフラッシュメモリを活用してデータを保存する方法が以下の2つあります。
(1)EEPROM(Electrically Erasable Programmable Read-Only Memory)
(2)SPIFFS (SPI Flash File System)
どちらかと言えば、パソコンやスマホにも使われている部品の中身の話になってきましたね。
EEPROMによるデータ利用
こちらですね。
そう言えば、EE-PROMってなんでしたっけ??Wikiによりますと・・・
ああ!USBメモリーで使っているフラッシュメモリーもその一種なんですね。
書き込んだら、電源を切っても覚えておいてくれる便利なメモリーですね。
容量はこちらによると4MBだそうです。画像ファイル1個入るかは入らないかの小さい領域ですね。
電気回路と電子工作
プログラム内の変数でデータを定義せずに、プログラム上でSSIDやパスワードなどを設定し、電源OFF・ON後も設定データを利用したい場合があります。
このような場合にEEPROM(Electrically Erasable Programmable Read-Only Memory)が利用できます。EEPROMは不揮発性メモリの一種でByte単位にデータを書き込んだり読み込んだりでき設定情報などの保存に利用します。一般的なフラッシュメモリはEEPROMを新しく拡張したもので、ブロック単位で読み書きできるためデータ量が多くなるとコスト的に安くなります。
「ブロック単位で読み書き」とか書いてありますが、ちょっと面倒ですね。
今回は関係あるのでしょうかね?
ESP32-DevKitC(ESP-WROOM-32)は4MByteのフラッシュメモリを実装しており、このフラッシュメモリの一部を仮想的にEEPROMとして利用できます。また、EEPROMを利用できるライブラリが標準で提供されており、サイズは4Kbyteまで利用可能となります。4Kbyteなので大きなデータには適しませんので設定データなど小さなデータに利用します。
EEPROMを利用してデータを読み書きするスケッチを以下に説明します。
4MBのフラッシュメモリーの一部(4k byte)を仮想的にEEPROMとしているんですね。
4kbyteとはいえ、1024 x 4 = 4,096byte(文字)なので、確かに設定データぐらいなら十分ですね。
前回同様、上側だけで十分なのですが、配線が切れてないかチェックだけしてそのまま使いました。
スケッチ(制御ソフトウェア)
Arduino IDEの登場です!!・・・あ~大変だ。
これでプログラミングしないと回路が動かないわけですね。
スケッチを作成!!
今回も前回作ったArduinoフォルダの中のsLab-Remo2フォルダのSumaho_de_LEDをEEPROM_Testと名前をつけて保存しました。(※ 手順の画像はこれまでと同様なので端折ります)
今回はソースコードも新規なのでそのまま貼りました!!
スケッチの中身
今回も丁寧に解説してありますね。・・・ちょっと読んだだけではサッパリよくわかりませんが(泣)
とりあえずフローチャートにしてみました。
(※ プログラムと解説を見比べながら、Webツール(こちら)を使って作りました。)
先にEEPROMのデータを読み出して表示してから、初期値を書き込んで終わってるんですね。
ああ~想像してたのと逆でした。(※ この作業は最後にやってたので、後から理解しました)
ハラハラドキドキ!動作確認!!
ハラハラドキドキです。
ボードにUSBケーブルを繋いでノートパソコンに接続、そして、プログラムを開きました。ボードへの書込は、忘れずにこの技↓ですね!!(※ 該当の部分に飛びます)
(※ 後半の「書き始めるまでBOOTボタン押しっぱなし技」です。)
今回も1回でうまくいきました!
・・・で、やってみました!!
書込後にシリアルモニターを起動して、リセットボタンを押せば・・・
はい!出ました!!
・・・あれ? でも、これって、もしや書込出来てなくても表示されてるのでは?
ちょっと考えてみますね。
よくよく見ればEEPROMからの読み出しと表示の後に、初期値をEEPROMに書き込んでいるので、ボードへプログラムを書き込んだ直後の1巡目では表示されないんですね。(※残念ながら1巡目は消してしまったので再確認できません(泣))
じっくり考えてから実行すればよかったです。(※ フローチャート書いてから理解しました)
まとめ
ここのところずっとなのですが、ライブラリにおんぶに抱っこ状態で、いまいち実感がわきません。あっさり終わって嬉しいのですが・・・
次回は【データ利用】のSPIFFSによるファイル操作ですね!
このモヤモヤ感、まだまだ続くのでしょうかね?。
以上です!!
あ~!ライブラリ理解しなくては~!!
(おわり)