🐙

Arduino(5) SDカードに保存

2021/08/03に公開

はじめに

次はデータ保存するための、SDカードの読み書きを行います。
SDカードのモジュールとしては「HW-203」なるものが手元にありますので、こいつを使用します。こんなやつ。

と思ったら、LANで使用したEthernetシールドにSDカードが付いているじゃないですか。HW-203の実装を検討している中で、スケッチ例を見ているときに、そのうちの一つに記載があって気づきました…。という事で以下はEthernetシールドを使用して実装を進めます。
(写真まではってHW-203の説明かと思いきや、まったく方向転換で違う内容となるのはご容赦ください)

接続

という事でEthernetシールド接続済なので特に説明なし。
ちなみにEthernetシールドで使用するpinは以下の通り。

pin 内容 詳細
4 SS SDカード用
10 SS LAN用
11 MOSI LAN用
12 MISO LAN用
13 SCK LAN用

参考にしたスケッチ

・ファイル/スケッチ例/SD/files
ここにはファイルの作成、ファイル有無のチェック、ファイルの削除の処理が記載されています。
・ファイル/スケッチ例/SD/ReadWrite
ここにはファイルへの書き込み、読み出しの処理が記載されています。

実装

まずは動作確認の為に、参考スケッチ2つを合体させました。ただし「setup」にあったSDカードへの読み書きは「Loop」に移動しました。ひたすらSDカードへ書き込み実装です(あくまで動作確認なので…)。
簡単なのでソースコードの記載は無しで。
この状態で「検証・コンパイル」の実施で以下の様な、赤文字が表示されました。

そんな事言われても…。
やはり「動作が不安定になる可能性があります」の通り、動作が不安定になります。警告を無視してSD実装とRTCを合わせて実行すると、LANからの指令で時刻更新が出来なくなったりします。

動作

シリアルモニタにSDカードへの書き込みと、読み出した結果が書き出されるので、自動スクロール設定だと、すごい勢いで流れますが、その状態で通信を行うと、入力値が戻ってきている様なので、とりあえずは動作している様です。

処理中に送ったコマンド

curl -X GET 192.168.1.177:80

その時のシリアルモニタ

コマンド送信側の結果

残件

今回のSD/Eather実装を、以前から作成しているLCD/RTCの実装と合わせたいのですが、ここに来て気づいたのですが、LCD/RTCの実装でも、グローバル変数を45[%]使っている旨のメッセージが表示されており、このままでは確実にメモリ不足な気がします。どうすれば良いのか、とりあえずソースを実際に合体させてみて、その後考えます。

Discussion