Skip to main content

SDカードシールド V4.0

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

pir

これは新しくリリースされたSDカードシールドV4.0です。Arduinoにストレージスペースを提供します。ユーザーはArduinoの内蔵SDライブラリを使用してSDカードを読み書きできます。SD、SDHC、Micro SDカードをサポートしています。ArduinoのSPIポートのみを占有します。以前のバージョンと比較して、標準SDスロットとMicro SDスロットを標準スロットに統合し、付属のアダプターを使用してMicro SDカードを利用できます。未使用のピンを使用する他のシールドを積み重ねることができます。さらに、事前に形成されたI2CおよびUARTポートにより、Groveモジュールとの接続が容易になります。

アプリケーションアイデア


SDカードシールドを使用して素晴らしいプロジェクトを作成したい場合、以下のプロジェクトを参考にしてください。

ここでは、SDカードを使用したLinkIt ONEに関するプロジェクトを紹介します。

LinkIt ONEを使用した音楽プレーヤー

pir

このプロジェクトでは、Grove - Water Sensorを使用して植物に水をやるためのシンプルで効果的なソリューションを作成します。

今すぐ作成!

SDカードによるさらに素晴らしいプロジェクト

特徴

  • 標準SDカード、SDHCカード、TFカード対応
  • UART Grove & I2C接続対応
  • 完全にサポートされたSDライブラリ
  • 最小限のSPIポート
  • 真に積み重ね可能

仕様

項目

最小

標準

最大

単位

電圧

3.5

5.0

5.5

V

電流

0.159

100

200

mA

対応カードタイプ

SDカード(32GB以下);Micro SDカード(32GB以下);SDHCカード(32GB以下)

/

寸法

68.7x53.5x19.00

mm

正味重量

14.8

g

ハードウェア概要

pir

Arduino上のピン使用(SDカード付き)

D4: SD_CS;

D11: SD_DI;

D12: SD_DO;

D13: SD_CLK.

note

SDカードのフォーマットはFAT16またはFAT32です。16GBを超えるSDカードおよびSDHCカードはサポートされていません。

使用方法

以下はSDカードシールドのインストール手順です。

ハードウェアインストール

  1. SDカードをソケットに挿入し、SDカードシールドをArduinoに接続します。
  2. USBケーブルを使用してArduinoをPCに接続します。
note

Micro SDカードを使用する場合は、Micro SDカードをアダプターに挿入し、次にMicro SDカードアダプターをソケットに挿入してください。

pir

ハードウェアインストールが完了すると、以下のようになります。

pir

プログラムのアップロード

  1. Arduino IDEを再起動します。次のパスを使用して「CardInfo」例を開きます:File --> Examples --> SD --> CardInfo。

    この例では、SDライブラリが基づいているユーティリティライブラリを使用してSDカードに関する情報を取得する方法を示します。カードが動作しているかどうかを確認するのに非常に便利です。このライブラリには「ReadWrite」などの他の例も多数含まれており、試してみることができます。

    pir

    上記のコードの簡単な説明:

    まず、カードが動作しているかどうかを確認します。動作していない場合、結果に至る可能性のある理由が出力されます。

    SDカードが正常に動作している場合、SDカードのタイプが出力されます。その後、FATタイプのボリュームのタイプとサイズが出力されます。

    最後に、カード上で見つかったファイル情報(名前、日付、バイト単位のサイズ)を取得します。

  2. コードをアップロードします。

  3. 結果を確認します。シリアルモニターをクリックすると、以下の画像が表示されます。

pir

  1. エラーが発生した場合は、すべての前の手順を再確認し、SDカードが動作していることを確認してください。それでも問題が解決しない場合は、SDカードを交換してみてください。
note

Arduinoのデフォルトコードは、SDカードが4GBを超える場合にSDサイズを正しく返しません。以下のコードでこの問題を解決できます。

    /*
SDカードテスト

この例では、SDライブラリが基づいているユーティリティライブラリを使用してSDカードに関する情報を取得する方法を示します。
カードが動作しているかどうかを確認するのに非常に便利です。

回路:
* SDカードを以下のようにSPIバスに接続:
** MOSI - Arduino Uno/Duemilanove/Diecimilaのピン11
** MISO - Arduino Uno/Duemilanove/Diecimilaのピン12
** CLK - Arduino Uno/Duemilanove/Diecimilaのピン13
** CS - SDカードシールドまたはモジュールに依存します。
** 一貫性を保つためにここではピン4を使用


作成日: 2011年3月28日
作成者: Limor Fried
修正日: 2012年4月9日
修正者: Tom Igoe
*/
// SDライブラリをインクルード:
#include <SPI.h>
#include <SD.h>

// SDユーティリティライブラリ関数を使用して変数を設定:
Sd2Card card;
SdVolume volume;
SdFile root;

// SDシールドまたはモジュールに合わせて変更;
// Arduino Ethernetシールド: ピン4
// Adafruit SDシールドとモジュール: ピン10
// Sparkfun SDシールド: ピン8
const int chipSelect = 4;

void setup()
{
// シリアル通信を開き、ポートが開くのを待つ:
Serial.begin(9600);
while (!Serial) {
 ; // シリアルポートが接続するのを待つ。Leonardoのみ必要
}


Serial.print("\nSDカードを初期化中...");
// Ethernetシールドでは、CSはピン4です。デフォルトで出力として設定されています。
// CSピンとして使用されていなくても、ハードウェアSSピン
// (ほとんどのArduinoボードでは10、Megaでは53)は出力として残しておく必要があります。
// そうしないとSDライブラリ関数が動作しません。
pinMode(10, OUTPUT); // Megaではこれを53に変更


// カードが動作しているかどうかをテストするためにユーティリティライブラリの初期化コードを使用します。
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("初期化に失敗しました。確認すべき事項:");
Serial.println("* カードが挿入されていますか?");
Serial.println("* 配線は正しいですか?");
Serial.println("* シールドまたはモジュールに合わせてchipSelectピンを変更しましたか?");
return;
} else {
Serial.println("配線は正しく、カードが存在します。");
}

// カードの種類を出力
Serial.print("\nカードタイプ: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("不明");
}

// 次に、'volume'/'partition'を開こうとします - FAT16またはFAT32である必要があります
if (!volume.init(card)) {
Serial.println("FAT16/FAT32パーティションが見つかりません。\nカードをフォーマットしたことを確認してください");
return;
}


// 最初のFATタイプボリュームの種類とサイズを出力

uint64_t volumesize64;
uint32_t volumesize32;
Serial.print("\nボリュームタイプはFAT");
Serial.println(volume.fatType(), DEC);
Serial.println();

volumesize64 = volume.blocksPerCluster(); // クラスターはブロックの集合体
volumesize64 *= volume.clusterCount(); // 多くのクラスターが存在します
volumesize64 *= 512; // SDカードブロックは常に512バイト

Serial.print("ボリュームサイズ (バイト): ");
printLLNumber(volumesize64, DEC);
Serial.println();

Serial.print("ボリュームサイズ (キロバイト): ");
volumesize32 = volumesize64/1024;
Serial.println(volumesize32);

Serial.print("ボリュームサイズ (メガバイト): ");
volumesize32 /= 1024;
Serial.println(volumesize32);

Serial.println("\nカード上で見つかったファイル (名前、日付、バイト単位のサイズ): ");
root.openRoot(volume);

// カード内のすべてのファイルを日付とサイズとともにリスト
root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {

}
void printLLNumber(uint64_t n, uint8_t base)
{
unsigned char buf[16 * sizeof(long)];
unsigned int i = 0;

if (n == 0)
{
Serial.print((char)'0');
return;
}

while (n > 0)
{
buf[i++] =% base;
n /= base;
}

for (; i > 0; i--)
Serial.print((char) (buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}

SDカードシールド v4.0 回路図オンラインビューア

SDカードシールド v4.0a 回路図オンラインビューア

SDカードシールド v4.3 回路図オンラインビューア

リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートをご用意しています。お客様の好みやニーズに応じた複数のコミュニケーションチャネルを提供しています。

Loading Comments...