Table of Contents
SDモジュールにデ-タを保存する方法は?
- SDデータモジュールを使ってデータを保存する方法を学習します。
- 何かを測ったらそのデータを確認するだけでなく保存したい場合があります。ArduinoをPCに接続していればPCにデータを保存できますが、Arduino単体で動作させる場合はデータを保存する機能が必要になります。SDデータモジュールを接続してデータを保存します。
必要な部品は?
SDモジュール (microSDカードスロット) | 1個 |
Arduino UNO R3 | 1個 |
- 秋月電子通商で購入したSDデータモジュール「microSDカードスロット レベルシフタ付きブレークアウト基板キット」を使いました。ホームページから回路図、外形図、ICの仕様書がダウンロードできます。
- Fritzingの部品データが無かったので作成しました。
Fritzingのデータを作成する記事は?
- [Fritzing の部品データを作る方法] — Arduinoと相性の良いCADソフト Fritzing用のデータを作成します
関連する製品・商品は?
- Amazon — [Arduino用のUNO R3 最終版スタータキット]
- 秋月電子通商 — [microSDカードスロット レベルシフタ付きブレークアウト基板キット]
microSDカードスロットのピン配置は?
端子番号 | 端子名 (Arduino端子) | 備考 |
1 | 5V IN | +5V電源入力(+4.0V~+6.5V) |
2 | 3.3V ENABLE | 内部3.3Vレギュレータ ON/OFF |
3 | 3.3V OUT | 内部3.3Vレギュレータ出力 |
4 | GND | GND |
5 | CLK (SCL:13) | SDカード クロック(CLK) |
6 | DAT (MISO:12) | SDカード データ(DAT) |
7 | CMD (MOSI:11) | SDカード コマンド(CMD) |
8 | CS (SS:10) | SDカード チップセレクト(CS) |
9 | SW | SDカード カード検出スイッチ(SW 検出時GND) |
回路図(配線図)は?
- Fritzingで描いた回路図(配線図)と実際の配線です。
関連する製品・商品は?
- Amazon — [Arduino用のUNO R3 最終版スタータキット]
- 秋月電子通商 — [microSDカードスロット レベルシフタ付きブレークアウト基板キット]
SDカードスロットをどう使うの?
- SDカードスロットのSDカードににArduino で0から一つずつ数を増やした数字を書き込みます。同時にシリアルモニタにその数字を表示させます。
- SDカードに[DATA_LOG.CSV]のファイルが作られます。
- [DATA_LOG.CSV]のファイルには数字が書き込まれています。
スケッチのコードは?
- SDカードスロットをArduino で動作させるために、2つのライブラリをインクルードします。
- SPI.h : SDカードとArduino UNO R3 間をSPI通信で接続します。
- SD.h: SDカードのデータ書き込み・読み込み操作を行います。
//www.arduinomakesiteasy.com
//2022.4.28
//ライブラリインクルード
#include "SPI.h"
#include "SD.h"
//SDカード設定
File myFile; //クラス指定
const int chipSelect = 10; //チップセレクトピン指定
//一般変数
int i;
void setup()
{
Serial.begin(9600);
//SDカードの初期化
Serial.println("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("Initialization failed or does not exist");
while (1);
}
Serial.println("Initialization done.");
Serial.println();
//一般変数の初期化
i=0;
delay(1000);
//シリアルログの最初の行に表示項目を表示する
Serial.println("Count Start");
//ログデータの最初の行に記録項目を記入する
myFile = SD.open("DATA_LOG.csv", FILE_WRITE); //SDカードをオープンする
myFile.println("Count Start");
myFile.close(); //SDカードをクローズする
}
void loop()
{
//シリアルログの表示
Serial.println(i);
//SDカードへの書き込み
myFile = SD.open("DATA_LOG.csv", FILE_WRITE);
myFile.println(i);
myFile.close();
i+=1;
// 測定間隔を設定する
delay(1000);
}
- 作成したCSVファイルをPCで読むと作成時間が「2000/01/01 1:00」になっています。これはArduinoに時刻を記憶しておく機能が無いためです。RTC(実時間)モジュールを取り付けると時刻データが使えるのでファイルに時間データを付けることが出来ます。[Arduinoを使って時間データをSDカードに記録する方法]でこの機能をスケッチに加えています。
SDカードの機能を簡単に使用するには?
- Arduino UNO R3のボードに色々なPCB基板を差し込んで機能を追加できるように設計されています。データロガーシールドを使うとブレッドボードにSDカードを取り付けて配線することなくデータを記録する機能を容易に追加できます。
- ブレッドボードにSDカードを取り付けてる場合と。データロガーシールドを使う場合で回路は同じなのでスケッチはそのまま使えます。配線がなくなり、使用する場合に取り扱いが楽になります。
- [Arduinoデータロガーシールドを使ってデータを記録しました]で製品を紹介しています。
関連する記事は?
- [Arduinoにjpegカメラを付けて一定間隔で撮影した画像をSDカードに保存しました]–jpegカメラの画像データを保存します。
- [Arduinoに接続したGPS受信機の測位データをSDカードに記録しました]–GPSの位置情報を保存します。
- [温度センサーとRTC(実時間)モジュールをI2Cで接続してデータをSDカードに保存しました ]–温度センサのデータを保存します。
- [Arduinoを使って距離と時間データをSDカードに記録しました] — 距離データを保存します。
- [Arduinoデータロガーシールドを使ってデータを記録しました]–データロガーシールド(SDカードモジュールが含まれています)を使ってデータを保存します。
質問、誤植の指摘などありましたら。「問い合わせ」のページからお願いします。